diff --git a/.babelrc b/.babelrc index 55de8382c..493f22b9c 100644 --- a/.babelrc +++ b/.babelrc @@ -6,7 +6,8 @@ "useBuiltIns": "entry", "corejs": "3.22" } - ] + ], + "@babel/preset-typescript" ], "plugins": [ "html-tag-js/jsx/jsx-to-tag.js", diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f33a02cd1..d290d60bf 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,3 +10,8 @@ updates: directory: "/" schedule: interval: weekly + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: weekly diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6595eedec..7719d7d4c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Checkout Actions Repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Check spelling uses: crate-ci/typos@master @@ -26,7 +26,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Setup Biome uses: biomejs/setup-biome@v2 @@ -44,15 +44,15 @@ jobs: if: github.event_name == 'pull_request' steps: - name: Checkout Repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Use Node.js - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: cache: npm cache-dependency-path: '**/package-lock.json' - name: Detect Changed Files - uses: dorny/paths-filter@v3 + uses: dorny/paths-filter@v4 id: file-changes with: list-files: shell diff --git a/.github/workflows/close-inactive-issues.yml b/.github/workflows/close-inactive-issues.yml index 0db58f5a5..47569a04e 100644 --- a/.github/workflows/close-inactive-issues.yml +++ b/.github/workflows/close-inactive-issues.yml @@ -10,7 +10,7 @@ jobs: issues: write pull-requests: write steps: - - uses: actions/stale@v9 + - uses: actions/stale@v10 with: days-before-issue-stale: 60 days-before-issue-close: 14 diff --git a/.github/workflows/community-release-notifier.yml b/.github/workflows/community-release-notifier.yml index cc91e9ae0..d8f320fdf 100644 --- a/.github/workflows/community-release-notifier.yml +++ b/.github/workflows/community-release-notifier.yml @@ -1,44 +1,132 @@ name: community-release-notifier + on: release: types: [ released ] workflow_call: inputs: - tag_name: - required: true - description: "Release tag_name" - type: 'string' - url: - required: true - description: "release URL" - type: 'string' - body: - required: true - description: "Release Body" - type: 'string' - default: '' + tag_name: + required: true + description: "Release tag_name" + type: 'string' + url: + required: true + description: "release URL" + type: 'string' + body: + required: true + description: "Release Body" + type: 'string' + default: '' secrets: DISCORD_WEBHOOK_RELEASE_NOTES: description: 'Discord Webhook for Notifying Releases to Discord' required: true + TELEGRAM_BOT_TOKEN: + description: 'Telegram Bot Token' + required: true + TELEGRAM_CHAT_ID: + description: 'Telegram Chat ID (group/channel/supergroup)' + required: true + TELEGRAM_MESSAGE_THREAD_ID: + description: 'Topic / message_thread_id for Telegram forum/topic' + required: true jobs: - discord-release: + notify: if: github.repository_owner == 'Acode-Foundation' runs-on: ubuntu-latest steps: - - name: Get Release Content - id: get-release-content - uses: 2428392/gh-truncate-string-action@b3ff790d21cf42af3ca7579146eedb93c8fb0757 # v1.4.1 - with: - maxLength: 2000 - stringToTruncate: | - 📢 Acode [${{ github.event.release.tag_name || inputs.tag_name }}](<${{ github.event.release.url || inputs.url }}>) was just Released 🎉! + - name: Prepare release variables + id: vars + env: + INPUT_TAG: ${{ github.event.release.tag_name || inputs.tag_name }} + INPUT_URL: ${{ github.event.release.url || inputs.url }} + INPUT_BODY: ${{ github.event.release.body || inputs.body }} + run: | + TAG="$INPUT_TAG" + URL="$INPUT_URL" + + # Generate a random delimiter (hex string, safe and collision-resistant) + DELIMITER=$(openssl rand -hex 16 || head -c 16 /dev/urandom | xxd -p -c 16) - ${{ github.event.release.body || inputs.body }} + # Escape problematic characters for MarkdownV2 (very conservative escaping) + # We escape: _ * [ ] ( ) ~ ` > # + - = | { } . ! \ + BODY_SAFE=$(printf '%s' "$INPUT_BODY" | \ + sed 's/[_*[\]()~`>#+=|{}.!\\-]/\\&/g') + TAG_SAFE=$(printf '%s' "$TAG" | sed 's/[_*[\]()~`>#+=|{}.!\\-]/\\&/g') + + if [[ "$TAG" == *"-nightly"* ]]; then + SUFFIX=" \(Nightly Release\)" + SUFFIXPLAIN=" (Nightly Release)" + else + SUFFIX="" + SUFFIXPLAIN="" + fi + + # Announcement line — also escape for safety + ANNOUNCE_SAFE="📢 Acode [$TAG_SAFE]($URL) was just Released 🎉${SUFFIX}\\!" + + echo "announce=$ANNOUNCE_SAFE" >> $GITHUB_OUTPUT + { + echo "body_safe<<$DELIMITER" + printf '%s\n' "$BODY_SAFE" + echo "$DELIMITER" + } >> $GITHUB_OUTPUT + + # Plain (MD) Announcement for Discord + ANNOUNCE_PLAIN="📢 Acode [$TAG](<$URL>) was just Released 🎉${SUFFIXPLAIN}!" + echo "announce_plain=$ANNOUNCE_PLAIN" >> $GITHUB_OUTPUT + { + echo "body_plain<<$DELIMITER" + printf '%s\n' "$INPUT_BODY" + echo "$DELIMITER" + } >> $GITHUB_OUTPUT + + # ──────────────────────────────────────────────── + # Truncate for Discord + # ──────────────────────────────────────────────── + - name: Truncate message for Discord + id: truncate-discord + uses: 2428392/gh-truncate-string-action@b3ff790d21cf42af3ca7579146eedb93c8fb0757 # v1.4.1 + env: + # https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/ + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + with: + maxLength: 2000 + stringToTruncate: | + ${{ steps.vars.outputs.announce_plain }} + + ${{ steps.vars.outputs.body_plain }} + + # ──────────────────────────────────────────────── + # Discord notification + # ──────────────────────────────────────────────── + - name: Discord Webhook (Publishing) + uses: tsickert/discord-webhook@b217a69502f52803de774ded2b1ab7c282e99645 # v7.0.0 + env: + # https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/ + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + with: + webhook-url: ${{ secrets.DISCORD_WEBHOOK_RELEASE_NOTES }} + content: ${{ steps.truncate-discord.outputs.string }} + flags: 4 # 1 << 2 - SUPPRESS_EMBEDS! + + # ──────────────────────────────────────────────── + # Telegram notification — MarkdownV2 + no link preview + # ──────────────────────────────────────────────── + - name: Send to Telegram + #if: ${{ secrets.TELEGRAM_BOT_TOKEN != '' && secrets.TELEGRAM_CHAT_ID != '' && secrets.TELEGRAM_MESSAGE_THREAD_ID != '' }} + uses: Salmansha08/telegram-github-action@17c9ce6b4210d2659dca29d34028b02fa29d70ad # or newer tag if available + with: + to: ${{ secrets.TELEGRAM_CHAT_ID }} + token: ${{ secrets.TELEGRAM_BOT_TOKEN }} + message: | + ${{ steps.vars.outputs.announce }} - - name: Discord Webhook Action (Publishing) - uses: tsickert/discord-webhook@c840d45a03a323fbc3f7507ac7769dbd91bfb164 # v5.3.0 - with: - webhook-url: ${{ secrets.DISCORD_WEBHOOK_RELEASE_NOTES }} - content: ${{ steps.get-release-content.outputs.string }} + ${{ steps.vars.outputs.body_safe }} + format: markdown + disable_web_page_preview: true + # Only needed for topic-enabled supergroups/channels + message_thread_id: ${{ secrets.TELEGRAM_MESSAGE_THREAD_ID }} + continue-on-error: true diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml index 87eb5e749..207ab0bc4 100644 --- a/.github/workflows/nightly-build.yml +++ b/.github/workflows/nightly-build.yml @@ -87,6 +87,8 @@ echo "env: VERSION_LABEL: ${{ env. VERSION_LABEL }}" echo "github sha: ${{ github.sha }}" echo "should not skip tags, releases: ${{ ! inputs.skip_tagging_and_releases }} " + echo "🤐 env: NORMAL_APK_PATH: ${{ env.NORMAL_APK_PATH }}" + echo "🤐 env: FDROID_APK_PATH: ${{ env.FDROID_APK_PATH }}" echo "::endgroup::" echo "## 🚀 Build Type: ${{ env.VERSION_LABEL }}" >> $GITHUB_STEP_SUMMARY @@ -95,7 +97,7 @@ echo "should not skip tags, releases: ${{ ! inputs.skip_tagging_and_releases }}" >> $GITHUB_STEP_SUMMARY - name: Checkout Repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 # Required for tags # persists credentials locally if tagging and releases are not skipped. @@ -103,21 +105,22 @@ ref: ${{ (inputs.is_PR && inputs.PR_NUMBER) && github.event.pull_request.head.sha || '' }} - name: Set up Java 21 - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: 'temurin' java-version: '21' cache: ${{ (!(inputs.is_PR && inputs.PR_NUMBER) && github.ref == 'refs/heads/main' && 'gradle') || '' }} - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: 'lts/*' # or '18.x' for latest stable + cache: ${{ (!(inputs.is_PR && inputs.PR_NUMBER) && github.ref == 'refs/heads/main' && 'npm') || '' }} - name: Add keystore and build.json from secrets run: | - echo "${{ secrets.KEYSTORE_CONTENT }}" | base64 -d > $STORE_FILE_PATH - echo "${{ secrets.BUILD_JSON_CONTENT }}" | base64 -d > $BUILD_JSON_PATH + echo "${{ secrets.KEYSTORE_CONTENT }}" | base64 -d > ${{ env.STORE_FILE_PATH }} + echo "${{ secrets.BUILD_JSON_CONTENT }}" | base64 -d > ${{ env.BUILD_JSON_PATH }} echo "Keystore and build.json added successfully." - name: Export Commit Hash & prev tag @@ -156,7 +159,9 @@ echo "Updated version in config.xml" # Output the updated version echo "UPDATED_VERSION=$UPDATED_VERSION" >> $GITHUB_ENV - echo "UPDATED_VERSION=$UPDATED_VERSION" >> $GITHUB_OUTPUT + echo "UPDATED_VERSION=$UPDATED_VERSION" >> $GITHUB_OUTPUT + echo "NORMAL_APK_PATH=/tmp/acode-debug-normal-${UPDATED_VERSION}.apk" >> $GITHUB_ENV + echo "FDROID_APK_PATH=/tmp/acode-debug-fdroid-${UPDATED_VERSION}.apk" >> $GITHUB_ENV - name: Install Node.js Packages run: npm install @@ -171,28 +176,28 @@ run: | node utils/storage_manager.mjs y npm run build paid dev apk - mv platforms/android/app/build/outputs/apk/debug/app-debug.apk /tmp/app-debug-normal.apk + mv platforms/android/app/build/outputs/apk/debug/app-debug.apk ${{ env.NORMAL_APK_PATH }} echo "VERSION: $UPDATED_VERSION" >> $GITHUB_STEP_SUMMARY - name: Upload APK Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: app-debug-${{ env.GIT_COMMIT }} - path: /tmp/app-debug-normal.apk + path: ${{ env.NORMAL_APK_PATH }} - name: Run npm build paid dev apk fdroid (for F-Droid) if: ${{ !inputs.is_PR }} run: | node utils/storage_manager.mjs y npm run build paid dev apk fdroid - mv platforms/android/app/build/outputs/apk/debug/app-debug.apk /tmp/app-debug-fdroid.apk + mv platforms/android/app/build/outputs/apk/debug/app-debug.apk ${{ env.FDROID_APK_PATH }} - name: Upload APK Artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 if: ${{ !inputs.is_PR }} with: name: app-debug-fdroid-${{ env.GIT_COMMIT }} - path: /tmp/app-debug-fdroid.apk + path: ${{ env.FDROID_APK_PATH }} - name: remove keystore and build.json run: | @@ -244,14 +249,16 @@ # Only run this step, if not called from another workflow. And a previous step is successful with releasedRequired=true id: release if: ${{ ! inputs.skip_tagging_and_releases && steps.check-nightly-tag-force-update.outcome == 'success' && env.releaseRequired == 'true' && !inputs.is_PR }} - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@v3 + env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true with: prerelease: true name: ${{ env.UPDATED_VERSION }} tag_name: ${{ env.UPDATED_VERSION }} files: | - /tmp/app-debug-normal.apk - /tmp/app-debug-fdroid.apk + ${{ env.NORMAL_APK_PATH }} + ${{ env.FDROID_APK_PATH }} body: | Automated Nightly (pre-release) Releases for Today @@ -261,7 +268,7 @@ - name: Update Last Comment by bot (If ran in PR) if: inputs.is_PR - uses: marocchino/sticky-pull-request-comment@v2 + uses: marocchino/sticky-pull-request-comment@v3 with: hide_and_recreate: true hide_classify: "OUTDATED" @@ -283,3 +290,6 @@ body: ${{ needs.build.outputs.RELEASE_NOTES }} secrets: DISCORD_WEBHOOK_RELEASE_NOTES: ${{ secrets.DISCORD_WEBHOOK_RELEASE_NOTES }} + TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} + TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} + TELEGRAM_MESSAGE_THREAD_ID: ${{ secrets.TELEGRAM_MESSAGE_THREAD_ID }} diff --git a/.github/workflows/on-demand-preview-releases-PR.yml b/.github/workflows/on-demand-preview-releases-PR.yml index a4ee4acce..75781e71e 100644 --- a/.github/workflows/on-demand-preview-releases-PR.yml +++ b/.github/workflows/on-demand-preview-releases-PR.yml @@ -34,7 +34,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: clean: false fetch-depth: 0 @@ -53,7 +53,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Add comment to PR - uses: marocchino/sticky-pull-request-comment@v2 + uses: marocchino/sticky-pull-request-comment@v3 with: hide_and_recreate: true hide_classify: "OUTDATED" @@ -92,7 +92,7 @@ jobs: # fetch-depth: 0 - name: Update Last Comment by bot (if Workflow Triggering failed) - uses: marocchino/sticky-pull-request-comment@v2 + uses: marocchino/sticky-pull-request-comment@v3 with: hide_and_recreate: true hide_classify: "OUTDATED" diff --git a/.vscode/settings.json b/.vscode/settings.json index ad71d61d3..639360100 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -372,5 +372,8 @@ "wxss", "xquery", "Zeek" - ] -} \ No newline at end of file + ], + "[javascript]": { + "editor.defaultFormatter": "biomejs.biome" + } +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 52e080657..e4b61d19f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -166,6 +166,40 @@ refactor: simplify file loading logic pnpm run lang update # Update translations ``` +## ℹ️ Adding New Icons (to the existing font family) +> [!NOTE] +> Acode uses SVG and converts them into a font family, to be used inside the editor and generally for plugin devs. +> +> **Plugin-specific icons SHOULD NOT be added into the editor. Only generally helpful icons SHOULD BE added** + +Many font editing software and web-based tools exist for this purpose. Some of them are listed below. + +| Name | Platform | +|------|----------| +| https://icomoon.io/ | Free (Web-Based, PWA-supported, Offline-supported) | +| https://fontforge.org/ | Open-Source (Linux, Mac, Windows) | + +### Steps in Icomoon to add new Icons + +1. Download the `code-editor-icon.icomoon.json` file from https://github.com/Acode-Foundation/Acode/tree/main/utils +2. Go to https://icomoon.io/ > Import +3. Import the `code-editor-icon.icomoon.json` downloaded (in step 1) +4. All icons will be displayed after importing. +5. Import the SVG icon created/downloaded to be added to the Font Family. +6. On the right side, press **enable Show Characters** & **Show Names** to view the Unicode character & Name for that icon. +7. Provided the newly added SVG icon with a name (in the name box). +8. Repeat Step 5 and Step 7 until all needed new icons are added. +9. Press the export icon from the top left-hand side. +10. Press the download button, and a zip file will be downloaded. +11. Go to the Projects section of [icomoon](https://icomoon.io/new-app), uncollapse/expand the Project named `code-editor-icon` and press the **save** button (this downloads the project file named: `code-editor-icon.icomoon.json`) + +### Updating Project files for Icon Contribution +1. Extract the downloaded zip file; navigate to the `fonts` folder inside it. +2. Rename `code-editor-icon.ttf` to `icons.ttf`. +3. Copy & paste the renamed `icons.ttf` into https://github.com/Acode-Foundation/Acode/tree/main/src/res/icons +4. Copy and paste the `code-editor-icon.icomoon.json` file (downloaded in the adding icons steps) onto https://github.com/Acode-Foundation/Acode/tree/main/utils (yes, replace it with the newer one; we downloaded!) +4. Commit the changes **ON A NEW branch** (by following: [Commit Messages guide](#commit-messages)) + ## 🔌 Plugin Development To create plugins for Acode: diff --git a/_typos.toml b/_typos.toml index 3a7b6d1b3..8c05887d7 100644 --- a/_typos.toml +++ b/_typos.toml @@ -52,3 +52,4 @@ collapsable = "collapsable" styl = "styl" IZ = "IZ" shft = "shft" +multline = "multline" diff --git a/biome.json b/biome.json index 40b499694..1f48da7bc 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.1.4/schema.json", + "$schema": "https://biomejs.dev/schemas/2.4.11/schema.json", "formatter": { "enabled": true, "indentStyle": "tab" diff --git a/bun.lock b/bun.lock index aeb4d6a11..1e431773f 100644 --- a/bun.lock +++ b/bun.lock @@ -5,7 +5,41 @@ "": { "name": "com.foxdebug.acode", "dependencies": { + "@codemirror/autocomplete": "^6.20.1", + "@codemirror/commands": "^6.10.3", + "@codemirror/lang-angular": "^0.1.4", + "@codemirror/lang-cpp": "^6.0.3", + "@codemirror/lang-css": "^6.3.1", + "@codemirror/lang-go": "^6.0.1", + "@codemirror/lang-html": "^6.4.11", + "@codemirror/lang-java": "^6.0.2", + "@codemirror/lang-javascript": "^6.2.5", + "@codemirror/lang-jinja": "^6.0.0", + "@codemirror/lang-json": "^6.0.2", + "@codemirror/lang-less": "^6.0.2", + "@codemirror/lang-liquid": "^6.3.2", + "@codemirror/lang-markdown": "^6.5.0", + "@codemirror/lang-php": "^6.0.2", + "@codemirror/lang-python": "^6.2.1", + "@codemirror/lang-rust": "^6.0.2", + "@codemirror/lang-sass": "^6.0.2", + "@codemirror/lang-sql": "^6.10.0", + "@codemirror/lang-vue": "^0.1.3", + "@codemirror/lang-wast": "^6.0.2", + "@codemirror/lang-xml": "^6.1.0", + "@codemirror/lang-yaml": "^6.1.2", + "@codemirror/language": "^6.12.2", + "@codemirror/language-data": "^6.5.2", + "@codemirror/legacy-modes": "^6.5.2", + "@codemirror/lint": "^6.9.5", + "@codemirror/lsp-client": "^6.2.2", + "@codemirror/search": "^6.6.0", + "@codemirror/state": "^6.6.0", + "@codemirror/theme-one-dark": "^6.1.3", + "@codemirror/view": "^6.40.0", "@deadlyjack/ajax": "^1.2.6", + "@emmetio/codemirror6-plugin": "^0.4.0", + "@lezer/highlight": "^1.2.3", "@ungap/custom-elements": "^1.3.0", "@xterm/addon-attach": "^0.11.0", "@xterm/addon-fit": "^0.10.0", @@ -15,52 +49,60 @@ "@xterm/addon-web-links": "^0.11.0", "@xterm/addon-webgl": "^0.18.0", "@xterm/xterm": "^5.5.0", + "acorn": "^8.15.0", "autosize": "^6.0.1", + "codemirror": "^6.0.2", "cordova": "13.0.0", - "core-js": "^3.45.0", - "crypto-js": "^4.2.0", - "dompurify": "^3.2.6", + "core-js": "^3.47.0", + "dayjs": "^1.11.19", + "dompurify": "^3.3.2", "escape-string-regexp": "^5.0.0", "esprima": "^4.0.1", - "filesize": "^11.0.2", - "html-tag-js": "^2.4.15", - "js-base64": "^3.7.7", + "filesize": "^11.0.13", + "html-tag-js": "^2.4.16", "jszip": "^3.10.1", - "markdown-it": "^14.1.0", + "katex": "^0.16.39", + "markdown-it": "^14.1.1", "markdown-it-anchor": "^9.2.0", + "markdown-it-emoji": "^3.0.0", "markdown-it-footnote": "^4.0.0", "markdown-it-github-alerts": "^1.0.0", "markdown-it-task-lists": "^2.1.1", + "markdown-it-texmath": "^1.0.0", + "mermaid": "^11.13.0", "mime-types": "^3.0.1", - "minimatch": "^10.0.3", - "moment": "^2.30.1", "mustache": "^4.2.0", + "picomatch": "^4.0.4", "url-parse": "^1.5.10", "vanilla-picker": "^2.12.3", "yargs": "^18.0.0", }, "devDependencies": { - "@babel/core": "^7.28.0", - "@babel/plugin-transform-runtime": "^7.28.0", - "@babel/preset-env": "^7.28.0", - "@babel/runtime": "^7.28.2", - "@babel/runtime-corejs3": "^7.28.2", - "@biomejs/biome": "2.1.4", + "@babel/core": "^7.28.5", + "@babel/plugin-transform-runtime": "^7.28.5", + "@babel/preset-env": "^7.28.5", + "@babel/preset-typescript": "^7.28.5", + "@babel/runtime": "^7.28.4", + "@babel/runtime-corejs3": "^7.28.4", + "@biomejs/biome": "2.4.11", + "@rspack/cli": "^1.7.0", + "@rspack/core": "^1.7.0", "@types/ace": "^0.0.52", "@types/url-parse": "^1.4.11", - "autoprefixer": "^10.4.21", + "autoprefixer": "^10.4.22", "babel-loader": "^10.0.0", "com.foxdebug.acode.rk.auth": "file:src/plugins/auth", "com.foxdebug.acode.rk.customtabs": "file:src/plugins/custom-tabs", "com.foxdebug.acode.rk.exec.proot": "file:src/plugins/proot", "com.foxdebug.acode.rk.exec.terminal": "file:src/plugins/terminal", - "cordova-android": "^14.0.1", + "com.foxdebug.acode.rk.plugin.plugincontext": "file:src/plugins/pluginContext", + "cordova-android": "^15.0.0", "cordova-clipboard": "^1.3.0", "cordova-plugin-advanced-http": "^3.3.1", "cordova-plugin-browser": "file:src/plugins/browser", "cordova-plugin-buildinfo": "file:src/plugins/cordova-plugin-buildinfo", - "cordova-plugin-device": "^2.0.3", - "cordova-plugin-file": "^8.0.1", + "cordova-plugin-device": "^2.1.0", + "cordova-plugin-file": "^8.1.3", "cordova-plugin-ftp": "file:src/plugins/ftp", "cordova-plugin-iap": "file:src/plugins/iap", "cordova-plugin-sdcard": "file:src/plugins/sdcard", @@ -69,49 +111,59 @@ "cordova-plugin-system": "file:src/plugins/system", "cordova-plugin-websocket": "file:src/plugins/websocket", "css-loader": "^7.1.2", - "mini-css-extract-plugin": "^2.9.3", + "mini-css-extract-plugin": "^2.9.4", "path-browserify": "^1.0.1", - "postcss-loader": "^8.1.1", - "prettier": "^3.6.2", - "prettier-plugin-java": "^2.7.4", + "postcss-loader": "^8.2.0", + "prettier": "^3.7.4", + "prettier-plugin-java": "^2.7.7", "raw-loader": "^4.0.2", - "sass": "^1.90.0", - "sass-loader": "^16.0.5", + "sass": "^1.94.2", + "sass-loader": "^16.0.6", "style-loader": "^4.0.0", "terminal": "^0.1.4", - "webpack": "^5.101.0", - "webpack-cli": "^6.0.1", + "ts-loader": "^9.5.4", + "typescript": "^5.9.3", + "vscode-languageserver-types": "^3.17.5", }, }, }, + "overrides": { + "@codemirror/autocomplete": "^6.20.1", + "@codemirror/commands": "^6.10.3", + "@codemirror/language": "^6.12.2", + "@codemirror/lint": "^6.9.5", + "@codemirror/search": "^6.6.0", + "@codemirror/state": "^6.6.0", + "@codemirror/view": "^6.40.0", + }, "packages": { - "@ampproject/remapping": ["@ampproject/remapping@2.2.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" } }, ""], + "@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="], "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - "@babel/compat-data": ["@babel/compat-data@7.28.0", "", {}, "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw=="], + "@babel/compat-data": ["@babel/compat-data@7.28.5", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="], - "@babel/core": ["@babel/core@7.28.0", "", { "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.0", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.27.3", "@babel/helpers": "^7.27.6", "@babel/parser": "^7.28.0", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.0", "@babel/types": "^7.28.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ=="], + "@babel/core": ["@babel/core@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw=="], - "@babel/generator": ["@babel/generator@7.28.0", "", { "dependencies": { "@babel/parser": "^7.28.0", "@babel/types": "^7.28.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg=="], + "@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], "@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.27.3", "", { "dependencies": { "@babel/types": "^7.27.3" } }, "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg=="], "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="], - "@babel/helper-create-class-features-plugin": ["@babel/helper-create-class-features-plugin@7.27.1", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-member-expression-to-functions": "^7.27.1", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/traverse": "^7.27.1", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A=="], + "@babel/helper-create-class-features-plugin": ["@babel/helper-create-class-features-plugin@7.28.5", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/traverse": "^7.28.5", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ=="], - "@babel/helper-create-regexp-features-plugin": ["@babel/helper-create-regexp-features-plugin@7.27.1", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ=="], + "@babel/helper-create-regexp-features-plugin": ["@babel/helper-create-regexp-features-plugin@7.28.5", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "regexpu-core": "^6.3.1", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw=="], "@babel/helper-define-polyfill-provider": ["@babel/helper-define-polyfill-provider@0.6.5", "", { "dependencies": { "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", "debug": "^4.4.1", "lodash.debounce": "^4.0.8", "resolve": "^1.22.10" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg=="], "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], - "@babel/helper-member-expression-to-functions": ["@babel/helper-member-expression-to-functions@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA=="], + "@babel/helper-member-expression-to-functions": ["@babel/helper-member-expression-to-functions@7.28.5", "", { "dependencies": { "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5" } }, "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg=="], "@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], - "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.27.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.27.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg=="], + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="], "@babel/helper-optimise-call-expression": ["@babel/helper-optimise-call-expression@7.27.1", "", { "dependencies": { "@babel/types": "^7.27.1" } }, "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw=="], @@ -125,17 +177,17 @@ "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], - "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], - "@babel/helper-wrap-function": ["@babel/helper-wrap-function@7.27.1", "", { "dependencies": { "@babel/template": "^7.27.1", "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ=="], + "@babel/helper-wrap-function": ["@babel/helper-wrap-function@7.28.3", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.3", "@babel/types": "^7.28.2" } }, "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g=="], - "@babel/helpers": ["@babel/helpers@7.28.2", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.2" } }, "sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw=="], + "@babel/helpers": ["@babel/helpers@7.28.4", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="], - "@babel/parser": ["@babel/parser@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.0" }, "bin": { "parser": "bin/babel-parser.js" } }, "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g=="], + "@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ["@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA=="], + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ["@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.28.5" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q=="], "@babel/plugin-bugfix-safari-class-field-initializer-scope": ["@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA=="], @@ -143,15 +195,19 @@ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ["@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/plugin-transform-optional-chaining": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw=="], - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ["@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw=="], + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ["@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw=="], - "@babel/plugin-proposal-private-property-in-object": ["@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, ""], + "@babel/plugin-proposal-private-property-in-object": ["@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2", "", { "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w=="], "@babel/plugin-syntax-import-assertions": ["@babel/plugin-syntax-import-assertions@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg=="], "@babel/plugin-syntax-import-attributes": ["@babel/plugin-syntax-import-attributes@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww=="], - "@babel/plugin-syntax-unicode-sets-regex": ["@babel/plugin-syntax-unicode-sets-regex@7.18.6", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, ""], + "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w=="], + + "@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ=="], + + "@babel/plugin-syntax-unicode-sets-regex": ["@babel/plugin-syntax-unicode-sets-regex@7.18.6", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg=="], "@babel/plugin-transform-arrow-functions": ["@babel/plugin-transform-arrow-functions@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA=="], @@ -161,17 +217,17 @@ "@babel/plugin-transform-block-scoped-functions": ["@babel/plugin-transform-block-scoped-functions@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg=="], - "@babel/plugin-transform-block-scoping": ["@babel/plugin-transform-block-scoping@7.28.0", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q=="], + "@babel/plugin-transform-block-scoping": ["@babel/plugin-transform-block-scoping@7.28.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g=="], "@babel/plugin-transform-class-properties": ["@babel/plugin-transform-class-properties@7.27.1", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA=="], - "@babel/plugin-transform-class-static-block": ["@babel/plugin-transform-class-static-block@7.27.1", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.12.0" } }, "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA=="], + "@babel/plugin-transform-class-static-block": ["@babel/plugin-transform-class-static-block@7.28.3", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.3", "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.12.0" } }, "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg=="], - "@babel/plugin-transform-classes": ["@babel/plugin-transform-classes@7.28.0", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-globals": "^7.28.0", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", "@babel/traverse": "^7.28.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA=="], + "@babel/plugin-transform-classes": ["@babel/plugin-transform-classes@7.28.4", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-globals": "^7.28.0", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", "@babel/traverse": "^7.28.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA=="], "@babel/plugin-transform-computed-properties": ["@babel/plugin-transform-computed-properties@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/template": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw=="], - "@babel/plugin-transform-destructuring": ["@babel/plugin-transform-destructuring@7.28.0", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.28.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A=="], + "@babel/plugin-transform-destructuring": ["@babel/plugin-transform-destructuring@7.28.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.28.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw=="], "@babel/plugin-transform-dotall-regex": ["@babel/plugin-transform-dotall-regex@7.27.1", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw=="], @@ -183,7 +239,7 @@ "@babel/plugin-transform-explicit-resource-management": ["@babel/plugin-transform-explicit-resource-management@7.28.0", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/plugin-transform-destructuring": "^7.28.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ=="], - "@babel/plugin-transform-exponentiation-operator": ["@babel/plugin-transform-exponentiation-operator@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ=="], + "@babel/plugin-transform-exponentiation-operator": ["@babel/plugin-transform-exponentiation-operator@7.28.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw=="], "@babel/plugin-transform-export-namespace-from": ["@babel/plugin-transform-export-namespace-from@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ=="], @@ -195,7 +251,7 @@ "@babel/plugin-transform-literals": ["@babel/plugin-transform-literals@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA=="], - "@babel/plugin-transform-logical-assignment-operators": ["@babel/plugin-transform-logical-assignment-operators@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw=="], + "@babel/plugin-transform-logical-assignment-operators": ["@babel/plugin-transform-logical-assignment-operators@7.28.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA=="], "@babel/plugin-transform-member-expression-literals": ["@babel/plugin-transform-member-expression-literals@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ=="], @@ -203,7 +259,7 @@ "@babel/plugin-transform-modules-commonjs": ["@babel/plugin-transform-modules-commonjs@7.27.1", "", { "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw=="], - "@babel/plugin-transform-modules-systemjs": ["@babel/plugin-transform-modules-systemjs@7.27.1", "", { "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA=="], + "@babel/plugin-transform-modules-systemjs": ["@babel/plugin-transform-modules-systemjs@7.28.5", "", { "dependencies": { "@babel/helper-module-transforms": "^7.28.3", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5", "@babel/traverse": "^7.28.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew=="], "@babel/plugin-transform-modules-umd": ["@babel/plugin-transform-modules-umd@7.27.1", "", { "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w=="], @@ -215,13 +271,13 @@ "@babel/plugin-transform-numeric-separator": ["@babel/plugin-transform-numeric-separator@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw=="], - "@babel/plugin-transform-object-rest-spread": ["@babel/plugin-transform-object-rest-spread@7.28.0", "", { "dependencies": { "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", "@babel/plugin-transform-destructuring": "^7.28.0", "@babel/plugin-transform-parameters": "^7.27.7", "@babel/traverse": "^7.28.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA=="], + "@babel/plugin-transform-object-rest-spread": ["@babel/plugin-transform-object-rest-spread@7.28.4", "", { "dependencies": { "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", "@babel/plugin-transform-destructuring": "^7.28.0", "@babel/plugin-transform-parameters": "^7.27.7", "@babel/traverse": "^7.28.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew=="], "@babel/plugin-transform-object-super": ["@babel/plugin-transform-object-super@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng=="], "@babel/plugin-transform-optional-catch-binding": ["@babel/plugin-transform-optional-catch-binding@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q=="], - "@babel/plugin-transform-optional-chaining": ["@babel/plugin-transform-optional-chaining@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg=="], + "@babel/plugin-transform-optional-chaining": ["@babel/plugin-transform-optional-chaining@7.28.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ=="], "@babel/plugin-transform-parameters": ["@babel/plugin-transform-parameters@7.27.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg=="], @@ -231,13 +287,13 @@ "@babel/plugin-transform-property-literals": ["@babel/plugin-transform-property-literals@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ=="], - "@babel/plugin-transform-regenerator": ["@babel/plugin-transform-regenerator@7.28.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg=="], + "@babel/plugin-transform-regenerator": ["@babel/plugin-transform-regenerator@7.28.4", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA=="], "@babel/plugin-transform-regexp-modifiers": ["@babel/plugin-transform-regexp-modifiers@7.27.1", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA=="], "@babel/plugin-transform-reserved-words": ["@babel/plugin-transform-reserved-words@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw=="], - "@babel/plugin-transform-runtime": ["@babel/plugin-transform-runtime@7.28.0", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", "babel-plugin-polyfill-corejs2": "^0.4.14", "babel-plugin-polyfill-corejs3": "^0.13.0", "babel-plugin-polyfill-regenerator": "^0.6.5", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-dGopk9nZrtCs2+nfIem25UuHyt5moSJamArzIoh9/vezUQPmYDOzjaHDCkAzuGJibCIkPup8rMT2+wYB6S73cA=="], + "@babel/plugin-transform-runtime": ["@babel/plugin-transform-runtime@7.28.5", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", "babel-plugin-polyfill-corejs2": "^0.4.14", "babel-plugin-polyfill-corejs3": "^0.13.0", "babel-plugin-polyfill-regenerator": "^0.6.5", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w=="], "@babel/plugin-transform-shorthand-properties": ["@babel/plugin-transform-shorthand-properties@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ=="], @@ -249,6 +305,8 @@ "@babel/plugin-transform-typeof-symbol": ["@babel/plugin-transform-typeof-symbol@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw=="], + "@babel/plugin-transform-typescript": ["@babel/plugin-transform-typescript@7.28.5", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-create-class-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA=="], + "@babel/plugin-transform-unicode-escapes": ["@babel/plugin-transform-unicode-escapes@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg=="], "@babel/plugin-transform-unicode-property-regex": ["@babel/plugin-transform-unicode-property-regex@7.27.1", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q=="], @@ -257,37 +315,41 @@ "@babel/plugin-transform-unicode-sets-regex": ["@babel/plugin-transform-unicode-sets-regex@7.27.1", "", { "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw=="], - "@babel/preset-env": ["@babel/preset-env@7.28.0", "", { "dependencies": { "@babel/compat-data": "^7.28.0", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-import-assertions": "^7.27.1", "@babel/plugin-syntax-import-attributes": "^7.27.1", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.27.1", "@babel/plugin-transform-async-generator-functions": "^7.28.0", "@babel/plugin-transform-async-to-generator": "^7.27.1", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", "@babel/plugin-transform-block-scoping": "^7.28.0", "@babel/plugin-transform-class-properties": "^7.27.1", "@babel/plugin-transform-class-static-block": "^7.27.1", "@babel/plugin-transform-classes": "^7.28.0", "@babel/plugin-transform-computed-properties": "^7.27.1", "@babel/plugin-transform-destructuring": "^7.28.0", "@babel/plugin-transform-dotall-regex": "^7.27.1", "@babel/plugin-transform-duplicate-keys": "^7.27.1", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", "@babel/plugin-transform-dynamic-import": "^7.27.1", "@babel/plugin-transform-explicit-resource-management": "^7.28.0", "@babel/plugin-transform-exponentiation-operator": "^7.27.1", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", "@babel/plugin-transform-function-name": "^7.27.1", "@babel/plugin-transform-json-strings": "^7.27.1", "@babel/plugin-transform-literals": "^7.27.1", "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.27.1", "@babel/plugin-transform-modules-systemjs": "^7.27.1", "@babel/plugin-transform-modules-umd": "^7.27.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", "@babel/plugin-transform-new-target": "^7.27.1", "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", "@babel/plugin-transform-numeric-separator": "^7.27.1", "@babel/plugin-transform-object-rest-spread": "^7.28.0", "@babel/plugin-transform-object-super": "^7.27.1", "@babel/plugin-transform-optional-catch-binding": "^7.27.1", "@babel/plugin-transform-optional-chaining": "^7.27.1", "@babel/plugin-transform-parameters": "^7.27.7", "@babel/plugin-transform-private-methods": "^7.27.1", "@babel/plugin-transform-private-property-in-object": "^7.27.1", "@babel/plugin-transform-property-literals": "^7.27.1", "@babel/plugin-transform-regenerator": "^7.28.0", "@babel/plugin-transform-regexp-modifiers": "^7.27.1", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", "@babel/plugin-transform-spread": "^7.27.1", "@babel/plugin-transform-sticky-regex": "^7.27.1", "@babel/plugin-transform-template-literals": "^7.27.1", "@babel/plugin-transform-typeof-symbol": "^7.27.1", "@babel/plugin-transform-unicode-escapes": "^7.27.1", "@babel/plugin-transform-unicode-property-regex": "^7.27.1", "@babel/plugin-transform-unicode-regex": "^7.27.1", "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.14", "babel-plugin-polyfill-corejs3": "^0.13.0", "babel-plugin-polyfill-regenerator": "^0.6.5", "core-js-compat": "^3.43.0", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg=="], + "@babel/preset-env": ["@babel/preset-env@7.28.5", "", { "dependencies": { "@babel/compat-data": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-import-assertions": "^7.27.1", "@babel/plugin-syntax-import-attributes": "^7.27.1", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.27.1", "@babel/plugin-transform-async-generator-functions": "^7.28.0", "@babel/plugin-transform-async-to-generator": "^7.27.1", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", "@babel/plugin-transform-block-scoping": "^7.28.5", "@babel/plugin-transform-class-properties": "^7.27.1", "@babel/plugin-transform-class-static-block": "^7.28.3", "@babel/plugin-transform-classes": "^7.28.4", "@babel/plugin-transform-computed-properties": "^7.27.1", "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-dotall-regex": "^7.27.1", "@babel/plugin-transform-duplicate-keys": "^7.27.1", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", "@babel/plugin-transform-dynamic-import": "^7.27.1", "@babel/plugin-transform-explicit-resource-management": "^7.28.0", "@babel/plugin-transform-exponentiation-operator": "^7.28.5", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", "@babel/plugin-transform-function-name": "^7.27.1", "@babel/plugin-transform-json-strings": "^7.27.1", "@babel/plugin-transform-literals": "^7.27.1", "@babel/plugin-transform-logical-assignment-operators": "^7.28.5", "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.27.1", "@babel/plugin-transform-modules-systemjs": "^7.28.5", "@babel/plugin-transform-modules-umd": "^7.27.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", "@babel/plugin-transform-new-target": "^7.27.1", "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", "@babel/plugin-transform-numeric-separator": "^7.27.1", "@babel/plugin-transform-object-rest-spread": "^7.28.4", "@babel/plugin-transform-object-super": "^7.27.1", "@babel/plugin-transform-optional-catch-binding": "^7.27.1", "@babel/plugin-transform-optional-chaining": "^7.28.5", "@babel/plugin-transform-parameters": "^7.27.7", "@babel/plugin-transform-private-methods": "^7.27.1", "@babel/plugin-transform-private-property-in-object": "^7.27.1", "@babel/plugin-transform-property-literals": "^7.27.1", "@babel/plugin-transform-regenerator": "^7.28.4", "@babel/plugin-transform-regexp-modifiers": "^7.27.1", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", "@babel/plugin-transform-spread": "^7.27.1", "@babel/plugin-transform-sticky-regex": "^7.27.1", "@babel/plugin-transform-template-literals": "^7.27.1", "@babel/plugin-transform-typeof-symbol": "^7.27.1", "@babel/plugin-transform-unicode-escapes": "^7.27.1", "@babel/plugin-transform-unicode-property-regex": "^7.27.1", "@babel/plugin-transform-unicode-regex": "^7.27.1", "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.14", "babel-plugin-polyfill-corejs3": "^0.13.0", "babel-plugin-polyfill-regenerator": "^0.6.5", "core-js-compat": "^3.43.0", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg=="], - "@babel/preset-modules": ["@babel/preset-modules@0.1.6-no-external-plugins", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, ""], + "@babel/preset-modules": ["@babel/preset-modules@0.1.6-no-external-plugins", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA=="], - "@babel/runtime": ["@babel/runtime@7.28.2", "", {}, "sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA=="], + "@babel/preset-typescript": ["@babel/preset-typescript@7.28.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.27.1", "@babel/plugin-transform-typescript": "^7.28.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g=="], - "@babel/runtime-corejs3": ["@babel/runtime-corejs3@7.28.2", "", { "dependencies": { "core-js-pure": "^3.43.0" } }, "sha512-FVFaVs2/dZgD3Y9ZD+AKNKjyGKzwu0C54laAXWUXgLcVXcCX6YZ6GhK2cp7FogSN2OA0Fu+QT8dP3FUdo9ShSQ=="], + "@babel/runtime": ["@babel/runtime@7.28.4", "", {}, "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ=="], + + "@babel/runtime-corejs3": ["@babel/runtime-corejs3@7.28.4", "", { "dependencies": { "core-js-pure": "^3.43.0" } }, "sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ=="], "@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], - "@babel/traverse": ["@babel/traverse@7.28.0", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.0", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.0", "@babel/template": "^7.27.2", "@babel/types": "^7.28.0", "debug": "^4.3.1" } }, "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg=="], + "@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], + + "@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], - "@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="], + "@biomejs/biome": ["@biomejs/biome@2.4.11", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.4.11", "@biomejs/cli-darwin-x64": "2.4.11", "@biomejs/cli-linux-arm64": "2.4.11", "@biomejs/cli-linux-arm64-musl": "2.4.11", "@biomejs/cli-linux-x64": "2.4.11", "@biomejs/cli-linux-x64-musl": "2.4.11", "@biomejs/cli-win32-arm64": "2.4.11", "@biomejs/cli-win32-x64": "2.4.11" }, "bin": { "biome": "bin/biome" } }, "sha512-nWxHX8tf3Opb/qRgZpBbsTOqOodkbrkJ7S+JxJAruxOReaDPPmPuLBAGQ8vigyUgo0QBB+oQltNEAvalLcjggA=="], - "@biomejs/biome": ["@biomejs/biome@2.1.4", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.1.4", "@biomejs/cli-darwin-x64": "2.1.4", "@biomejs/cli-linux-arm64": "2.1.4", "@biomejs/cli-linux-arm64-musl": "2.1.4", "@biomejs/cli-linux-x64": "2.1.4", "@biomejs/cli-linux-x64-musl": "2.1.4", "@biomejs/cli-win32-arm64": "2.1.4", "@biomejs/cli-win32-x64": "2.1.4" }, "bin": { "biome": "bin/biome" } }, "sha512-QWlrqyxsU0FCebuMnkvBIkxvPqH89afiJzjMl+z67ybutse590jgeaFdDurE9XYtzpjRGTI1tlUZPGWmbKsElA=="], + "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.4.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-wOt+ed+L2dgZanWyL6i29qlXMc088N11optzpo10peayObBaAshbTcxKUchzEMp9QSY8rh5h6VfAFE3WTS1rqg=="], - "@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.1.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-sCrNENE74I9MV090Wq/9Dg7EhPudx3+5OiSoQOkIe3DLPzFARuL1dOwCWhKCpA3I5RHmbrsbNSRfZwCabwd8Qg=="], + "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.4.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-gZ6zR8XmZlExfi/Pz/PffmdpWOQ8Qhy7oBztgkR8/ylSRyLwfRPSadmiVCV8WQ8PoJ2MWUy2fgID9zmtgUUJmw=="], - "@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.1.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-gOEICJbTCy6iruBywBDcG4X5rHMbqCPs3clh3UQ+hRKlgvJTk4NHWQAyHOXvaLe+AxD1/TNX1jbZeffBJzcrOw=="], + "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.4.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-avdJaEElXrKceK0va9FkJ4P5ci3N01TGkc6ni3P8l3BElqbOz42Wg2IyX3gbh0ZLEd4HVKEIrmuVu/AMuSeFFA=="], - "@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.1.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-juhEkdkKR4nbUi5k/KRp1ocGPNWLgFRD4NrHZSveYrD6i98pyvuzmS9yFYgOZa5JhaVqo0HPnci0+YuzSwT2fw=="], + "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.4.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-+Sbo1OAmlegtdwqFE8iOxFIWLh1B3OEgsuZfBpyyN/kWuqZ8dx9ZEes6zVnDMo+zRHF2wLynRVhoQmV7ohxl2Q=="], - "@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.1.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-nYr7H0CyAJPaLupFE2cH16KZmRC5Z9PEftiA2vWxk+CsFkPZQ6dBRdcC6RuS+zJlPc/JOd8xw3uCCt9Pv41WvQ=="], + "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.4.11", "", { "os": "linux", "cpu": "x64" }, "sha512-TagWV0iomp5LnEnxWFg4nQO+e52Fow349vaX0Q/PIcX6Zhk4GGBgp3qqZ8PVkpC+cuehRctMf3+6+FgQ8jCEFQ=="], - "@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.1.4", "", { "os": "linux", "cpu": "x64" }, "sha512-Eoy9ycbhpJVYuR+LskV9s3uyaIkp89+qqgqhGQsWnp/I02Uqg2fXFblHJOpGZR8AxdB9ADy87oFVxn9MpFKUrw=="], + "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.4.11", "", { "os": "linux", "cpu": "x64" }, "sha512-bexd2IklK7ZgPhrz6jXzpIL6dEAH9MlJU1xGTrypx+FICxrXUp4CqtwfiuoDKse+UlgAlWtzML3jrMqeEAHEhA=="], - "@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.1.4", "", { "os": "linux", "cpu": "x64" }, "sha512-lvwvb2SQQHctHUKvBKptR6PLFCM7JfRjpCCrDaTmvB7EeZ5/dQJPhTYBf36BE/B4CRWR2ZiBLRYhK7hhXBCZAg=="], + "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.4.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-RJhaTnY8byzxDt4bDVb7AFPHkPcjOPK3xBip4ZRTrN3TEfyhjLRm3r3mqknqydgVTB74XG8l4jMLwEACEeihVg=="], - "@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.1.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-3WRYte7orvyi6TRfIZkDN9Jzoogbv+gSvR+b9VOXUg1We1XrjBg6WljADeVEaKTvOcpVdH0a90TwyOQ6ue4fGw=="], + "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.4.11", "", { "os": "win32", "cpu": "x64" }, "sha512-A8D3JM/00C2KQgUV3oj8Ba15EHEYwebAGCy5Sf9GAjr5Y3+kJIYOiESoqRDeuRZueuMdCsbLZIUqmPhpYXJE9A=="], - "@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.1.4", "", { "os": "win32", "cpu": "x64" }, "sha512-tBc+W7anBPSFXGAoQW+f/+svkpt8/uXfRwDzN1DvnatkRMt16KIYpEi/iw8u9GahJlFv98kgHcIrSsZHZTR0sw=="], + "@braintree/sanitize-url": ["@braintree/sanitize-url@7.1.2", "", {}, "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA=="], "@chevrotain/cst-dts-gen": ["@chevrotain/cst-dts-gen@11.0.3", "", { "dependencies": { "@chevrotain/gast": "11.0.3", "@chevrotain/types": "11.0.3", "lodash-es": "4.17.21" } }, "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ=="], @@ -299,9 +361,93 @@ "@chevrotain/utils": ["@chevrotain/utils@11.0.3", "", {}, "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ=="], - "@deadlyjack/ajax": ["@deadlyjack/ajax@1.2.6", "", {}, ""], + "@codemirror/autocomplete": ["@codemirror/autocomplete@6.20.1", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0" } }, "sha512-1cvg3Vz1dSSToCNlJfRA2WSI4ht3K+WplO0UMOgmUYPivCyy2oueZY6Lx7M9wThm7SDUBViRmuT+OG/i8+ON9A=="], + + "@codemirror/commands": ["@codemirror/commands@6.10.3", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.6.0", "@codemirror/view": "^6.27.0", "@lezer/common": "^1.1.0" } }, "sha512-JFRiqhKu+bvSkDLI+rUhJwSxQxYb759W5GBezE8Uc8mHLqC9aV/9aTC7yJSqCtB3F00pylrLCwnyS91Ap5ej4Q=="], + + "@codemirror/lang-angular": ["@codemirror/lang-angular@0.1.4", "", { "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/lang-javascript": "^6.1.2", "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.3" } }, "sha512-oap+gsltb/fzdlTQWD6BFF4bSLKcDnlxDsLdePiJpCVNKWXSTAbiiQeYI3UmES+BLAdkmIC1WjyztC1pi/bX4g=="], + + "@codemirror/lang-cpp": ["@codemirror/lang-cpp@6.0.3", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/cpp": "^1.0.0" } }, "sha512-URM26M3vunFFn9/sm6rzqrBzDgfWuDixp85uTY49wKudToc2jTHUrKIGGKs+QWND+YLofNNZpxcNGRynFJfvgA=="], + + "@codemirror/lang-css": ["@codemirror/lang-css@6.3.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.2", "@lezer/css": "^1.1.7" } }, "sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg=="], + + "@codemirror/lang-go": ["@codemirror/lang-go@6.0.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/go": "^1.0.0" } }, "sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg=="], + + "@codemirror/lang-html": ["@codemirror/lang-html@6.4.11", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-css": "^6.0.0", "@codemirror/lang-javascript": "^6.0.0", "@codemirror/language": "^6.4.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0", "@lezer/css": "^1.1.0", "@lezer/html": "^1.3.12" } }, "sha512-9NsXp7Nwp891pQchI7gPdTwBuSuT3K65NGTHWHNJ55HjYcHLllr0rbIZNdOzas9ztc1EUVBlHou85FFZS4BNnw=="], + + "@codemirror/lang-java": ["@codemirror/lang-java@6.0.2", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/java": "^1.0.0" } }, "sha512-m5Nt1mQ/cznJY7tMfQTJchmrjdjQ71IDs+55d1GAa8DGaB8JXWsVCkVT284C3RTASaY43YknrK2X3hPO/J3MOQ=="], + + "@codemirror/lang-javascript": ["@codemirror/lang-javascript@6.2.5", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", "@codemirror/lint": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0", "@lezer/javascript": "^1.0.0" } }, "sha512-zD4e5mS+50htS7F+TYjBPsiIFGanfVqg4HyUz6WNFikgOPf2BgKlx+TQedI1w6n/IqRBVBbBWmGFdLB/7uxO4A=="], + + "@codemirror/lang-jinja": ["@codemirror/lang-jinja@6.0.0", "", { "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.2.0", "@lezer/lr": "^1.4.0" } }, "sha512-47MFmRcR8UAxd8DReVgj7WJN1WSAMT7OJnewwugZM4XiHWkOjgJQqvEM1NpMj9ALMPyxmlziEI1opH9IaEvmaw=="], + + "@codemirror/lang-json": ["@codemirror/lang-json@6.0.2", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/json": "^1.0.0" } }, "sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ=="], + + "@codemirror/lang-less": ["@codemirror/lang-less@6.0.2", "", { "dependencies": { "@codemirror/lang-css": "^6.2.0", "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ=="], + + "@codemirror/lang-liquid": ["@codemirror/lang-liquid@6.3.2", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.1" } }, "sha512-6PDVU3ZnfeYyz1at1E/ttorErZvZFXXt1OPhtfe1EZJ2V2iDFa0CwPqPgG5F7NXN0yONGoBogKmFAafKTqlwIw=="], + + "@codemirror/lang-markdown": ["@codemirror/lang-markdown@6.5.0", "", { "dependencies": { "@codemirror/autocomplete": "^6.7.1", "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.3.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.2.1", "@lezer/markdown": "^1.0.0" } }, "sha512-0K40bZ35jpHya6FriukbgaleaqzBLZfOh7HuzqbMxBXkbYMJDxfF39c23xOgxFezR+3G+tR2/Mup+Xk865OMvw=="], + + "@codemirror/lang-php": ["@codemirror/lang-php@6.0.2", "", { "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/php": "^1.0.0" } }, "sha512-ZKy2v1n8Fc8oEXj0Th0PUMXzQJ0AIR6TaZU+PbDHExFwdu+guzOA4jmCHS1Nz4vbFezwD7LyBdDnddSJeScMCA=="], + + "@codemirror/lang-python": ["@codemirror/lang-python@6.2.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.3.2", "@codemirror/language": "^6.8.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.2.1", "@lezer/python": "^1.1.4" } }, "sha512-IRjC8RUBhn9mGR9ywecNhB51yePWCGgvHfY1lWN/Mrp3cKuHr0isDKia+9HnvhiWNnMpbGhWrkhuWOc09exRyw=="], + + "@codemirror/lang-rust": ["@codemirror/lang-rust@6.0.2", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/rust": "^1.0.0" } }, "sha512-EZaGjCUegtiU7kSMvOfEZpaCReowEf3yNidYu7+vfuGTm9ow4mthAparY5hisJqOHmJowVH3Upu+eJlUji6qqA=="], + + "@codemirror/lang-sass": ["@codemirror/lang-sass@6.0.2", "", { "dependencies": { "@codemirror/lang-css": "^6.2.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.2", "@lezer/sass": "^1.0.0" } }, "sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q=="], + + "@codemirror/lang-sql": ["@codemirror/lang-sql@6.10.0", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-6ayPkEd/yRw0XKBx5uAiToSgGECo/GY2NoJIHXIIQh1EVwLuKoU8BP/qK0qH5NLXAbtJRLuT73hx7P9X34iO4w=="], + + "@codemirror/lang-vue": ["@codemirror/lang-vue@0.1.3", "", { "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/lang-javascript": "^6.1.2", "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.1" } }, "sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug=="], + + "@codemirror/lang-wast": ["@codemirror/lang-wast@6.0.2", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q=="], + + "@codemirror/lang-xml": ["@codemirror/lang-xml@6.1.0", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.4.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/xml": "^1.0.0" } }, "sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg=="], - "@discoveryjs/json-ext": ["@discoveryjs/json-ext@0.6.3", "", {}, "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ=="], + "@codemirror/lang-yaml": ["@codemirror/lang-yaml@6.1.2", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.2.0", "@lezer/lr": "^1.0.0", "@lezer/yaml": "^1.0.0" } }, "sha512-dxrfG8w5Ce/QbT7YID7mWZFKhdhsaTNOYjOkSIMt1qmC4VQnXSDSYVHHHn8k6kJUfIhtLo8t1JJgltlxWdsITw=="], + + "@codemirror/language": ["@codemirror/language@6.12.2", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.23.0", "@lezer/common": "^1.5.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0", "style-mod": "^4.0.0" } }, "sha512-jEPmz2nGGDxhRTg3lTpzmIyGKxz3Gp3SJES4b0nAuE5SWQoKdT5GoQ69cwMmFd+wvFUhYirtDTr0/DRHpQAyWg=="], + + "@codemirror/language-data": ["@codemirror/language-data@6.5.2", "", { "dependencies": { "@codemirror/lang-angular": "^0.1.0", "@codemirror/lang-cpp": "^6.0.0", "@codemirror/lang-css": "^6.0.0", "@codemirror/lang-go": "^6.0.0", "@codemirror/lang-html": "^6.0.0", "@codemirror/lang-java": "^6.0.0", "@codemirror/lang-javascript": "^6.0.0", "@codemirror/lang-jinja": "^6.0.0", "@codemirror/lang-json": "^6.0.0", "@codemirror/lang-less": "^6.0.0", "@codemirror/lang-liquid": "^6.0.0", "@codemirror/lang-markdown": "^6.0.0", "@codemirror/lang-php": "^6.0.0", "@codemirror/lang-python": "^6.0.0", "@codemirror/lang-rust": "^6.0.0", "@codemirror/lang-sass": "^6.0.0", "@codemirror/lang-sql": "^6.0.0", "@codemirror/lang-vue": "^0.1.1", "@codemirror/lang-wast": "^6.0.0", "@codemirror/lang-xml": "^6.0.0", "@codemirror/lang-yaml": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/legacy-modes": "^6.4.0" } }, "sha512-CPkWBKrNS8stYbEU5kwBwTf3JB1kghlbh4FSAwzGW2TEscdeHHH4FGysREW86Mqnj3Qn09s0/6Ea/TutmoTobg=="], + + "@codemirror/legacy-modes": ["@codemirror/legacy-modes@6.5.2", "", { "dependencies": { "@codemirror/language": "^6.0.0" } }, "sha512-/jJbwSTazlQEDOQw2FJ8LEEKVS72pU0lx6oM54kGpL8t/NJ2Jda3CZ4pcltiKTdqYSRk3ug1B3pil1gsjA6+8Q=="], + + "@codemirror/lint": ["@codemirror/lint@6.9.5", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.35.0", "crelt": "^1.0.5" } }, "sha512-GElsbU9G7QT9xXhpUg1zWGmftA/7jamh+7+ydKRuT0ORpWS3wOSP0yT1FOlIZa7mIJjpVPipErsyvVqB9cfTFA=="], + + "@codemirror/lsp-client": ["@codemirror/lsp-client@6.2.2", "", { "dependencies": { "@codemirror/autocomplete": "^6.20.0", "@codemirror/language": "^6.11.0", "@codemirror/lint": "^6.8.5", "@codemirror/state": "^6.5.2", "@codemirror/view": "^6.37.0", "@lezer/highlight": "^1.2.1", "marked": "^15.0.12", "vscode-languageserver-protocol": "^3.17.5" } }, "sha512-swTF98necGzfwswEIc9hAFWpNKa/Qe1PzTi8rqJ/5pKnvCwN8nbhXsROtjz2kwgkC+MBoL+OEcSKILa60xUaZw=="], + + "@codemirror/search": ["@codemirror/search@6.6.0", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.37.0", "crelt": "^1.0.5" } }, "sha512-koFuNXcDvyyotWcgOnZGmY7LZqEOXZaaxD/j6n18TCLx2/9HieZJ5H6hs1g8FiRxBD0DNfs0nXn17g872RmYdw=="], + + "@codemirror/state": ["@codemirror/state@6.6.0", "", { "dependencies": { "@marijn/find-cluster-break": "^1.0.0" } }, "sha512-4nbvra5R5EtiCzr9BTHiTLc+MLXK2QGiAVYMyi8PkQd3SR+6ixar/Q/01Fa21TBIDOZXgeWV4WppsQolSreAPQ=="], + + "@codemirror/theme-one-dark": ["@codemirror/theme-one-dark@6.1.3", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/highlight": "^1.0.0" } }, "sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA=="], + + "@codemirror/view": ["@codemirror/view@6.40.0", "", { "dependencies": { "@codemirror/state": "^6.6.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "sha512-WA0zdU7xfF10+5I3HhUUq3kqOx3KjqmtQ9lqZjfK7jtYk4G72YW9rezcSywpaUMCWOMlq+6E0pO1IWg1TNIhtg=="], + + "@deadlyjack/ajax": ["@deadlyjack/ajax@1.2.6", "", {}, "sha512-VwZU8YUflO2/V/dl3dluu+3jg8Ghz/W5fwxD5Z21OZXKeV73d+vStKVBe4wi+Av2KbTR35K7Z+5Q3iIpjB41MA=="], + + "@discoveryjs/json-ext": ["@discoveryjs/json-ext@0.5.7", "", {}, "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw=="], + + "@emmetio/abbreviation": ["@emmetio/abbreviation@2.3.3", "", { "dependencies": { "@emmetio/scanner": "^1.0.4" } }, "sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA=="], + + "@emmetio/codemirror6-plugin": ["@emmetio/codemirror6-plugin@0.4.0", "", { "dependencies": { "@emmetio/math-expression": "^1.0.5", "emmet": "^2.4.11" }, "peerDependencies": { "@codemirror/autocomplete": "^6.17.0", "@codemirror/commands": "^6.6.0", "@codemirror/lang-css": "^6.2.1", "@codemirror/lang-html": "^6.4.9", "@codemirror/language": "^6.10.2", "@codemirror/state": "^6.4.1", "@codemirror/view": "^6.29.1" } }, "sha512-ZP3W8JvN0cEFTdsrcKPIBg/K9sadE15g//TfubPXfM28ZxUp3SwNASbRfRLRQmPyP73+pAZzLqeOwACUUz/oAw=="], + + "@emmetio/css-abbreviation": ["@emmetio/css-abbreviation@2.1.8", "", { "dependencies": { "@emmetio/scanner": "^1.0.4" } }, "sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw=="], + + "@emmetio/math-expression": ["@emmetio/math-expression@1.0.5", "", { "dependencies": { "@emmetio/scanner": "^1.0.4" } }, "sha512-qf5SXD/ViS04rXSeDg9CRGM10xLC9dVaKIbMHrrwxYr5LNB/C0rOfokhGSBwnVQKcidLmdRJeNWH1V1tppZ84Q=="], + + "@emmetio/scanner": ["@emmetio/scanner@1.0.4", "", {}, "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA=="], + + "@emnapi/core": ["@emnapi/core@1.8.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg=="], + + "@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], + + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], + + "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], + + "@iconify/utils": ["@iconify/utils@3.1.0", "", { "dependencies": { "@antfu/install-pkg": "^1.1.0", "@iconify/types": "^2.0.0", "mlly": "^1.8.0" } }, "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw=="], "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="], @@ -311,29 +457,111 @@ "@isaacs/string-locale-compare": ["@isaacs/string-locale-compare@1.1.0", "", {}, "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ=="], - "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.1.1", "", { "dependencies": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" } }, ""], + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], + + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], + + "@jridgewell/source-map": ["@jridgewell/source-map@0.3.11", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA=="], + + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + + "@jsonjoy.com/base64": ["@jsonjoy.com/base64@1.1.2", "", { "peerDependencies": { "tslib": "2" } }, "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA=="], - "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.0", "", {}, ""], + "@jsonjoy.com/buffers": ["@jsonjoy.com/buffers@17.65.0", "", { "peerDependencies": { "tslib": "2" } }, "sha512-eBrIXd0/Ld3p9lpDDlMaMn6IEfWqtHMD+z61u0JrIiPzsV1r7m6xDZFRxJyvIFTEO+SWdYF9EiQbXZGd8BzPfA=="], - "@jridgewell/set-array": ["@jridgewell/set-array@1.2.1", "", {}, "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="], + "@jsonjoy.com/codegen": ["@jsonjoy.com/codegen@1.0.0", "", { "peerDependencies": { "tslib": "2" } }, "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g=="], - "@jridgewell/source-map": ["@jridgewell/source-map@0.3.10", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q=="], + "@jsonjoy.com/fs-core": ["@jsonjoy.com/fs-core@4.56.10", "", { "dependencies": { "@jsonjoy.com/fs-node-builtins": "4.56.10", "@jsonjoy.com/fs-node-utils": "4.56.10", "thingies": "^2.5.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw=="], - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.4", "", {}, "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw=="], + "@jsonjoy.com/fs-fsa": ["@jsonjoy.com/fs-fsa@4.56.10", "", { "dependencies": { "@jsonjoy.com/fs-core": "4.56.10", "@jsonjoy.com/fs-node-builtins": "4.56.10", "@jsonjoy.com/fs-node-utils": "4.56.10", "thingies": "^2.5.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q=="], - "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.29", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ=="], + "@jsonjoy.com/fs-node": ["@jsonjoy.com/fs-node@4.56.10", "", { "dependencies": { "@jsonjoy.com/fs-core": "4.56.10", "@jsonjoy.com/fs-node-builtins": "4.56.10", "@jsonjoy.com/fs-node-utils": "4.56.10", "@jsonjoy.com/fs-print": "4.56.10", "@jsonjoy.com/fs-snapshot": "4.56.10", "glob-to-regex.js": "^1.0.0", "thingies": "^2.5.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q=="], - "@netflix/nerror": ["@netflix/nerror@1.1.3", "", { "dependencies": { "assert-plus": "^1.0.0", "extsprintf": "^1.4.0", "lodash": "^4.17.15" } }, ""], + "@jsonjoy.com/fs-node-builtins": ["@jsonjoy.com/fs-node-builtins@4.56.10", "", { "peerDependencies": { "tslib": "2" } }, "sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw=="], - "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, ""], + "@jsonjoy.com/fs-node-to-fsa": ["@jsonjoy.com/fs-node-to-fsa@4.56.10", "", { "dependencies": { "@jsonjoy.com/fs-fsa": "4.56.10", "@jsonjoy.com/fs-node-builtins": "4.56.10", "@jsonjoy.com/fs-node-utils": "4.56.10" }, "peerDependencies": { "tslib": "2" } }, "sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw=="], - "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, ""], + "@jsonjoy.com/fs-node-utils": ["@jsonjoy.com/fs-node-utils@4.56.10", "", { "dependencies": { "@jsonjoy.com/fs-node-builtins": "4.56.10" }, "peerDependencies": { "tslib": "2" } }, "sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg=="], - "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, ""], + "@jsonjoy.com/fs-print": ["@jsonjoy.com/fs-print@4.56.10", "", { "dependencies": { "@jsonjoy.com/fs-node-utils": "4.56.10", "tree-dump": "^1.1.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw=="], + + "@jsonjoy.com/fs-snapshot": ["@jsonjoy.com/fs-snapshot@4.56.10", "", { "dependencies": { "@jsonjoy.com/buffers": "^17.65.0", "@jsonjoy.com/fs-node-utils": "4.56.10", "@jsonjoy.com/json-pack": "^17.65.0", "@jsonjoy.com/util": "^17.65.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g=="], + + "@jsonjoy.com/json-pack": ["@jsonjoy.com/json-pack@1.21.0", "", { "dependencies": { "@jsonjoy.com/base64": "^1.1.2", "@jsonjoy.com/buffers": "^1.2.0", "@jsonjoy.com/codegen": "^1.0.0", "@jsonjoy.com/json-pointer": "^1.0.2", "@jsonjoy.com/util": "^1.9.0", "hyperdyperid": "^1.2.0", "thingies": "^2.5.0", "tree-dump": "^1.1.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg=="], + + "@jsonjoy.com/json-pointer": ["@jsonjoy.com/json-pointer@1.0.2", "", { "dependencies": { "@jsonjoy.com/codegen": "^1.0.0", "@jsonjoy.com/util": "^1.9.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg=="], + + "@jsonjoy.com/util": ["@jsonjoy.com/util@1.9.0", "", { "dependencies": { "@jsonjoy.com/buffers": "^1.0.0", "@jsonjoy.com/codegen": "^1.0.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ=="], + + "@leichtgewicht/ip-codec": ["@leichtgewicht/ip-codec@2.0.5", "", {}, "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw=="], + + "@lezer/common": ["@lezer/common@1.5.0", "", {}, "sha512-PNGcolp9hr4PJdXR4ix7XtixDrClScvtSCYW3rQG106oVMOOI+jFb+0+J3mbeL/53g1Zd6s0kJzaw6Ri68GmAA=="], + + "@lezer/cpp": ["@lezer/cpp@1.1.5", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-DIhSXmYtJKLehrjzDFN+2cPt547ySQ41nA8yqcDf/GxMc+YM736xqltFkvADL2M0VebU5I+3+4ks2Vv+Kyq3Aw=="], + + "@lezer/css": ["@lezer/css@1.3.0", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.0" } }, "sha512-pBL7hup88KbI7hXnZV3PQsn43DHy6TWyzuyk2AO9UyoXcDltvIdqWKE1dLL/45JVZ+YZkHe1WVHqO6wugZZWcw=="], + + "@lezer/go": ["@lezer/go@1.0.1", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.0" } }, "sha512-xToRsYxwsgJNHTgNdStpcvmbVuKxTapV0dM0wey1geMMRc9aggoVyKgzYp41D2/vVOx+Ii4hmE206kvxIXBVXQ=="], + + "@lezer/highlight": ["@lezer/highlight@1.2.3", "", { "dependencies": { "@lezer/common": "^1.3.0" } }, "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g=="], + + "@lezer/html": ["@lezer/html@1.3.13", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-oI7n6NJml729m7pjm9lvLvmXbdoMoi2f+1pwSDJkl9d68zGr7a9Btz8NdHTGQZtW2DA25ybeuv/SyDb9D5tseg=="], + + "@lezer/java": ["@lezer/java@1.1.3", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw=="], + + "@lezer/javascript": ["@lezer/javascript@1.5.4", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.1.3", "@lezer/lr": "^1.3.0" } }, "sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA=="], + + "@lezer/json": ["@lezer/json@1.0.3", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ=="], + + "@lezer/lr": ["@lezer/lr@1.4.7", "", { "dependencies": { "@lezer/common": "^1.0.0" } }, "sha512-wNIFWdSUfX9Jc6ePMzxSPVgTVB4EOfDIwLQLWASyiUdHKaMsiilj9bYiGkGQCKVodd0x6bgQCV207PILGFCF9Q=="], + + "@lezer/markdown": ["@lezer/markdown@1.6.3", "", { "dependencies": { "@lezer/common": "^1.5.0", "@lezer/highlight": "^1.0.0" } }, "sha512-jpGm5Ps+XErS+xA4urw7ogEGkeZOahVQF21Z6oECF0sj+2liwZopd2+I8uH5I/vZsRuuze3OxBREIANLf6KKUw=="], + + "@lezer/php": ["@lezer/php@1.0.5", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.1.0" } }, "sha512-W7asp9DhM6q0W6DYNwIkLSKOvxlXRrif+UXBMxzsJUuqmhE7oVU+gS3THO4S/Puh7Xzgm858UNaFi6dxTP8dJA=="], + + "@lezer/python": ["@lezer/python@1.1.18", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-31FiUrU7z9+d/ElGQLJFXl+dKOdx0jALlP3KEOsGTex8mvj+SoE1FgItcHWK/axkxCHGUSpqIHt6JAWfWu9Rhg=="], + + "@lezer/rust": ["@lezer/rust@1.0.2", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg=="], + + "@lezer/sass": ["@lezer/sass@1.1.0", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-3mMGdCTUZ/84ArHOuXWQr37pnf7f+Nw9ycPUeKX+wu19b7pSMcZGLbaXwvD2APMBDOGxPmpK/O6S1v1EvLoqgQ=="], + + "@lezer/xml": ["@lezer/xml@1.0.6", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww=="], + + "@lezer/yaml": ["@lezer/yaml@1.0.3", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.4.0" } }, "sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA=="], + + "@marijn/find-cluster-break": ["@marijn/find-cluster-break@1.0.2", "", {}, "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g=="], + + "@mermaid-js/parser": ["@mermaid-js/parser@1.0.1", "", { "dependencies": { "langium": "^4.0.0" } }, "sha512-opmV19kN1JsK0T6HhhokHpcVkqKpF+x2pPDKKM2ThHtZAB5F4PROopk0amuVYK5qMrIA4erzpNm8gmPNJgMDxQ=="], + + "@module-federation/error-codes": ["@module-federation/error-codes@0.22.0", "", {}, "sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug=="], + + "@module-federation/runtime": ["@module-federation/runtime@0.22.0", "", { "dependencies": { "@module-federation/error-codes": "0.22.0", "@module-federation/runtime-core": "0.22.0", "@module-federation/sdk": "0.22.0" } }, "sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA=="], + + "@module-federation/runtime-core": ["@module-federation/runtime-core@0.22.0", "", { "dependencies": { "@module-federation/error-codes": "0.22.0", "@module-federation/sdk": "0.22.0" } }, "sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA=="], + + "@module-federation/runtime-tools": ["@module-federation/runtime-tools@0.22.0", "", { "dependencies": { "@module-federation/runtime": "0.22.0", "@module-federation/webpack-bundler-runtime": "0.22.0" } }, "sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA=="], + + "@module-federation/sdk": ["@module-federation/sdk@0.22.0", "", {}, "sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g=="], + + "@module-federation/webpack-bundler-runtime": ["@module-federation/webpack-bundler-runtime@0.22.0", "", { "dependencies": { "@module-federation/runtime": "0.22.0", "@module-federation/sdk": "0.22.0" } }, "sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA=="], + + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.0.7", "", { "dependencies": { "@emnapi/core": "^1.5.0", "@emnapi/runtime": "^1.5.0", "@tybys/wasm-util": "^0.10.1" } }, "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw=="], + + "@netflix/nerror": ["@netflix/nerror@1.1.3", "", { "dependencies": { "assert-plus": "^1.0.0", "extsprintf": "^1.4.0", "lodash": "^4.17.15" } }, "sha512-b+MGNyP9/LXkapreJzNUzcvuzZslj/RGgdVVJ16P2wSlYatfLycPObImqVJSmNAdyeShvNeM/pl3sVZsObFueg=="], + + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], "@npmcli/agent": ["@npmcli/agent@4.0.0", "", { "dependencies": { "agent-base": "^7.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^11.2.1", "socks-proxy-agent": "^8.0.3" } }, "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA=="], - "@npmcli/arborist": ["@npmcli/arborist@9.1.8", "", { "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/fs": "^5.0.0", "@npmcli/installed-package-contents": "^4.0.0", "@npmcli/map-workspaces": "^5.0.0", "@npmcli/metavuln-calculator": "^9.0.2", "@npmcli/name-from-folder": "^4.0.0", "@npmcli/node-gyp": "^5.0.0", "@npmcli/package-json": "^7.0.0", "@npmcli/query": "^5.0.0", "@npmcli/redact": "^4.0.0", "@npmcli/run-script": "^10.0.0", "bin-links": "^6.0.0", "cacache": "^20.0.1", "common-ancestor-path": "^1.0.1", "hosted-git-info": "^9.0.0", "json-stringify-nice": "^1.1.4", "lru-cache": "^11.2.1", "minimatch": "^10.0.3", "nopt": "^9.0.0", "npm-install-checks": "^8.0.0", "npm-package-arg": "^13.0.0", "npm-pick-manifest": "^11.0.1", "npm-registry-fetch": "^19.0.0", "pacote": "^21.0.2", "parse-conflict-json": "^5.0.1", "proc-log": "^6.0.0", "proggy": "^4.0.0", "promise-all-reject-late": "^1.0.0", "promise-call-limit": "^3.0.1", "semver": "^7.3.7", "ssri": "^13.0.0", "treeverse": "^3.0.0", "walk-up-path": "^4.0.0" }, "bin": { "arborist": "bin/index.js" } }, "sha512-TYAzq0oaXQU+uLfXFbR2wYx62qHIOSg/TYhGWJSphJDypyjdNXC7B/+k29ElC2vWlWfX4OJnhmSY5DTwSFiNpg=="], + "@npmcli/arborist": ["@npmcli/arborist@9.1.9", "", { "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/fs": "^5.0.0", "@npmcli/installed-package-contents": "^4.0.0", "@npmcli/map-workspaces": "^5.0.0", "@npmcli/metavuln-calculator": "^9.0.2", "@npmcli/name-from-folder": "^4.0.0", "@npmcli/node-gyp": "^5.0.0", "@npmcli/package-json": "^7.0.0", "@npmcli/query": "^5.0.0", "@npmcli/redact": "^4.0.0", "@npmcli/run-script": "^10.0.0", "bin-links": "^6.0.0", "cacache": "^20.0.1", "common-ancestor-path": "^1.0.1", "hosted-git-info": "^9.0.0", "json-stringify-nice": "^1.1.4", "lru-cache": "^11.2.1", "minimatch": "^10.0.3", "nopt": "^9.0.0", "npm-install-checks": "^8.0.0", "npm-package-arg": "^13.0.0", "npm-pick-manifest": "^11.0.1", "npm-registry-fetch": "^19.0.0", "pacote": "^21.0.2", "parse-conflict-json": "^5.0.1", "proc-log": "^6.0.0", "proggy": "^4.0.0", "promise-all-reject-late": "^1.0.0", "promise-call-limit": "^3.0.1", "semver": "^7.3.7", "ssri": "^13.0.0", "treeverse": "^3.0.0", "walk-up-path": "^4.0.0" }, "bin": { "arborist": "bin/index.js" } }, "sha512-O/rLeBo64mkUn1zU+1tFDWXvbAA9UXe9eUldwTwRLxOLFx9obqjNoozW65LmYqgWb0DG40i9lNZSv78VX2GKhw=="], "@npmcli/fs": ["@npmcli/fs@5.0.0", "", { "dependencies": { "semver": "^7.3.5" } }, "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og=="], @@ -387,32 +615,146 @@ "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.5.1", "", { "os": "win32", "cpu": "x64" }, "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA=="], + "@polka/url": ["@polka/url@1.0.0-next.29", "", {}, "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww=="], + + "@rspack/binding": ["@rspack/binding@1.7.3", "", { "optionalDependencies": { "@rspack/binding-darwin-arm64": "1.7.3", "@rspack/binding-darwin-x64": "1.7.3", "@rspack/binding-linux-arm64-gnu": "1.7.3", "@rspack/binding-linux-arm64-musl": "1.7.3", "@rspack/binding-linux-x64-gnu": "1.7.3", "@rspack/binding-linux-x64-musl": "1.7.3", "@rspack/binding-wasm32-wasi": "1.7.3", "@rspack/binding-win32-arm64-msvc": "1.7.3", "@rspack/binding-win32-ia32-msvc": "1.7.3", "@rspack/binding-win32-x64-msvc": "1.7.3" } }, "sha512-N943pbPktJPymiYZWZMZMVX/PeSU42cWGpBly82N+ibNCX/Oo4yKWE0v+TyIJm5JaUFhtF2NpvzRbrjg/6skqw=="], + + "@rspack/binding-darwin-arm64": ["@rspack/binding-darwin-arm64@1.7.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-sXha3xG2KDkXLVjrmnw5kGhBriH2gFd9KAyD2ZBq0sH/gNIvqEaWhAFoO1YtrKU6rCgiSBrs0frfGc6DEqWfTA=="], + + "@rspack/binding-darwin-x64": ["@rspack/binding-darwin-x64@1.7.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-AUWMBgaPo7NgpW7arlw9laj9ZQxg7EjC5pnSCRH4BVPV+8egdoPCn5DZk05M25m73crKnGl8c7CrwTRNZeaPrw=="], + + "@rspack/binding-linux-arm64-gnu": ["@rspack/binding-linux-arm64-gnu@1.7.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-SodEX3+1/GLz0LobX9cY1QdjJ1NftSEh4C2vGpr71iA3MS9HyXuw4giqSeRQ4DpCybqpdS/3RLjVqFQEfGpcnw=="], + + "@rspack/binding-linux-arm64-musl": ["@rspack/binding-linux-arm64-musl@1.7.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-ydD2fNdEy+G7EYJ/a3FfdFZPfrLj/UnZocCNlZTTSHEhu+jURdQk0hwV11CvL+sjnKU5e/8IVMGUzhu3Gu8Ghg=="], + + "@rspack/binding-linux-x64-gnu": ["@rspack/binding-linux-x64-gnu@1.7.3", "", { "os": "linux", "cpu": "x64" }, "sha512-adnDbUqafSAI6/N6vZ+iONSo1W3yUpnNtJqP3rVp7+YdABhUpbOhtaY37qpIJ3uFajXctYFyISPrb4MWl1M9Yg=="], + + "@rspack/binding-linux-x64-musl": ["@rspack/binding-linux-x64-musl@1.7.3", "", { "os": "linux", "cpu": "x64" }, "sha512-5jnjdODk5HCUFPN6rTaFukynDU4Fn9eCL+4TSp6mqo6YAnfnJEuzDjfetA8t3aQFcAs7WriQfNwvdcA4HvYtbA=="], + + "@rspack/binding-wasm32-wasi": ["@rspack/binding-wasm32-wasi@1.7.3", "", { "dependencies": { "@napi-rs/wasm-runtime": "1.0.7" }, "cpu": "none" }, "sha512-WLQK0ksUzMkVeGoHAMIxenmeEU5tMvFDK36Aip7VRj7T6vZTcAwvbMwc38QrIAvlG7dqWoxgPQi35ba1igNNDw=="], + + "@rspack/binding-win32-arm64-msvc": ["@rspack/binding-win32-arm64-msvc@1.7.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-RAetPeY45g2NW6fID46VTV7mwY4Lqyw/flLbvCG28yrVOSkekw1KMCr1k335O3VNeqD+5dZDi1n+mwiAx/KMmA=="], + + "@rspack/binding-win32-ia32-msvc": ["@rspack/binding-win32-ia32-msvc@1.7.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-X3c1B609DxzW++FdWf7kkoXWwsC/DUEJ1N1qots4T0P2G2V+pDQfjdTRSC0YQ75toAvwZqpwGzToQJ9IwQ4Ayw=="], + + "@rspack/binding-win32-x64-msvc": ["@rspack/binding-win32-x64-msvc@1.7.3", "", { "os": "win32", "cpu": "x64" }, "sha512-f6AvZbJGIg+7NggHXv0+lyMzvIUfeCxcB5DNbo3H5AalIgwkoFpcBXLBqgMVIbqA0yNyP06eiK98rpzc9ulQQg=="], + + "@rspack/cli": ["@rspack/cli@1.7.3", "", { "dependencies": { "@discoveryjs/json-ext": "^0.5.7", "@rspack/dev-server": "~1.1.5", "exit-hook": "^4.0.0", "webpack-bundle-analyzer": "4.10.2" }, "peerDependencies": { "@rspack/core": "^1.0.0-alpha || ^1.x" }, "bin": { "rspack": "bin/rspack.js" } }, "sha512-6fb+cd1RjCK3ByN8oq7dIXZWFkbI7+y7VGlIvt/Nl2roGnL3IzXhEbyQzmXv9X+/fZ/pEKHWEyH05Rnqs3+VUQ=="], + + "@rspack/core": ["@rspack/core@1.7.3", "", { "dependencies": { "@module-federation/runtime-tools": "0.22.0", "@rspack/binding": "1.7.3", "@rspack/lite-tapable": "1.1.0" }, "peerDependencies": { "@swc/helpers": ">=0.5.1" }, "optionalPeers": ["@swc/helpers"] }, "sha512-GUiTRTz6+gbfM2g3ixXqrvPSeHmyAFu/qHEZZjbYFeDtZhpy1gVaVAHiZfaaIIm+vRlNi7JmULWFZQFKwpQB9Q=="], + + "@rspack/dev-server": ["@rspack/dev-server@1.1.5", "", { "dependencies": { "chokidar": "^3.6.0", "http-proxy-middleware": "^2.0.9", "p-retry": "^6.2.0", "webpack-dev-server": "5.2.2", "ws": "^8.18.0" }, "peerDependencies": { "@rspack/core": "*" } }, "sha512-cwz0qc6iqqoJhyWqxP7ZqE2wyYNHkBMQUXxoQ0tNoZ4YNRkDyQ4HVJ/3oPSmMKbvJk/iJ16u7xZmwG6sK47q/A=="], + + "@rspack/lite-tapable": ["@rspack/lite-tapable@1.1.0", "", {}, "sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw=="], + "@sigstore/bundle": ["@sigstore/bundle@4.0.0", "", { "dependencies": { "@sigstore/protobuf-specs": "^0.5.0" } }, "sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A=="], - "@sigstore/core": ["@sigstore/core@3.0.0", "", {}, "sha512-NgbJ+aW9gQl/25+GIEGYcCyi8M+ng2/5X04BMuIgoDfgvp18vDcoNHOQjQsG9418HGNYRxG3vfEXaR1ayD37gg=="], + "@sigstore/core": ["@sigstore/core@3.1.0", "", {}, "sha512-o5cw1QYhNQ9IroioJxpzexmPjfCe7gzafd2RY3qnMpxr4ZEja+Jad/U8sgFpaue6bOaF+z7RVkyKVV44FN+N8A=="], "@sigstore/protobuf-specs": ["@sigstore/protobuf-specs@0.5.0", "", {}, "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA=="], - "@sigstore/sign": ["@sigstore/sign@4.0.1", "", { "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.0.0", "@sigstore/protobuf-specs": "^0.5.0", "make-fetch-happen": "^15.0.2", "proc-log": "^5.0.0", "promise-retry": "^2.0.1" } }, "sha512-KFNGy01gx9Y3IBPG/CergxR9RZpN43N+lt3EozEfeoyqm8vEiLxwRl3ZO5sPx3Obv1ix/p7FWOlPc2Jgwfp9PA=="], + "@sigstore/sign": ["@sigstore/sign@4.1.0", "", { "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.1.0", "@sigstore/protobuf-specs": "^0.5.0", "make-fetch-happen": "^15.0.3", "proc-log": "^6.1.0", "promise-retry": "^2.0.1" } }, "sha512-Vx1RmLxLGnSUqx/o5/VsCjkuN5L7y+vxEEwawvc7u+6WtX2W4GNa7b9HEjmcRWohw/d6BpATXmvOwc78m+Swdg=="], - "@sigstore/tuf": ["@sigstore/tuf@4.0.0", "", { "dependencies": { "@sigstore/protobuf-specs": "^0.5.0", "tuf-js": "^4.0.0" } }, "sha512-0QFuWDHOQmz7t66gfpfNO6aEjoFrdhkJaej/AOqb4kqWZVbPWFZifXZzkxyQBB1OwTbkhdT3LNpMFxwkTvf+2w=="], + "@sigstore/tuf": ["@sigstore/tuf@4.0.1", "", { "dependencies": { "@sigstore/protobuf-specs": "^0.5.0", "tuf-js": "^4.1.0" } }, "sha512-OPZBg8y5Vc9yZjmWCHrlWPMBqW5yd8+wFNl+thMdtcWz3vjVSoJQutF8YkrzI0SLGnkuFof4HSsWUhXrf219Lw=="], - "@sigstore/verify": ["@sigstore/verify@3.0.0", "", { "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.0.0", "@sigstore/protobuf-specs": "^0.5.0" } }, "sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw=="], + "@sigstore/verify": ["@sigstore/verify@3.1.0", "", { "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.1.0", "@sigstore/protobuf-specs": "^0.5.0" } }, "sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag=="], - "@sphinxxxx/color-conversion": ["@sphinxxxx/color-conversion@2.2.2", "", {}, ""], + "@sphinxxxx/color-conversion": ["@sphinxxxx/color-conversion@2.2.2", "", {}, "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw=="], "@tufjs/canonical-json": ["@tufjs/canonical-json@2.0.0", "", {}, "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA=="], - "@tufjs/models": ["@tufjs/models@4.0.0", "", { "dependencies": { "@tufjs/canonical-json": "2.0.0", "minimatch": "^9.0.5" } }, "sha512-h5x5ga/hh82COe+GoD4+gKUeV4T3iaYOxqLt41GRKApinPI7DMidhCmNVTjKfhCWFJIGXaFJee07XczdT4jdZQ=="], + "@tufjs/models": ["@tufjs/models@4.1.0", "", { "dependencies": { "@tufjs/canonical-json": "2.0.0", "minimatch": "^10.1.1" } }, "sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww=="], + + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], "@types/ace": ["@types/ace@0.0.52", "", {}, "sha512-YPF9S7fzpuyrxru+sG/rrTpZkC6gpHBPF14W3x70kqVOD+ks6jkYLapk4yceh36xej7K4HYxcyz9ZDQ2lTvwgQ=="], + "@types/body-parser": ["@types/body-parser@1.19.6", "", { "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g=="], + + "@types/bonjour": ["@types/bonjour@3.5.13", "", { "dependencies": { "@types/node": "*" } }, "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ=="], + + "@types/connect": ["@types/connect@3.4.38", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="], + + "@types/connect-history-api-fallback": ["@types/connect-history-api-fallback@1.5.4", "", { "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" } }, "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw=="], + + "@types/d3": ["@types/d3@7.4.3", "", { "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", "@types/d3-brush": "*", "@types/d3-chord": "*", "@types/d3-color": "*", "@types/d3-contour": "*", "@types/d3-delaunay": "*", "@types/d3-dispatch": "*", "@types/d3-drag": "*", "@types/d3-dsv": "*", "@types/d3-ease": "*", "@types/d3-fetch": "*", "@types/d3-force": "*", "@types/d3-format": "*", "@types/d3-geo": "*", "@types/d3-hierarchy": "*", "@types/d3-interpolate": "*", "@types/d3-path": "*", "@types/d3-polygon": "*", "@types/d3-quadtree": "*", "@types/d3-random": "*", "@types/d3-scale": "*", "@types/d3-scale-chromatic": "*", "@types/d3-selection": "*", "@types/d3-shape": "*", "@types/d3-time": "*", "@types/d3-time-format": "*", "@types/d3-timer": "*", "@types/d3-transition": "*", "@types/d3-zoom": "*" } }, "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww=="], + + "@types/d3-array": ["@types/d3-array@3.2.2", "", {}, "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw=="], + + "@types/d3-axis": ["@types/d3-axis@3.0.6", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw=="], + + "@types/d3-brush": ["@types/d3-brush@3.0.6", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A=="], + + "@types/d3-chord": ["@types/d3-chord@3.0.6", "", {}, "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg=="], + + "@types/d3-color": ["@types/d3-color@3.1.3", "", {}, "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="], + + "@types/d3-contour": ["@types/d3-contour@3.0.6", "", { "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" } }, "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg=="], + + "@types/d3-delaunay": ["@types/d3-delaunay@6.0.4", "", {}, "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw=="], + + "@types/d3-dispatch": ["@types/d3-dispatch@3.0.7", "", {}, "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA=="], + + "@types/d3-drag": ["@types/d3-drag@3.0.7", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ=="], + + "@types/d3-dsv": ["@types/d3-dsv@3.0.7", "", {}, "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g=="], + + "@types/d3-ease": ["@types/d3-ease@3.0.2", "", {}, "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA=="], + + "@types/d3-fetch": ["@types/d3-fetch@3.0.7", "", { "dependencies": { "@types/d3-dsv": "*" } }, "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA=="], + + "@types/d3-force": ["@types/d3-force@3.0.10", "", {}, "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw=="], + + "@types/d3-format": ["@types/d3-format@3.0.4", "", {}, "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g=="], + + "@types/d3-geo": ["@types/d3-geo@3.1.0", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ=="], + + "@types/d3-hierarchy": ["@types/d3-hierarchy@3.1.7", "", {}, "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg=="], + + "@types/d3-interpolate": ["@types/d3-interpolate@3.0.4", "", { "dependencies": { "@types/d3-color": "*" } }, "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA=="], + + "@types/d3-path": ["@types/d3-path@3.1.1", "", {}, "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg=="], + + "@types/d3-polygon": ["@types/d3-polygon@3.0.2", "", {}, "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA=="], + + "@types/d3-quadtree": ["@types/d3-quadtree@3.0.6", "", {}, "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg=="], + + "@types/d3-random": ["@types/d3-random@3.0.3", "", {}, "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ=="], + + "@types/d3-scale": ["@types/d3-scale@4.0.9", "", { "dependencies": { "@types/d3-time": "*" } }, "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw=="], + + "@types/d3-scale-chromatic": ["@types/d3-scale-chromatic@3.1.0", "", {}, "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ=="], + + "@types/d3-selection": ["@types/d3-selection@3.0.11", "", {}, "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w=="], + + "@types/d3-shape": ["@types/d3-shape@3.1.8", "", { "dependencies": { "@types/d3-path": "*" } }, "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w=="], + + "@types/d3-time": ["@types/d3-time@3.0.4", "", {}, "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g=="], + + "@types/d3-time-format": ["@types/d3-time-format@4.0.3", "", {}, "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg=="], + + "@types/d3-timer": ["@types/d3-timer@3.0.2", "", {}, "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="], + + "@types/d3-transition": ["@types/d3-transition@3.0.9", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg=="], + + "@types/d3-zoom": ["@types/d3-zoom@3.0.8", "", { "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" } }, "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw=="], + "@types/eslint": ["@types/eslint@9.6.1", "", { "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag=="], "@types/eslint-scope": ["@types/eslint-scope@3.7.7", "", { "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg=="], "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + "@types/express": ["@types/express@4.17.25", "", { "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "^1" } }, "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw=="], + + "@types/express-serve-static-core": ["@types/express-serve-static-core@4.19.8", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA=="], + + "@types/geojson": ["@types/geojson@7946.0.16", "", {}, "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg=="], + + "@types/http-errors": ["@types/http-errors@2.0.5", "", {}, "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg=="], + + "@types/http-proxy": ["@types/http-proxy@1.17.17", "", { "dependencies": { "@types/node": "*" } }, "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw=="], + "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], "@types/linkify-it": ["@types/linkify-it@5.0.0", "", {}, "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q=="], @@ -421,13 +763,35 @@ "@types/mdurl": ["@types/mdurl@2.0.0", "", {}, "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg=="], - "@types/node": ["@types/node@24.2.1", "", { "dependencies": { "undici-types": "~7.10.0" } }, "sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ=="], + "@types/mime": ["@types/mime@1.3.5", "", {}, "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="], + + "@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="], + + "@types/node-forge": ["@types/node-forge@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw=="], + + "@types/qs": ["@types/qs@6.14.0", "", {}, "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ=="], + + "@types/range-parser": ["@types/range-parser@1.2.7", "", {}, "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="], + + "@types/retry": ["@types/retry@0.12.2", "", {}, "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow=="], + + "@types/send": ["@types/send@0.17.6", "", { "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og=="], + + "@types/serve-index": ["@types/serve-index@1.9.4", "", { "dependencies": { "@types/express": "*" } }, "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug=="], + + "@types/serve-static": ["@types/serve-static@1.15.10", "", { "dependencies": { "@types/http-errors": "*", "@types/node": "*", "@types/send": "<1" } }, "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw=="], + + "@types/sockjs": ["@types/sockjs@0.3.36", "", { "dependencies": { "@types/node": "*" } }, "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q=="], "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], "@types/url-parse": ["@types/url-parse@1.4.11", "", {}, "sha512-FKvKIqRaykZtd4n47LbK/W/5fhQQ1X7cxxzG9A48h0BGN+S04NH7ervcCjM8tyR0lyGru83FAHSmw2ObgKoESg=="], - "@ungap/custom-elements": ["@ungap/custom-elements@1.3.0", "", {}, ""], + "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], + + "@ungap/custom-elements": ["@ungap/custom-elements@1.3.0", "", {}, "sha512-f4q/s76+8nOy+fhrNHyetuoPDR01lmlZB5czfCG+OOnBw/Wf+x48DcCDPmMQY7oL8xYFL8qfenMoiS8DUkKBUw=="], + + "@upsetjs/venn.js": ["@upsetjs/venn.js@2.0.0", "", { "optionalDependencies": { "d3-selection": "^3.0.0", "d3-transition": "^3.0.1" } }, "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw=="], "@webassemblyjs/ast": ["@webassemblyjs/ast@1.14.1", "", { "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ=="], @@ -459,13 +823,7 @@ "@webassemblyjs/wast-printer": ["@webassemblyjs/wast-printer@1.14.1", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw=="], - "@webpack-cli/configtest": ["@webpack-cli/configtest@3.0.1", "", { "peerDependencies": { "webpack": "^5.82.0", "webpack-cli": "6.x.x" } }, "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA=="], - - "@webpack-cli/info": ["@webpack-cli/info@3.0.1", "", { "peerDependencies": { "webpack": "^5.82.0", "webpack-cli": "6.x.x" } }, "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ=="], - - "@webpack-cli/serve": ["@webpack-cli/serve@3.0.1", "", { "peerDependencies": { "webpack": "^5.82.0", "webpack-cli": "6.x.x" } }, "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg=="], - - "@xmldom/xmldom": ["@xmldom/xmldom@0.8.10", "", {}, "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw=="], + "@xmldom/xmldom": ["@xmldom/xmldom@0.8.11", "", {}, "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw=="], "@xterm/addon-attach": ["@xterm/addon-attach@0.11.0", "", { "peerDependencies": { "@xterm/xterm": "^5.0.0" } }, "sha512-JboCN0QAY6ZLY/SSB/Zl2cQ5zW1Eh4X3fH7BnuR1NB7xGRhzbqU2Npmpiw/3zFlxDaU88vtKzok44JKi2L2V2Q=="], @@ -487,37 +845,47 @@ "@xtuc/long": ["@xtuc/long@4.2.2", "", {}, "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="], - "abbrev": ["abbrev@3.0.1", "", {}, "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg=="], + "abbrev": ["abbrev@4.0.0", "", {}, "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA=="], - "acorn": ["acorn@8.15.0", "", { "bin": "bin/acorn" }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], + "accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="], + + "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], "acorn-import-phases": ["acorn-import-phases@1.0.4", "", { "peerDependencies": { "acorn": "^8.14.0" } }, "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ=="], + "acorn-walk": ["acorn-walk@8.3.4", "", { "dependencies": { "acorn": "^8.11.0" } }, "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g=="], + "agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], - "ajv": ["ajv@8.12.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", "uri-js": "^4.2.2" } }, ""], + "ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], + + "ajv-formats": ["ajv-formats@2.1.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="], + + "ajv-keywords": ["ajv-keywords@5.1.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3" }, "peerDependencies": { "ajv": "^8.8.2" } }, "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw=="], - "ajv-formats": ["ajv-formats@2.1.1", "", { "dependencies": { "ajv": "^8.0.0" }, "peerDependencies": { "ajv": "^8.0.0" } }, ""], + "android-versions": ["android-versions@2.1.1", "", { "dependencies": { "semver": "^7.5.2" } }, "sha512-dYeO3KHDO81WvEwZFK+OF0dJl/ESvxV3QZE/qo/AAnG/uijco6DOXJJla3CdoC8Eg53YBlbRIyobRGYqIAGw8Q=="], - "ajv-keywords": ["ajv-keywords@5.1.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3" }, "peerDependencies": { "ajv": "^8.8.2" } }, ""], + "ansi": ["ansi@0.3.1", "", {}, "sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A=="], - "android-versions": ["android-versions@2.1.0", "", { "dependencies": { "semver": "^7.5.2" } }, "sha512-oCBvVs2uaL8ohQtesGs78/X7QvFDLbKgTosBRiOIBCss1a/yiakQm/ADuoG2k/AUaI0FfrsFeMl/a+GtEtjEeA=="], + "ansi-html-community": ["ansi-html-community@0.0.8", "", { "bin": { "ansi-html": "bin/ansi-html" } }, "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw=="], - "ansi": ["ansi@0.3.1", "", {}, ""], + "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], - "ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], + "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + "array-flatten": ["array-flatten@1.1.1", "", {}, "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="], + "array-union": ["array-union@2.1.0", "", {}, "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="], - "assert-plus": ["assert-plus@1.0.0", "", {}, ""], + "assert-plus": ["assert-plus@1.0.0", "", {}, "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="], - "autoprefixer": ["autoprefixer@10.4.21", "", { "dependencies": { "browserslist": "^4.24.4", "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": "bin/autoprefixer" }, "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ=="], + "autoprefixer": ["autoprefixer@10.4.23", "", { "dependencies": { "browserslist": "^4.28.1", "caniuse-lite": "^1.0.30001760", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA=="], - "autosize": ["autosize@6.0.1", "", {}, ""], + "autosize": ["autosize@6.0.1", "", {}, "sha512-f86EjiUKE6Xvczc4ioP1JBlWG7FKrE13qe/DxBCpe8GCipCq2nFw73aO8QEBKHfSbYGDN5eB9jXWKen7tspDqQ=="], "babel-loader": ["babel-loader@10.0.0", "", { "dependencies": { "find-up": "^5.0.0" }, "peerDependencies": { "@babel/core": "^7.12.0", "webpack": ">=5.61.0" } }, "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA=="], @@ -527,31 +895,51 @@ "babel-plugin-polyfill-regenerator": ["babel-plugin-polyfill-regenerator@0.6.5", "", { "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.5" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg=="], - "balanced-match": ["balanced-match@1.0.2", "", {}, ""], + "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], + + "baseline-browser-mapping": ["baseline-browser-mapping@2.9.13", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-WhtvB2NG2wjr04+h77sg3klAIwrgOqnjS49GGudnUPGFFgg7G17y7Qecqp+2Dr5kUDxNRBca0SK7cG8JwzkWDQ=="], - "base64-js": ["base64-js@1.5.1", "", {}, ""], + "batch": ["batch@0.6.1", "", {}, "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw=="], - "big-integer": ["big-integer@1.6.51", "", {}, ""], + "big-integer": ["big-integer@1.6.52", "", {}, "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg=="], - "big.js": ["big.js@5.2.2", "", {}, ""], + "big.js": ["big.js@5.2.2", "", {}, "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="], "bin-links": ["bin-links@6.0.0", "", { "dependencies": { "cmd-shim": "^8.0.0", "npm-normalize-package-bin": "^5.0.0", "proc-log": "^6.0.0", "read-cmd-shim": "^6.0.0", "write-file-atomic": "^7.0.0" } }, "sha512-X4CiKlcV2GjnCMwnKAfbVWpHa++65th9TuzAEYtZoATiOE2DQKhSp4CJlyLoTqdhBKlXjpXjCTYPNNFS33Fi6w=="], - "bplist-parser": ["bplist-parser@0.3.2", "", { "dependencies": { "big-integer": "1.6.x" } }, ""], + "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], + + "body-parser": ["body-parser@1.20.4", "", { "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "~1.2.0", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", "qs": "~6.14.0", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" } }, "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA=="], + + "bonjour-service": ["bonjour-service@1.3.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } }, "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA=="], + + "bplist-parser": ["bplist-parser@0.3.2", "", { "dependencies": { "big-integer": "1.6.x" } }, "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ=="], "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], - "browserslist": ["browserslist@4.25.2", "", { "dependencies": { "caniuse-lite": "^1.0.30001733", "electron-to-chromium": "^1.5.199", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.3" }, "bin": "cli.js" }, "sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA=="], + "browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], + "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="], + + "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], + "cacache": ["cacache@20.0.3", "", { "dependencies": { "@npmcli/fs": "^5.0.0", "fs-minipass": "^3.0.0", "glob": "^13.0.0", "lru-cache": "^11.1.0", "minipass": "^7.0.3", "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^7.0.2", "ssri": "^13.0.0", "unique-filename": "^5.0.0" } }, "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw=="], - "callsites": ["callsites@3.1.0", "", {}, ""], + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], + + "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], + + "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], - "caniuse-lite": ["caniuse-lite@1.0.30001733", "", {}, "sha512-e4QKw/O2Kavj2VQTKZWrwzkt3IxOmIlU6ajRb6LP64LHpBo1J67k2Hi4Vu/TgJWsNtynurfS0uK3MaUTCPfu5Q=="], + "caniuse-lite": ["caniuse-lite@1.0.30001763", "", {}, "sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ=="], + + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], "chevrotain": ["chevrotain@11.0.3", "", { "dependencies": { "@chevrotain/cst-dts-gen": "11.0.3", "@chevrotain/gast": "11.0.3", "@chevrotain/regexp-to-ast": "11.0.3", "@chevrotain/types": "11.0.3", "@chevrotain/utils": "11.0.3", "lodash-es": "4.17.21" } }, "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw=="], @@ -561,17 +949,21 @@ "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], - "chrome-trace-event": ["chrome-trace-event@1.0.3", "", {}, ""], + "chrome-trace-event": ["chrome-trace-event@1.0.4", "", {}, "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ=="], "cli": ["cli@1.0.1", "", { "dependencies": { "exit": "0.1.2", "glob": "^7.1.1" } }, "sha512-41U72MB56TfUMGndAKK8vJ78eooOD4Z5NOL4xEfjc0c23s+6EYKXlXsmACBVclLP1yOfWCgEganVzddVrSNoTg=="], "cliui": ["cliui@9.0.1", "", { "dependencies": { "string-width": "^7.2.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w=="], - "clone-deep": ["clone-deep@4.0.1", "", { "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", "shallow-clone": "^3.0.0" } }, "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ=="], - "cmd-shim": ["cmd-shim@8.0.0", "", {}, "sha512-Jk/BK6NCapZ58BKUxlSI+ouKRbjH1NLZCgJkYoab+vEHUY3f6OzpNBN9u7HFSv9J6TRDGs4PLOHezoKGaFRSCA=="], - "colorette": ["colorette@2.0.19", "", {}, ""], + "codemirror": ["codemirror@6.0.2", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/lint": "^6.0.0", "@codemirror/search": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0" } }, "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw=="], + + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], + + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + + "colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="], "com.foxdebug.acode.rk.auth": ["com.foxdebug.acode.rk.auth@file:src/plugins/auth", {}], @@ -581,27 +973,45 @@ "com.foxdebug.acode.rk.exec.terminal": ["com.foxdebug.acode.rk.exec.terminal@file:src/plugins/terminal", {}], - "commander": ["commander@12.1.0", "", {}, "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA=="], + "com.foxdebug.acode.rk.plugin.plugincontext": ["com.foxdebug.acode.rk.plugin.plugincontext@file:src/plugins/pluginContext", {}], + + "commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], "common-ancestor-path": ["common-ancestor-path@1.0.1", "", {}, "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="], - "concat-map": ["concat-map@0.0.1", "", {}, ""], + "compressible": ["compressible@2.0.18", "", { "dependencies": { "mime-db": ">= 1.43.0 < 2" } }, "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg=="], + + "compression": ["compression@1.8.1", "", { "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", "on-headers": "~1.1.0", "safe-buffer": "5.2.1", "vary": "~1.1.2" } }, "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w=="], - "configstore": ["configstore@5.0.1", "", { "dependencies": { "dot-prop": "^5.2.0", "graceful-fs": "^4.1.2", "make-dir": "^3.0.0", "unique-string": "^2.0.0", "write-file-atomic": "^3.0.0", "xdg-basedir": "^4.0.0" } }, ""], + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], + + "confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], + + "configstore": ["configstore@5.0.1", "", { "dependencies": { "dot-prop": "^5.2.0", "graceful-fs": "^4.1.2", "make-dir": "^3.0.0", "unique-string": "^2.0.0", "write-file-atomic": "^3.0.0", "xdg-basedir": "^4.0.0" } }, "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA=="], + + "connect-history-api-fallback": ["connect-history-api-fallback@2.0.0", "", {}, "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA=="], "console-browserify": ["console-browserify@1.1.0", "", { "dependencies": { "date-now": "^0.1.4" } }, "sha512-duS7VP5pvfsNLDvL1O4VOEbw37AI3A4ZUQYemvDlnpGrNu9tprR7BYWpDYwC0Xia0Zxz5ZupdiIrUp0GH1aXfg=="], + "content-disposition": ["content-disposition@0.5.4", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ=="], + + "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], - "cordova": ["cordova@13.0.0", "", { "dependencies": { "configstore": "^5.0.1", "cordova-common": "^6.0.0", "cordova-create": "^6.0.0", "cordova-lib": "^13.0.0", "editor": "^1.0.0", "execa": "^5.1.1", "nopt": "^9.0.0", "semver": "^7.7.3", "systeminformation": "^5.27.11" }, "bin": "bin/cordova" }, "sha512-QAIMwmYLL0jHo4vauWSnRd2fr9l+wajG+F5aUkrC6e4ZQGSTv0wAiRmpqQUkIc1ZdELisKDQws/BjHz5nP/sLw=="], + "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], + + "cookie-signature": ["cookie-signature@1.0.7", "", {}, "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA=="], - "cordova-android": ["cordova-android@14.0.1", "", { "dependencies": { "android-versions": "^2.1.0", "cordova-common": "^5.0.1", "dedent": "^1.5.3", "execa": "^5.1.1", "fast-glob": "^3.3.3", "is-path-inside": "^3.0.3", "nopt": "^8.1.0", "properties-parser": "^0.6.0", "semver": "^7.7.1", "string-argv": "^0.3.1", "untildify": "^4.0.0", "which": "^5.0.0" } }, "sha512-HMBMdGu/JlSQtmBuDEpKWf/pE75SpF3FksxZ+mqYuL3qSIN8lN/QsNurwYaPAP7zWXN2DNpvwlpOJItS5VhdLg=="], + "cordova": ["cordova@13.0.0", "", { "dependencies": { "configstore": "^5.0.1", "cordova-common": "^6.0.0", "cordova-create": "^6.0.0", "cordova-lib": "^13.0.0", "editor": "^1.0.0", "execa": "^5.1.1", "nopt": "^9.0.0", "semver": "^7.7.3", "systeminformation": "^5.27.11" }, "bin": { "cordova": "bin/cordova" } }, "sha512-QAIMwmYLL0jHo4vauWSnRd2fr9l+wajG+F5aUkrC6e4ZQGSTv0wAiRmpqQUkIc1ZdELisKDQws/BjHz5nP/sLw=="], + + "cordova-android": ["cordova-android@15.0.0", "", { "dependencies": { "android-versions": "^2.1.1", "cordova-common": "^6.0.0", "dedent": "^1.7.1", "execa": "^5.1.1", "fast-glob": "^3.3.3", "is-path-inside": "^3.0.3", "nopt": "^9.0.0", "properties-parser": "^0.6.0", "semver": "^7.7.4", "string-argv": "^0.3.2", "untildify": "^4.0.0", "which": "^6.0.1" } }, "sha512-EpFSKUtBLJ7bTpuVD7NeC6toAooi5PI6VIR2jd8Ut5PJu7HSR5tPRwS87Q1DS03RSyDTlroB64JPUWC0pmAhnw=="], "cordova-app-hello-world": ["cordova-app-hello-world@7.0.0", "", {}, "sha512-uDTncFkI73ko+wEf6IEO9bw8lQRMQGnfdi5pPMei4P8+plChNcRW5fxjKlhM/8ZrT8OAWiHsQRrP4pIAn3HQ4g=="], - "cordova-clipboard": ["cordova-clipboard@1.3.0", "", {}, ""], + "cordova-clipboard": ["cordova-clipboard@1.3.0", "", {}, "sha512-IGk4LZm/DJ0Xk/jgakHm4wa+A/lrRP3QfzMAHDG7oWLJS4ISOpfI32Wez4ndnENItRslGyBVyJyKD83CxELCAw=="], - "cordova-common": ["cordova-common@5.0.1", "", { "dependencies": { "@netflix/nerror": "^1.1.3", "ansi": "^0.3.1", "bplist-parser": "^0.3.2", "cross-spawn": "^7.0.6", "elementtree": "^0.1.7", "endent": "^2.1.0", "fast-glob": "^3.3.3", "lodash.zip": "^4.2.0", "plist": "^3.1.0", "q": "^1.5.1", "read-chunk": "^3.2.0", "strip-bom": "^4.0.0" } }, "sha512-OA2NQ6wvhNz4GytPYwTdlA9xfG7Yf7ufkj4u97m3rUfoL/AECwwj0GVT2CYpk/0Fk6HyuHA3QYCxfDPYsKzI1A=="], + "cordova-common": ["cordova-common@6.0.0", "", { "dependencies": { "@netflix/nerror": "^1.1.3", "ansi": "^0.3.1", "bplist-parser": "^0.3.2", "elementtree": "^0.1.7", "endent": "^2.1.0", "fast-glob": "^3.3.3", "plist": "^3.1.0" } }, "sha512-16WPC1DuxVdshV3RoQUXqhcJVdhxWGwiFysA4TkYuboqoev6mgt0JuIJFxmQbzR/DuyuONaVe0L0O0Hf1C08Mg=="], "cordova-create": ["cordova-create@6.0.0", "", { "dependencies": { "cordova-app-hello-world": "^7.0.0", "cordova-common": "^6.0.0", "cordova-fetch": "^5.0.0", "globby": "^11.1.0", "import-fresh": "^3.3.1", "isobject": "^4.0.0", "npm-package-arg": "^13.0.0", "path-is-inside": "^1.0.2", "tmp": "^0.2.5", "valid-identifier": "0.0.2" } }, "sha512-LD41sLn2GsmAlj3576R3xlUM3BP0rt0CYd5LdbzU82WBI3ApMrrhM6xcHDYJfe1nfSL89O/nb/u/h7+7DhPQeA=="], @@ -613,11 +1023,11 @@ "cordova-plugin-browser": ["cordova-plugin-browser@file:src/plugins/browser", {}], - "cordova-plugin-buildinfo": ["/cordova-plugin-buildinfo@file:src/plugins/cordova-plugin-buildinfo", { "devDependencies": { "jshint": "^2.6.0" } }], + "cordova-plugin-buildinfo": ["cordova-plugin-buildinfo@file:src/plugins/cordova-plugin-buildinfo", { "devDependencies": { "jshint": "^2.6.0" } }], - "cordova-plugin-device": ["cordova-plugin-device@2.1.0", "", {}, ""], + "cordova-plugin-device": ["cordova-plugin-device@2.1.0", "", {}, "sha512-FU0Lw1jZpuKOgG4v80LrfMAOIMCGfAVPumn7AwaX9S1iU/X3OPZUyoKUgP09q4bxL35IeNPkqNWVKYduAXZ1sg=="], - "cordova-plugin-file": ["cordova-plugin-file@8.0.1", "", {}, "sha512-LgFLNQN58xguoJkNc8eGBmg/Vuaah9lY3Nye27OAfWCKalXPRjExIg5r8L3qlfiJxzmzupjrF0M4KdU2Lovm3Q=="], + "cordova-plugin-file": ["cordova-plugin-file@8.1.3", "", {}, "sha512-KlnP3CapNIsKncoWV5lYcIFYDPl0aZ1J3AH3QESlQX1Cb6Ct0p6GrAUvINyrFsjPbWHj8i0b6la6udVsghbATg=="], "cordova-plugin-ftp": ["cordova-plugin-ftp@file:src/plugins/ftp", {}], @@ -633,221 +1043,391 @@ "cordova-plugin-websocket": ["cordova-plugin-websocket@file:src/plugins/websocket", {}], - "core-js": ["core-js@3.45.0", "", {}, "sha512-c2KZL9lP4DjkN3hk/an4pWn5b5ZefhRJnAc42n6LJ19kSnbeRbdQZE5dSeE2LBol1OwJD3X1BQvFTAsa8ReeDA=="], + "core-js": ["core-js@3.47.0", "", {}, "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg=="], + + "core-js-compat": ["core-js-compat@3.47.0", "", { "dependencies": { "browserslist": "^4.28.0" } }, "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ=="], - "core-js-compat": ["core-js-compat@3.45.0", "", { "dependencies": { "browserslist": "^4.25.1" } }, "sha512-gRoVMBawZg0OnxaVv3zpqLLxaHmsubEGyTnqdpI/CEBvX4JadI1dMSHxagThprYRtSVbuQxvi6iUatdPxohHpA=="], + "core-js-pure": ["core-js-pure@3.47.0", "", {}, "sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw=="], - "core-js-pure": ["core-js-pure@3.45.0", "", {}, "sha512-OtwjqcDpY2X/eIIg1ol/n0y/X8A9foliaNt1dSK0gV3J2/zw+89FcNG3mPK+N8YWts4ZFUPxnrAzsxs/lf8yDA=="], + "core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], - "core-util-is": ["core-util-is@1.0.3", "", {}, ""], + "cose-base": ["cose-base@1.0.3", "", { "dependencies": { "layout-base": "^1.0.0" } }, "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg=="], "cosmiconfig": ["cosmiconfig@9.0.0", "", { "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0" }, "peerDependencies": { "typescript": ">=4.9.5" }, "optionalPeers": ["typescript"] }, "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg=="], + "crelt": ["crelt@1.0.6", "", {}, "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="], + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], - "crypto-js": ["crypto-js@4.2.0", "", {}, "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="], + "crypto-random-string": ["crypto-random-string@2.0.0", "", {}, "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA=="], + + "css-loader": ["css-loader@7.1.2", "", { "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", "postcss-modules-extract-imports": "^3.1.0", "postcss-modules-local-by-default": "^4.0.5", "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", "semver": "^7.5.4" }, "peerDependencies": { "@rspack/core": "0.x || 1.x", "webpack": "^5.27.0" }, "optionalPeers": ["@rspack/core", "webpack"] }, "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA=="], + + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + + "cytoscape": ["cytoscape@3.33.1", "", {}, "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ=="], + + "cytoscape-cose-bilkent": ["cytoscape-cose-bilkent@4.1.0", "", { "dependencies": { "cose-base": "^1.0.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ=="], + + "cytoscape-fcose": ["cytoscape-fcose@2.2.0", "", { "dependencies": { "cose-base": "^2.2.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ=="], + + "d3": ["d3@7.9.0", "", { "dependencies": { "d3-array": "3", "d3-axis": "3", "d3-brush": "3", "d3-chord": "3", "d3-color": "3", "d3-contour": "4", "d3-delaunay": "6", "d3-dispatch": "3", "d3-drag": "3", "d3-dsv": "3", "d3-ease": "3", "d3-fetch": "3", "d3-force": "3", "d3-format": "3", "d3-geo": "3", "d3-hierarchy": "3", "d3-interpolate": "3", "d3-path": "3", "d3-polygon": "3", "d3-quadtree": "3", "d3-random": "3", "d3-scale": "4", "d3-scale-chromatic": "3", "d3-selection": "3", "d3-shape": "3", "d3-time": "3", "d3-time-format": "4", "d3-timer": "3", "d3-transition": "3", "d3-zoom": "3" } }, "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA=="], + + "d3-array": ["d3-array@3.2.4", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="], + + "d3-axis": ["d3-axis@3.0.0", "", {}, "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw=="], + + "d3-brush": ["d3-brush@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "3", "d3-transition": "3" } }, "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ=="], + + "d3-chord": ["d3-chord@3.0.1", "", { "dependencies": { "d3-path": "1 - 3" } }, "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g=="], + + "d3-color": ["d3-color@3.1.0", "", {}, "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="], + + "d3-contour": ["d3-contour@4.0.2", "", { "dependencies": { "d3-array": "^3.2.0" } }, "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA=="], + + "d3-delaunay": ["d3-delaunay@6.0.4", "", { "dependencies": { "delaunator": "5" } }, "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A=="], + + "d3-dispatch": ["d3-dispatch@3.0.1", "", {}, "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="], + + "d3-drag": ["d3-drag@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" } }, "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg=="], + + "d3-dsv": ["d3-dsv@3.0.1", "", { "dependencies": { "commander": "7", "iconv-lite": "0.6", "rw": "1" }, "bin": { "csv2json": "bin/dsv2json.js", "csv2tsv": "bin/dsv2dsv.js", "dsv2dsv": "bin/dsv2dsv.js", "dsv2json": "bin/dsv2json.js", "json2csv": "bin/json2dsv.js", "json2dsv": "bin/json2dsv.js", "json2tsv": "bin/json2dsv.js", "tsv2csv": "bin/dsv2dsv.js", "tsv2json": "bin/dsv2json.js" } }, "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q=="], + + "d3-ease": ["d3-ease@3.0.1", "", {}, "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="], + + "d3-fetch": ["d3-fetch@3.0.1", "", { "dependencies": { "d3-dsv": "1 - 3" } }, "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw=="], + + "d3-force": ["d3-force@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", "d3-timer": "1 - 3" } }, "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg=="], + + "d3-format": ["d3-format@3.1.2", "", {}, "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg=="], + + "d3-geo": ["d3-geo@3.1.1", "", { "dependencies": { "d3-array": "2.5.0 - 3" } }, "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q=="], + + "d3-hierarchy": ["d3-hierarchy@3.1.2", "", {}, "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA=="], + + "d3-interpolate": ["d3-interpolate@3.0.1", "", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="], - "crypto-random-string": ["crypto-random-string@2.0.0", "", {}, ""], + "d3-path": ["d3-path@3.1.0", "", {}, "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="], - "css-loader": ["css-loader@7.1.2", "", { "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", "postcss-modules-extract-imports": "^3.1.0", "postcss-modules-local-by-default": "^4.0.5", "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", "semver": "^7.5.4" }, "peerDependencies": { "@rspack/core": "0.x || 1.x", "webpack": "^5.27.0" }, "optionalPeers": ["@rspack/core"] }, "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA=="], + "d3-polygon": ["d3-polygon@3.0.1", "", {}, "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg=="], - "cssesc": ["cssesc@3.0.0", "", { "bin": "bin/cssesc" }, ""], + "d3-quadtree": ["d3-quadtree@3.0.1", "", {}, "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw=="], + + "d3-random": ["d3-random@3.0.1", "", {}, "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ=="], + + "d3-sankey": ["d3-sankey@0.12.3", "", { "dependencies": { "d3-array": "1 - 2", "d3-shape": "^1.2.0" } }, "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ=="], + + "d3-scale": ["d3-scale@4.0.2", "", { "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", "d3-interpolate": "1.2.0 - 3", "d3-time": "2.1.1 - 3", "d3-time-format": "2 - 4" } }, "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="], + + "d3-scale-chromatic": ["d3-scale-chromatic@3.1.0", "", { "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" } }, "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ=="], + + "d3-selection": ["d3-selection@3.0.0", "", {}, "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="], + + "d3-shape": ["d3-shape@3.2.0", "", { "dependencies": { "d3-path": "^3.1.0" } }, "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA=="], + + "d3-time": ["d3-time@3.1.0", "", { "dependencies": { "d3-array": "2 - 3" } }, "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q=="], + + "d3-time-format": ["d3-time-format@4.1.0", "", { "dependencies": { "d3-time": "1 - 3" } }, "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg=="], + + "d3-timer": ["d3-timer@3.0.1", "", {}, "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="], + + "d3-transition": ["d3-transition@3.0.1", "", { "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", "d3-ease": "1 - 3", "d3-interpolate": "1 - 3", "d3-timer": "1 - 3" }, "peerDependencies": { "d3-selection": "2 - 3" } }, "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w=="], + + "d3-zoom": ["d3-zoom@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "2 - 3", "d3-transition": "2 - 3" } }, "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw=="], + + "dagre-d3-es": ["dagre-d3-es@7.0.14", "", { "dependencies": { "d3": "^7.9.0", "lodash-es": "^4.17.21" } }, "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg=="], "date-now": ["date-now@0.1.4", "", {}, "sha512-AsElvov3LoNB7tf5k37H2jYSB+ZZPMT5sG2QjJCcdlV5chIv6htBUBUui2IKRjgtKAKtCBN7Zbwa+MtwLjSeNw=="], - "debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + "dayjs": ["dayjs@1.11.19", "", {}, "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw=="], + + "debounce": ["debounce@1.2.1", "", {}, "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug=="], + + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], - "dedent": ["dedent@1.7.0", "", { "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, "optionalPeers": ["babel-plugin-macros"] }, "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ=="], + "dedent": ["dedent@1.7.1", "", { "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, "optionalPeers": ["babel-plugin-macros"] }, "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg=="], + + "default-browser": ["default-browser@5.4.0", "", { "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" } }, "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg=="], + + "default-browser-id": ["default-browser-id@5.0.1", "", {}, "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q=="], + + "define-lazy-prop": ["define-lazy-prop@3.0.0", "", {}, "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg=="], + + "delaunator": ["delaunator@5.0.1", "", { "dependencies": { "robust-predicates": "^3.0.2" } }, "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw=="], + + "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + + "destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="], "detect-indent": ["detect-indent@6.1.0", "", {}, "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA=="], - "detect-libc": ["detect-libc@1.0.3", "", { "bin": "bin/detect-libc.js" }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], + "detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], "detect-newline": ["detect-newline@3.1.0", "", {}, "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA=="], + "detect-node": ["detect-node@2.1.0", "", {}, "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="], + "dir-glob": ["dir-glob@3.0.1", "", { "dependencies": { "path-type": "^4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="], + "dns-packet": ["dns-packet@5.6.1", "", { "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" } }, "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw=="], + "dom-serializer": ["dom-serializer@0.2.2", "", { "dependencies": { "domelementtype": "^2.0.1", "entities": "^2.0.0" } }, "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g=="], "domelementtype": ["domelementtype@1.3.1", "", {}, "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w=="], "domhandler": ["domhandler@2.3.0", "", { "dependencies": { "domelementtype": "1" } }, "sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ=="], - "dompurify": ["dompurify@3.2.6", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ=="], + "dompurify": ["dompurify@3.3.3", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA=="], "domutils": ["domutils@1.5.1", "", { "dependencies": { "dom-serializer": "0", "domelementtype": "1" } }, "sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw=="], - "dot-prop": ["dot-prop@5.3.0", "", { "dependencies": { "is-obj": "^2.0.0" } }, ""], + "dot-prop": ["dot-prop@5.3.0", "", { "dependencies": { "is-obj": "^2.0.0" } }, "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q=="], + + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], + + "duplexer": ["duplexer@0.1.2", "", {}, "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg=="], + + "editor": ["editor@1.0.0", "", {}, "sha512-SoRmbGStwNYHgKfjOrX2L0mUvp9bUVv0uPppZSOMAntEbcFtoC3MKF5b3T6HQPXKIV+QGY3xPO3JK5it5lVkuw=="], + + "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.267", "", {}, "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw=="], - "editor": ["editor@1.0.0", "", {}, ""], + "elementtree": ["elementtree@0.1.7", "", { "dependencies": { "sax": "1.1.4" } }, "sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg=="], - "electron-to-chromium": ["electron-to-chromium@1.5.199", "", {}, "sha512-3gl0S7zQd88kCAZRO/DnxtBKuhMO4h0EaQIN3YgZfV6+pW+5+bf2AdQeHNESCoaQqo/gjGVYEf2YM4O5HJQqpQ=="], + "emmet": ["emmet@2.4.11", "", { "dependencies": { "@emmetio/abbreviation": "^2.3.3", "@emmetio/css-abbreviation": "^2.1.8" } }, "sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ=="], - "elementtree": ["elementtree@0.1.7", "", { "dependencies": { "sax": "1.1.4" } }, ""], + "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], - "emoji-regex": ["emoji-regex@10.4.0", "", {}, "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw=="], + "emojis-list": ["emojis-list@3.0.0", "", {}, "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="], - "emojis-list": ["emojis-list@3.0.0", "", {}, ""], + "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], "encoding": ["encoding@0.1.13", "", { "dependencies": { "iconv-lite": "^0.6.2" } }, "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A=="], - "endent": ["endent@2.1.0", "", { "dependencies": { "dedent": "^0.7.0", "fast-json-parse": "^1.0.3", "objectorarray": "^1.0.5" } }, ""], + "endent": ["endent@2.1.0", "", { "dependencies": { "dedent": "^0.7.0", "fast-json-parse": "^1.0.3", "objectorarray": "^1.0.5" } }, "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w=="], - "enhanced-resolve": ["enhanced-resolve@5.18.3", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww=="], + "enhanced-resolve": ["enhanced-resolve@5.18.4", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q=="], "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], - "env-paths": ["env-paths@2.2.1", "", {}, ""], - - "envinfo": ["envinfo@7.14.0", "", { "bin": "dist/cli.js" }, "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg=="], + "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], "err-code": ["err-code@2.0.3", "", {}, "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA=="], - "error-ex": ["error-ex@1.3.2", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="], + "error-ex": ["error-ex@1.3.4", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ=="], + + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], + + "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], + + "es-module-lexer": ["es-module-lexer@2.0.0", "", {}, "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw=="], - "es-module-lexer": ["es-module-lexer@1.2.1", "", {}, ""], + "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], - "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, ""], + "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], + + "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + + "eslint-scope": ["eslint-scope@5.1.1", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="], + + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], - "eslint-scope": ["eslint-scope@5.1.1", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, ""], + "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], - "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" } }, ""], + "estraverse": ["estraverse@4.3.0", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="], - "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, ""], + "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], - "estraverse": ["estraverse@4.3.0", "", {}, ""], + "etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="], - "esutils": ["esutils@2.0.3", "", {}, ""], + "eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="], - "events": ["events@3.3.0", "", {}, ""], + "events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], - "execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, ""], + "execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], "exit": ["exit@0.1.2", "", {}, "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ=="], + "exit-hook": ["exit-hook@4.0.0", "", {}, "sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ=="], + "exponential-backoff": ["exponential-backoff@3.1.3", "", {}, "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA=="], - "extsprintf": ["extsprintf@1.4.1", "", {}, ""], + "express": ["express@4.22.1", "", { "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "~1.20.3", "content-disposition": "~0.5.4", "content-type": "~1.0.4", "cookie": "~0.7.1", "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "~1.3.1", "fresh": "~0.5.2", "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", "qs": "~6.14.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "~0.19.0", "serve-static": "~1.16.2", "setprototypeof": "1.2.0", "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g=="], + + "extsprintf": ["extsprintf@1.4.1", "", {}, "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA=="], - "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, ""], + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], - "fast-json-parse": ["fast-json-parse@1.0.3", "", {}, ""], + "fast-json-parse": ["fast-json-parse@1.0.3", "", {}, "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw=="], - "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, ""], + "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], - "fastest-levenshtein": ["fastest-levenshtein@1.0.16", "", {}, ""], + "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], - "fastq": ["fastq@1.15.0", "", { "dependencies": { "reusify": "^1.0.4" } }, ""], + "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], - "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" } }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + "faye-websocket": ["faye-websocket@0.11.4", "", { "dependencies": { "websocket-driver": ">=0.5.1" } }, "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g=="], - "filesize": ["filesize@11.0.2", "", {}, "sha512-s/iAeeWLk5BschUIpmdrF8RA8lhFZ/xDZgKw1Tan72oGws1/dFGB06nYEiyyssWUfjKNQTNRlrwMVjO9/hvXDw=="], + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "filesize": ["filesize@11.0.13", "", {}, "sha512-mYJ/qXKvREuO0uH8LTQJ6v7GsUvVOguqxg2VTwQUkyTPXXRRWPdjuUPVqdBrJQhvci48OHlNGRnux+Slr2Rnvw=="], "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + "finalhandler": ["finalhandler@1.3.2", "", { "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "statuses": "~2.0.2", "unpipe": "~1.0.0" } }, "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg=="], + "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], - "flat": ["flat@5.0.2", "", { "bin": "cli.js" }, "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ=="], + "follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="], - "fraction.js": ["fraction.js@4.3.7", "", {}, "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="], + "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], + + "fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="], + + "fresh": ["fresh@0.5.2", "", {}, "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="], "fs-minipass": ["fs-minipass@3.0.3", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw=="], - "fs.realpath": ["fs.realpath@1.0.0", "", {}, ""], + "fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], - "gensync": ["gensync@1.0.0-beta.2", "", {}, ""], + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], - "get-caller-file": ["get-caller-file@2.0.5", "", {}, ""], + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], - "get-east-asian-width": ["get-east-asian-width@1.3.0", "", {}, "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ=="], + "get-east-asian-width": ["get-east-asian-width@1.4.0", "", {}, "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q=="], - "get-stream": ["get-stream@6.0.1", "", {}, ""], + "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], - "glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, ""], + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], - "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, ""], + "get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], + + "glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], + + "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "glob-to-regex.js": ["glob-to-regex.js@1.2.0", "", { "peerDependencies": { "tslib": "2" } }, "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ=="], "glob-to-regexp": ["glob-to-regexp@0.4.1", "", {}, "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="], "globby": ["globby@11.1.0", "", { "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" } }, "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="], + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + "gzip-size": ["gzip-size@6.0.0", "", { "dependencies": { "duplexer": "^0.1.2" } }, "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q=="], + + "hachure-fill": ["hachure-fill@0.5.2", "", {}, "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg=="], + + "handle-thing": ["handle-thing@2.0.1", "", {}, "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg=="], + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], "hosted-git-info": ["hosted-git-info@9.0.2", "", { "dependencies": { "lru-cache": "^11.1.0" } }, "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg=="], - "html-tag-js": ["html-tag-js@2.4.15", "", {}, "sha512-ll1CsDRYPQiUYv8DPUUnDy6k9CTwc7jMObXr7BYV6iuLm7ZUZ4ZSo5CjaU7qh1qL7S4TGaGT+JKqYXksa8dWrg=="], + "hpack.js": ["hpack.js@2.1.6", "", { "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", "readable-stream": "^2.0.1", "wbuf": "^1.1.0" } }, "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ=="], + + "html-escaper": ["html-escaper@2.0.2", "", {}, "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg=="], + + "html-tag-js": ["html-tag-js@2.4.16", "", {}, "sha512-emVNouMF3t2yXpnnjgxCgkMY2W1ZrVC47qsHIJpPKgaH94Nqv355T7E1ZRkV6mWa3vLImHklH7vEcSURDhfq/A=="], "htmlparser2": ["htmlparser2@3.8.3", "", { "dependencies": { "domelementtype": "1", "domhandler": "2.3", "domutils": "1.5", "entities": "1.0", "readable-stream": "1.1" } }, "sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q=="], "http-cache-semantics": ["http-cache-semantics@4.2.0", "", {}, "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ=="], + "http-deceiver": ["http-deceiver@1.2.7", "", {}, "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw=="], + + "http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], + + "http-parser-js": ["http-parser-js@0.5.10", "", {}, "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA=="], + + "http-proxy": ["http-proxy@1.18.1", "", { "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", "requires-port": "^1.0.0" } }, "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ=="], + "http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="], + "http-proxy-middleware": ["http-proxy-middleware@2.0.9", "", { "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", "is-glob": "^4.0.1", "is-plain-obj": "^3.0.0", "micromatch": "^4.0.2" }, "peerDependencies": { "@types/express": "^4.17.13" }, "optionalPeers": ["@types/express"] }, "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q=="], + "https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], - "human-signals": ["human-signals@2.1.0", "", {}, ""], + "human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], + + "hyperdyperid": ["hyperdyperid@1.2.0", "", {}, "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A=="], "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], - "icss-utils": ["icss-utils@5.1.0", "", { "peerDependencies": { "postcss": "^8.1.0" } }, ""], + "icss-utils": ["icss-utils@5.1.0", "", { "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA=="], "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], "ignore-walk": ["ignore-walk@8.0.0", "", { "dependencies": { "minimatch": "^10.0.3" } }, "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A=="], - "immediate": ["immediate@3.0.6", "", {}, ""], + "immediate": ["immediate@3.0.6", "", {}, "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="], - "immutable": ["immutable@5.1.3", "", {}, "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg=="], + "immutable": ["immutable@5.1.4", "", {}, "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA=="], "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], - "import-local": ["import-local@3.1.0", "", { "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" }, "bin": { "import-local-fixture": "fixtures/cli.js" } }, ""], - - "imurmurhash": ["imurmurhash@0.1.4", "", {}, ""], + "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], - "inflight": ["inflight@1.0.6", "", { "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, ""], + "inflight": ["inflight@1.0.6", "", { "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="], - "inherits": ["inherits@2.0.4", "", {}, ""], + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], "ini": ["ini@6.0.0", "", {}, "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ=="], - "interpret": ["interpret@3.1.1", "", {}, ""], + "internmap": ["internmap@1.0.1", "", {}, "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="], "ip-address": ["ip-address@10.1.0", "", {}, "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q=="], + "ipaddr.js": ["ipaddr.js@2.3.0", "", {}, "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg=="], + "is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="], + "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], + "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], - "is-extglob": ["is-extglob@2.1.1", "", {}, ""], + "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], + + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], - "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, ""], + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + + "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], + + "is-network-error": ["is-network-error@1.3.0", "", {}, "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw=="], "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], - "is-obj": ["is-obj@2.0.0", "", {}, ""], + "is-obj": ["is-obj@2.0.0", "", {}, "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="], "is-path-inside": ["is-path-inside@3.0.3", "", {}, "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="], - "is-plain-object": ["is-plain-object@2.0.4", "", { "dependencies": { "isobject": "^3.0.1" } }, "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og=="], + "is-plain-obj": ["is-plain-obj@3.0.0", "", {}, "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA=="], - "is-stream": ["is-stream@2.0.1", "", {}, ""], + "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], - "is-typedarray": ["is-typedarray@1.0.0", "", {}, ""], + "is-typedarray": ["is-typedarray@1.0.0", "", {}, "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="], - "isarray": ["isarray@1.0.0", "", {}, ""], + "is-wsl": ["is-wsl@3.1.0", "", { "dependencies": { "is-inside-container": "^1.0.0" } }, "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw=="], - "isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], + "isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], + + "isexe": ["isexe@4.0.0", "", {}, "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw=="], "isobject": ["isobject@4.0.0", "", {}, "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA=="], @@ -855,89 +1435,115 @@ "jest-worker": ["jest-worker@27.5.1", "", { "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" } }, "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg=="], - "jiti": ["jiti@1.21.0", "", { "bin": "bin/jiti.js" }, "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q=="], - - "js-base64": ["js-base64@3.7.7", "", {}, "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw=="], + "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": "bin/js-yaml.js" }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], - "jsesc": ["jsesc@3.1.0", "", { "bin": "bin/jsesc" }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], - "jshint": ["jshint@2.13.6", "", { "dependencies": { "cli": "~1.0.0", "console-browserify": "1.1.x", "exit": "0.1.x", "htmlparser2": "3.8.x", "lodash": "~4.17.21", "minimatch": "~3.0.2", "strip-json-comments": "1.0.x" }, "bin": "bin/jshint" }, "sha512-IVdB4G0NTTeQZrBoM8C5JFVLjV2KtZ9APgybDA1MK73xb09qFs0jCXyQLnCOp1cSZZZbvhq/6mfXHUTaDkffuQ=="], + "jshint": ["jshint@2.13.6", "", { "dependencies": { "cli": "~1.0.0", "console-browserify": "1.1.x", "exit": "0.1.x", "htmlparser2": "3.8.x", "lodash": "~4.17.21", "minimatch": "~3.0.2", "strip-json-comments": "1.0.x" }, "bin": { "jshint": "bin/jshint" } }, "sha512-IVdB4G0NTTeQZrBoM8C5JFVLjV2KtZ9APgybDA1MK73xb09qFs0jCXyQLnCOp1cSZZZbvhq/6mfXHUTaDkffuQ=="], - "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, ""], + "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], - "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, ""], + "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], "json-stringify-nice": ["json-stringify-nice@1.1.4", "", {}, "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw=="], - "json5": ["json5@2.2.3", "", { "bin": "lib/cli.js" }, ""], + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], "jsonparse": ["jsonparse@1.3.1", "", {}, "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg=="], - "jszip": ["jszip@3.10.1", "", { "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", "setimmediate": "^1.0.5" } }, ""], + "jszip": ["jszip@3.10.1", "", { "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", "setimmediate": "^1.0.5" } }, "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g=="], "just-diff": ["just-diff@6.0.2", "", {}, "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA=="], "just-diff-apply": ["just-diff-apply@5.5.0", "", {}, "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw=="], - "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], + "katex": ["katex@0.16.39", "", { "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "sha512-FR2f6y85+81ZLO0GPhyQ+EJl/E5ILNWltJhpAeOTzRny952Z13x2867lTFDmvMZix//Ux3CuMQ2VkLXRbUwOFg=="], + + "khroma": ["khroma@2.1.0", "", {}, "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="], + + "langium": ["langium@4.2.1", "", { "dependencies": { "chevrotain": "~11.1.1", "chevrotain-allstar": "~0.3.1", "vscode-languageserver": "~9.0.1", "vscode-languageserver-textdocument": "~1.0.11", "vscode-uri": "~3.1.0" } }, "sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ=="], + + "launch-editor": ["launch-editor@2.12.0", "", { "dependencies": { "picocolors": "^1.1.1", "shell-quote": "^1.8.3" } }, "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg=="], - "lie": ["lie@3.3.0", "", { "dependencies": { "immediate": "~3.0.5" } }, ""], + "layout-base": ["layout-base@1.0.2", "", {}, "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="], + + "lie": ["lie@3.3.0", "", { "dependencies": { "immediate": "~3.0.5" } }, "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ=="], "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], "linkify-it": ["linkify-it@5.0.0", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ=="], - "loader-runner": ["loader-runner@4.3.0", "", {}, ""], + "loader-runner": ["loader-runner@4.3.1", "", {}, "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q=="], - "loader-utils": ["loader-utils@2.0.4", "", { "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", "json5": "^2.1.2" } }, ""], + "loader-utils": ["loader-utils@2.0.4", "", { "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", "json5": "^2.1.2" } }, "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw=="], "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], - "lodash": ["lodash@4.17.21", "", {}, ""], - - "lodash-es": ["lodash-es@4.17.21", "", {}, "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="], + "lodash": ["lodash@4.17.21", "", {}, "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="], - "lodash.debounce": ["lodash.debounce@4.0.8", "", {}, ""], + "lodash-es": ["lodash-es@4.17.23", "", {}, "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg=="], - "lodash.zip": ["lodash.zip@4.2.0", "", {}, ""], + "lodash.debounce": ["lodash.debounce@4.0.8", "", {}, "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="], "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], - "make-dir": ["make-dir@3.1.0", "", { "dependencies": { "semver": "^6.0.0" } }, ""], + "make-dir": ["make-dir@3.1.0", "", { "dependencies": { "semver": "^6.0.0" } }, "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw=="], "make-fetch-happen": ["make-fetch-happen@15.0.3", "", { "dependencies": { "@npmcli/agent": "^4.0.0", "cacache": "^20.0.1", "http-cache-semantics": "^4.1.1", "minipass": "^7.0.2", "minipass-fetch": "^5.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^1.0.0", "proc-log": "^6.0.0", "promise-retry": "^2.0.1", "ssri": "^13.0.0" } }, "sha512-iyyEpDty1mwW3dGlYXAJqC/azFn5PPvgKVwXayOGBSmKLxhKZ9fg4qIan2ePpp1vJIwfFiO34LAPZgq9SZW9Aw=="], - "markdown-it": ["markdown-it@14.1.0", "", { "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", "linkify-it": "^5.0.0", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": "bin/markdown-it.mjs" }, "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg=="], + "markdown-it": ["markdown-it@14.1.1", "", { "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", "linkify-it": "^5.0.0", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" }, "bin": { "markdown-it": "bin/markdown-it.mjs" } }, "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA=="], "markdown-it-anchor": ["markdown-it-anchor@9.2.0", "", { "peerDependencies": { "@types/markdown-it": "*", "markdown-it": "*" } }, "sha512-sa2ErMQ6kKOA4l31gLGYliFQrMKkqSO0ZJgGhDHKijPf0pNFM9vghjAh3gn26pS4JDRs7Iwa9S36gxm3vgZTzg=="], + "markdown-it-emoji": ["markdown-it-emoji@3.0.0", "", {}, "sha512-+rUD93bXHubA4arpEZO3q80so0qgoFJEKRkRbjKX8RTdca89v2kfyF+xR3i2sQTwql9tpPZPOQN5B+PunspXRg=="], + "markdown-it-footnote": ["markdown-it-footnote@4.0.0", "", {}, "sha512-WYJ7urf+khJYl3DqofQpYfEYkZKbmXmwxQV8c8mO/hGIhgZ1wOe7R4HLFNwqx7TjILbnC98fuyeSsin19JdFcQ=="], "markdown-it-github-alerts": ["markdown-it-github-alerts@1.0.0", "", { "peerDependencies": { "markdown-it": ">= 13.0.0" } }, "sha512-RU3cbB/ewujrDpYNdyabvp4CscZ5J/3D71NWbJW+JSA0nplfutIXDMCwtGWlMLwzgBDAYkFMvYGkigq8nWOVdA=="], "markdown-it-task-lists": ["markdown-it-task-lists@2.1.1", "", {}, "sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA=="], + "markdown-it-texmath": ["markdown-it-texmath@1.0.0", "", {}, "sha512-4hhkiX8/gus+6e53PLCUmUrsa6ZWGgJW2XCW6O0ASvZUiezIK900ZicinTDtG3kAO2kon7oUA/ReWmpW2FByxg=="], + + "marked": ["marked@15.0.12", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA=="], + + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], + "mdurl": ["mdurl@2.0.0", "", {}, "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="], - "merge-stream": ["merge-stream@2.0.0", "", {}, ""], + "media-typer": ["media-typer@0.3.0", "", {}, "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="], + + "memfs": ["memfs@4.56.10", "", { "dependencies": { "@jsonjoy.com/fs-core": "4.56.10", "@jsonjoy.com/fs-fsa": "4.56.10", "@jsonjoy.com/fs-node": "4.56.10", "@jsonjoy.com/fs-node-builtins": "4.56.10", "@jsonjoy.com/fs-node-to-fsa": "4.56.10", "@jsonjoy.com/fs-node-utils": "4.56.10", "@jsonjoy.com/fs-print": "4.56.10", "@jsonjoy.com/fs-snapshot": "4.56.10", "@jsonjoy.com/json-pack": "^1.11.0", "@jsonjoy.com/util": "^1.9.0", "glob-to-regex.js": "^1.0.1", "thingies": "^2.5.0", "tree-dump": "^1.0.3", "tslib": "^2.0.0" } }, "sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w=="], - "merge2": ["merge2@1.4.1", "", {}, ""], + "merge-descriptors": ["merge-descriptors@1.0.3", "", {}, "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ=="], + + "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], + + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + + "mermaid": ["mermaid@11.13.0", "", { "dependencies": { "@braintree/sanitize-url": "^7.1.1", "@iconify/utils": "^3.0.2", "@mermaid-js/parser": "^1.0.1", "@types/d3": "^7.4.3", "@upsetjs/venn.js": "^2.0.0", "cytoscape": "^3.33.1", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.14", "dayjs": "^1.11.19", "dompurify": "^3.3.1", "katex": "^0.16.25", "khroma": "^2.1.0", "lodash-es": "^4.17.23", "marked": "^16.3.0", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", "uuid": "^11.1.0" } }, "sha512-fEnci+Immw6lKMFI8sqzjlATTyjLkRa6axrEgLV2yHTfv8r+h1wjFbV6xeRtd4rUV1cS4EpR9rwp3Rci7TRWDw=="], + + "methods": ["methods@1.1.2", "", {}, "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="], "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + "mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="], + "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], - "mime-types": ["mime-types@3.0.1", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA=="], + "mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], + + "mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], - "mimic-fn": ["mimic-fn@2.1.0", "", {}, ""], + "mini-css-extract-plugin": ["mini-css-extract-plugin@2.9.4", "", { "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" }, "peerDependencies": { "webpack": "^5.0.0" } }, "sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ=="], - "mini-css-extract-plugin": ["mini-css-extract-plugin@2.9.3", "", { "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" }, "peerDependencies": { "webpack": "^5.0.0" } }, "sha512-tRA0+PsS4kLVijnN1w9jUu5lkxBwUk9E8SbgEB5dBJqchE6pVYdawROG6uQtpmAri7tdCK9i7b1bULeVWqS6Ag=="], + "minimalistic-assert": ["minimalistic-assert@1.0.1", "", {}, "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="], - "minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + "minimatch": ["minimatch@3.0.8", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q=="], "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], @@ -953,27 +1559,33 @@ "minizlib": ["minizlib@3.1.0", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="], - "moment": ["moment@2.30.1", "", {}, "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how=="], + "mlly": ["mlly@1.8.1", "", { "dependencies": { "acorn": "^8.16.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", "ufo": "^1.6.3" } }, "sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ=="], + + "mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="], "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - "mustache": ["mustache@4.2.0", "", { "bin": "bin/mustache" }, ""], + "multicast-dns": ["multicast-dns@7.2.5", "", { "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" }, "bin": { "multicast-dns": "cli.js" } }, "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg=="], + + "mustache": ["mustache@4.2.0", "", { "bin": { "mustache": "bin/mustache" } }, "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ=="], - "nanoid": ["nanoid@3.3.7", "", { "bin": "bin/nanoid.cjs" }, "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g=="], + "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], - "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], + "negotiator": ["negotiator@0.6.4", "", {}, "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w=="], - "neo-async": ["neo-async@2.6.2", "", {}, ""], + "neo-async": ["neo-async@2.6.2", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="], "node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="], - "node-gyp": ["node-gyp@12.1.0", "", { "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "graceful-fs": "^4.2.6", "make-fetch-happen": "^15.0.0", "nopt": "^9.0.0", "proc-log": "^6.0.0", "semver": "^7.3.5", "tar": "^7.5.2", "tinyglobby": "^0.2.12", "which": "^6.0.0" }, "bin": "bin/node-gyp.js" }, "sha512-W+RYA8jBnhSr2vrTtlPYPc1K+CSjGpVDRZxcqJcERZ8ND3A1ThWPHRwctTx3qC3oW99jt726jhdz3Y6ky87J4g=="], + "node-forge": ["node-forge@1.3.3", "", {}, "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg=="], - "node-releases": ["node-releases@2.0.19", "", {}, "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="], + "node-gyp": ["node-gyp@12.1.0", "", { "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "graceful-fs": "^4.2.6", "make-fetch-happen": "^15.0.0", "nopt": "^9.0.0", "proc-log": "^6.0.0", "semver": "^7.3.5", "tar": "^7.5.2", "tinyglobby": "^0.2.12", "which": "^6.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" } }, "sha512-W+RYA8jBnhSr2vrTtlPYPc1K+CSjGpVDRZxcqJcERZ8ND3A1ThWPHRwctTx3qC3oW99jt726jhdz3Y6ky87J4g=="], - "nopt": ["nopt@8.1.0", "", { "dependencies": { "abbrev": "^3.0.0" }, "bin": "bin/nopt.js" }, "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A=="], + "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], - "normalize-range": ["normalize-range@0.1.2", "", {}, ""], + "nopt": ["nopt@9.0.0", "", { "dependencies": { "abbrev": "^4.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw=="], + + "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], "npm-bundled": ["npm-bundled@5.0.0", "", { "dependencies": { "npm-normalize-package-bin": "^5.0.0" } }, "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw=="], @@ -989,15 +1601,25 @@ "npm-registry-fetch": ["npm-registry-fetch@19.1.1", "", { "dependencies": { "@npmcli/redact": "^4.0.0", "jsonparse": "^1.3.1", "make-fetch-happen": "^15.0.0", "minipass": "^7.0.2", "minipass-fetch": "^5.0.0", "minizlib": "^3.0.1", "npm-package-arg": "^13.0.0", "proc-log": "^6.0.0" } }, "sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw=="], - "npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, ""], + "npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], + + "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], + + "objectorarray": ["objectorarray@1.0.5", "", {}, "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg=="], + + "obuf": ["obuf@1.1.2", "", {}, "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="], + + "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], - "objectorarray": ["objectorarray@1.0.5", "", {}, ""], + "on-headers": ["on-headers@1.1.0", "", {}, "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A=="], - "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, ""], + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], - "onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, ""], + "onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], - "p-finally": ["p-finally@1.0.0", "", {}, ""], + "open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="], + + "opener": ["opener@1.5.2", "", { "bin": { "opener": "bin/opener-bin.js" } }, "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A=="], "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], @@ -1005,67 +1627,79 @@ "p-map": ["p-map@7.0.4", "", {}, "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ=="], - "p-try": ["p-try@2.2.0", "", {}, ""], + "p-retry": ["p-retry@6.2.1", "", { "dependencies": { "@types/retry": "0.12.2", "is-network-error": "^1.0.0", "retry": "^0.13.1" } }, "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ=="], + + "package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], - "pacote": ["pacote@21.0.4", "", { "dependencies": { "@npmcli/git": "^7.0.0", "@npmcli/installed-package-contents": "^4.0.0", "@npmcli/package-json": "^7.0.0", "@npmcli/promise-spawn": "^9.0.0", "@npmcli/run-script": "^10.0.0", "cacache": "^20.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^13.0.0", "npm-packlist": "^10.0.1", "npm-pick-manifest": "^11.0.1", "npm-registry-fetch": "^19.0.0", "proc-log": "^6.0.0", "promise-retry": "^2.0.1", "sigstore": "^4.0.0", "ssri": "^13.0.0", "tar": "^7.4.3" }, "bin": "bin/index.js" }, "sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA=="], + "pacote": ["pacote@21.0.4", "", { "dependencies": { "@npmcli/git": "^7.0.0", "@npmcli/installed-package-contents": "^4.0.0", "@npmcli/package-json": "^7.0.0", "@npmcli/promise-spawn": "^9.0.0", "@npmcli/run-script": "^10.0.0", "cacache": "^20.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^13.0.0", "npm-packlist": "^10.0.1", "npm-pick-manifest": "^11.0.1", "npm-registry-fetch": "^19.0.0", "proc-log": "^6.0.0", "promise-retry": "^2.0.1", "sigstore": "^4.0.0", "ssri": "^13.0.0", "tar": "^7.4.3" }, "bin": { "pacote": "bin/index.js" } }, "sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA=="], - "pako": ["pako@1.0.11", "", {}, ""], + "pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="], - "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, ""], + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], "parse-conflict-json": ["parse-conflict-json@5.0.1", "", { "dependencies": { "json-parse-even-better-errors": "^5.0.0", "just-diff": "^6.0.0", "just-diff-apply": "^5.2.0" } }, "sha512-ZHEmNKMq1wyJXNwLxyHnluPfRAFSIliBvbK/UiOceROt4Xh9Pz0fq49NytIaeaCUf5VR86hwQ/34FCcNU5/LKQ=="], "parse-json": ["parse-json@5.2.0", "", { "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="], - "path-browserify": ["path-browserify@1.0.1", "", {}, ""], + "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], + + "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="], - "path-exists": ["path-exists@4.0.0", "", {}, ""], + "path-data-parser": ["path-data-parser@0.1.0", "", {}, "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w=="], - "path-is-absolute": ["path-is-absolute@1.0.1", "", {}, ""], + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], + + "path-is-absolute": ["path-is-absolute@1.0.1", "", {}, "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="], "path-is-inside": ["path-is-inside@1.0.2", "", {}, "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w=="], - "path-key": ["path-key@3.1.1", "", {}, ""], + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], - "path-parse": ["path-parse@1.0.7", "", {}, ""], + "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], "path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], + "path-to-regexp": ["path-to-regexp@0.1.12", "", {}, "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="], + "path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], - "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "picomatch": ["picomatch@2.3.1", "", {}, ""], + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "pify": ["pify@4.0.1", "", {}, ""], + "picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], - "pkg-dir": ["pkg-dir@4.2.0", "", { "dependencies": { "find-up": "^4.0.0" } }, ""], + "pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], "plist": ["plist@3.1.0", "", { "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" } }, "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ=="], - "postcss": ["postcss@8.4.33", "", { "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg=="], + "points-on-curve": ["points-on-curve@0.2.0", "", {}, "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A=="], + + "points-on-path": ["points-on-path@0.2.1", "", { "dependencies": { "path-data-parser": "0.1.0", "points-on-curve": "0.2.0" } }, "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g=="], - "postcss-loader": ["postcss-loader@8.1.1", "", { "dependencies": { "cosmiconfig": "^9.0.0", "jiti": "^1.20.0", "semver": "^7.5.4" }, "peerDependencies": { "@rspack/core": "0.x || 1.x", "postcss": "^7.0.0 || ^8.0.1", "webpack": "^5.0.0" }, "optionalPeers": ["@rspack/core"] }, "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ=="], + "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], + + "postcss-loader": ["postcss-loader@8.2.0", "", { "dependencies": { "cosmiconfig": "^9.0.0", "jiti": "^2.5.1", "semver": "^7.6.2" }, "peerDependencies": { "@rspack/core": "0.x || 1.x", "postcss": "^7.0.0 || ^8.0.1", "webpack": "^5.0.0" }, "optionalPeers": ["@rspack/core", "webpack"] }, "sha512-tHX+RkpsXVcc7st4dSdDGliI+r4aAQDuv+v3vFYHixb6YgjreG5AG4SEB0kDK8u2s6htqEEpKlkhSBUTvWKYnA=="], "postcss-modules-extract-imports": ["postcss-modules-extract-imports@3.1.0", "", { "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q=="], - "postcss-modules-local-by-default": ["postcss-modules-local-by-default@4.0.5", "", { "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", "postcss-value-parser": "^4.1.0" }, "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw=="], + "postcss-modules-local-by-default": ["postcss-modules-local-by-default@4.2.0", "", { "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.1.0" }, "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw=="], - "postcss-modules-scope": ["postcss-modules-scope@3.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.0.4" }, "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ=="], + "postcss-modules-scope": ["postcss-modules-scope@3.2.1", "", { "dependencies": { "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA=="], - "postcss-modules-values": ["postcss-modules-values@4.0.0", "", { "dependencies": { "icss-utils": "^5.0.0" }, "peerDependencies": { "postcss": "^8.1.0" } }, ""], + "postcss-modules-values": ["postcss-modules-values@4.0.0", "", { "dependencies": { "icss-utils": "^5.0.0" }, "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ=="], - "postcss-selector-parser": ["postcss-selector-parser@6.0.11", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, ""], + "postcss-selector-parser": ["postcss-selector-parser@7.1.1", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg=="], - "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, ""], + "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], - "prettier": ["prettier@3.6.2", "", { "bin": "bin/prettier.cjs" }, "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ=="], + "prettier": ["prettier@3.7.4", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA=="], - "prettier-plugin-java": ["prettier-plugin-java@2.7.4", "", { "dependencies": { "java-parser": "3.0.1" }, "peerDependencies": { "prettier": "^3.0.0" } }, "sha512-RiRNkumIW9vaDpxirgIPI+oLSRmuCmoVZuTax9i3cWzWnxd+uKyAfDe4efS+ce00owAeh0a1DI5eFaH1xYWNPg=="], + "prettier-plugin-java": ["prettier-plugin-java@2.8.1", "", { "dependencies": { "java-parser": "3.0.1" }, "peerDependencies": { "prettier": "^3.0.0" } }, "sha512-tkteH5OSCEb0E7wKnhhUSitr1pGUCUt9M//CwerSNhoalL/qv0jXTeSVBPZ36KC+kZl3nbq4dxh144NuGchACg=="], "proc-log": ["proc-log@6.1.0", "", {}, "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ=="], - "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, ""], + "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], "proggy": ["proggy@4.0.0", "", {}, "sha512-MbA4R+WQT76ZBm/5JUpV9yqcJt92175+Y0Bodg3HgiXzrmKu7Ggq+bpn6y6wHH+gN9NcyKn3yg1+d47VaKwNAQ=="], @@ -1077,95 +1711,127 @@ "properties-parser": ["properties-parser@0.6.0", "", {}, "sha512-qvr2cSmoA0dln0MARAKwBzPkkXn7FqwX+RVVNpMdMJc7rt9mqO2cXwluxtux9fHrLhjnPFaQkS8BM0kFrTCnSw=="], - "punycode": ["punycode@2.3.0", "", {}, ""], + "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], + + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], "punycode.js": ["punycode.js@2.3.1", "", {}, "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA=="], - "q": ["q@1.5.1", "", {}, ""], + "qs": ["qs@6.14.1", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ=="], - "querystringify": ["querystringify@2.2.0", "", {}, ""], + "querystringify": ["querystringify@2.2.0", "", {}, "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="], - "queue-microtask": ["queue-microtask@1.2.3", "", {}, ""], + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], "randombytes": ["randombytes@2.1.0", "", { "dependencies": { "safe-buffer": "^5.1.0" } }, "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ=="], - "raw-loader": ["raw-loader@4.0.2", "", { "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" }, "peerDependencies": { "webpack": "^4.0.0 || ^5.0.0" } }, ""], + "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], - "read-chunk": ["read-chunk@3.2.0", "", { "dependencies": { "pify": "^4.0.1", "with-open-file": "^0.1.6" } }, ""], + "raw-body": ["raw-body@2.5.3", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "unpipe": "~1.0.0" } }, "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA=="], + + "raw-loader": ["raw-loader@4.0.2", "", { "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" }, "peerDependencies": { "webpack": "^4.0.0 || ^5.0.0" } }, "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA=="], "read-cmd-shim": ["read-cmd-shim@6.0.0", "", {}, "sha512-1zM5HuOfagXCBWMN83fuFI/x+T/UhZ7k+KIzhrHXcQoeX5+7gmaDYjELQHmmzIodumBHeByBJT4QYS7ufAgs7A=="], - "readable-stream": ["readable-stream@2.3.7", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, ""], + "readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], "readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], - "rechoir": ["rechoir@0.8.0", "", { "dependencies": { "resolve": "^1.20.0" } }, ""], - "regenerate": ["regenerate@1.4.2", "", {}, "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A=="], - "regenerate-unicode-properties": ["regenerate-unicode-properties@10.2.0", "", { "dependencies": { "regenerate": "^1.4.2" } }, "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA=="], + "regenerate-unicode-properties": ["regenerate-unicode-properties@10.2.2", "", { "dependencies": { "regenerate": "^1.4.2" } }, "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g=="], - "regexpu-core": ["regexpu-core@6.2.0", "", { "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" } }, "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA=="], + "regexpu-core": ["regexpu-core@6.4.0", "", { "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.2", "regjsgen": "^0.8.0", "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.2.1" } }, "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA=="], "regjsgen": ["regjsgen@0.8.0", "", {}, "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q=="], - "regjsparser": ["regjsparser@0.12.0", "", { "dependencies": { "jsesc": "~3.0.2" }, "bin": "bin/parser" }, "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ=="], + "regjsparser": ["regjsparser@0.13.0", "", { "dependencies": { "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q=="], + + "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], - "require-from-string": ["require-from-string@2.0.2", "", {}, ""], + "requires-port": ["requires-port@1.0.0", "", {}, "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="], - "requires-port": ["requires-port@1.0.0", "", {}, ""], + "resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], - "resolve": ["resolve@1.22.10", "", { "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": "bin/resolve" }, "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w=="], + "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], - "resolve-cwd": ["resolve-cwd@3.0.0", "", { "dependencies": { "resolve-from": "^5.0.0" } }, ""], + "retry": ["retry@0.13.1", "", {}, "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="], - "resolve-from": ["resolve-from@4.0.0", "", {}, ""], + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], - "retry": ["retry@0.12.0", "", {}, "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="], + "robust-predicates": ["robust-predicates@3.0.2", "", {}, "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="], - "reusify": ["reusify@1.0.4", "", {}, ""], + "roughjs": ["roughjs@4.6.6", "", { "dependencies": { "hachure-fill": "^0.5.2", "path-data-parser": "^0.1.0", "points-on-curve": "^0.2.0", "points-on-path": "^0.2.1" } }, "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ=="], - "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, ""], + "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="], - "safe-buffer": ["safe-buffer@5.1.2", "", {}, ""], + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + + "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], + + "safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], - "sass": ["sass@1.90.0", "", { "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", "source-map-js": ">=0.6.2 <2.0.0" }, "optionalDependencies": { "@parcel/watcher": "^2.4.1" }, "bin": "sass.js" }, "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q=="], + "sass": ["sass@1.97.2", "", { "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", "source-map-js": ">=0.6.2 <2.0.0" }, "optionalDependencies": { "@parcel/watcher": "^2.4.1" }, "bin": { "sass": "sass.js" } }, "sha512-y5LWb0IlbO4e97Zr7c3mlpabcbBtS+ieiZ9iwDooShpFKWXf62zz5pEPdwrLYm+Bxn1fnbwFGzHuCLSA9tBmrw=="], + + "sass-loader": ["sass-loader@16.0.6", "", { "dependencies": { "neo-async": "^2.6.2" }, "peerDependencies": { "@rspack/core": "0.x || 1.x", "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "sass-embedded": "*", "webpack": "^5.0.0" }, "optionalPeers": ["@rspack/core", "node-sass", "sass", "sass-embedded", "webpack"] }, "sha512-sglGzId5gmlfxNs4gK2U3h7HlVRfx278YK6Ono5lwzuvi1jxig80YiuHkaDBVsYIKFhx8wN7XSCI0M2IDS/3qA=="], - "sass-loader": ["sass-loader@16.0.5", "", { "dependencies": { "neo-async": "^2.6.2" }, "peerDependencies": { "@rspack/core": "0.x || 1.x", "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "sass-embedded": "*", "webpack": "^5.0.0" }, "optionalPeers": ["@rspack/core", "node-sass", "sass-embedded"] }, "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw=="], + "sax": ["sax@1.1.4", "", {}, "sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg=="], - "sax": ["sax@1.1.4", "", {}, ""], + "schema-utils": ["schema-utils@4.3.3", "", { "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } }, "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA=="], - "schema-utils": ["schema-utils@4.3.2", "", { "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } }, "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ=="], + "select-hose": ["select-hose@2.0.0", "", {}, "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg=="], - "semver": ["semver@6.3.1", "", { "bin": "bin/semver.js" }, ""], + "selfsigned": ["selfsigned@2.4.1", "", { "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" } }, "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q=="], + + "semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + + "send": ["send@0.19.2", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "~0.5.2", "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "~2.4.1", "range-parser": "~1.2.1", "statuses": "~2.0.2" } }, "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg=="], "serialize-javascript": ["serialize-javascript@6.0.2", "", { "dependencies": { "randombytes": "^2.1.0" } }, "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g=="], - "setimmediate": ["setimmediate@1.0.5", "", {}, ""], + "serve-index": ["serve-index@1.9.2", "", { "dependencies": { "accepts": "~1.3.8", "batch": "0.6.1", "debug": "2.6.9", "escape-html": "~1.0.3", "http-errors": "~1.8.0", "mime-types": "~2.1.35", "parseurl": "~1.3.3" } }, "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ=="], + + "serve-static": ["serve-static@1.16.3", "", { "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "~0.19.1" } }, "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA=="], - "shallow-clone": ["shallow-clone@3.0.1", "", { "dependencies": { "kind-of": "^6.0.2" } }, "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA=="], + "setimmediate": ["setimmediate@1.0.5", "", {}, "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="], - "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, ""], + "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], - "shebang-regex": ["shebang-regex@3.0.0", "", {}, ""], + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], - "signal-exit": ["signal-exit@3.0.7", "", {}, ""], + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], - "sigstore": ["sigstore@4.0.0", "", { "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.0.0", "@sigstore/protobuf-specs": "^0.5.0", "@sigstore/sign": "^4.0.0", "@sigstore/tuf": "^4.0.0", "@sigstore/verify": "^3.0.0" } }, "sha512-Gw/FgHtrLM9WP8P5lLcSGh9OQcrTruWCELAiS48ik1QbL0cH+dfjomiRTUE9zzz+D1N6rOLkwXUvVmXZAsNE0Q=="], + "shell-quote": ["shell-quote@1.8.3", "", {}, "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw=="], + + "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], + + "side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], + + "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], + + "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], + + "signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + + "sigstore": ["sigstore@4.1.0", "", { "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.1.0", "@sigstore/protobuf-specs": "^0.5.0", "@sigstore/sign": "^4.1.0", "@sigstore/tuf": "^4.0.1", "@sigstore/verify": "^3.1.0" } }, "sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA=="], + + "sirv": ["sirv@2.0.4", "", { "dependencies": { "@polka/url": "^1.0.0-next.24", "mrmime": "^2.0.0", "totalist": "^3.0.0" } }, "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ=="], "slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="], "smart-buffer": ["smart-buffer@4.2.0", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="], + "sockjs": ["sockjs@0.3.24", "", { "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", "websocket-driver": "^0.7.4" } }, "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ=="], + "socks": ["socks@2.8.7", "", { "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" } }, "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A=="], "socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="], - "source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], - "source-map-js": ["source-map-js@1.0.2", "", {}, ""], + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], @@ -1177,43 +1843,57 @@ "spdx-license-ids": ["spdx-license-ids@3.0.22", "", {}, "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ=="], + "spdy": ["spdy@4.0.2", "", { "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", "http-deceiver": "^1.2.7", "select-hose": "^2.0.0", "spdy-transport": "^3.0.0" } }, "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA=="], + + "spdy-transport": ["spdy-transport@3.0.0", "", { "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", "hpack.js": "^2.1.6", "obuf": "^1.1.2", "readable-stream": "^3.0.6", "wbuf": "^1.7.3" } }, "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw=="], + "sprintf": ["sprintf@0.1.5", "", {}, "sha512-4X5KsuXFQ7f+d7Y+bi4qSb6eI+YoifDTGr0MQJXRoYO7BO7evfRCjds6kk3z7l5CiJYxgDN1x5Er4WiyCt+zTQ=="], "ssri": ["ssri@13.0.0", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng=="], + "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], + "string-argv": ["string-argv@0.3.2", "", {}, "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q=="], "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], - "string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, ""], + "string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], "stringify-package": ["stringify-package@1.0.1", "", {}, "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg=="], - "strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], + "strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], - "strip-bom": ["strip-bom@4.0.0", "", {}, ""], + "strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], - "strip-final-newline": ["strip-final-newline@2.0.0", "", {}, ""], - - "strip-json-comments": ["strip-json-comments@1.0.4", "", { "bin": "cli.js" }, "sha512-AOPG8EBc5wAikaG1/7uFCNFJwnKOuQwFTpYBdTW6OvWHeZBQBrAA/amefHGrEiOnCPcLFZK6FUPtWVKpQVIRgg=="], + "strip-json-comments": ["strip-json-comments@1.0.4", "", { "bin": { "strip-json-comments": "cli.js" } }, "sha512-AOPG8EBc5wAikaG1/7uFCNFJwnKOuQwFTpYBdTW6OvWHeZBQBrAA/amefHGrEiOnCPcLFZK6FUPtWVKpQVIRgg=="], "style-loader": ["style-loader@4.0.0", "", { "peerDependencies": { "webpack": "^5.27.0" } }, "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA=="], - "supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], + "style-mod": ["style-mod@4.1.3", "", {}, "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ=="], + + "stylis": ["stylis@4.3.6", "", {}, "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ=="], + + "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], - "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, ""], + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], - "systeminformation": ["systeminformation@5.27.14", "", { "os": "!aix", "bin": "lib/cli.js" }, "sha512-3DoNDYSZBLxBwaJtQGWNpq0fonga/VZ47HY1+7/G3YoIPaPz93Df6egSzzTKbEMmlzUpy3eQ0nR9REuYIycXGg=="], + "systeminformation": ["systeminformation@5.30.2", "", { "os": "!aix", "bin": { "systeminformation": "lib/cli.js" } }, "sha512-Rrt5oFTWluUVuPlbtn3o9ja+nvjdF3Um4DG0KxqfYvpzcx7Q9plZBTjJiJy9mAouua4+OI7IUGBaG9Zyt9NgxA=="], - "tapable": ["tapable@2.2.1", "", {}, ""], + "tapable": ["tapable@2.3.0", "", {}, "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="], "tar": ["tar@7.5.2", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg=="], "terminal": ["terminal@0.1.4", "", { "dependencies": { "sprintf": ">= 0.1.1" } }, "sha512-w6OAFpUO+TimZUdQ46dK3fYYOCCBIsS2QUfIEkzX21oJ8tvJOJvJkcmrbleLH5KG02SNohYFDj81bL3VPaULsQ=="], - "terser": ["terser@5.43.1", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.14.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": "bin/terser" }, "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg=="], + "terser": ["terser@5.44.1", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw=="], - "terser-webpack-plugin": ["terser-webpack-plugin@5.3.14", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "peerDependencies": { "webpack": "^5.1.0" } }, "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw=="], + "terser-webpack-plugin": ["terser-webpack-plugin@5.3.16", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "peerDependencies": { "webpack": "^5.1.0" } }, "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q=="], + + "thingies": ["thingies@2.5.0", "", { "peerDependencies": { "tslib": "^2" } }, "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw=="], + + "thunky": ["thunky@1.1.0", "", {}, "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="], + + "tinyexec": ["tinyexec@1.0.4", "", {}, "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw=="], "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], @@ -1221,77 +1901,125 @@ "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], + + "totalist": ["totalist@3.0.1", "", {}, "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ=="], + + "tree-dump": ["tree-dump@1.1.0", "", { "peerDependencies": { "tslib": "2" } }, "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA=="], + "treeverse": ["treeverse@3.0.0", "", {}, "sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ=="], - "tuf-js": ["tuf-js@4.0.0", "", { "dependencies": { "@tufjs/models": "4.0.0", "debug": "^4.4.1", "make-fetch-happen": "^15.0.0" } }, "sha512-Lq7ieeGvXDXwpoSmOSgLWVdsGGV9J4a77oDTAPe/Ltrqnnm/ETaRlBAQTH5JatEh8KXuE6sddf9qAv1Q2282Hg=="], + "ts-dedent": ["ts-dedent@2.2.0", "", {}, "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ=="], + + "ts-loader": ["ts-loader@9.5.4", "", { "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", "micromatch": "^4.0.0", "semver": "^7.3.4", "source-map": "^0.7.4" }, "peerDependencies": { "typescript": "*", "webpack": "^5.0.0" } }, "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ=="], - "typedarray-to-buffer": ["typedarray-to-buffer@3.1.5", "", { "dependencies": { "is-typedarray": "^1.0.0" } }, ""], + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "tuf-js": ["tuf-js@4.1.0", "", { "dependencies": { "@tufjs/models": "4.1.0", "debug": "^4.4.3", "make-fetch-happen": "^15.0.1" } }, "sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ=="], + + "type-is": ["type-is@1.6.18", "", { "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" } }, "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="], + + "typedarray-to-buffer": ["typedarray-to-buffer@3.1.5", "", { "dependencies": { "is-typedarray": "^1.0.0" } }, "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], "uc.micro": ["uc.micro@2.1.0", "", {}, "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A=="], - "undici-types": ["undici-types@7.10.0", "", {}, "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag=="], + "ufo": ["ufo@1.6.3", "", {}, "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q=="], + + "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], "unicode-canonical-property-names-ecmascript": ["unicode-canonical-property-names-ecmascript@2.0.1", "", {}, "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg=="], "unicode-match-property-ecmascript": ["unicode-match-property-ecmascript@2.0.0", "", { "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" } }, "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q=="], - "unicode-match-property-value-ecmascript": ["unicode-match-property-value-ecmascript@2.2.0", "", {}, "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg=="], + "unicode-match-property-value-ecmascript": ["unicode-match-property-value-ecmascript@2.2.1", "", {}, "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg=="], - "unicode-property-aliases-ecmascript": ["unicode-property-aliases-ecmascript@2.1.0", "", {}, "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w=="], + "unicode-property-aliases-ecmascript": ["unicode-property-aliases-ecmascript@2.2.0", "", {}, "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ=="], "unique-filename": ["unique-filename@5.0.0", "", { "dependencies": { "unique-slug": "^6.0.0" } }, "sha512-2RaJTAvAb4owyjllTfXzFClJ7WsGxlykkPvCr9pA//LD9goVq+m4PPAeBgNodGZ7nSrntT/auWpJ6Y5IFXcfjg=="], "unique-slug": ["unique-slug@6.0.0", "", { "dependencies": { "imurmurhash": "^0.1.4" } }, "sha512-4Lup7Ezn8W3d52/xBhZBVdx323ckxa7DEvd9kPQHppTkLoJXw6ltrBCyj5pnrxj0qKDxYMJ56CoxNuFCscdTiw=="], - "unique-string": ["unique-string@2.0.0", "", { "dependencies": { "crypto-random-string": "^2.0.0" } }, ""], + "unique-string": ["unique-string@2.0.0", "", { "dependencies": { "crypto-random-string": "^2.0.0" } }, "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg=="], + + "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], "untildify": ["untildify@4.0.0", "", {}, "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw=="], - "update-browserslist-db": ["update-browserslist-db@1.1.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": "cli.js" }, "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw=="], + "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], - "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, ""], + "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], - "url-parse": ["url-parse@1.5.10", "", { "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" } }, ""], + "url-parse": ["url-parse@1.5.10", "", { "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" } }, "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ=="], - "util-deprecate": ["util-deprecate@1.0.2", "", {}, ""], + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + + "utils-merge": ["utils-merge@1.0.1", "", {}, "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="], + + "uuid": ["uuid@11.1.0", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="], "valid-identifier": ["valid-identifier@0.0.2", "", {}, "sha512-zaSmOW6ykXwrkX0YTuFUSoALNEKGaQHpxBJQLb3TXspRNDpBwbfrIQCZqAQ0LKBlKuyn2YOq7NNd6415hvZ33g=="], "validate-npm-package-license": ["validate-npm-package-license@3.0.4", "", { "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="], - "validate-npm-package-name": ["validate-npm-package-name@7.0.0", "", {}, "sha512-bwVk/OK+Qu108aJcMAEiU4yavHUI7aN20TgZNBj9MR2iU1zPUl1Z1Otr7771ExfYTPTvfN8ZJ1pbr5Iklgt4xg=="], + "validate-npm-package-name": ["validate-npm-package-name@7.0.2", "", {}, "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A=="], "vanilla-picker": ["vanilla-picker@2.12.3", "", { "dependencies": { "@sphinxxxx/color-conversion": "^2.2.2" } }, "sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ=="], + "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], + + "vscode-jsonrpc": ["vscode-jsonrpc@8.2.0", "", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="], + + "vscode-languageserver": ["vscode-languageserver@9.0.1", "", { "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, "bin": { "installServerIntoExtension": "bin/installServerIntoExtension" } }, "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g=="], + + "vscode-languageserver-protocol": ["vscode-languageserver-protocol@3.17.5", "", { "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" } }, "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg=="], + + "vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="], + + "vscode-languageserver-types": ["vscode-languageserver-types@3.17.5", "", {}, "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="], + + "vscode-uri": ["vscode-uri@3.1.0", "", {}, "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ=="], + + "w3c-keyname": ["w3c-keyname@2.2.8", "", {}, "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="], + "walk-up-path": ["walk-up-path@4.0.0", "", {}, "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A=="], - "watchpack": ["watchpack@2.4.1", "", { "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" } }, "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg=="], + "watchpack": ["watchpack@2.5.1", "", { "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" } }, "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg=="], - "webpack": ["webpack@5.101.0", "", { "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", "@types/json-schema": "^7.0.15", "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.2", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^4.3.2", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.1", "webpack-sources": "^3.3.3" }, "bin": "bin/webpack.js" }, "sha512-B4t+nJqytPeuZlHuIKTbalhljIFXeNRqrUGAQgTGlfOl2lXXKXw+yZu6bicycP+PUlM44CxBjCFD6aciKFT3LQ=="], + "wbuf": ["wbuf@1.7.3", "", { "dependencies": { "minimalistic-assert": "^1.0.0" } }, "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA=="], - "webpack-cli": ["webpack-cli@6.0.1", "", { "dependencies": { "@discoveryjs/json-ext": "^0.6.1", "@webpack-cli/configtest": "^3.0.1", "@webpack-cli/info": "^3.0.1", "@webpack-cli/serve": "^3.0.1", "colorette": "^2.0.14", "commander": "^12.1.0", "cross-spawn": "^7.0.3", "envinfo": "^7.14.0", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^3.1.1", "rechoir": "^0.8.0", "webpack-merge": "^6.0.1" }, "peerDependencies": { "webpack": "^5.82.0" }, "bin": "bin/cli.js" }, "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw=="], + "webpack": ["webpack@5.105.0", "", { "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", "@types/json-schema": "^7.0.15", "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.19.0", "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.3.1", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", "terser-webpack-plugin": "^5.3.16", "watchpack": "^2.5.1", "webpack-sources": "^3.3.3" }, "bin": { "webpack": "bin/webpack.js" } }, "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw=="], - "webpack-merge": ["webpack-merge@6.0.1", "", { "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", "wildcard": "^2.0.1" } }, "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg=="], + "webpack-bundle-analyzer": ["webpack-bundle-analyzer@4.10.2", "", { "dependencies": { "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", "acorn-walk": "^8.0.0", "commander": "^7.2.0", "debounce": "^1.2.1", "escape-string-regexp": "^4.0.0", "gzip-size": "^6.0.0", "html-escaper": "^2.0.2", "opener": "^1.5.2", "picocolors": "^1.0.0", "sirv": "^2.0.3", "ws": "^7.3.1" }, "bin": { "webpack-bundle-analyzer": "lib/bin/analyzer.js" } }, "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw=="], + + "webpack-dev-middleware": ["webpack-dev-middleware@7.4.5", "", { "dependencies": { "colorette": "^2.0.10", "memfs": "^4.43.1", "mime-types": "^3.0.1", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "schema-utils": "^4.0.0" }, "peerDependencies": { "webpack": "^5.0.0" }, "optionalPeers": ["webpack"] }, "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA=="], + + "webpack-dev-server": ["webpack-dev-server@5.2.2", "", { "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", "@types/express": "^4.17.21", "@types/express-serve-static-core": "^4.17.21", "@types/serve-index": "^1.9.4", "@types/serve-static": "^1.15.5", "@types/sockjs": "^0.3.36", "@types/ws": "^8.5.10", "ansi-html-community": "^0.0.8", "bonjour-service": "^1.2.1", "chokidar": "^3.6.0", "colorette": "^2.0.10", "compression": "^1.7.4", "connect-history-api-fallback": "^2.0.0", "express": "^4.21.2", "graceful-fs": "^4.2.6", "http-proxy-middleware": "^2.0.9", "ipaddr.js": "^2.1.0", "launch-editor": "^2.6.1", "open": "^10.0.3", "p-retry": "^6.2.0", "schema-utils": "^4.2.0", "selfsigned": "^2.4.1", "serve-index": "^1.9.1", "sockjs": "^0.3.24", "spdy": "^4.0.2", "webpack-dev-middleware": "^7.4.2", "ws": "^8.18.0" }, "peerDependencies": { "webpack": "^5.0.0" }, "optionalPeers": ["webpack"], "bin": { "webpack-dev-server": "bin/webpack-dev-server.js" } }, "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg=="], "webpack-sources": ["webpack-sources@3.3.3", "", {}, "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg=="], - "which": ["which@5.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ=="], + "websocket-driver": ["websocket-driver@0.7.4", "", { "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg=="], + + "websocket-extensions": ["websocket-extensions@0.1.4", "", {}, "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="], - "wildcard": ["wildcard@2.0.1", "", {}, "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ=="], + "which": ["which@6.0.1", "", { "dependencies": { "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" } }, "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg=="], - "with-open-file": ["with-open-file@0.1.7", "", { "dependencies": { "p-finally": "^1.0.0", "p-try": "^2.1.0", "pify": "^4.0.1" } }, ""], + "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], - "wrap-ansi": ["wrap-ansi@9.0.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q=="], + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], - "wrappy": ["wrappy@1.0.2", "", {}, ""], + "write-file-atomic": ["write-file-atomic@3.0.3", "", { "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", "signal-exit": "^3.0.2", "typedarray-to-buffer": "^3.1.5" } }, "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q=="], - "write-file-atomic": ["write-file-atomic@3.0.3", "", { "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", "signal-exit": "^3.0.2", "typedarray-to-buffer": "^3.1.5" } }, ""], + "ws": ["ws@8.19.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg=="], - "xdg-basedir": ["xdg-basedir@4.0.0", "", {}, ""], + "wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="], + + "xdg-basedir": ["xdg-basedir@4.0.0", "", {}, "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q=="], "xmlbuilder": ["xmlbuilder@15.1.1", "", {}, "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg=="], - "y18n": ["y18n@5.0.8", "", {}, ""], + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], @@ -1301,101 +2029,151 @@ "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], - "@babel/generator/@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.12", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg=="], + "@chevrotain/cst-dts-gen/lodash-es": ["lodash-es@4.17.21", "", {}, "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="], + + "@chevrotain/gast/lodash-es": ["lodash-es@4.17.21", "", {}, "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="], + + "@codemirror/lang-angular/@codemirror/lang-javascript": ["@codemirror/lang-javascript@6.2.4", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", "@codemirror/lint": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0", "@lezer/javascript": "^1.0.0" } }, "sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA=="], + + "@codemirror/lang-html/@codemirror/lang-javascript": ["@codemirror/lang-javascript@6.2.4", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", "@codemirror/lint": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0", "@lezer/javascript": "^1.0.0" } }, "sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA=="], + + "@codemirror/lang-vue/@codemirror/lang-javascript": ["@codemirror/lang-javascript@6.2.4", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", "@codemirror/lint": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0", "@lezer/javascript": "^1.0.0" } }, "sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA=="], + + "@codemirror/language-data/@codemirror/lang-javascript": ["@codemirror/lang-javascript@6.2.4", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", "@codemirror/lint": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0", "@lezer/javascript": "^1.0.0" } }, "sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA=="], + + "@codemirror/language-data/@codemirror/lang-liquid": ["@codemirror/lang-liquid@6.3.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.1" } }, "sha512-S/jE/D7iij2Pu70AC65ME6AYWxOOcX20cSJvaPgY5w7m2sfxsArAcUAuUgm/CZCVmqoi9KiOlS7gj/gyLipABw=="], - "@jridgewell/source-map/@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.12", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg=="], + "@jsonjoy.com/fs-snapshot/@jsonjoy.com/json-pack": ["@jsonjoy.com/json-pack@17.65.0", "", { "dependencies": { "@jsonjoy.com/base64": "17.65.0", "@jsonjoy.com/buffers": "17.65.0", "@jsonjoy.com/codegen": "17.65.0", "@jsonjoy.com/json-pointer": "17.65.0", "@jsonjoy.com/util": "17.65.0", "hyperdyperid": "^1.2.0", "thingies": "^2.5.0", "tree-dump": "^1.1.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-e0SG/6qUCnVhHa0rjDJHgnXnbsacooHVqQHxspjvlYQSkHm+66wkHw6Gql+3u/WxI/b1VsOdUi0M+fOtkgKGdQ=="], - "@npmcli/agent/lru-cache": ["lru-cache@11.2.2", "", {}, "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg=="], + "@jsonjoy.com/fs-snapshot/@jsonjoy.com/util": ["@jsonjoy.com/util@17.65.0", "", { "dependencies": { "@jsonjoy.com/buffers": "17.65.0", "@jsonjoy.com/codegen": "17.65.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-cWiEHZccQORf96q2y6zU3wDeIVPeidmGqd9cNKJRYoVHTV0S1eHPy5JTbHpMnGfDvtvujQwQozOqgO9ABu6h0w=="], - "@npmcli/arborist/lru-cache": ["lru-cache@11.2.2", "", {}, "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg=="], + "@jsonjoy.com/json-pack/@jsonjoy.com/buffers": ["@jsonjoy.com/buffers@1.2.1", "", { "peerDependencies": { "tslib": "2" } }, "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA=="], - "@npmcli/arborist/nopt": ["nopt@9.0.0", "", { "dependencies": { "abbrev": "^4.0.0" }, "bin": "bin/nopt.js" }, "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw=="], + "@jsonjoy.com/util/@jsonjoy.com/buffers": ["@jsonjoy.com/buffers@1.2.1", "", { "peerDependencies": { "tslib": "2" } }, "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA=="], - "@npmcli/arborist/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "@npmcli/agent/lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="], - "@npmcli/fs/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "@npmcli/arborist/lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="], - "@npmcli/git/lru-cache": ["lru-cache@11.2.2", "", {}, "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg=="], + "@npmcli/arborist/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], - "@npmcli/git/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "@npmcli/arborist/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + + "@npmcli/fs/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + + "@npmcli/git/lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="], + + "@npmcli/git/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "@npmcli/git/which": ["which@6.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg=="], "@npmcli/map-workspaces/glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], + "@npmcli/map-workspaces/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + "@npmcli/metavuln-calculator/json-parse-even-better-errors": ["json-parse-even-better-errors@5.0.0", "", {}, "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ=="], - "@npmcli/metavuln-calculator/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "@npmcli/metavuln-calculator/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "@npmcli/package-json/glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], "@npmcli/package-json/json-parse-even-better-errors": ["json-parse-even-better-errors@5.0.0", "", {}, "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ=="], - "@npmcli/package-json/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "@npmcli/package-json/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "@npmcli/promise-spawn/which": ["which@6.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg=="], - "@npmcli/query/postcss-selector-parser": ["postcss-selector-parser@7.1.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA=="], - "@npmcli/run-script/which": ["which@6.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg=="], - "@sigstore/sign/proc-log": ["proc-log@5.0.0", "", {}, "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ=="], + "@rspack/dev-server/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], + + "@tufjs/models/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], - "@tufjs/models/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], + "accepts/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], - "android-versions/semver": ["semver@7.7.2", "", { "bin": "bin/semver.js" }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "accepts/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], + + "android-versions/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + + "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], "bin-links/write-file-atomic": ["write-file-atomic@7.0.0", "", { "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" } }, "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg=="], + "body-parser/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "body-parser/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], + "cacache/glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], - "cacache/lru-cache": ["lru-cache@11.2.2", "", {}, "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg=="], + "cacache/lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="], - "cordova/cordova-common": ["cordova-common@6.0.0", "", { "dependencies": { "@netflix/nerror": "^1.1.3", "ansi": "^0.3.1", "bplist-parser": "^0.3.2", "elementtree": "^0.1.7", "endent": "^2.1.0", "fast-glob": "^3.3.3", "plist": "^3.1.0" } }, "sha512-16WPC1DuxVdshV3RoQUXqhcJVdhxWGwiFysA4TkYuboqoev6mgt0JuIJFxmQbzR/DuyuONaVe0L0O0Hf1C08Mg=="], + "chevrotain/lodash-es": ["lodash-es@4.17.21", "", {}, "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="], - "cordova/nopt": ["nopt@9.0.0", "", { "dependencies": { "abbrev": "^4.0.0" }, "bin": "bin/nopt.js" }, "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw=="], + "chevrotain-allstar/lodash-es": ["lodash-es@4.17.21", "", {}, "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="], - "cordova/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "compression/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - "cordova-android/semver": ["semver@7.7.2", "", { "bin": "bin/semver.js" }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "compression/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], - "cordova-create/cordova-common": ["cordova-common@6.0.0", "", { "dependencies": { "@netflix/nerror": "^1.1.3", "ansi": "^0.3.1", "bplist-parser": "^0.3.2", "elementtree": "^0.1.7", "endent": "^2.1.0", "fast-glob": "^3.3.3", "plist": "^3.1.0" } }, "sha512-16WPC1DuxVdshV3RoQUXqhcJVdhxWGwiFysA4TkYuboqoev6mgt0JuIJFxmQbzR/DuyuONaVe0L0O0Hf1C08Mg=="], + "content-disposition/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], - "cordova-fetch/cordova-common": ["cordova-common@6.0.0", "", { "dependencies": { "@netflix/nerror": "^1.1.3", "ansi": "^0.3.1", "bplist-parser": "^0.3.2", "elementtree": "^0.1.7", "endent": "^2.1.0", "fast-glob": "^3.3.3", "plist": "^3.1.0" } }, "sha512-16WPC1DuxVdshV3RoQUXqhcJVdhxWGwiFysA4TkYuboqoev6mgt0JuIJFxmQbzR/DuyuONaVe0L0O0Hf1C08Mg=="], + "cordova/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "cordova-fetch/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "cordova-android/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], - "cordova-lib/cordova-common": ["cordova-common@6.0.0", "", { "dependencies": { "@netflix/nerror": "^1.1.3", "ansi": "^0.3.1", "bplist-parser": "^0.3.2", "elementtree": "^0.1.7", "endent": "^2.1.0", "fast-glob": "^3.3.3", "plist": "^3.1.0" } }, "sha512-16WPC1DuxVdshV3RoQUXqhcJVdhxWGwiFysA4TkYuboqoev6mgt0JuIJFxmQbzR/DuyuONaVe0L0O0Hf1C08Mg=="], + "cordova-fetch/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "cordova-lib/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "cordova-fetch/which": ["which@5.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ=="], + + "cordova-lib/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "cordova-lib/write-file-atomic": ["write-file-atomic@7.0.0", "", { "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" } }, "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg=="], - "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "bin/node-which" } }, ""], + "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + + "css-loader/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + + "cytoscape-fcose/cose-base": ["cose-base@2.2.0", "", { "dependencies": { "layout-base": "^2.0.0" } }, "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g=="], - "css-loader/semver": ["semver@7.5.4", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": "bin/semver.js" }, ""], + "d3-dsv/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], + + "d3-sankey/d3-array": ["d3-array@2.12.1", "", { "dependencies": { "internmap": "^1.0.0" } }, "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ=="], + + "d3-sankey/d3-shape": ["d3-shape@1.3.7", "", { "dependencies": { "d3-path": "1" } }, "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw=="], "dom-serializer/domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], "dom-serializer/entities": ["entities@2.2.0", "", {}, "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="], - "endent/dedent": ["dedent@0.7.0", "", {}, ""], + "endent/dedent": ["dedent@0.7.0", "", {}, "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA=="], + + "esrecurse/estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], + + "express/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - "esrecurse/estraverse": ["estraverse@5.3.0", "", {}, ""], + "express/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], - "fdir/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + "finalhandler/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - "glob/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, ""], + "glob/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - "hosted-git-info/lru-cache": ["lru-cache@11.2.2", "", {}, "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg=="], + "hosted-git-info/lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="], "htmlparser2/entities": ["entities@1.0.0", "", {}, "sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ=="], "htmlparser2/readable-stream": ["readable-stream@1.1.14", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", "isarray": "0.0.1", "string_decoder": "~0.10.x" } }, "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ=="], - "is-plain-object/isobject": ["isobject@3.0.1", "", {}, "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="], + "ignore-walk/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + + "jest-worker/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], + + "langium/chevrotain": ["chevrotain@11.1.2", "", { "dependencies": { "@chevrotain/cst-dts-gen": "11.1.2", "@chevrotain/gast": "11.1.2", "@chevrotain/regexp-to-ast": "11.1.2", "@chevrotain/types": "11.1.2", "@chevrotain/utils": "11.1.2", "lodash-es": "4.17.23" } }, "sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg=="], + + "make-fetch-happen/negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], - "jshint/minimatch": ["minimatch@3.0.8", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q=="], + "mermaid/marked": ["marked@16.4.2", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA=="], + + "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], "minipass-flush/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], @@ -1403,31 +2181,45 @@ "minipass-sized/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], - "node-gyp/nopt": ["nopt@9.0.0", "", { "dependencies": { "abbrev": "^4.0.0" }, "bin": "bin/nopt.js" }, "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw=="], + "mlly/acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], - "node-gyp/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "node-gyp/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "node-gyp/which": ["which@6.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg=="], - "npm-install-checks/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "npm-install-checks/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "npm-package-arg/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "npm-package-arg/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "npm-pick-manifest/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "npm-pick-manifest/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "parse-conflict-json/json-parse-even-better-errors": ["json-parse-even-better-errors@5.0.0", "", {}, "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ=="], - "path-scurry/lru-cache": ["lru-cache@11.2.2", "", {}, "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg=="], + "path-scurry/lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="], + + "postcss-loader/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + + "promise-retry/retry": ["retry@0.12.0", "", {}, "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="], + + "proxy-addr/ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="], + + "raw-body/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], + + "raw-loader/schema-utils": ["schema-utils@3.3.0", "", { "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } }, "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg=="], + + "send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - "pkg-dir/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, ""], + "serve-index/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - "postcss-loader/semver": ["semver@7.5.4", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": "bin/semver.js" }, ""], + "serve-index/http-errors": ["http-errors@1.8.1", "", { "dependencies": { "depd": "~1.1.2", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", "toidentifier": "1.0.1" } }, "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g=="], - "raw-loader/schema-utils": ["schema-utils@3.1.1", "", { "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } }, ""], + "serve-index/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], - "regjsparser/jsesc": ["jsesc@3.0.2", "", { "bin": "bin/jsesc" }, "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g=="], + "sockjs/uuid": ["uuid@8.3.2", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="], - "resolve-cwd/resolve-from": ["resolve-from@5.0.0", "", {}, ""], + "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + + "spdy-transport/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], "tar/yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], @@ -1435,52 +2227,114 @@ "tinyglobby/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], + "ts-loader/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + + "type-is/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + + "webpack/enhanced-resolve": ["enhanced-resolve@5.19.0", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.0" } }, "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg=="], + "webpack/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], - "@npmcli/arborist/nopt/abbrev": ["abbrev@4.0.0", "", {}, "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA=="], + "webpack-bundle-analyzer/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], + + "webpack-bundle-analyzer/escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], + + "webpack-bundle-analyzer/ws": ["ws@7.5.10", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="], - "@tufjs/models/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + "webpack-dev-server/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], + + "websocket-driver/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + + "wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + + "@jsonjoy.com/fs-snapshot/@jsonjoy.com/json-pack/@jsonjoy.com/base64": ["@jsonjoy.com/base64@17.65.0", "", { "peerDependencies": { "tslib": "2" } }, "sha512-Xrh7Fm/M0QAYpekSgmskdZYnFdSGnsxJ/tHaolA4bNwWdG9i65S8m83Meh7FOxyJyQAdo4d4J97NOomBLEfkDQ=="], + + "@jsonjoy.com/fs-snapshot/@jsonjoy.com/json-pack/@jsonjoy.com/codegen": ["@jsonjoy.com/codegen@17.65.0", "", { "peerDependencies": { "tslib": "2" } }, "sha512-7MXcRYe7n3BG+fo3jicvjB0+6ypl2Y/bQp79Sp7KeSiiCgLqw4Oled6chVv07/xLVTdo3qa1CD0VCCnPaw+RGA=="], + + "@jsonjoy.com/fs-snapshot/@jsonjoy.com/json-pack/@jsonjoy.com/json-pointer": ["@jsonjoy.com/json-pointer@17.65.0", "", { "dependencies": { "@jsonjoy.com/util": "17.65.0" }, "peerDependencies": { "tslib": "2" } }, "sha512-uhTe+XhlIZpWOxgPcnO+iSCDgKKBpwkDVTyYiXX9VayGV8HSFVJM67M6pUE71zdnXF1W0Da21AvnhlmdwYPpow=="], + + "@jsonjoy.com/fs-snapshot/@jsonjoy.com/util/@jsonjoy.com/codegen": ["@jsonjoy.com/codegen@17.65.0", "", { "peerDependencies": { "tslib": "2" } }, "sha512-7MXcRYe7n3BG+fo3jicvjB0+6ypl2Y/bQp79Sp7KeSiiCgLqw4Oled6chVv07/xLVTdo3qa1CD0VCCnPaw+RGA=="], + + "@npmcli/git/which/isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], + + "@npmcli/package-json/glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + + "@npmcli/promise-spawn/which/isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], + + "@npmcli/run-script/which/isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], + + "@rspack/dev-server/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + + "accepts/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], "bin-links/write-file-atomic/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + "body-parser/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "cacache/glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + + "compression/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "cordova-fetch/which/isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], + "cordova-lib/write-file-atomic/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], - "cordova/nopt/abbrev": ["abbrev@4.0.0", "", {}, "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA=="], + "cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + + "cytoscape-fcose/cose-base/layout-base": ["layout-base@2.0.1", "", {}, "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="], - "cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, ""], + "d3-sankey/d3-shape/d3-path": ["d3-path@1.0.9", "", {}, "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="], - "css-loader/semver/lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, ""], + "express/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "finalhandler/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], "htmlparser2/readable-stream/isarray": ["isarray@0.0.1", "", {}, "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="], "htmlparser2/readable-stream/string_decoder": ["string_decoder@0.10.31", "", {}, "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="], + "langium/chevrotain/@chevrotain/cst-dts-gen": ["@chevrotain/cst-dts-gen@11.1.2", "", { "dependencies": { "@chevrotain/gast": "11.1.2", "@chevrotain/types": "11.1.2", "lodash-es": "4.17.23" } }, "sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q=="], + + "langium/chevrotain/@chevrotain/gast": ["@chevrotain/gast@11.1.2", "", { "dependencies": { "@chevrotain/types": "11.1.2", "lodash-es": "4.17.23" } }, "sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g=="], + + "langium/chevrotain/@chevrotain/regexp-to-ast": ["@chevrotain/regexp-to-ast@11.1.2", "", {}, "sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw=="], + + "langium/chevrotain/@chevrotain/types": ["@chevrotain/types@11.1.2", "", {}, "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw=="], + + "langium/chevrotain/@chevrotain/utils": ["@chevrotain/utils@11.1.2", "", {}, "sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA=="], + "minipass-flush/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], "minipass-pipeline/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], "minipass-sized/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], - "node-gyp/nopt/abbrev": ["abbrev@4.0.0", "", {}, "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA=="], + "node-gyp/which/isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], + + "raw-loader/schema-utils/ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], + + "raw-loader/schema-utils/ajv-keywords": ["ajv-keywords@3.5.2", "", { "peerDependencies": { "ajv": "^6.9.1" } }, "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="], + + "send/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - "pkg-dir/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, ""], + "serve-index/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - "postcss-loader/semver/lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, ""], + "serve-index/http-errors/depd": ["depd@1.1.2", "", {}, "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="], - "raw-loader/schema-utils/ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, ""], + "serve-index/http-errors/statuses": ["statuses@1.5.0", "", {}, "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="], - "raw-loader/schema-utils/ajv-keywords": ["ajv-keywords@3.5.2", "", { "peerDependencies": { "ajv": "^6.9.1" } }, ""], + "serve-index/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], - "webpack/mime-types/mime-db": ["mime-db@1.52.0", "", {}, ""], + "type-is/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], - "css-loader/semver/lru-cache/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], + "webpack-dev-server/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], - "pkg-dir/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, ""], + "webpack/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], - "postcss-loader/semver/lru-cache/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], + "@rspack/dev-server/chokidar/readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - "raw-loader/schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, ""], + "raw-loader/schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], - "pkg-dir/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, ""], + "webpack-dev-server/chokidar/readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], } } diff --git a/config.xml b/config.xml index 6847ab6e7..b82421011 100644 --- a/config.xml +++ b/config.xml @@ -28,19 +28,25 @@ + + + - - + + - - - - + @@ -53,7 +59,8 @@ - + + @@ -71,8 +78,9 @@ + - + \ No newline at end of file diff --git a/hooks/modify-java-files.js b/hooks/modify-java-files.js index 7cf9e06b3..f4ed73449 100644 --- a/hooks/modify-java-files.js +++ b/hooks/modify-java-files.js @@ -5,9 +5,13 @@ const prettier = require('prettier'); main(); async function main() { + const patchVersion = '2'; const flagFile = path.resolve(__dirname, '../platforms/android/.flag_done'); if (fs.existsSync(flagFile)) { - return; + const appliedVersion = fs.readFileSync(flagFile, 'utf8').trim(); + if (appliedVersion === patchVersion) { + return; + } } const base = path.resolve(__dirname, `../platforms/android/CordovaLib/src/org/apache/cordova`); @@ -31,6 +35,18 @@ async function main() { ], }; + const nativeContextMenuInterfaceMethod = { + name: 'setNativeContextMenuDisabled', + modifier: 'public', + returnType: 'void', + params: [ + { + type: 'boolean', + name: 'disabled', + } + ], + }; + const setInputTypeMethod = { name: 'setInputType', modifier: 'public', @@ -44,12 +60,31 @@ async function main() { body: ['webView.setInputType(type);'], }; + const setNativeContextMenuDisabledMethod = { + name: 'setNativeContextMenuDisabled', + modifier: 'public', + returnType: 'void', + params: [ + { + type: 'boolean', + name: 'disabled', + } + ], + body: ['webView.setNativeContextMenuDisabled(disabled);'], + }; + const contentToAdd = { 'SystemWebView.java': { 'import': [ + 'android.graphics.Rect', + 'android.os.Build', 'android.text.InputType', + 'android.view.ActionMode', 'android.view.inputmethod.InputConnection', 'android.view.inputmethod.EditorInfo', + 'android.view.Menu', + 'android.view.MenuItem', + 'android.view.View', ], 'fields': [ { @@ -70,12 +105,30 @@ async function main() { modifier: 'private', value: '1', }, + { + type: 'boolean', + name: 'nativeContextMenuDisabled', + modifier: 'private', + value: 'false', + }, ], methods: [ { ...setInputTypeMethod, body: [`this.type = type;`] }, + { + name: 'setNativeContextMenuDisabled', + modifier: 'public', + returnType: 'void', + params: [ + { + type: 'boolean', + name: 'disabled', + } + ], + body: [`this.nativeContextMenuDisabled = disabled;`], + }, { name: 'onCreateInputConnection', modifier: 'public', @@ -102,21 +155,204 @@ async function main() { ], notation: '@Override', }, + { + name: 'startActionMode', + modifier: 'public', + returnType: 'ActionMode', + params: [ + { + type: 'ActionMode.Callback', + name: 'callback', + } + ], + body: [ + `return suppressActionMode(super.startActionMode(wrapActionModeCallback(callback)));`, + ], + notation: '@Override', + }, + { + name: 'startActionMode', + modifier: 'public', + returnType: 'ActionMode', + params: [ + { + type: 'ActionMode.Callback', + name: 'callback', + }, + { + type: 'int', + name: 'type', + } + ], + body: [ + `return suppressActionMode(super.startActionMode(wrapActionModeCallback(callback), type));`, + ], + notation: '@Override', + }, + { + name: 'startActionModeForChild', + modifier: 'public', + returnType: 'ActionMode', + params: [ + { + type: 'View', + name: 'originalView', + }, + { + type: 'ActionMode.Callback', + name: 'callback', + } + ], + body: [ + `return suppressActionMode(super.startActionModeForChild(originalView, wrapActionModeCallback(callback)));`, + ], + notation: '@Override', + }, + { + name: 'startActionModeForChild', + modifier: 'public', + returnType: 'ActionMode', + params: [ + { + type: 'View', + name: 'originalView', + }, + { + type: 'ActionMode.Callback', + name: 'callback', + }, + { + type: 'int', + name: 'type', + } + ], + body: [ + `return suppressActionMode(super.startActionModeForChild(originalView, wrapActionModeCallback(callback), type));`, + ], + notation: '@Override', + }, + { + name: 'wrapActionModeCallback', + modifier: 'private', + returnType: 'ActionMode.Callback', + params: [ + { + type: 'ActionMode.Callback', + name: 'callback', + } + ], + body: [ + `if (!nativeContextMenuDisabled || callback == null) { + return callback; + } + return new ActionMode.Callback2() { + @Override + public boolean onCreateActionMode(ActionMode mode, Menu menu) { + boolean created = callback.onCreateActionMode(mode, menu); + if (created) { + suppressActionModeUi(mode, menu); + } + return created; + } + + @Override + public boolean onPrepareActionMode(ActionMode mode, Menu menu) { + boolean prepared = callback.onPrepareActionMode(mode, menu); + suppressActionModeUi(mode, menu); + return prepared; + } + + @Override + public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + return callback.onActionItemClicked(mode, item); + } + + @Override + public void onDestroyActionMode(ActionMode mode) { + callback.onDestroyActionMode(mode); + } + + @Override + public void onGetContentRect(ActionMode mode, View view, Rect outRect) { + if (callback instanceof ActionMode.Callback2) { + ((ActionMode.Callback2) callback).onGetContentRect(mode, view, outRect); + return; + } + super.onGetContentRect(mode, view, outRect); + } + };`, + ], + }, + { + name: 'suppressActionMode', + modifier: 'private', + returnType: 'ActionMode', + params: [ + { + type: 'ActionMode', + name: 'mode', + } + ], + body: [ + `if (mode == null || !nativeContextMenuDisabled) { + return mode; + } + suppressActionModeUi(mode, mode.getMenu()); + return mode;`, + ], + }, + { + name: 'suppressActionModeUi', + modifier: 'private', + returnType: 'void', + params: [ + { + type: 'ActionMode', + name: 'mode', + }, + { + type: 'Menu', + name: 'menu', + } + ], + body: [ + `if (mode == null || !nativeContextMenuDisabled || menu == null) { + return; + } + menu.clear(); + mode.setTitle(null); + mode.setSubtitle(null); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + post(() -> { + if (!nativeContextMenuDisabled) { + return; + } + try { + mode.hide(0); + } catch (Throwable ignored) { + } + }); + }`, + ], + }, ] }, 'SystemWebViewEngine.java': { methods: [ - setInputTypeMethod + setInputTypeMethod, + setNativeContextMenuDisabledMethod, ] }, 'CordovaWebViewEngine.java': { methods: [ - interfaceMethod + interfaceMethod, + nativeContextMenuInterfaceMethod, ] }, 'CordovaWebView.java': { methods: [ - interfaceMethod + interfaceMethod, + nativeContextMenuInterfaceMethod, ] }, 'CordovaWebViewImpl.java': { @@ -124,6 +360,10 @@ async function main() { { ...setInputTypeMethod, body: [`engine.setInputType(type);`] + }, + { + ...setNativeContextMenuDisabledMethod, + body: [`engine.setNativeContextMenuDisabled(disabled);`] } ] } @@ -198,7 +438,7 @@ async function main() { }); } - fs.writeFile(flagFile, '', err => { + fs.writeFile(flagFile, patchVersion, err => { if (err) { console.log(err); process.exit(1); @@ -254,4 +494,4 @@ async function main() { function removeComments(content) { return content.replace(/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm, ''); } -} \ No newline at end of file +} diff --git a/hooks/post-process.js b/hooks/post-process.js index e0b7f5a08..21c411934 100644 --- a/hooks/post-process.js +++ b/hooks/post-process.js @@ -21,17 +21,14 @@ if ( if (fs.existsSync(androidGradleFilePath)) fs.unlinkSync(androidGradleFilePath); fs.copyFileSync(gradleFilePath, androidGradleFilePath); -deleteDirRecursively(resPath, [ - path.join('values', 'strings.xml'), - path.join('values', 'colors.xml'), - path.join('values', 'styles.xml'), - 'anim', - 'xml', -]); +// Cordova Android 15 generates `cdv_*` resources and version-qualified value +// directories that are required later in the build. Keep the generated tree and +// only overlay this project's custom resources on top of it. copyDirRecursively(localResPath, resPath); enableLegacyJni(); enableStaticContext(); patchTargetSdkVersion(); +enableKeyboardWorkaround(); function getTmpDir() { @@ -70,7 +67,7 @@ function patchTargetSdkVersion() { const sdkRegex = /targetSdkVersion\s+(cordovaConfig\.SDK_VERSION|\d+)/; if (sdkRegex.test(content)) { - let api = "35"; + let api = "36"; const tmp = getTmpDir(); if (tmp == null) { console.warn("---------------------------------------------------------------------------------\n\n\n\n"); @@ -189,6 +186,57 @@ function enableStaticContext() { } } +function enableKeyboardWorkaround() { + try{ + const prefix = execSync('npm prefix').toString().trim(); + const mainActivityPath = path.join( + prefix, + 'platforms/android/app/src/main/java/com/foxdebug/acode/MainActivity.java' + ); + + if (!fs.existsSync(mainActivityPath)) { + return; + } + + let content = fs.readFileSync(mainActivityPath, 'utf-8'); + + // Skip if already patched + if (content.includes('SoftInputAssist')) { + return; + } + + // Add import + if (!content.includes('import com.foxdebug.system.SoftInputAssist;')) { + content = content.replace( + /import java.lang.ref.WeakReference;|import org\.apache\.cordova\.\*;/, + match => + match + '\nimport com.foxdebug.system.SoftInputAssist;' + ); + } + + // Declare field + if (!content.includes('private SoftInputAssist softInputAssist;')) { + content = content.replace( + /public class MainActivity extends CordovaActivity\s*\{/, + match => + match + + `\n\n private SoftInputAssist softInputAssist;\n` + ); + } + + // Initialize in onCreate + content = content.replace( + /loadUrl\(launchUrl\);/, + `loadUrl(launchUrl);\n\n softInputAssist = new SoftInputAssist(this);` + ); + + fs.writeFileSync(mainActivityPath, content, 'utf-8'); + console.log('[Cordova Hook] ✅ Enabled keyboard workaround'); + } catch (err) { + console.error('[Cordova Hook] ❌ Failed to enable keyboard workaround:', err.message); + } +} + /** * Copy directory recursively @@ -220,10 +268,11 @@ function copyDirRecursively(src, dest, skip = [], currPath = '') { path.join(src, childItemName), path.join(dest, childItemName), skip, - childItemName, + relativePath, ); }); } else { + removeConflictingResourceFiles(src, dest); fs.copyFileSync(src, dest); // log @@ -232,48 +281,35 @@ function copyDirRecursively(src, dest, skip = [], currPath = '') { } } -/** - * Delete directory recursively - * @param {string} dir Directory to delete - * @param {string[]} except Files to not delete - */ -function deleteDirRecursively(dir, except = [], currPath = '') { - const exists = fs.existsSync(dir); - const stats = exists && fs.statSync(dir); - const isDirectory = exists && stats.isDirectory(); +function removeConflictingResourceFiles(src, dest) { + const parentDir = path.dirname(dest); - if (!exists) { - console.log(`File ${dir} does not exist`); + if (!fs.existsSync(parentDir)) { return; } - if (exists && isDirectory) { - let deleteDir = true; - fs.readdirSync(dir).forEach((childItemName) => { - const relativePath = path.join(currPath, childItemName); - if ( - childItemName.startsWith('.') - || except.includes(childItemName) - || except.includes(relativePath) - ) { - console.log('\x1b[33m%s\x1b[0m', `skipped: ${relativePath}`); // yellow - deleteDir = false; - return; - } + const resourceDirName = path.basename(parentDir); + if (!resourceDirName.startsWith('mipmap') && !resourceDirName.startsWith('drawable')) { + return; + } - deleteDirRecursively( - path.join(dir, childItemName), - except, - childItemName, - ); - }); + const srcExt = path.extname(src); + const resourceName = path.basename(src, srcExt); - if (deleteDir) { - console.log('\x1b[31m%s\x1b[0m', `deleted: ${currPath || path.basename(dir)}`); // red - fs.rmSync(dir, { recursive: true }); + for (const existingName of fs.readdirSync(parentDir)) { + const existingPath = path.join(parentDir, existingName); + if (existingPath === dest || !fs.statSync(existingPath).isFile()) { + continue; } - } else { - console.log('\x1b[31m%s\x1b[0m', `deleted: ${currPath || path.basename(dir)}`); // red - fs.rmSync(dir); + + const existingExt = path.extname(existingName); + const existingResourceName = path.basename(existingName, existingExt); + + if (existingResourceName !== resourceName || existingExt === srcExt) { + continue; + } + + fs.rmSync(existingPath); + console.log('\x1b[31m%s\x1b[0m', `deleted conflicting resource: ${existingName}`); } } diff --git a/hooks/restore-cordova-resources.js b/hooks/restore-cordova-resources.js new file mode 100644 index 000000000..f515a6427 --- /dev/null +++ b/hooks/restore-cordova-resources.js @@ -0,0 +1,49 @@ +const fs = require("fs"); +const path = require("path"); + +const templateResPath = path.resolve( + __dirname, + "../node_modules/cordova-android/templates/project/res", +); +const androidResPath = path.resolve( + __dirname, + "../platforms/android/app/src/main/res", +); + +if (!fs.existsSync(templateResPath) || !fs.existsSync(androidResPath)) { + process.exit(0); +} + +restoreCordovaResourceFiles(templateResPath); + +function restoreCordovaResourceFiles(currentPath) { + for (const entry of fs.readdirSync(currentPath, { withFileTypes: true })) { + const absolutePath = path.join(currentPath, entry.name); + + if (entry.isDirectory()) { + restoreCordovaResourceFiles(absolutePath); + continue; + } + + if (!shouldRestore(absolutePath)) { + continue; + } + + const relativePath = path.relative(templateResPath, absolutePath); + const destinationPath = path.join(androidResPath, relativePath); + + if (fs.existsSync(destinationPath)) { + continue; + } + + fs.mkdirSync(path.dirname(destinationPath), { recursive: true }); + fs.copyFileSync(absolutePath, destinationPath); + console.log(`[Cordova Hook] Restored ${relativePath}`); + } +} + +function shouldRestore(filePath) { + const fileName = path.basename(filePath); + + return fileName.startsWith("cdv_") || fileName === "ic_cdv_splashscreen.xml"; +} diff --git a/package-lock.json b/package-lock.json index e3e2d64f2..b78b58a49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,41 @@ "version": "1.11.8", "license": "MIT", "dependencies": { + "@codemirror/autocomplete": "^6.20.1", + "@codemirror/commands": "^6.10.3", + "@codemirror/lang-angular": "^0.1.4", + "@codemirror/lang-cpp": "^6.0.3", + "@codemirror/lang-css": "^6.3.1", + "@codemirror/lang-go": "^6.0.1", + "@codemirror/lang-html": "^6.4.11", + "@codemirror/lang-java": "^6.0.2", + "@codemirror/lang-javascript": "^6.2.5", + "@codemirror/lang-jinja": "^6.0.0", + "@codemirror/lang-json": "^6.0.2", + "@codemirror/lang-less": "^6.0.2", + "@codemirror/lang-liquid": "^6.3.2", + "@codemirror/lang-markdown": "^6.5.0", + "@codemirror/lang-php": "^6.0.2", + "@codemirror/lang-python": "^6.2.1", + "@codemirror/lang-rust": "^6.0.2", + "@codemirror/lang-sass": "^6.0.2", + "@codemirror/lang-sql": "^6.10.0", + "@codemirror/lang-vue": "^0.1.3", + "@codemirror/lang-wast": "^6.0.2", + "@codemirror/lang-xml": "^6.1.0", + "@codemirror/lang-yaml": "^6.1.2", + "@codemirror/language": "^6.12.2", + "@codemirror/language-data": "^6.5.2", + "@codemirror/legacy-modes": "^6.5.2", + "@codemirror/lint": "^6.9.5", + "@codemirror/lsp-client": "^6.2.2", + "@codemirror/search": "^6.6.0", + "@codemirror/state": "^6.6.0", + "@codemirror/theme-one-dark": "^6.1.3", + "@codemirror/view": "^6.40.0", "@deadlyjack/ajax": "^1.2.6", + "@emmetio/codemirror6-plugin": "^0.4.0", + "@lezer/highlight": "^1.2.3", "@ungap/custom-elements": "^1.3.0", "@xterm/addon-attach": "^0.11.0", "@xterm/addon-fit": "^0.10.0", @@ -21,51 +55,58 @@ "@xterm/xterm": "^5.5.0", "acorn": "^8.15.0", "autosize": "^6.0.1", + "codemirror": "^6.0.2", "cordova": "13.0.0", - "core-js": "^3.45.0", - "crypto-js": "^4.2.0", + "core-js": "^3.47.0", "dayjs": "^1.11.19", - "dompurify": "^3.2.6", + "dompurify": "^3.4.0", "escape-string-regexp": "^5.0.0", - "filesize": "^11.0.2", - "html-tag-js": "^2.4.15", - "js-base64": "^3.7.7", + "esprima": "^4.0.1", + "filesize": "^11.0.13", + "html-tag-js": "^2.4.16", "jszip": "^3.10.1", + "katex": "^0.16.39", "markdown-it": "^14.1.1", "markdown-it-anchor": "^9.2.0", + "markdown-it-emoji": "^3.0.0", "markdown-it-footnote": "^4.0.0", "markdown-it-github-alerts": "^1.0.0", "markdown-it-task-lists": "^2.1.1", + "markdown-it-texmath": "^1.0.0", + "mermaid": "^11.13.0", "mime-types": "^3.0.1", "mustache": "^4.2.0", - "picomatch": "^4.0.3", + "picomatch": "^4.0.4", "url-parse": "^1.5.10", "vanilla-picker": "^2.12.3", "yargs": "^18.0.0" }, "devDependencies": { - "@babel/core": "^7.28.0", - "@babel/plugin-transform-runtime": "^7.28.0", - "@babel/preset-env": "^7.28.0", - "@babel/runtime": "^7.28.2", - "@babel/runtime-corejs3": "^7.28.2", - "@biomejs/biome": "2.1.4", + "@babel/core": "^7.28.5", + "@babel/plugin-transform-runtime": "^7.28.5", + "@babel/preset-env": "^7.28.5", + "@babel/preset-typescript": "^7.28.5", + "@babel/runtime": "^7.28.4", + "@babel/runtime-corejs3": "^7.28.4", + "@biomejs/biome": "2.4.11", + "@rspack/cli": "^1.7.0", + "@rspack/core": "^1.7.0", "@types/ace": "^0.0.52", "@types/url-parse": "^1.4.11", - "autoprefixer": "^10.4.21", + "autoprefixer": "^10.4.22", "babel-loader": "^10.0.0", "com.foxdebug.acode.rk.auth": "file:src/plugins/auth", "com.foxdebug.acode.rk.customtabs": "file:src/plugins/custom-tabs", "com.foxdebug.acode.rk.exec.proot": "file:src/plugins/proot", "com.foxdebug.acode.rk.exec.terminal": "file:src/plugins/terminal", "com.foxdebug.acode.rk.plugin.plugincontext": "file:src/plugins/pluginContext", - "cordova-android": "^14.0.1", + "cordova-android": "^15.0.0", "cordova-clipboard": "^1.3.0", "cordova-plugin-advanced-http": "^3.3.1", "cordova-plugin-browser": "file:src/plugins/browser", "cordova-plugin-buildinfo": "file:src/plugins/cordova-plugin-buildinfo", - "cordova-plugin-device": "^2.0.3", - "cordova-plugin-file": "^8.0.1", + "cordova-plugin-device": "^2.1.0", + "cordova-plugin-file": "^8.1.3", "cordova-plugin-ftp": "file:src/plugins/ftp", "cordova-plugin-iap": "file:src/plugins/iap", "cordova-plugin-sdcard": "file:src/plugins/sdcard", @@ -74,40 +115,42 @@ "cordova-plugin-system": "file:src/plugins/system", "cordova-plugin-websocket": "file:src/plugins/websocket", "css-loader": "^7.1.2", - "mini-css-extract-plugin": "^2.9.3", + "mini-css-extract-plugin": "^2.9.4", "path-browserify": "^1.0.1", - "postcss-loader": "^8.1.1", - "prettier": "^3.6.2", - "prettier-plugin-java": "^2.7.4", + "postcss-loader": "^8.2.0", + "prettier": "^3.7.4", + "prettier-plugin-java": "^2.7.7", "raw-loader": "^4.0.2", - "sass": "^1.90.0", - "sass-loader": "^16.0.5", + "sass": "^1.94.2", + "sass-loader": "^16.0.6", "style-loader": "^4.0.0", "terminal": "^0.1.4", - "webpack": "^5.105.0", - "webpack-cli": "^6.0.1" + "ts-loader": "^9.5.4", + "typescript": "^5.9.3", + "vscode-languageserver-types": "^3.17.5" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "dev": true, - "license": "Apache-2.0", + "node_modules/@antfu/install-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", + "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" + "package-manager-detector": "^1.3.0", + "tinyexec": "^1.0.1" }, - "engines": { - "node": ">=6.0.0" + "funding": { + "url": "https://github.com/sponsors/antfu" } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -116,9 +159,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", - "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, "license": "MIT", "engines": { @@ -126,22 +169,22 @@ } }, "node_modules/@babel/core": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", - "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.6", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.0", - "@babel/types": "^7.28.0", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -157,14 +200,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", - "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.0", - "@babel/types": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -173,17 +216,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.12", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", - "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.27.3", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", @@ -198,13 +230,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", + "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -215,18 +247,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz", - "integrity": "sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.27.1", + "@babel/traverse": "^7.28.6", "semver": "^6.3.1" }, "engines": { @@ -237,14 +269,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", - "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "regexpu-core": "^6.2.0", + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", "semver": "^6.3.1" }, "engines": { @@ -255,17 +287,17 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", - "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz", + "integrity": "sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "debug": "^4.4.1", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", "lodash.debounce": "^4.0.8", - "resolve": "^1.22.10" + "resolve": "^1.22.11" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -282,43 +314,43 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", - "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", - "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.3" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -341,9 +373,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, "license": "MIT", "engines": { @@ -369,15 +401,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz", - "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -411,9 +443,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -431,42 +463,42 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", - "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.1", - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.2.tgz", - "integrity": "sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.2" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", - "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.0" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -476,14 +508,14 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", - "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -543,14 +575,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz", - "integrity": "sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -561,6 +593,8 @@ }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, "license": "MIT", "engines": { @@ -571,13 +605,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", - "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -587,13 +621,45 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -604,6 +670,8 @@ }, "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, "license": "MIT", "dependencies": { @@ -634,15 +702,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", - "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.28.0" + "@babel/traverse": "^7.29.0" }, "engines": { "node": ">=6.9.0" @@ -652,14 +720,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", - "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { @@ -686,13 +754,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz", - "integrity": "sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -702,14 +770,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", - "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -719,14 +787,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz", - "integrity": "sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -736,18 +804,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz", - "integrity": "sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-globals": "^7.28.0", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.28.0" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -757,14 +825,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", - "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/template": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -774,14 +842,14 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", - "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.0" + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -791,14 +859,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", - "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -824,14 +892,14 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -857,14 +925,14 @@ } }, "node_modules/@babel/plugin-transform-explicit-resource-management": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", - "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0" + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -874,13 +942,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", - "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -941,13 +1009,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", - "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -973,13 +1041,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", - "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1022,14 +1090,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", - "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1039,16 +1107,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", - "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" }, "engines": { "node": ">=6.9.0" @@ -1075,14 +1143,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", - "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1108,13 +1176,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", - "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1124,13 +1192,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", - "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1140,17 +1208,17 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz", - "integrity": "sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/traverse": "^7.28.0" + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1177,13 +1245,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", - "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1193,13 +1261,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", - "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { @@ -1226,14 +1294,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", - "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1243,15 +1311,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", - "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-create-class-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1277,13 +1345,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.28.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.1.tgz", - "integrity": "sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1293,14 +1361,14 @@ } }, "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", - "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1326,14 +1394,14 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.0.tgz", - "integrity": "sha512-dGopk9nZrtCs2+nfIem25UuHyt5moSJamArzIoh9/vezUQPmYDOzjaHDCkAzuGJibCIkPup8rMT2+wYB6S73cA==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", + "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "babel-plugin-polyfill-corejs2": "^0.4.14", "babel-plugin-polyfill-corejs3": "^0.13.0", "babel-plugin-polyfill-regenerator": "^0.6.5", @@ -1363,13 +1431,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", - "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { @@ -1427,6 +1495,26 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", @@ -1444,14 +1532,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", - "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1478,14 +1566,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", - "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1495,81 +1583,81 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.0.tgz", - "integrity": "sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz", + "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.0", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-plugin-utils": "^7.27.1", + "@babel/compat-data": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.27.1", - "@babel/plugin-syntax-import-attributes": "^7.27.1", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.28.0", - "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.28.0", - "@babel/plugin-transform-class-properties": "^7.27.1", - "@babel/plugin-transform-class-static-block": "^7.27.1", - "@babel/plugin-transform-classes": "^7.28.0", - "@babel/plugin-transform-computed-properties": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0", - "@babel/plugin-transform-dotall-regex": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", "@babel/plugin-transform-duplicate-keys": "^7.27.1", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-dynamic-import": "^7.27.1", - "@babel/plugin-transform-explicit-resource-management": "^7.28.0", - "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", "@babel/plugin-transform-function-name": "^7.27.1", - "@babel/plugin-transform-json-strings": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", "@babel/plugin-transform-modules-umd": "^7.27.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-new-target": "^7.27.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", - "@babel/plugin-transform-numeric-separator": "^7.27.1", - "@babel/plugin-transform-object-rest-spread": "^7.28.0", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", "@babel/plugin-transform-object-super": "^7.27.1", - "@babel/plugin-transform-optional-catch-binding": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/plugin-transform-private-methods": "^7.27.1", - "@babel/plugin-transform-private-property-in-object": "^7.27.1", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.28.0", - "@babel/plugin-transform-regexp-modifiers": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", - "@babel/plugin-transform-spread": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", "@babel/plugin-transform-sticky-regex": "^7.27.1", "@babel/plugin-transform-template-literals": "^7.27.1", "@babel/plugin-transform-typeof-symbol": "^7.27.1", "@babel/plugin-transform-unicode-escapes": "^7.27.1", - "@babel/plugin-transform-unicode-property-regex": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", "@babel/plugin-transform-unicode-regex": "^7.27.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "core-js-compat": "^3.43.0", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", "semver": "^6.3.1" }, "engines": { @@ -1579,8 +1667,24 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.0.tgz", + "integrity": "sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.6", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "license": "MIT", "dependencies": { @@ -1592,10 +1696,30 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/runtime": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.2.tgz", - "integrity": "sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", "dev": true, "license": "MIT", "engines": { @@ -1603,46 +1727,46 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.28.2.tgz", - "integrity": "sha512-FVFaVs2/dZgD3Y9ZD+AKNKjyGKzwu0C54laAXWUXgLcVXcCX6YZ6GhK2cp7FogSN2OA0Fu+QT8dP3FUdo9ShSQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.29.0.tgz", + "integrity": "sha512-TgUkdp71C9pIbBcHudc+gXZnihEDOjUAmXO1VO4HHGES7QLZcShR0stfKIxLSNIYx2fqhmJChOjm/wkF8wv4gA==", "dev": true, "license": "MIT", "dependencies": { - "core-js-pure": "^3.43.0" + "core-js-pure": "^3.48.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", - "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.0", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.0", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", "debug": "^4.3.1" }, "engines": { @@ -1650,23 +1774,23 @@ } }, "node_modules/@babel/types": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", - "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@biomejs/biome": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.1.4.tgz", - "integrity": "sha512-QWlrqyxsU0FCebuMnkvBIkxvPqH89afiJzjMl+z67ybutse590jgeaFdDurE9XYtzpjRGTI1tlUZPGWmbKsElA==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.4.11.tgz", + "integrity": "sha512-nWxHX8tf3Opb/qRgZpBbsTOqOodkbrkJ7S+JxJAruxOReaDPPmPuLBAGQ8vigyUgo0QBB+oQltNEAvalLcjggA==", "dev": true, "license": "MIT OR Apache-2.0", "bin": { @@ -1680,20 +1804,20 @@ "url": "https://opencollective.com/biome" }, "optionalDependencies": { - "@biomejs/cli-darwin-arm64": "2.1.4", - "@biomejs/cli-darwin-x64": "2.1.4", - "@biomejs/cli-linux-arm64": "2.1.4", - "@biomejs/cli-linux-arm64-musl": "2.1.4", - "@biomejs/cli-linux-x64": "2.1.4", - "@biomejs/cli-linux-x64-musl": "2.1.4", - "@biomejs/cli-win32-arm64": "2.1.4", - "@biomejs/cli-win32-x64": "2.1.4" + "@biomejs/cli-darwin-arm64": "2.4.11", + "@biomejs/cli-darwin-x64": "2.4.11", + "@biomejs/cli-linux-arm64": "2.4.11", + "@biomejs/cli-linux-arm64-musl": "2.4.11", + "@biomejs/cli-linux-x64": "2.4.11", + "@biomejs/cli-linux-x64-musl": "2.4.11", + "@biomejs/cli-win32-arm64": "2.4.11", + "@biomejs/cli-win32-x64": "2.4.11" } }, "node_modules/@biomejs/cli-darwin-arm64": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.1.4.tgz", - "integrity": "sha512-sCrNENE74I9MV090Wq/9Dg7EhPudx3+5OiSoQOkIe3DLPzFARuL1dOwCWhKCpA3I5RHmbrsbNSRfZwCabwd8Qg==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.11.tgz", + "integrity": "sha512-wOt+ed+L2dgZanWyL6i29qlXMc088N11optzpo10peayObBaAshbTcxKUchzEMp9QSY8rh5h6VfAFE3WTS1rqg==", "cpu": [ "arm64" ], @@ -1708,9 +1832,9 @@ } }, "node_modules/@biomejs/cli-darwin-x64": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.1.4.tgz", - "integrity": "sha512-gOEICJbTCy6iruBywBDcG4X5rHMbqCPs3clh3UQ+hRKlgvJTk4NHWQAyHOXvaLe+AxD1/TNX1jbZeffBJzcrOw==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.11.tgz", + "integrity": "sha512-gZ6zR8XmZlExfi/Pz/PffmdpWOQ8Qhy7oBztgkR8/ylSRyLwfRPSadmiVCV8WQ8PoJ2MWUy2fgID9zmtgUUJmw==", "cpu": [ "x64" ], @@ -1725,9 +1849,9 @@ } }, "node_modules/@biomejs/cli-linux-arm64": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.1.4.tgz", - "integrity": "sha512-juhEkdkKR4nbUi5k/KRp1ocGPNWLgFRD4NrHZSveYrD6i98pyvuzmS9yFYgOZa5JhaVqo0HPnci0+YuzSwT2fw==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.11.tgz", + "integrity": "sha512-avdJaEElXrKceK0va9FkJ4P5ci3N01TGkc6ni3P8l3BElqbOz42Wg2IyX3gbh0ZLEd4HVKEIrmuVu/AMuSeFFA==", "cpu": [ "arm64" ], @@ -1742,9 +1866,9 @@ } }, "node_modules/@biomejs/cli-linux-arm64-musl": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.1.4.tgz", - "integrity": "sha512-nYr7H0CyAJPaLupFE2cH16KZmRC5Z9PEftiA2vWxk+CsFkPZQ6dBRdcC6RuS+zJlPc/JOd8xw3uCCt9Pv41WvQ==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.11.tgz", + "integrity": "sha512-+Sbo1OAmlegtdwqFE8iOxFIWLh1B3OEgsuZfBpyyN/kWuqZ8dx9ZEes6zVnDMo+zRHF2wLynRVhoQmV7ohxl2Q==", "cpu": [ "arm64" ], @@ -1759,9 +1883,9 @@ } }, "node_modules/@biomejs/cli-linux-x64": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.1.4.tgz", - "integrity": "sha512-Eoy9ycbhpJVYuR+LskV9s3uyaIkp89+qqgqhGQsWnp/I02Uqg2fXFblHJOpGZR8AxdB9ADy87oFVxn9MpFKUrw==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.11.tgz", + "integrity": "sha512-TagWV0iomp5LnEnxWFg4nQO+e52Fow349vaX0Q/PIcX6Zhk4GGBgp3qqZ8PVkpC+cuehRctMf3+6+FgQ8jCEFQ==", "cpu": [ "x64" ], @@ -1776,9 +1900,9 @@ } }, "node_modules/@biomejs/cli-linux-x64-musl": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.1.4.tgz", - "integrity": "sha512-lvwvb2SQQHctHUKvBKptR6PLFCM7JfRjpCCrDaTmvB7EeZ5/dQJPhTYBf36BE/B4CRWR2ZiBLRYhK7hhXBCZAg==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.11.tgz", + "integrity": "sha512-bexd2IklK7ZgPhrz6jXzpIL6dEAH9MlJU1xGTrypx+FICxrXUp4CqtwfiuoDKse+UlgAlWtzML3jrMqeEAHEhA==", "cpu": [ "x64" ], @@ -1793,9 +1917,9 @@ } }, "node_modules/@biomejs/cli-win32-arm64": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.1.4.tgz", - "integrity": "sha512-3WRYte7orvyi6TRfIZkDN9Jzoogbv+gSvR+b9VOXUg1We1XrjBg6WljADeVEaKTvOcpVdH0a90TwyOQ6ue4fGw==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.11.tgz", + "integrity": "sha512-RJhaTnY8byzxDt4bDVb7AFPHkPcjOPK3xBip4ZRTrN3TEfyhjLRm3r3mqknqydgVTB74XG8l4jMLwEACEeihVg==", "cpu": [ "arm64" ], @@ -1810,9 +1934,9 @@ } }, "node_modules/@biomejs/cli-win32-x64": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.1.4.tgz", - "integrity": "sha512-tBc+W7anBPSFXGAoQW+f/+svkpt8/uXfRwDzN1DvnatkRMt16KIYpEi/iw8u9GahJlFv98kgHcIrSsZHZTR0sw==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.4.11.tgz", + "integrity": "sha512-A8D3JM/00C2KQgUV3oj8Ba15EHEYwebAGCy5Sf9GAjr5Y3+kJIYOiESoqRDeuRZueuMdCsbLZIUqmPhpYXJE9A==", "cpu": [ "x64" ], @@ -1826,11 +1950,16 @@ "node": ">=14.21.3" } }, + "node_modules/@braintree/sanitize-url": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.2.tgz", + "integrity": "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==", + "license": "MIT" + }, "node_modules/@chevrotain/cst-dts-gen": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@chevrotain/gast": "11.0.3", @@ -1842,7 +1971,6 @@ "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", - "dev": true, "license": "Apache-2.0", "dependencies": { "@chevrotain/types": "11.0.3", @@ -1853,1767 +1981,4431 @@ "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==", - "dev": true, "license": "Apache-2.0" }, "node_modules/@chevrotain/types": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==", - "dev": true, "license": "Apache-2.0" }, "node_modules/@chevrotain/utils": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==", - "dev": true, "license": "Apache-2.0" }, - "node_modules/@deadlyjack/ajax": { - "version": "1.2.6", - "license": "MIT" + "node_modules/@codemirror/autocomplete": { + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.20.1.tgz", + "integrity": "sha512-1cvg3Vz1dSSToCNlJfRA2WSI4ht3K+WplO0UMOgmUYPivCyy2oueZY6Lx7M9wThm7SDUBViRmuT+OG/i8+ON9A==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + } }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", - "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", - "dev": true, + "node_modules/@codemirror/commands": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.3.tgz", + "integrity": "sha512-JFRiqhKu+bvSkDLI+rUhJwSxQxYb759W5GBezE8Uc8mHLqC9aV/9aTC7yJSqCtB3F00pylrLCwnyS91Ap5ej4Q==", "license": "MIT", - "engines": { - "node": ">=14.17.0" + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.6.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "node_modules/@codemirror/lang-angular": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@codemirror/lang-angular/-/lang-angular-0.1.4.tgz", + "integrity": "sha512-oap+gsltb/fzdlTQWD6BFF4bSLKcDnlxDsLdePiJpCVNKWXSTAbiiQeYI3UmES+BLAdkmIC1WjyztC1pi/bX4g==", "license": "MIT", - "engines": { - "node": "20 || >=22" + "dependencies": { + "@codemirror/lang-html": "^6.0.0", + "@codemirror/lang-javascript": "^6.1.2", + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.3" } }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "node_modules/@codemirror/lang-cpp": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@codemirror/lang-cpp/-/lang-cpp-6.0.3.tgz", + "integrity": "sha512-URM26M3vunFFn9/sm6rzqrBzDgfWuDixp85uTY49wKudToc2jTHUrKIGGKs+QWND+YLofNNZpxcNGRynFJfvgA==", "license": "MIT", "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" + "@codemirror/language": "^6.0.0", + "@lezer/cpp": "^1.0.0" } }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "license": "ISC", + "node_modules/@codemirror/lang-css": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.3.1.tgz", + "integrity": "sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==", + "license": "MIT", "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/css": "^1.1.7" } }, - "node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", - "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", - "license": "ISC" + "node_modules/@codemirror/lang-go": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-go/-/lang-go-6.0.1.tgz", + "integrity": "sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/go": "^1.0.0" + } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "dev": true, + "node_modules/@codemirror/lang-html": { + "version": "6.4.11", + "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.11.tgz", + "integrity": "sha512-9NsXp7Nwp891pQchI7gPdTwBuSuT3K65NGTHWHNJ55HjYcHLllr0rbIZNdOzas9ztc1EUVBlHou85FFZS4BNnw==", "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-css": "^6.0.0", + "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/language": "^6.4.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/css": "^1.1.0", + "@lezer/html": "^1.3.12" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "dev": true, + "node_modules/@codemirror/lang-java": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-java/-/lang-java-6.0.2.tgz", + "integrity": "sha512-m5Nt1mQ/cznJY7tMfQTJchmrjdjQ71IDs+55d1GAa8DGaB8JXWsVCkVT284C3RTASaY43YknrK2X3hPO/J3MOQ==", "license": "MIT", - "engines": { - "node": ">=6.0.0" + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/java": "^1.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" + "node_modules/@codemirror/lang-javascript": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.5.tgz", + "integrity": "sha512-zD4e5mS+50htS7F+TYjBPsiIFGanfVqg4HyUz6WNFikgOPf2BgKlx+TQedI1w6n/IqRBVBbBWmGFdLB/7uxO4A==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "dev": true, + "node_modules/@codemirror/lang-jinja": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@codemirror/lang-jinja/-/lang-jinja-6.0.0.tgz", + "integrity": "sha512-47MFmRcR8UAxd8DReVgj7WJN1WSAMT7OJnewwugZM4XiHWkOjgJQqvEM1NpMj9ALMPyxmlziEI1opH9IaEvmaw==", "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "@codemirror/lang-html": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.2.0", + "@lezer/lr": "^1.4.0" } }, - "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, + "node_modules/@codemirror/lang-json": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.2.tgz", + "integrity": "sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==", "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" + "@codemirror/language": "^6.0.0", + "@lezer/json": "^1.0.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", - "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", - "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", - "dev": true, + "node_modules/@codemirror/lang-less": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-less/-/lang-less-6.0.2.tgz", + "integrity": "sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ==", "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@codemirror/lang-css": "^6.2.0", + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" } }, - "node_modules/@netflix/nerror": { - "version": "1.1.3", + "node_modules/@codemirror/lang-liquid": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-liquid/-/lang-liquid-6.3.2.tgz", + "integrity": "sha512-6PDVU3ZnfeYyz1at1E/ttorErZvZFXXt1OPhtfe1EZJ2V2iDFa0CwPqPgG5F7NXN0yONGoBogKmFAafKTqlwIw==", "license": "MIT", "dependencies": { - "assert-plus": "^1.0.0", - "extsprintf": "^1.4.0", - "lodash": "^4.17.15" + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-html": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.1" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", + "node_modules/@codemirror/lang-markdown": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.5.0.tgz", + "integrity": "sha512-0K40bZ35jpHya6FriukbgaleaqzBLZfOh7HuzqbMxBXkbYMJDxfF39c23xOgxFezR+3G+tR2/Mup+Xk865OMvw==", "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" + "@codemirror/autocomplete": "^6.7.1", + "@codemirror/lang-html": "^6.0.0", + "@codemirror/language": "^6.3.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.2.1", + "@lezer/markdown": "^1.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", + "node_modules/@codemirror/lang-php": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-php/-/lang-php-6.0.2.tgz", + "integrity": "sha512-ZKy2v1n8Fc8oEXj0Th0PUMXzQJ0AIR6TaZU+PbDHExFwdu+guzOA4jmCHS1Nz4vbFezwD7LyBdDnddSJeScMCA==", "license": "MIT", - "engines": { - "node": ">= 8" + "dependencies": { + "@codemirror/lang-html": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/php": "^1.0.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", + "node_modules/@codemirror/lang-python": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-python/-/lang-python-6.2.1.tgz", + "integrity": "sha512-IRjC8RUBhn9mGR9ywecNhB51yePWCGgvHfY1lWN/Mrp3cKuHr0isDKia+9HnvhiWNnMpbGhWrkhuWOc09exRyw==", "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" + "@codemirror/autocomplete": "^6.3.2", + "@codemirror/language": "^6.8.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.1", + "@lezer/python": "^1.1.4" } }, - "node_modules/@npmcli/agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", - "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", - "license": "ISC", + "node_modules/@codemirror/lang-rust": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-rust/-/lang-rust-6.0.2.tgz", + "integrity": "sha512-EZaGjCUegtiU7kSMvOfEZpaCReowEf3yNidYu7+vfuGTm9ow4mthAparY5hisJqOHmJowVH3Upu+eJlUji6qqA==", + "license": "MIT", "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^11.2.1", - "socks-proxy-agent": "^8.0.3" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@codemirror/language": "^6.0.0", + "@lezer/rust": "^1.0.0" } }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", - "license": "ISC", - "engines": { - "node": "20 || >=22" + "node_modules/@codemirror/lang-sass": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-sass/-/lang-sass-6.0.2.tgz", + "integrity": "sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==", + "license": "MIT", + "dependencies": { + "@codemirror/lang-css": "^6.2.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/sass": "^1.0.0" } }, - "node_modules/@npmcli/arborist": { - "version": "9.1.8", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-9.1.8.tgz", - "integrity": "sha512-TYAzq0oaXQU+uLfXFbR2wYx62qHIOSg/TYhGWJSphJDypyjdNXC7B/+k29ElC2vWlWfX4OJnhmSY5DTwSFiNpg==", - "license": "ISC", + "node_modules/@codemirror/lang-sql": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.10.0.tgz", + "integrity": "sha512-6ayPkEd/yRw0XKBx5uAiToSgGECo/GY2NoJIHXIIQh1EVwLuKoU8BP/qK0qH5NLXAbtJRLuT73hx7P9X34iO4w==", + "license": "MIT", "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^5.0.0", - "@npmcli/installed-package-contents": "^4.0.0", - "@npmcli/map-workspaces": "^5.0.0", - "@npmcli/metavuln-calculator": "^9.0.2", - "@npmcli/name-from-folder": "^4.0.0", - "@npmcli/node-gyp": "^5.0.0", - "@npmcli/package-json": "^7.0.0", - "@npmcli/query": "^5.0.0", - "@npmcli/redact": "^4.0.0", - "@npmcli/run-script": "^10.0.0", - "bin-links": "^6.0.0", - "cacache": "^20.0.1", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^9.0.0", - "json-stringify-nice": "^1.1.4", - "lru-cache": "^11.2.1", - "minimatch": "^10.0.3", - "nopt": "^9.0.0", - "npm-install-checks": "^8.0.0", - "npm-package-arg": "^13.0.0", - "npm-pick-manifest": "^11.0.1", - "npm-registry-fetch": "^19.0.0", - "pacote": "^21.0.2", - "parse-conflict-json": "^5.0.1", - "proc-log": "^6.0.0", - "proggy": "^4.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^3.0.1", - "semver": "^7.3.7", - "ssri": "^13.0.0", - "treeverse": "^3.0.0", - "walk-up-path": "^4.0.0" - }, - "bin": { - "arborist": "bin/index.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", - "license": "ISC", - "engines": { - "node": "20 || >=22" + "node_modules/@codemirror/lang-vue": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@codemirror/lang-vue/-/lang-vue-0.1.3.tgz", + "integrity": "sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug==", + "license": "MIT", + "dependencies": { + "@codemirror/lang-html": "^6.0.0", + "@codemirror/lang-javascript": "^6.1.2", + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.1" } }, - "node_modules/@npmcli/arborist/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "node_modules/@codemirror/lang-wast": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-wast/-/lang-wast-6.0.2.tgz", + "integrity": "sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" } }, - "node_modules/@npmcli/fs": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz", - "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==", - "license": "ISC", + "node_modules/@codemirror/lang-xml": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@codemirror/lang-xml/-/lang-xml-6.1.0.tgz", + "integrity": "sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==", + "license": "MIT", "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.4.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/xml": "^1.0.0" } }, - "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "node_modules/@codemirror/lang-yaml": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-yaml/-/lang-yaml-6.1.2.tgz", + "integrity": "sha512-dxrfG8w5Ce/QbT7YID7mWZFKhdhsaTNOYjOkSIMt1qmC4VQnXSDSYVHHHn8k6kJUfIhtLo8t1JJgltlxWdsITw==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.2.0", + "@lezer/lr": "^1.0.0", + "@lezer/yaml": "^1.0.0" } }, - "node_modules/@npmcli/git": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.1.tgz", - "integrity": "sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==", - "license": "ISC", + "node_modules/@codemirror/language": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.2.tgz", + "integrity": "sha512-jEPmz2nGGDxhRTg3lTpzmIyGKxz3Gp3SJES4b0nAuE5SWQoKdT5GoQ69cwMmFd+wvFUhYirtDTr0/DRHpQAyWg==", + "license": "MIT", "dependencies": { - "@npmcli/promise-spawn": "^9.0.0", - "ini": "^6.0.0", - "lru-cache": "^11.2.1", - "npm-pick-manifest": "^11.0.1", - "proc-log": "^6.0.0", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.5.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" } }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", - "engines": { - "node": ">=16" + "node_modules/@codemirror/language-data": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@codemirror/language-data/-/language-data-6.5.2.tgz", + "integrity": "sha512-CPkWBKrNS8stYbEU5kwBwTf3JB1kghlbh4FSAwzGW2TEscdeHHH4FGysREW86Mqnj3Qn09s0/6Ea/TutmoTobg==", + "license": "MIT", + "dependencies": { + "@codemirror/lang-angular": "^0.1.0", + "@codemirror/lang-cpp": "^6.0.0", + "@codemirror/lang-css": "^6.0.0", + "@codemirror/lang-go": "^6.0.0", + "@codemirror/lang-html": "^6.0.0", + "@codemirror/lang-java": "^6.0.0", + "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/lang-jinja": "^6.0.0", + "@codemirror/lang-json": "^6.0.0", + "@codemirror/lang-less": "^6.0.0", + "@codemirror/lang-liquid": "^6.0.0", + "@codemirror/lang-markdown": "^6.0.0", + "@codemirror/lang-php": "^6.0.0", + "@codemirror/lang-python": "^6.0.0", + "@codemirror/lang-rust": "^6.0.0", + "@codemirror/lang-sass": "^6.0.0", + "@codemirror/lang-sql": "^6.0.0", + "@codemirror/lang-vue": "^0.1.1", + "@codemirror/lang-wast": "^6.0.0", + "@codemirror/lang-xml": "^6.0.0", + "@codemirror/lang-yaml": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/legacy-modes": "^6.4.0" } }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", - "license": "ISC", - "engines": { - "node": "20 || >=22" + "node_modules/@codemirror/legacy-modes": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.5.2.tgz", + "integrity": "sha512-/jJbwSTazlQEDOQw2FJ8LEEKVS72pU0lx6oM54kGpL8t/NJ2Jda3CZ4pcltiKTdqYSRk3ug1B3pil1gsjA6+8Q==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0" } }, - "node_modules/@npmcli/git/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "node_modules/@codemirror/lint": { + "version": "6.9.5", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.9.5.tgz", + "integrity": "sha512-GElsbU9G7QT9xXhpUg1zWGmftA/7jamh+7+ydKRuT0ORpWS3wOSP0yT1FOlIZa7mIJjpVPipErsyvVqB9cfTFA==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.35.0", + "crelt": "^1.0.5" } }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", - "license": "ISC", + "node_modules/@codemirror/lsp-client": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@codemirror/lsp-client/-/lsp-client-6.2.2.tgz", + "integrity": "sha512-swTF98necGzfwswEIc9hAFWpNKa/Qe1PzTi8rqJ/5pKnvCwN8nbhXsROtjz2kwgkC+MBoL+OEcSKILa60xUaZw==", + "license": "MIT", "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@codemirror/autocomplete": "^6.20.0", + "@codemirror/language": "^6.11.0", + "@codemirror/lint": "^6.8.5", + "@codemirror/state": "^6.5.2", + "@codemirror/view": "^6.37.0", + "@lezer/highlight": "^1.2.1", + "marked": "^15.0.12", + "vscode-languageserver-protocol": "^3.17.5" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz", - "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==", - "license": "ISC", + "node_modules/@codemirror/search": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.6.0.tgz", + "integrity": "sha512-koFuNXcDvyyotWcgOnZGmY7LZqEOXZaaxD/j6n18TCLx2/9HieZJ5H6hs1g8FiRxBD0DNfs0nXn17g872RmYdw==", + "license": "MIT", "dependencies": { - "npm-bundled": "^5.0.0", - "npm-normalize-package-bin": "^5.0.0" - }, - "bin": { - "installed-package-contents": "bin/index.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.37.0", + "crelt": "^1.0.5" } }, - "node_modules/@npmcli/map-workspaces": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-5.0.3.tgz", - "integrity": "sha512-o2grssXo1e774E5OtEwwrgoszYRh0lqkJH+Pb9r78UcqdGJRDRfhpM8DvZPjzNLLNYeD/rNbjOKM3Ss5UABROw==", - "license": "ISC", + "node_modules/@codemirror/state": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.6.0.tgz", + "integrity": "sha512-4nbvra5R5EtiCzr9BTHiTLc+MLXK2QGiAVYMyi8PkQd3SR+6ixar/Q/01Fa21TBIDOZXgeWV4WppsQolSreAPQ==", + "license": "MIT", "dependencies": { - "@npmcli/name-from-folder": "^4.0.0", - "@npmcli/package-json": "^7.0.0", - "glob": "^13.0.0", - "minimatch": "^10.0.3" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@marijn/find-cluster-break": "^1.0.0" } }, - "node_modules/@npmcli/map-workspaces/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", - "license": "BlueOak-1.0.0", + "node_modules/@codemirror/theme-one-dark": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.3.tgz", + "integrity": "sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==", + "license": "MIT", "dependencies": { - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/highlight": "^1.0.0" } }, - "node_modules/@npmcli/metavuln-calculator": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-9.0.3.tgz", - "integrity": "sha512-94GLSYhLXF2t2LAC7pDwLaM4uCARzxShyAQKsirmlNcpidH89VA4/+K1LbJmRMgz5gy65E/QBBWQdUvGLe2Frg==", - "license": "ISC", + "node_modules/@codemirror/view": { + "version": "6.40.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.40.0.tgz", + "integrity": "sha512-WA0zdU7xfF10+5I3HhUUq3kqOx3KjqmtQ9lqZjfK7jtYk4G72YW9rezcSywpaUMCWOMlq+6E0pO1IWg1TNIhtg==", + "license": "MIT", "dependencies": { - "cacache": "^20.0.0", - "json-parse-even-better-errors": "^5.0.0", - "pacote": "^21.0.0", - "proc-log": "^6.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@codemirror/state": "^6.6.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/json-parse-even-better-errors": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-5.0.0.tgz", - "integrity": "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==", - "license": "MIT", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "node_modules/@deadlyjack/ajax": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@deadlyjack/ajax/-/ajax-1.2.6.tgz", + "integrity": "sha512-VwZU8YUflO2/V/dl3dluu+3jg8Ghz/W5fwxD5Z21OZXKeV73d+vStKVBe4wi+Av2KbTR35K7Z+5Q3iIpjB41MA==", + "license": "MIT" }, - "node_modules/@npmcli/name-from-folder": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-4.0.0.tgz", - "integrity": "sha512-qfrhVlOSqmKM8i6rkNdZzABj8MKEITGFAY+4teqBziksCQAOLutiAxM1wY2BKEd8KjUSpWmWCYxvXr0y4VTlPg==", - "license": "ISC", + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "license": "MIT", "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=10.0.0" } }, - "node_modules/@npmcli/node-gyp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz", - "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" + "node_modules/@emmetio/abbreviation": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", + "integrity": "sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==", + "license": "MIT", + "dependencies": { + "@emmetio/scanner": "^1.0.4" } }, - "node_modules/@npmcli/package-json": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.4.tgz", - "integrity": "sha512-0wInJG3j/K40OJt/33ax47WfWMzZTm6OQxB9cDhTt5huCP2a9g2GnlsxmfN+PulItNPIpPrZ+kfwwUil7eHcZQ==", - "license": "ISC", + "node_modules/@emmetio/codemirror6-plugin": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emmetio/codemirror6-plugin/-/codemirror6-plugin-0.4.0.tgz", + "integrity": "sha512-ZP3W8JvN0cEFTdsrcKPIBg/K9sadE15g//TfubPXfM28ZxUp3SwNASbRfRLRQmPyP73+pAZzLqeOwACUUz/oAw==", "dependencies": { - "@npmcli/git": "^7.0.0", - "glob": "^13.0.0", - "hosted-git-info": "^9.0.0", - "json-parse-even-better-errors": "^5.0.0", - "proc-log": "^6.0.0", - "semver": "^7.5.3", - "validate-npm-package-license": "^3.0.4" + "@emmetio/math-expression": "^1.0.5", + "emmet": "^2.4.11" }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "peerDependencies": { + "@codemirror/autocomplete": "^6.17.0", + "@codemirror/commands": "^6.6.0", + "@codemirror/lang-css": "^6.2.1", + "@codemirror/lang-html": "^6.4.9", + "@codemirror/language": "^6.10.2", + "@codemirror/state": "^6.4.1", + "@codemirror/view": "^6.29.1" } }, - "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", - "license": "BlueOak-1.0.0", + "node_modules/@emmetio/css-abbreviation": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@emmetio/css-abbreviation/-/css-abbreviation-2.1.8.tgz", + "integrity": "sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==", + "license": "MIT", "dependencies": { - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@emmetio/scanner": "^1.0.4" } }, - "node_modules/@npmcli/package-json/node_modules/json-parse-even-better-errors": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-5.0.0.tgz", - "integrity": "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==", + "node_modules/@emmetio/math-expression": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@emmetio/math-expression/-/math-expression-1.0.5.tgz", + "integrity": "sha512-qf5SXD/ViS04rXSeDg9CRGM10xLC9dVaKIbMHrrwxYr5LNB/C0rOfokhGSBwnVQKcidLmdRJeNWH1V1tppZ84Q==", "license": "MIT", - "engines": { - "node": "^20.17.0 || >=22.9.0" + "dependencies": { + "@emmetio/scanner": "^1.0.4" } }, - "node_modules/@npmcli/package-json/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "node_modules/@emmetio/scanner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.4.tgz", + "integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==", + "license": "MIT" + }, + "node_modules/@emnapi/core": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", + "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" } }, - "node_modules/@npmcli/promise-spawn": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz", - "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==", - "license": "ISC", + "node_modules/@emnapi/runtime": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", + "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "which": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "tslib": "^2.4.0" } }, - "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", - "engines": { - "node": ">=16" + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", - "license": "ISC", + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "license": "MIT" + }, + "node_modules/@iconify/utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-3.1.0.tgz", + "integrity": "sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==", + "license": "MIT", "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@antfu/install-pkg": "^1.1.0", + "@iconify/types": "^2.0.0", + "mlly": "^1.8.0" } }, - "node_modules/@npmcli/query": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-5.0.0.tgz", - "integrity": "sha512-8TZWfTQOsODpLqo9SVhVjHovmKXNpevHU0gO9e+y4V4fRIOneiXy0u0sMP9LmS71XivrEWfZWg50ReH4WRT4aQ==", + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", "license": "ISC", "dependencies": { - "postcss-selector-parser": "^7.0.0" + "minipass": "^7.0.4" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=18.0.0" } }, - "node_modules/@npmcli/query/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "license": "ISC" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, "license": "MIT", "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@npmcli/redact": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz", - "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@npmcli/run-script": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.3.tgz", - "integrity": "sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw==", - "license": "ISC", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", "dependencies": { - "@npmcli/node-gyp": "^5.0.0", - "@npmcli/package-json": "^7.0.0", - "@npmcli/promise-spawn": "^9.0.0", - "node-gyp": "^12.1.0", - "proc-log": "^6.0.0", - "which": "^6.0.0" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@npmcli/run-script/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=6.0.0" } }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", - "license": "ISC", + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@parcel/watcher": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", - "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">= 10.0.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/streamich" }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.1", - "@parcel/watcher-darwin-arm64": "2.5.1", - "@parcel/watcher-darwin-x64": "2.5.1", - "@parcel/watcher-freebsd-x64": "2.5.1", - "@parcel/watcher-linux-arm-glibc": "2.5.1", - "@parcel/watcher-linux-arm-musl": "2.5.1", - "@parcel/watcher-linux-arm64-glibc": "2.5.1", - "@parcel/watcher-linux-arm64-musl": "2.5.1", - "@parcel/watcher-linux-x64-glibc": "2.5.1", - "@parcel/watcher-linux-x64-musl": "2.5.1", - "@parcel/watcher-win32-arm64": "2.5.1", - "@parcel/watcher-win32-ia32": "2.5.1", - "@parcel/watcher-win32-x64": "2.5.1" + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", - "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", - "cpu": [ - "arm64" - ], + "node_modules/@jsonjoy.com/buffers": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", + "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "license": "Apache-2.0", "engines": { - "node": ">= 10.0.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", - "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", - "cpu": [ - "arm64" - ], + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "license": "Apache-2.0", "engines": { - "node": ">= 10.0.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", - "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", - "cpu": [ - "x64" - ], + "node_modules/@jsonjoy.com/fs-core": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.56.10.tgz", + "integrity": "sha512-PyAEA/3cnHhsGcdY+AmIU+ZPqTuZkDhCXQ2wkXypdLitSpd6d5Ivxhnq4wa2ETRWFVJGabYynBWxIijOswSmOw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "thingies": "^2.5.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", - "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", - "cpu": [ - "x64" - ], + "node_modules/@jsonjoy.com/fs-fsa": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.56.10.tgz", + "integrity": "sha512-/FVK63ysNzTPOnCCcPoPHt77TOmachdMS422txM4KhxddLdbW1fIbFMYH0AM0ow/YchCyS5gqEjKLNyv71j/5Q==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.56.10", + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "thingies": "^2.5.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", - "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", - "cpu": [ - "arm" - ], + "node_modules/@jsonjoy.com/fs-node": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.56.10.tgz", + "integrity": "sha512-7R4Gv3tkUdW3dXfXiOkqxkElxKNVdd8BDOWC0/dbERd0pXpPY+s2s1Mino+aTvkGrFPiY+mmVxA7zhskm4Ue4Q==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.56.10", + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "@jsonjoy.com/fs-print": "4.56.10", + "@jsonjoy.com/fs-snapshot": "4.56.10", + "glob-to-regex.js": "^1.0.0", + "thingies": "^2.5.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", - "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", - "cpu": [ - "arm" - ], + "node_modules/@jsonjoy.com/fs-node-builtins": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.56.10.tgz", + "integrity": "sha512-uUnKz8R0YJyKq5jXpZtkGV9U0pJDt8hmYcLRrPjROheIfjMXsz82kXMgAA/qNg0wrZ1Kv+hrg7azqEZx6XZCVw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", "engines": { - "node": ">= 10.0.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", - "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", - "cpu": [ - "arm64" - ], + "node_modules/@jsonjoy.com/fs-node-to-fsa": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.56.10.tgz", + "integrity": "sha512-oH+O6Y4lhn9NyG6aEoFwIBNKZeYy66toP5LJcDOMBgL99BKQMUf/zWJspdRhMdn/3hbzQsZ8EHHsuekbFLGUWw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-fsa": "4.56.10", + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", - "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", - "cpu": [ - "arm64" - ], + "node_modules/@jsonjoy.com/fs-node-utils": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.56.10.tgz", + "integrity": "sha512-8EuPBgVI2aDPwFdaNQeNpHsyqPi3rr+85tMNG/lHvQLiVjzoZsvxA//Xd8aB567LUhy4QS03ptT+unkD/DIsNg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-builtins": "4.56.10" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", - "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", - "cpu": [ - "x64" - ], + "node_modules/@jsonjoy.com/fs-print": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.56.10.tgz", + "integrity": "sha512-JW4fp5mAYepzFsSGrQ48ep8FXxpg4niFWHdF78wDrFGof7F3tKDJln72QFDEn/27M1yHd4v7sKHHVPh78aWcEw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-node-utils": "4.56.10", + "tree-dump": "^1.1.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", - "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", - "cpu": [ - "x64" - ], + "node_modules/@jsonjoy.com/fs-snapshot": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.56.10.tgz", + "integrity": "sha512-DkR6l5fj7+qj0+fVKm/OOXMGfDFCGXLfyHkORH3DF8hxkpDgIHbhf/DwncBMs2igu/ST7OEkexn1gIqoU6Y+9g==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^17.65.0", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "@jsonjoy.com/json-pack": "^17.65.0", + "@jsonjoy.com/util": "^17.65.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", - "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", - "cpu": [ - "arm64" - ], + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", + "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "Apache-2.0", "engines": { - "node": ">= 10.0.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", - "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", - "cpu": [ - "ia32" - ], + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", + "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "Apache-2.0", "engines": { - "node": ">= 10.0.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", - "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", - "cpu": [ - "x64" - ], + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", + "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "17.67.0", + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0", + "@jsonjoy.com/json-pointer": "17.67.0", + "@jsonjoy.com/util": "17.67.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=10.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@sigstore/bundle": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-4.0.0.tgz", - "integrity": "sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", + "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.5.0" + "@jsonjoy.com/util": "17.67.0" }, "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/@sigstore/core": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.0.0.tgz", - "integrity": "sha512-NgbJ+aW9gQl/25+GIEGYcCyi8M+ng2/5X04BMuIgoDfgvp18vDcoNHOQjQsG9418HGNYRxG3vfEXaR1ayD37gg==", - "license": "Apache-2.0", - "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.0.tgz", - "integrity": "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", + "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", + "dev": true, "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0" + }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@sigstore/sign": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.0.1.tgz", - "integrity": "sha512-KFNGy01gx9Y3IBPG/CergxR9RZpN43N+lt3EozEfeoyqm8vEiLxwRl3ZO5sPx3Obv1ix/p7FWOlPc2Jgwfp9PA==", + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.0.0", - "@sigstore/protobuf-specs": "^0.5.0", - "make-fetch-happen": "^15.0.2", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1" + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@sigstore/sign/node_modules/proc-log": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz", - "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==", - "license": "ISC", + "node_modules/@jsonjoy.com/json-pack/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@sigstore/tuf": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.0.tgz", - "integrity": "sha512-0QFuWDHOQmz7t66gfpfNO6aEjoFrdhkJaej/AOqb4kqWZVbPWFZifXZzkxyQBB1OwTbkhdT3LNpMFxwkTvf+2w==", + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.5.0", - "tuf-js": "^4.0.0" + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@sigstore/verify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.0.0.tgz", - "integrity": "sha512-moXtHH33AobOhTZF8xcX1MpOFqdvfCk7v6+teJL8zymBiDXwEsQH6XG9HGx2VIxnJZNm4cNSzflTLDnQLmIdmw==", + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.0.0", - "@sigstore/protobuf-specs": "^0.5.0" + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@sphinxxxx/color-conversion": { - "version": "2.2.2", - "license": "ISC" - }, - "node_modules/@tufjs/canonical-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", - "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", - "license": "MIT", + "node_modules/@jsonjoy.com/util/node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@tufjs/models": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.0.0.tgz", - "integrity": "sha512-h5x5ga/hh82COe+GoD4+gKUeV4T3iaYOxqLt41GRKApinPI7DMidhCmNVTjKfhCWFJIGXaFJee07XczdT4jdZQ==", + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@lezer/common": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.1.tgz", + "integrity": "sha512-6YRVG9vBkaY7p1IVxL4s44n5nUnaNnGM2/AckNgYOnxTG2kWh1vR8BMxPseWPjRNpb5VtXnMpeYAEAADoRV1Iw==", + "license": "MIT" + }, + "node_modules/@lezer/cpp": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@lezer/cpp/-/cpp-1.1.5.tgz", + "integrity": "sha512-DIhSXmYtJKLehrjzDFN+2cPt547ySQ41nA8yqcDf/GxMc+YM736xqltFkvADL2M0VebU5I+3+4ks2Vv+Kyq3Aw==", "license": "MIT", "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.5" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" } }, - "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", + "node_modules/@lezer/css": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.3.1.tgz", + "integrity": "sha512-PYAKeUVBo3HFThruRyp/iK91SwiZJnzXh8QzkQlwijB5y+N5iB28+iLk78o2zmKqqV0uolNhCwFqB8LA7b0Svg==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.0" } }, - "node_modules/@types/ace": { - "version": "0.0.52", - "resolved": "https://registry.npmjs.org/@types/ace/-/ace-0.0.52.tgz", - "integrity": "sha512-YPF9S7fzpuyrxru+sG/rrTpZkC6gpHBPF14W3x70kqVOD+ks6jkYLapk4yceh36xej7K4HYxcyz9ZDQ2lTvwgQ==", - "dev": true - }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, + "node_modules/@lezer/go": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@lezer/go/-/go-1.0.1.tgz", + "integrity": "sha512-xToRsYxwsgJNHTgNdStpcvmbVuKxTapV0dM0wey1geMMRc9aggoVyKgzYp41D2/vVOx+Ii4hmE206kvxIXBVXQ==", "license": "MIT", "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.0" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, + "node_modules/@lezer/highlight": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.3.tgz", + "integrity": "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==", "license": "MIT", "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "@lezer/common": "^1.3.0" } }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" + "node_modules/@lezer/html": { + "version": "1.3.13", + "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.13.tgz", + "integrity": "sha512-oI7n6NJml729m7pjm9lvLvmXbdoMoi2f+1pwSDJkl9d68zGr7a9Btz8NdHTGQZtW2DA25ybeuv/SyDb9D5tseg==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" + "node_modules/@lezer/java": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@lezer/java/-/java-1.1.3.tgz", + "integrity": "sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } }, - "node_modules/@types/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "node_modules/@lezer/javascript": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.5.4.tgz", + "integrity": "sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA==", "license": "MIT", - "peer": true + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" + } }, - "node_modules/@types/markdown-it": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", - "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "node_modules/@lezer/json": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.3.tgz", + "integrity": "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==", "license": "MIT", - "peer": true, "dependencies": { - "@types/linkify-it": "^5", - "@types/mdurl": "^2" + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" } }, - "node_modules/@types/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "node_modules/@lezer/lr": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.8.tgz", + "integrity": "sha512-bPWa0Pgx69ylNlMlPvBPryqeLYQjyJjqPx+Aupm5zydLIF3NE+6MMLT8Yi23Bd9cif9VS00aUebn+6fDIGBcDA==", "license": "MIT", - "peer": true + "dependencies": { + "@lezer/common": "^1.0.0" + } }, - "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", - "dev": true, + "node_modules/@lezer/markdown": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.6.3.tgz", + "integrity": "sha512-jpGm5Ps+XErS+xA4urw7ogEGkeZOahVQF21Z6oECF0sj+2liwZopd2+I8uH5I/vZsRuuze3OxBREIANLf6KKUw==", "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "@lezer/common": "^1.5.0", + "@lezer/highlight": "^1.0.0" } }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "node_modules/@lezer/php": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@lezer/php/-/php-1.0.5.tgz", + "integrity": "sha512-W7asp9DhM6q0W6DYNwIkLSKOvxlXRrif+UXBMxzsJUuqmhE7oVU+gS3THO4S/Puh7Xzgm858UNaFi6dxTP8dJA==", "license": "MIT", - "optional": true + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.1.0" + } }, - "node_modules/@types/url-parse": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@types/url-parse/-/url-parse-1.4.11.tgz", - "integrity": "sha512-FKvKIqRaykZtd4n47LbK/W/5fhQQ1X7cxxzG9A48h0BGN+S04NH7ervcCjM8tyR0lyGru83FAHSmw2ObgKoESg==", - "dev": true + "node_modules/@lezer/python": { + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/@lezer/python/-/python-1.1.18.tgz", + "integrity": "sha512-31FiUrU7z9+d/ElGQLJFXl+dKOdx0jALlP3KEOsGTex8mvj+SoE1FgItcHWK/axkxCHGUSpqIHt6JAWfWu9Rhg==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } }, - "node_modules/@ungap/custom-elements": { - "version": "1.3.0", - "license": "ISC" + "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/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, + "node_modules/@lezer/sass": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lezer/sass/-/sass-1.1.0.tgz", + "integrity": "sha512-3mMGdCTUZ/84ArHOuXWQr37pnf7f+Nw9ycPUeKX+wu19b7pSMcZGLbaXwvD2APMBDOGxPmpK/O6S1v1EvLoqgQ==", "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT" + "node_modules/@lezer/xml": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@lezer/xml/-/xml-1.0.6.tgz", + "integrity": "sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, - "license": "MIT" + "node_modules/@lezer/yaml": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@lezer/yaml/-/yaml-1.0.4.tgz", + "integrity": "sha512-2lrrHqxalACEbxIbsjhqGpSW8kWpUKuY6RHgnSAFZa6qK62wvnPxA8hGOwOoDbwHcOFs5M4o27mjGu+P7TvBmw==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.4.0" + } }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", + "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", "license": "MIT" }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, + "node_modules/@mermaid-js/parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.0.1.tgz", + "integrity": "sha512-opmV19kN1JsK0T6HhhokHpcVkqKpF+x2pPDKKM2ThHtZAB5F4PROopk0amuVYK5qMrIA4erzpNm8gmPNJgMDxQ==", "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" + "langium": "^4.0.0" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "node_modules/@module-federation/error-codes": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.22.0.tgz", + "integrity": "sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "node_modules/@module-federation/runtime": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.22.0.tgz", + "integrity": "sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" + "@module-federation/error-codes": "0.22.0", + "@module-federation/runtime-core": "0.22.0", + "@module-federation/sdk": "0.22.0" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "node_modules/@module-federation/runtime-core": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz", + "integrity": "sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==", "dev": true, "license": "MIT", "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "@module-federation/error-codes": "0.22.0", + "@module-federation/sdk": "0.22.0" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "node_modules/@module-federation/runtime-tools": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz", + "integrity": "sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@xtuc/long": "4.2.2" + "@module-federation/runtime": "0.22.0", + "@module-federation/webpack-bundler-runtime": "0.22.0" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "node_modules/@module-federation/sdk": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.22.0.tgz", + "integrity": "sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==", "dev": true, "license": "MIT" }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz", + "integrity": "sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" + "@module-federation/runtime": "0.22.0", + "@module-federation/sdk": "0.22.0" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz", + "integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "@emnapi/core": "^1.5.0", + "@emnapi/runtime": "^1.5.0", + "@tybys/wasm-util": "^0.10.1" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, + "node_modules/@netflix/nerror": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@netflix/nerror/-/nerror-1.1.3.tgz", + "integrity": "sha512-b+MGNyP9/LXkapreJzNUzcvuzZslj/RGgdVVJ16P2wSlYatfLycPObImqVJSmNAdyeShvNeM/pl3sVZsObFueg==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "extsprintf": "^1.4.0", + "lodash": "^4.17.15" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-4.0.0.tgz", + "integrity": "sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==", + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^11.2.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@npmcli/arborist": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-9.3.1.tgz", + "integrity": "sha512-s8+F1CEpEVV4pejQTDXeZDsE1XcIK/RepTTRPdnerKnt+Ii/4o7H5QfMEIAZ6UJRukSfBHHcFwxgmCOxkCDVqA==", + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^5.0.0", + "@npmcli/installed-package-contents": "^4.0.0", + "@npmcli/map-workspaces": "^5.0.0", + "@npmcli/metavuln-calculator": "^9.0.2", + "@npmcli/name-from-folder": "^4.0.0", + "@npmcli/node-gyp": "^5.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/query": "^5.0.0", + "@npmcli/redact": "^4.0.0", + "@npmcli/run-script": "^10.0.0", + "bin-links": "^6.0.0", + "cacache": "^20.0.1", + "common-ancestor-path": "^2.0.0", + "hosted-git-info": "^9.0.0", + "json-stringify-nice": "^1.1.4", + "lru-cache": "^11.2.1", + "minimatch": "^10.0.3", + "nopt": "^9.0.0", + "npm-install-checks": "^8.0.0", + "npm-package-arg": "^13.0.0", + "npm-pick-manifest": "^11.0.1", + "npm-registry-fetch": "^19.0.0", + "pacote": "^21.0.2", + "parse-conflict-json": "^5.0.1", + "proc-log": "^6.0.0", + "proggy": "^4.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "semver": "^7.3.7", + "ssri": "^13.0.0", + "treeverse": "^3.0.0", + "walk-up-path": "^4.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@npmcli/arborist/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/fs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz", + "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==", + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/git": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-7.0.1.tgz", + "integrity": "sha512-+XTFxK2jJF/EJJ5SoAzXk3qwIDfvFc5/g+bD274LZ7uY7LE8sTfG6Z8rOanPl2ZEvZWqNvmEdtXC25cE54VcoA==", + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^9.0.0", + "ini": "^6.0.0", + "lru-cache": "^11.2.1", + "npm-pick-manifest": "^11.0.1", + "proc-log": "^6.0.0", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=20" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@npmcli/git/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "license": "ISC", + "dependencies": { + "isexe": "^4.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz", + "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==", + "license": "ISC", + "dependencies": { + "npm-bundled": "^5.0.0", + "npm-normalize-package-bin": "^5.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/map-workspaces": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-5.0.3.tgz", + "integrity": "sha512-o2grssXo1e774E5OtEwwrgoszYRh0lqkJH+Pb9r78UcqdGJRDRfhpM8DvZPjzNLLNYeD/rNbjOKM3Ss5UABROw==", + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^4.0.0", + "@npmcli/package-json": "^7.0.0", + "glob": "^13.0.0", + "minimatch": "^10.0.3" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/metavuln-calculator": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-9.0.3.tgz", + "integrity": "sha512-94GLSYhLXF2t2LAC7pDwLaM4uCARzxShyAQKsirmlNcpidH89VA4/+K1LbJmRMgz5gy65E/QBBWQdUvGLe2Frg==", + "license": "ISC", + "dependencies": { + "cacache": "^20.0.0", + "json-parse-even-better-errors": "^5.0.0", + "pacote": "^21.0.0", + "proc-log": "^6.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/metavuln-calculator/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/name-from-folder": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-4.0.0.tgz", + "integrity": "sha512-qfrhVlOSqmKM8i6rkNdZzABj8MKEITGFAY+4teqBziksCQAOLutiAxM1wY2BKEd8KjUSpWmWCYxvXr0y4VTlPg==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz", + "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-7.0.5.tgz", + "integrity": "sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==", + "license": "ISC", + "dependencies": { + "@npmcli/git": "^7.0.0", + "glob": "^13.0.0", + "hosted-git-info": "^9.0.0", + "json-parse-even-better-errors": "^5.0.0", + "proc-log": "^6.0.0", + "semver": "^7.5.3", + "spdx-expression-parse": "^4.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-9.0.1.tgz", + "integrity": "sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==", + "license": "ISC", + "dependencies": { + "which": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=20" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "license": "ISC", + "dependencies": { + "isexe": "^4.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/query": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-5.0.0.tgz", + "integrity": "sha512-8TZWfTQOsODpLqo9SVhVjHovmKXNpevHU0gO9e+y4V4fRIOneiXy0u0sMP9LmS71XivrEWfZWg50ReH4WRT4aQ==", + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^7.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/redact": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz", + "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-10.0.3.tgz", + "integrity": "sha512-ER2N6itRkzWbbtVmZ9WKaWxVlKlOeBFF1/7xx+KA5J1xKa4JjUwBdb6tDpk0v1qA+d+VDwHI9qmLcXSWcmi+Rw==", + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^5.0.0", + "@npmcli/package-json": "^7.0.0", + "@npmcli/promise-spawn": "^9.0.0", + "node-gyp": "^12.1.0", + "proc-log": "^6.0.0", + "which": "^6.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=20" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "license": "ISC", + "dependencies": { + "isexe": "^4.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rspack/binding": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.7.6.tgz", + "integrity": "sha512-/NrEcfo8Gx22hLGysanrV6gHMuqZSxToSci/3M4kzEQtF5cPjfOv5pqeLK/+B6cr56ul/OmE96cCdWcXeVnFjQ==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "@rspack/binding-darwin-arm64": "1.7.6", + "@rspack/binding-darwin-x64": "1.7.6", + "@rspack/binding-linux-arm64-gnu": "1.7.6", + "@rspack/binding-linux-arm64-musl": "1.7.6", + "@rspack/binding-linux-x64-gnu": "1.7.6", + "@rspack/binding-linux-x64-musl": "1.7.6", + "@rspack/binding-wasm32-wasi": "1.7.6", + "@rspack/binding-win32-arm64-msvc": "1.7.6", + "@rspack/binding-win32-ia32-msvc": "1.7.6", + "@rspack/binding-win32-x64-msvc": "1.7.6" + } + }, + "node_modules/@rspack/binding-darwin-arm64": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.6.tgz", + "integrity": "sha512-NZ9AWtB1COLUX1tA9HQQvWpTy07NSFfKBU8A6ylWd5KH8AePZztpNgLLAVPTuNO4CZXYpwcoclf8jG/luJcQdQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-darwin-x64": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.6.tgz", + "integrity": "sha512-J2g6xk8ZS7uc024dNTGTHxoFzFovAZIRixUG7PiciLKTMP78svbSSWrmW6N8oAsAkzYfJWwQpVgWfFNRHvYxSw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-linux-arm64-gnu": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.6.tgz", + "integrity": "sha512-eQfcsaxhFrv5FmtaA7+O1F9/2yFDNIoPZzV/ZvqvFz5bBXVc4FAm/1fVpBg8Po/kX1h0chBc7Xkpry3cabFW8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-arm64-musl": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.6.tgz", + "integrity": "sha512-DfQXKiyPIl7i1yECHy4eAkSmlUzzsSAbOjgMuKn7pudsWf483jg0UUYutNgXSlBjc/QSUp7906Cg8oty9OfwPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-gnu": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.6.tgz", + "integrity": "sha512-NdA+2X3lk2GGrMMnTGyYTzM3pn+zNjaqXqlgKmFBXvjfZqzSsKq3pdD1KHZCd5QHN+Fwvoszj0JFsquEVhE1og==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-musl": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.6.tgz", + "integrity": "sha512-rEy6MHKob02t/77YNgr6dREyJ0e0tv1X6Xsg8Z5E7rPXead06zefUbfazj4RELYySWnM38ovZyJAkPx/gOn3VA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-wasm32-wasi": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.6.tgz", + "integrity": "sha512-YupOrz0daSG+YBbCIgpDgzfMM38YpChv+afZpaxx5Ml7xPeAZIIdgWmLHnQ2rts73N2M1NspAiBwV00Xx0N4Vg==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "1.0.7" + } + }, + "node_modules/@rspack/binding-win32-arm64-msvc": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.6.tgz", + "integrity": "sha512-INj7aVXjBvlZ84kEhSK4kJ484ub0i+BzgnjDWOWM1K+eFYDZjLdAsQSS3fGGXwVc3qKbPIssFfnftATDMTEJHQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-ia32-msvc": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.6.tgz", + "integrity": "sha512-lXGvC+z67UMcw58In12h8zCa9IyYRmuptUBMItQJzu+M278aMuD1nETyGLL7e4+OZ2lvrnnBIcjXN1hfw2yRzw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-x64-msvc": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.6.tgz", + "integrity": "sha512-zeUxEc0ZaPpmaYlCeWcjSJUPuRRySiSHN23oJ2Xyw0jsQ01Qm4OScPdr0RhEOFuK/UE+ANyRtDo4zJsY52Hadw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/cli": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@rspack/cli/-/cli-1.7.6.tgz", + "integrity": "sha512-oIC8F3es8EIZfme5jy/MCf9KJPhYlR9pBzKr8vzLal1H/aheGobNhiV0tYRl22I2gx9XAQItiea36g04byiEOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^0.5.7", + "@rspack/dev-server": "~1.1.5", + "exit-hook": "^4.0.0", + "webpack-bundle-analyzer": "4.10.2" + }, + "bin": { + "rspack": "bin/rspack.js" + }, + "peerDependencies": { + "@rspack/core": "^1.0.0-alpha || ^1.x" + } + }, + "node_modules/@rspack/core": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.7.6.tgz", + "integrity": "sha512-Iax6UhrfZqJajA778c1d5DBFbSIqPOSrI34kpNIiNpWd8Jq7mFIa+Z60SQb5ZQDZuUxcCZikjz5BxinFjTkg7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@module-federation/runtime-tools": "0.22.0", + "@rspack/binding": "1.7.6", + "@rspack/lite-tapable": "1.1.0" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.1" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@rspack/dev-server": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rspack/dev-server/-/dev-server-1.1.5.tgz", + "integrity": "sha512-cwz0qc6iqqoJhyWqxP7ZqE2wyYNHkBMQUXxoQ0tNoZ4YNRkDyQ4HVJ/3oPSmMKbvJk/iJ16u7xZmwG6sK47q/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.6.0", + "http-proxy-middleware": "^2.0.9", + "p-retry": "^6.2.0", + "webpack-dev-server": "5.2.2", + "ws": "^8.18.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "peerDependencies": { + "@rspack/core": "*" + } + }, + "node_modules/@rspack/lite-tapable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz", + "integrity": "sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sigstore/bundle": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-4.0.0.tgz", + "integrity": "sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==", + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.5.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@sigstore/core": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-3.1.0.tgz", + "integrity": "sha512-o5cw1QYhNQ9IroioJxpzexmPjfCe7gzafd2RY3qnMpxr4ZEja+Jad/U8sgFpaue6bOaF+z7RVkyKVV44FN+N8A==", + "license": "Apache-2.0", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.5.0.tgz", + "integrity": "sha512-MM8XIwUjN2bwvCg1QvrMtbBmpcSHrkhFSCu1D11NyPvDQ25HEc4oG5/OcQfd/Tlf/OxmKWERDj0zGE23jQaMwA==", + "license": "Apache-2.0", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-4.1.0.tgz", + "integrity": "sha512-Vx1RmLxLGnSUqx/o5/VsCjkuN5L7y+vxEEwawvc7u+6WtX2W4GNa7b9HEjmcRWohw/d6BpATXmvOwc78m+Swdg==", + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.1.0", + "@sigstore/protobuf-specs": "^0.5.0", + "make-fetch-happen": "^15.0.3", + "proc-log": "^6.1.0", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@sigstore/tuf": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-4.0.1.tgz", + "integrity": "sha512-OPZBg8y5Vc9yZjmWCHrlWPMBqW5yd8+wFNl+thMdtcWz3vjVSoJQutF8YkrzI0SLGnkuFof4HSsWUhXrf219Lw==", + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.5.0", + "tuf-js": "^4.1.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@sigstore/verify": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-3.1.0.tgz", + "integrity": "sha512-mNe0Iigql08YupSOGv197YdHpPPr+EzDZmfCgMc7RPNaZTw5aLN01nBl6CHJOh3BGtnMIj83EeN4butBchc8Ag==", + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^4.0.0", + "@sigstore/core": "^3.1.0", + "@sigstore/protobuf-specs": "^0.5.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@sphinxxxx/color-conversion": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@sphinxxxx/color-conversion/-/color-conversion-2.2.2.tgz", + "integrity": "sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==", + "license": "ISC" + }, + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "license": "MIT", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-4.1.0.tgz", + "integrity": "sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==", + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^10.1.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/ace": { + "version": "0.0.52", + "resolved": "https://registry.npmjs.org/@types/ace/-/ace-0.0.52.tgz", + "integrity": "sha512-YPF9S7fzpuyrxru+sG/rrTpZkC6gpHBPF14W3x70kqVOD+ks6jkYLapk4yceh36xej7K4HYxcyz9ZDQ2lTvwgQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "license": "MIT", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz", + "integrity": "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==", + "license": "MIT" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT" + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/express": { + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "^1" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "license": "MIT", + "peer": true + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "license": "MIT", + "peer": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", + "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/url-parse": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@types/url-parse/-/url-parse-1.4.11.tgz", + "integrity": "sha512-FKvKIqRaykZtd4n47LbK/W/5fhQQ1X7cxxzG9A48h0BGN+S04NH7ervcCjM8tyR0lyGru83FAHSmw2ObgKoESg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@ungap/custom-elements": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/custom-elements/-/custom-elements-1.3.0.tgz", + "integrity": "sha512-f4q/s76+8nOy+fhrNHyetuoPDR01lmlZB5czfCG+OOnBw/Wf+x48DcCDPmMQY7oL8xYFL8qfenMoiS8DUkKBUw==", + "license": "ISC" + }, + "node_modules/@upsetjs/venn.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@upsetjs/venn.js/-/venn.js-2.0.0.tgz", + "integrity": "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==", + "license": "MIT", + "optionalDependencies": { + "d3-selection": "^3.0.0", + "d3-transition": "^3.0.1" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.13", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.13.tgz", + "integrity": "sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@xterm/addon-attach": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-attach/-/addon-attach-0.11.0.tgz", + "integrity": "sha512-JboCN0QAY6ZLY/SSB/Zl2cQ5zW1Eh4X3fH7BnuR1NB7xGRhzbqU2Npmpiw/3zFlxDaU88vtKzok44JKi2L2V2Q==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/addon-fit": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.10.0.tgz", + "integrity": "sha512-UFYkDm4HUahf2lnEyHvio51TNGiLK66mqP2JoATy7hRZeXaGMRDr00JiSF7m63vR5WKATF605yEggJKsw0JpMQ==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/addon-image": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-image/-/addon-image-0.8.0.tgz", + "integrity": "sha512-b/dqpFn3jUad2pUP5UpF4scPIh0WdxRQL/1qyiahGfUI85XZTCXo0py9G6AcOR2QYUw8eJ8EowGspT7BQcgw6A==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.2.0" + } + }, + "node_modules/@xterm/addon-search": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-search/-/addon-search-0.15.0.tgz", + "integrity": "sha512-ZBZKLQ+EuKE83CqCmSSz5y1tx+aNOCUaA7dm6emgOX+8J9H1FWXZyrKfzjwzV+V14TV3xToz1goIeRhXBS5qjg==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/addon-unicode11": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-unicode11/-/addon-unicode11-0.8.0.tgz", + "integrity": "sha512-LxinXu8SC4OmVa6FhgwsVCBZbr8WoSGzBl2+vqe8WcQ6hb1r6Gj9P99qTNdPiFPh4Ceiu2pC8xukZ6+2nnh49Q==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/addon-web-links": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-web-links/-/addon-web-links-0.11.0.tgz", + "integrity": "sha512-nIHQ38pQI+a5kXnRaTgwqSHnX7KE6+4SVoceompgHL26unAxdfP6IPqUTSYPQgSwM56hsElfoNrrW5V7BUED/Q==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/addon-webgl": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@xterm/addon-webgl/-/addon-webgl-0.18.0.tgz", + "integrity": "sha512-xCnfMBTI+/HKPdRnSOHaJDRqEpq2Ugy8LEj9GiY4J3zJObo3joylIFaMvzBwbYRg8zLtkO0KQaStCeSfoaI2/w==", + "license": "MIT", + "peerDependencies": { + "@xterm/xterm": "^5.0.0" + } + }, + "node_modules/@xterm/xterm": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz", + "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==", + "license": "MIT" + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/abbrev": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", + "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/android-versions": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/android-versions/-/android-versions-2.1.1.tgz", + "integrity": "sha512-dYeO3KHDO81WvEwZFK+OF0dJl/ESvxV3QZE/qo/AAnG/uijco6DOXJJla3CdoC8Eg53YBlbRIyobRGYqIAGw8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.2" + } + }, + "node_modules/android-versions/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A==", + "license": "MIT" + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.24", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.24.tgz", + "integrity": "sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001766", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/autosize": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/autosize/-/autosize-6.0.1.tgz", + "integrity": "sha512-f86EjiUKE6Xvczc4ioP1JBlWG7FKrE13qe/DxBCpe8GCipCq2nFw73aO8QEBKHfSbYGDN5eB9jXWKen7tspDqQ==", + "license": "MIT" + }, + "node_modules/babel-loader": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", + "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", + "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" + "find-up": "^5.0.0" + }, + "engines": { + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5.61.0" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", + "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.6", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", + "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.6" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz", + "integrity": "sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz", + "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true, + "license": "MIT" + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bin-links": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-6.0.0.tgz", + "integrity": "sha512-X4CiKlcV2GjnCMwnKAfbVWpHa++65th9TuzAEYtZoATiOE2DQKhSp4CJlyLoTqdhBKlXjpXjCTYPNNFS33Fi6w==", + "license": "ISC", + "dependencies": { + "cmd-shim": "^8.0.0", + "npm-normalize-package-bin": "^5.0.0", + "proc-log": "^6.0.0", + "read-cmd-shim": "^6.0.0", + "write-file-atomic": "^7.0.0" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/bin-links/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/bin-links/node_modules/write-file-atomic": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.0.tgz", + "integrity": "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/bplist-parser": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", + "license": "MIT", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/@webpack-cli/configtest": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", - "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "dev": true, "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, "engines": { - "node": ">=18.12.0" + "node": ">=18" }, - "peerDependencies": { - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@webpack-cli/info": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", - "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "license": "MIT", "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" + "node": ">= 0.8" } }, - "node_modules/@webpack-cli/serve": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", - "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12.0" - }, - "peerDependencies": { - "webpack": "^5.82.0", - "webpack-cli": "6.x.x" + "node_modules/cacache": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.3.tgz", + "integrity": "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==", + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^5.0.0", + "fs-minipass": "^3.0.0", + "glob": "^13.0.0", + "lru-cache": "^11.1.0", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^7.0.2", + "ssri": "^13.0.0", + "unique-filename": "^5.0.0" }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } + "engines": { + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", - "license": "MIT", + "node_modules/cacache/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=10.0.0" + "node": "20 || >=22" } }, - "node_modules/@xterm/addon-attach": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-attach/-/addon-attach-0.11.0.tgz", - "integrity": "sha512-JboCN0QAY6ZLY/SSB/Zl2cQ5zW1Eh4X3fH7BnuR1NB7xGRhzbqU2Npmpiw/3zFlxDaU88vtKzok44JKi2L2V2Q==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.0.0" + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/@xterm/addon-fit": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.10.0.tgz", - "integrity": "sha512-UFYkDm4HUahf2lnEyHvio51TNGiLK66mqP2JoATy7hRZeXaGMRDr00JiSF7m63vR5WKATF605yEggJKsw0JpMQ==", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.0.0" + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@xterm/addon-image": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-image/-/addon-image-0.8.0.tgz", - "integrity": "sha512-b/dqpFn3jUad2pUP5UpF4scPIh0WdxRQL/1qyiahGfUI85XZTCXo0py9G6AcOR2QYUw8eJ8EowGspT7BQcgw6A==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.2.0" + "engines": { + "node": ">=6" } }, - "node_modules/@xterm/addon-search": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-search/-/addon-search-0.15.0.tgz", - "integrity": "sha512-ZBZKLQ+EuKE83CqCmSSz5y1tx+aNOCUaA7dm6emgOX+8J9H1FWXZyrKfzjwzV+V14TV3xToz1goIeRhXBS5qjg==", - "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.0.0" - } + "node_modules/caniuse-lite": { + "version": "1.0.30001770", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz", + "integrity": "sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" }, - "node_modules/@xterm/addon-unicode11": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-unicode11/-/addon-unicode11-0.8.0.tgz", - "integrity": "sha512-LxinXu8SC4OmVa6FhgwsVCBZbr8WoSGzBl2+vqe8WcQ6hb1r6Gj9P99qTNdPiFPh4Ceiu2pC8xukZ6+2nnh49Q==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.0.0" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@xterm/addon-web-links": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-web-links/-/addon-web-links-0.11.0.tgz", - "integrity": "sha512-nIHQ38pQI+a5kXnRaTgwqSHnX7KE6+4SVoceompgHL26unAxdfP6IPqUTSYPQgSwM56hsElfoNrrW5V7BUED/Q==", - "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.0.0" + "node_modules/chevrotain": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", + "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.0.3", + "@chevrotain/gast": "11.0.3", + "@chevrotain/regexp-to-ast": "11.0.3", + "@chevrotain/types": "11.0.3", + "@chevrotain/utils": "11.0.3", + "lodash-es": "4.17.21" } }, - "node_modules/@xterm/addon-webgl": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-webgl/-/addon-webgl-0.18.0.tgz", - "integrity": "sha512-xCnfMBTI+/HKPdRnSOHaJDRqEpq2Ugy8LEj9GiY4J3zJObo3joylIFaMvzBwbYRg8zLtkO0KQaStCeSfoaI2/w==", + "node_modules/chevrotain-allstar": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", + "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", "license": "MIT", + "dependencies": { + "lodash-es": "^4.17.21" + }, "peerDependencies": { - "@xterm/xterm": "^5.0.0" + "chevrotain": "^11.0.0" } }, - "node_modules/@xterm/xterm": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz", - "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==", - "license": "MIT" - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "license": "Apache-2.0" - }, - "node_modules/abbrev": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz", - "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==", - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=0.4.0" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "dev": true, - "license": "MIT", + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" + "node": ">=18" } }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, "license": "MIT", + "peer": true, "engines": { - "node": ">= 14" + "node": ">=6.0" } }, - "node_modules/ajv": { - "version": "8.12.0", + "node_modules/cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", + "integrity": "sha512-41U72MB56TfUMGndAKK8vJ78eooOD4Z5NOL4xEfjc0c23s+6EYKXlXsmACBVclLP1yOfWCgEganVzddVrSNoTg==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "exit": "0.1.2", + "glob": "^7.1.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=0.2.5" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", + "node_modules/cli/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } + "license": "MIT" }, - "node_modules/ajv-keywords": { - "version": "5.1.0", + "node_modules/cli/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/android-versions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/android-versions/-/android-versions-2.1.0.tgz", - "integrity": "sha512-oCBvVs2uaL8ohQtesGs78/X7QvFDLbKgTosBRiOIBCss1a/yiakQm/ADuoG2k/AUaI0FfrsFeMl/a+GtEtjEeA==", + "node_modules/cli/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "semver": "^7.5.2" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/android-versions/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/cli/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" + "node": "*" } }, - "node_modules/ansi": { - "version": "0.3.1", - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "license": "ISC", + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "license": "MIT", + "node_modules/cmd-shim": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-8.0.0.tgz", + "integrity": "sha512-Jk/BK6NCapZ58BKUxlSI+ouKRbjH1NLZCgJkYoab+vEHUY3f6OzpNBN9u7HFSv9J6TRDGs4PLOHezoKGaFRSCA==", + "license": "ISC", "engines": { - "node": ">=8" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/assert-plus": { - "version": "1.0.0", + "node_modules/codemirror": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz", + "integrity": "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==", "license": "MIT", - "engines": { - "node": ">=0.8" + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" } }, - "node_modules/autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", "dependencies": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" + "color-name": "~1.1.4" }, "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">=7.0.0" } }, - "node_modules/autosize": { - "version": "6.0.1", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, - "node_modules/babel-loader": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", - "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/com.foxdebug.acode.rk.auth": { + "resolved": "src/plugins/auth", + "link": true + }, + "node_modules/com.foxdebug.acode.rk.customtabs": { + "resolved": "src/plugins/custom-tabs", + "link": true + }, + "node_modules/com.foxdebug.acode.rk.exec.proot": { + "resolved": "src/plugins/proot", + "link": true + }, + "node_modules/com.foxdebug.acode.rk.exec.terminal": { + "resolved": "src/plugins/terminal", + "link": true + }, + "node_modules/com.foxdebug.acode.rk.plugin.plugincontext": { + "resolved": "src/plugins/pluginContext", + "link": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, "license": "MIT", - "dependencies": { - "find-up": "^5.0.0" - }, + "peer": true + }, + "node_modules/common-ancestor-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-2.0.0.tgz", + "integrity": "sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==", + "license": "BlueOak-1.0.0", "engines": { - "node": "^18.20.0 || ^20.10.0 || >=22.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5.61.0" + "node": ">= 18" } }, - "node_modules/babel-loader/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "mime-db": ">= 1.43.0 < 2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/babel-loader/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8.0" } }, - "node_modules/babel-loader/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "ms": "2.0.0" } }, - "node_modules/babel-loader/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", - "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "license": "BSD-2-Clause", "dependencies": { - "@babel/compat-data": "^7.27.7", - "@babel/helper-define-polyfill-provider": "^0.6.5", - "semver": "^6.3.1" + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha512-duS7VP5pvfsNLDvL1O4VOEbw37AI3A4ZUQYemvDlnpGrNu9tprR7BYWpDYwC0Xia0Zxz5ZupdiIrUp0GH1aXfg==", + "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "date-now": "^0.1.4" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", - "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5" + "safe-buffer": "5.2.1" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">= 0.6" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, "funding": [ { "type": "github", @@ -3630,1091 +6422,1062 @@ ], "license": "MIT" }, - "node_modules/baseline-browser-mapping": { - "version": "2.9.19", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", - "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" - } - }, - "node_modules/big-integer": { - "version": "1.6.51", - "license": "Unlicense", + "license": "MIT", "engines": { - "node": ">=0.6" + "node": ">= 0.6" } }, - "node_modules/big.js": { - "version": "5.2.2", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } + "license": "MIT" }, - "node_modules/bin-links": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-6.0.0.tgz", - "integrity": "sha512-X4CiKlcV2GjnCMwnKAfbVWpHa++65th9TuzAEYtZoATiOE2DQKhSp4CJlyLoTqdhBKlXjpXjCTYPNNFS33Fi6w==", - "license": "ISC", - "dependencies": { - "cmd-shim": "^8.0.0", - "npm-normalize-package-bin": "^5.0.0", - "proc-log": "^6.0.0", - "read-cmd-shim": "^6.0.0", - "write-file-atomic": "^7.0.0" - }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">= 0.6" } }, - "node_modules/bin-links/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "dev": true, + "license": "MIT" }, - "node_modules/bin-links/node_modules/write-file-atomic": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.0.tgz", - "integrity": "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==", - "license": "ISC", + "node_modules/cordova": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/cordova/-/cordova-13.0.0.tgz", + "integrity": "sha512-QAIMwmYLL0jHo4vauWSnRd2fr9l+wajG+F5aUkrC6e4ZQGSTv0wAiRmpqQUkIc1ZdELisKDQws/BjHz5nP/sLw==", + "license": "Apache-2.0", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" + "configstore": "^5.0.1", + "cordova-common": "^6.0.0", + "cordova-create": "^6.0.0", + "cordova-lib": "^13.0.0", + "editor": "^1.0.0", + "execa": "^5.1.1", + "nopt": "^9.0.0", + "semver": "^7.7.3", + "systeminformation": "^5.27.11" }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/bplist-parser": { - "version": "0.3.2", - "license": "MIT", - "dependencies": { - "big-integer": "1.6.x" + "bin": { + "cordova": "bin/cordova" }, "engines": { - "node": ">= 5.10.0" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "node": ">=20.17.0 || >=22.9.0" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "node_modules/cordova-android": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-15.0.0.tgz", + "integrity": "sha512-EpFSKUtBLJ7bTpuVD7NeC6toAooi5PI6VIR2jd8Ut5PJu7HSR5tPRwS87Q1DS03RSyDTlroB64JPUWC0pmAhnw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "fill-range": "^7.1.1" + "android-versions": "^2.1.1", + "cordova-common": "^6.0.0", + "dedent": "^1.7.1", + "execa": "^5.1.1", + "fast-glob": "^3.3.3", + "is-path-inside": "^3.0.3", + "nopt": "^9.0.0", + "properties-parser": "^0.6.0", + "semver": "^7.7.4", + "string-argv": "^0.3.2", + "untildify": "^4.0.0", + "which": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=20.17.0 || >=22.9.0" } }, - "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "node_modules/cordova-android/node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" - }, - "bin": { - "browserslist": "cli.js" - }, + "license": "BlueOak-1.0.0", "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=20" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "node_modules/cordova-android/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, - "license": "MIT" - }, - "node_modules/cacache": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-20.0.3.tgz", - "integrity": "sha512-3pUp4e8hv07k1QlijZu6Kn7c9+ZpWWk4j3F8N3xPuCExULobqJydKYOTj1FTq58srkJsXvO7LbGAH4C0ZU3WGw==", "license": "ISC", - "dependencies": { - "@npmcli/fs": "^5.0.0", - "fs-minipass": "^3.0.0", - "glob": "^13.0.0", - "lru-cache": "^11.1.0", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^7.0.2", - "ssri": "^13.0.0", - "unique-filename": "^5.0.0" + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=10" } }, - "node_modules/cacache/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", - "license": "BlueOak-1.0.0", + "node_modules/cordova-android/node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "dev": true, + "license": "ISC", "dependencies": { - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "path-scurry": "^2.0.0" + "isexe": "^4.0.0" }, - "engines": { - "node": "20 || >=22" + "bin": { + "node-which": "bin/which.js" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", - "license": "ISC", "engines": { - "node": "20 || >=22" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/callsites": { - "version": "3.1.0", - "license": "MIT", - "engines": { - "node": ">=6" - } + "node_modules/cordova-app-hello-world": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cordova-app-hello-world/-/cordova-app-hello-world-7.0.0.tgz", + "integrity": "sha512-uDTncFkI73ko+wEf6IEO9bw8lQRMQGnfdi5pPMei4P8+plChNcRW5fxjKlhM/8ZrT8OAWiHsQRrP4pIAn3HQ4g==", + "license": "Apache-2.0" }, - "node_modules/caniuse-lite": { - "version": "1.0.30001768", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001768.tgz", - "integrity": "sha512-qY3aDRZC5nWPgHUgIB84WL+nySuo19wk0VJpp/XI9T34lrvkyhRvNVOFJOp2kxClQhiFBu+TaUSudf6oa3vkSA==", + "node_modules/cordova-clipboard": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/cordova-clipboard/-/cordova-clipboard-1.3.0.tgz", + "integrity": "sha512-IGk4LZm/DJ0Xk/jgakHm4wa+A/lrRP3QfzMAHDG7oWLJS4ISOpfI32Wez4ndnENItRslGyBVyJyKD83CxELCAw==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" + "license": "MIT" }, - "node_modules/chevrotain": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", - "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", - "dev": true, + "node_modules/cordova-common": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-6.0.0.tgz", + "integrity": "sha512-16WPC1DuxVdshV3RoQUXqhcJVdhxWGwiFysA4TkYuboqoev6mgt0JuIJFxmQbzR/DuyuONaVe0L0O0Hf1C08Mg==", "license": "Apache-2.0", "dependencies": { - "@chevrotain/cst-dts-gen": "11.0.3", - "@chevrotain/gast": "11.0.3", - "@chevrotain/regexp-to-ast": "11.0.3", - "@chevrotain/types": "11.0.3", - "@chevrotain/utils": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/chevrotain-allstar": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", - "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash-es": "^4.17.21" + "@netflix/nerror": "^1.1.3", + "ansi": "^0.3.1", + "bplist-parser": "^0.3.2", + "elementtree": "^0.1.7", + "endent": "^2.1.0", + "fast-glob": "^3.3.3", + "plist": "^3.1.0" }, - "peerDependencies": { - "chevrotain": "^11.0.0" - } - }, - "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "license": "BlueOak-1.0.0", "engines": { - "node": ">=18" + "node": ">=20.9.0" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "dev": true, - "license": "MIT", + "node_modules/cordova-create": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cordova-create/-/cordova-create-6.0.0.tgz", + "integrity": "sha512-LD41sLn2GsmAlj3576R3xlUM3BP0rt0CYd5LdbzU82WBI3ApMrrhM6xcHDYJfe1nfSL89O/nb/u/h7+7DhPQeA==", + "license": "Apache-2.0", + "dependencies": { + "cordova-app-hello-world": "^7.0.0", + "cordova-common": "^6.0.0", + "cordova-fetch": "^5.0.0", + "globby": "^11.1.0", + "import-fresh": "^3.3.1", + "isobject": "^4.0.0", + "npm-package-arg": "^13.0.0", + "path-is-inside": "^1.0.2", + "tmp": "^0.2.5", + "valid-identifier": "0.0.2" + }, "engines": { - "node": ">=6.0" + "node": ">=20.17.0 || >=22.9.0" } }, - "node_modules/cli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", - "integrity": "sha512-41U72MB56TfUMGndAKK8vJ78eooOD4Z5NOL4xEfjc0c23s+6EYKXlXsmACBVclLP1yOfWCgEganVzddVrSNoTg==", - "dev": true, - "license": "MIT", + "node_modules/cordova-fetch": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cordova-fetch/-/cordova-fetch-5.0.0.tgz", + "integrity": "sha512-fsYnVfx32AOrFO6tw4EkzSig7WjNhze35dKIzdw20zTQetDKEfWA79PpCaoiSeahGi6O2MdnOFabLhEa8se6jg==", + "license": "Apache-2.0", "dependencies": { - "exit": "0.1.2", - "glob": "^7.1.1" + "@npmcli/arborist": "^9.1.3", + "cordova-common": "^6.0.0", + "execa": "^5.1.1", + "npm-package-arg": "^13.0.0", + "pacote": "^21.0.0", + "resolve": "^1.22.10", + "semver": "^7.7.2", + "which": "^5.0.0" }, "engines": { - "node": ">=0.2.5" + "node": ">=20.9.0", + "npm": ">=8.1.0" } }, - "node_modules/cliui": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", - "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "node_modules/cordova-fetch/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", - "dependencies": { - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=20" + "node": ">=10" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" + "node_modules/cordova-lib": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/cordova-lib/-/cordova-lib-13.0.0.tgz", + "integrity": "sha512-y8WQ+J6JtiU9C72ujvI3p+ScFJkg0VJwNfaUCqk9nPAssw2C6HltHk+ik/WrLUn6uDmwAM6gmfGUIMU2iVrNxA==", + "license": "Apache-2.0", + "dependencies": { + "cordova-common": "^6.0.0", + "cordova-fetch": "^5.0.0", + "detect-indent": "^6.1.0", + "detect-newline": "^3.1.0", + "execa": "^5.1.1", + "globby": "^11.1.0", + "semver": "^7.7.2", + "stringify-package": "^1.0.1", + "write-file-atomic": "^7.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=20.17.0 || >=22.9.0" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "license": "MIT" - }, - "node_modules/cliui/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "node_modules/cordova-lib/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, + "node_modules/cordova-lib/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", "engines": { - "node": ">=12" + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "license": "MIT", + "node_modules/cordova-lib/node_modules/write-file-atomic": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.0.tgz", + "integrity": "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==", + "license": "ISC", "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=6" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/cmd-shim": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-8.0.0.tgz", - "integrity": "sha512-Jk/BK6NCapZ58BKUxlSI+ouKRbjH1NLZCgJkYoab+vEHUY3f6OzpNBN9u7HFSv9J6TRDGs4PLOHezoKGaFRSCA==", - "license": "ISC", + "node_modules/cordova-plugin-advanced-http": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/cordova-plugin-advanced-http/-/cordova-plugin-advanced-http-3.3.1.tgz", + "integrity": "sha512-hESuB3mxIHCUrzb5lm7juda6PSNcC5N8Invizj5wGV2rSldCapiNxMTEpzKR1UVPDDP2XOtBzO0SAYS+3+g/ig==", + "dev": true, + "engines": [ + { + "name": "cordova", + "version": ">=4.0.0" + } + ], + "license": "MIT" + }, + "node_modules/cordova-plugin-browser": { + "resolved": "src/plugins/browser", + "link": true + }, + "node_modules/cordova-plugin-buildinfo": { + "resolved": "src/plugins/cordova-plugin-buildinfo", + "link": true + }, + "node_modules/cordova-plugin-device": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-2.1.0.tgz", + "integrity": "sha512-FU0Lw1jZpuKOgG4v80LrfMAOIMCGfAVPumn7AwaX9S1iU/X3OPZUyoKUgP09q4bxL35IeNPkqNWVKYduAXZ1sg==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^20.17.0 || >=22.9.0" + "cordovaDependencies": { + "3.0.0": { + "cordova": ">100", + "cordova-electron": ">=3.0.0" + } + } } }, - "node_modules/colorette": { - "version": "2.0.19", + "node_modules/cordova-plugin-file": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cordova-plugin-file/-/cordova-plugin-file-8.1.3.tgz", + "integrity": "sha512-KlnP3CapNIsKncoWV5lYcIFYDPl0aZ1J3AH3QESlQX1Cb6Ct0p6GrAUvINyrFsjPbWHj8i0b6la6udVsghbATg==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "engines": { + "cordovaDependencies": { + "5.0.0": { + "cordova-android": ">=6.3.0" + }, + "7.0.0": { + "cordova-android": ">=10.0.0" + }, + "8.0.0": { + "cordova-android": ">=12.0.0" + }, + "9.0.0": { + "cordova": ">100" + } + } + } }, - "node_modules/com.foxdebug.acode.rk.auth": { - "resolved": "src/plugins/auth", + "node_modules/cordova-plugin-ftp": { + "resolved": "src/plugins/ftp", "link": true }, - "node_modules/com.foxdebug.acode.rk.customtabs": { - "resolved": "src/plugins/custom-tabs", + "node_modules/cordova-plugin-iap": { + "resolved": "src/plugins/iap", "link": true }, - "node_modules/com.foxdebug.acode.rk.exec.proot": { - "resolved": "src/plugins/proot", + "node_modules/cordova-plugin-sdcard": { + "resolved": "src/plugins/sdcard", "link": true }, - "node_modules/com.foxdebug.acode.rk.exec.terminal": { - "resolved": "src/plugins/terminal", + "node_modules/cordova-plugin-server": { + "resolved": "src/plugins/server", "link": true }, - "node_modules/com.foxdebug.acode.rk.plugin.plugincontext": { - "resolved": "src/plugins/pluginContext", + "node_modules/cordova-plugin-sftp": { + "resolved": "src/plugins/sftp", "link": true }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" + "node_modules/cordova-plugin-system": { + "resolved": "src/plugins/system", + "link": true }, - "node_modules/common-ancestor-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", - "license": "ISC" + "node_modules/cordova-plugin-websocket": { + "resolved": "src/plugins/websocket", + "link": true + }, + "node_modules/cordova/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/core-js": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", + "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } }, - "node_modules/concat-map": { - "version": "0.0.1", + "node_modules/core-js-pure": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.48.0.tgz", + "integrity": "sha512-1slJgk89tWC51HQ1AEqG+s2VuwpTRr8ocu4n20QUcH1v9lAN0RXen0Q0AABa/DK1I7RrNWLucplOHMx8hfTGTw==", "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "license": "MIT" }, - "node_modules/configstore": { - "version": "5.0.1", - "license": "BSD-2-Clause", + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "license": "MIT", "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" + "layout-base": "^1.0.0" } }, - "node_modules/configstore/node_modules/make-dir": { - "version": "3.1.0", + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=8" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha512-duS7VP5pvfsNLDvL1O4VOEbw37AI3A4ZUQYemvDlnpGrNu9tprR7BYWpDYwC0Xia0Zxz5ZupdiIrUp0GH1aXfg==", - "dev": true, + "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/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { - "date-now": "^0.1.4" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/convert-source-map": { + "node_modules/cross-spawn/node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" }, - "node_modules/cordova": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/cordova/-/cordova-13.0.0.tgz", - "integrity": "sha512-QAIMwmYLL0jHo4vauWSnRd2fr9l+wajG+F5aUkrC6e4ZQGSTv0wAiRmpqQUkIc1ZdELisKDQws/BjHz5nP/sLw==", - "license": "Apache-2.0", + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", "dependencies": { - "configstore": "^5.0.1", - "cordova-common": "^6.0.0", - "cordova-create": "^6.0.0", - "cordova-lib": "^13.0.0", - "editor": "^1.0.0", - "execa": "^5.1.1", - "nopt": "^9.0.0", - "semver": "^7.7.3", - "systeminformation": "^5.27.11" + "isexe": "^2.0.0" }, "bin": { - "cordova": "bin/cordova" - }, - "engines": { - "node": ">=20.17.0 || >=22.9.0" - } - }, - "node_modules/cordova-android": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-14.0.1.tgz", - "integrity": "sha512-HMBMdGu/JlSQtmBuDEpKWf/pE75SpF3FksxZ+mqYuL3qSIN8lN/QsNurwYaPAP7zWXN2DNpvwlpOJItS5VhdLg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "android-versions": "^2.1.0", - "cordova-common": "^5.0.1", - "dedent": "^1.5.3", - "execa": "^5.1.1", - "fast-glob": "^3.3.3", - "is-path-inside": "^3.0.3", - "nopt": "^8.1.0", - "properties-parser": "^0.6.0", - "semver": "^7.7.1", - "string-argv": "^0.3.1", - "untildify": "^4.0.0", - "which": "^5.0.0" + "node-which": "bin/node-which" }, "engines": { - "node": ">=20.5.0" + "node": ">= 8" } }, - "node_modules/cordova-android/node_modules/abbrev": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", - "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", - "dev": true, - "license": "ISC", + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "license": "MIT", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=8" } }, - "node_modules/cordova-android/node_modules/dedent": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", - "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", + "node_modules/css-loader": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.4.tgz", + "integrity": "sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw==", "dev": true, "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.40", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.6.3" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, "peerDependencies": { - "babel-plugin-macros": "^3.1.0" + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", + "webpack": "^5.27.0" }, "peerDependenciesMeta": { - "babel-plugin-macros": { + "@rspack/core": { + "optional": true + }, + "webpack": { "optional": true } } }, - "node_modules/cordova-android/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "node_modules/css-loader/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=16" + "node": ">=10" } }, - "node_modules/cordova-android/node_modules/nopt": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", - "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", - "dev": true, - "license": "ISC", - "dependencies": { - "abbrev": "^3.0.0" - }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", "bin": { - "nopt": "bin/nopt.js" + "cssesc": "bin/cssesc" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=4" } }, - "node_modules/cordova-android/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "node_modules/cytoscape": { + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.33.1.tgz", + "integrity": "sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.10" } }, - "node_modules/cordova-android/node_modules/which": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", - "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", - "dev": true, - "license": "ISC", + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "license": "MIT", "dependencies": { - "isexe": "^3.1.1" + "cose-base": "^1.0.0" }, - "bin": { - "node-which": "bin/which.js" + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "license": "MIT", + "dependencies": { + "cose-base": "^2.2.0" }, - "engines": { - "node": "^18.17.0 || >=20.5.0" + "peerDependencies": { + "cytoscape": "^3.2.0" } }, - "node_modules/cordova-app-hello-world": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cordova-app-hello-world/-/cordova-app-hello-world-7.0.0.tgz", - "integrity": "sha512-uDTncFkI73ko+wEf6IEO9bw8lQRMQGnfdi5pPMei4P8+plChNcRW5fxjKlhM/8ZrT8OAWiHsQRrP4pIAn3HQ4g==", - "license": "Apache-2.0" + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "license": "MIT", + "dependencies": { + "layout-base": "^2.0.0" + } }, - "node_modules/cordova-clipboard": { - "version": "1.3.0", - "dev": true, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", "license": "MIT" }, - "node_modules/cordova-common": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-5.0.1.tgz", - "integrity": "sha512-OA2NQ6wvhNz4GytPYwTdlA9xfG7Yf7ufkj4u97m3rUfoL/AECwwj0GVT2CYpk/0Fk6HyuHA3QYCxfDPYsKzI1A==", - "dev": true, - "license": "Apache-2.0", + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", "dependencies": { - "@netflix/nerror": "^1.1.3", - "ansi": "^0.3.1", - "bplist-parser": "^0.3.2", - "cross-spawn": "^7.0.6", - "elementtree": "^0.1.7", - "endent": "^2.1.0", - "fast-glob": "^3.3.3", - "lodash.zip": "^4.2.0", - "plist": "^3.1.0", - "q": "^1.5.1", - "read-chunk": "^3.2.0", - "strip-bom": "^4.0.0" + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" }, "engines": { - "node": ">=16.0.0" + "node": ">=12" } }, - "node_modules/cordova-create": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cordova-create/-/cordova-create-6.0.0.tgz", - "integrity": "sha512-LD41sLn2GsmAlj3576R3xlUM3BP0rt0CYd5LdbzU82WBI3ApMrrhM6xcHDYJfe1nfSL89O/nb/u/h7+7DhPQeA==", - "license": "Apache-2.0", + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", "dependencies": { - "cordova-app-hello-world": "^7.0.0", - "cordova-common": "^6.0.0", - "cordova-fetch": "^5.0.0", - "globby": "^11.1.0", - "import-fresh": "^3.3.1", - "isobject": "^4.0.0", - "npm-package-arg": "^13.0.0", - "path-is-inside": "^1.0.2", - "tmp": "^0.2.5", - "valid-identifier": "0.0.2" + "internmap": "1 - 2" }, "engines": { - "node": ">=20.17.0 || >=22.9.0" + "node": ">=12" } }, - "node_modules/cordova-create/node_modules/cordova-common": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-6.0.0.tgz", - "integrity": "sha512-16WPC1DuxVdshV3RoQUXqhcJVdhxWGwiFysA4TkYuboqoev6mgt0JuIJFxmQbzR/DuyuONaVe0L0O0Hf1C08Mg==", - "license": "Apache-2.0", + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", "dependencies": { - "@netflix/nerror": "^1.1.3", - "ansi": "^0.3.1", - "bplist-parser": "^0.3.2", - "elementtree": "^0.1.7", - "endent": "^2.1.0", - "fast-glob": "^3.3.3", - "plist": "^3.1.0" + "d3-path": "1 - 3" }, "engines": { - "node": ">=20.9.0" + "node": ">=12" } }, - "node_modules/cordova-create/node_modules/isobject": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", - "license": "MIT", + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/cordova-fetch": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cordova-fetch/-/cordova-fetch-5.0.0.tgz", - "integrity": "sha512-fsYnVfx32AOrFO6tw4EkzSig7WjNhze35dKIzdw20zTQetDKEfWA79PpCaoiSeahGi6O2MdnOFabLhEa8se6jg==", - "license": "Apache-2.0", + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", "dependencies": { - "@npmcli/arborist": "^9.1.3", - "cordova-common": "^6.0.0", - "execa": "^5.1.1", - "npm-package-arg": "^13.0.0", - "pacote": "^21.0.0", - "resolve": "^1.22.10", - "semver": "^7.7.2", - "which": "^5.0.0" + "d3-array": "^3.2.0" }, "engines": { - "node": ">=20.9.0", - "npm": ">=8.1.0" + "node": ">=12" } }, - "node_modules/cordova-fetch/node_modules/cordova-common": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-6.0.0.tgz", - "integrity": "sha512-16WPC1DuxVdshV3RoQUXqhcJVdhxWGwiFysA4TkYuboqoev6mgt0JuIJFxmQbzR/DuyuONaVe0L0O0Hf1C08Mg==", - "license": "Apache-2.0", + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", "dependencies": { - "@netflix/nerror": "^1.1.3", - "ansi": "^0.3.1", - "bplist-parser": "^0.3.2", - "elementtree": "^0.1.7", - "endent": "^2.1.0", - "fast-glob": "^3.3.3", - "plist": "^3.1.0" + "delaunator": "5" }, "engines": { - "node": ">=20.9.0" + "node": ">=12" } }, - "node_modules/cordova-fetch/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", "license": "ISC", "engines": { - "node": ">=16" + "node": ">=12" } }, - "node_modules/cordova-fetch/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/cordova-fetch/node_modules/which": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", - "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", "license": "ISC", "dependencies": { - "isexe": "^3.1.1" + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" }, "bin": { - "node-which": "bin/which.js" + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=12" } }, - "node_modules/cordova-lib": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/cordova-lib/-/cordova-lib-13.0.0.tgz", - "integrity": "sha512-y8WQ+J6JtiU9C72ujvI3p+ScFJkg0VJwNfaUCqk9nPAssw2C6HltHk+ik/WrLUn6uDmwAM6gmfGUIMU2iVrNxA==", - "license": "Apache-2.0", - "dependencies": { - "cordova-common": "^6.0.0", - "cordova-fetch": "^5.0.0", - "detect-indent": "^6.1.0", - "detect-newline": "^3.1.0", - "execa": "^5.1.1", - "globby": "^11.1.0", - "semver": "^7.7.2", - "stringify-package": "^1.0.1", - "write-file-atomic": "^7.0.0" - }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", "engines": { - "node": ">=20.17.0 || >=22.9.0" + "node": ">= 10" } }, - "node_modules/cordova-lib/node_modules/cordova-common": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-6.0.0.tgz", - "integrity": "sha512-16WPC1DuxVdshV3RoQUXqhcJVdhxWGwiFysA4TkYuboqoev6mgt0JuIJFxmQbzR/DuyuONaVe0L0O0Hf1C08Mg==", - "license": "Apache-2.0", + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", "dependencies": { - "@netflix/nerror": "^1.1.3", - "ansi": "^0.3.1", - "bplist-parser": "^0.3.2", - "elementtree": "^0.1.7", - "endent": "^2.1.0", - "fast-glob": "^3.3.3", - "plist": "^3.1.0" + "d3-dsv": "1 - 3" }, "engines": { - "node": ">=20.9.0" + "node": ">=12" } }, - "node_modules/cordova-lib/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/cordova-lib/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", "license": "ISC", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=12" } }, - "node_modules/cordova-lib/node_modules/write-file-atomic": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.0.tgz", - "integrity": "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==", + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", "license": "ISC", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" + "d3-array": "2.5.0 - 3" }, "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=12" } }, - "node_modules/cordova-plugin-advanced-http": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/cordova-plugin-advanced-http/-/cordova-plugin-advanced-http-3.3.1.tgz", - "integrity": "sha512-hESuB3mxIHCUrzb5lm7juda6PSNcC5N8Invizj5wGV2rSldCapiNxMTEpzKR1UVPDDP2XOtBzO0SAYS+3+g/ig==", - "dev": true, - "engines": [ - { - "name": "cordova", - "version": ">=4.0.0" - } - ], - "license": "MIT" - }, - "node_modules/cordova-plugin-browser": { - "resolved": "src/plugins/browser", - "link": true - }, - "node_modules/cordova-plugin-buildinfo": { - "resolved": "src/plugins/cordova-plugin-buildinfo", - "link": true - }, - "node_modules/cordova-plugin-device": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", "engines": { - "cordovaDependencies": { - "3.0.0": { - "cordova": ">100", - "cordova-electron": ">=3.0.0" - } - } + "node": ">=12" } }, - "node_modules/cordova-plugin-file": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cordova-plugin-file/-/cordova-plugin-file-8.0.1.tgz", - "integrity": "sha512-LgFLNQN58xguoJkNc8eGBmg/Vuaah9lY3Nye27OAfWCKalXPRjExIg5r8L3qlfiJxzmzupjrF0M4KdU2Lovm3Q==", - "dev": true, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, "engines": { - "cordovaDependencies": { - "5.0.0": { - "cordova-android": ">=6.3.0" - }, - "7.0.0": { - "cordova-android": ">=10.0.0" - }, - "8.0.0": { - "cordova-android": ">=12.0.0" - }, - "9.0.0": { - "cordova": ">100" - } - } + "node": ">=12" } }, - "node_modules/cordova-plugin-ftp": { - "resolved": "src/plugins/ftp", - "link": true - }, - "node_modules/cordova-plugin-iap": { - "resolved": "src/plugins/iap", - "link": true - }, - "node_modules/cordova-plugin-sdcard": { - "resolved": "src/plugins/sdcard", - "link": true - }, - "node_modules/cordova-plugin-server": { - "resolved": "src/plugins/server", - "link": true - }, - "node_modules/cordova-plugin-sftp": { - "resolved": "src/plugins/sftp", - "link": true - }, - "node_modules/cordova-plugin-system": { - "resolved": "src/plugins/system", - "link": true + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } }, - "node_modules/cordova-plugin-websocket": { - "resolved": "src/plugins/websocket", - "link": true + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", + "engines": { + "node": ">=12" + } }, - "node_modules/cordova/node_modules/cordova-common": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-6.0.0.tgz", - "integrity": "sha512-16WPC1DuxVdshV3RoQUXqhcJVdhxWGwiFysA4TkYuboqoev6mgt0JuIJFxmQbzR/DuyuONaVe0L0O0Hf1C08Mg==", - "license": "Apache-2.0", - "dependencies": { - "@netflix/nerror": "^1.1.3", - "ansi": "^0.3.1", - "bplist-parser": "^0.3.2", - "elementtree": "^0.1.7", - "endent": "^2.1.0", - "fast-glob": "^3.3.3", - "plist": "^3.1.0" - }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", "engines": { - "node": ">=20.9.0" + "node": ">=12" } }, - "node_modules/cordova/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/core-js": { - "version": "3.45.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.45.0.tgz", - "integrity": "sha512-c2KZL9lP4DjkN3hk/an4pWn5b5ZefhRJnAc42n6LJ19kSnbeRbdQZE5dSeE2LBol1OwJD3X1BQvFTAsa8ReeDA==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" } }, - "node_modules/core-js-compat": { - "version": "3.45.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.45.0.tgz", - "integrity": "sha512-gRoVMBawZg0OnxaVv3zpqLLxaHmsubEGyTnqdpI/CEBvX4JadI1dMSHxagThprYRtSVbuQxvi6iUatdPxohHpA==", - "dev": true, - "license": "MIT", + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", "dependencies": { - "browserslist": "^4.25.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "internmap": "^1.0.0" } }, - "node_modules/core-js-pure": { - "version": "3.45.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.45.0.tgz", - "integrity": "sha512-OtwjqcDpY2X/eIIg1ol/n0y/X8A9foliaNt1dSK0gV3J2/zw+89FcNG3mPK+N8YWts4ZFUPxnrAzsxs/lf8yDA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "license": "BSD-3-Clause" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-path": "1" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "license": "MIT" + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=12" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" }, "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/crypto-js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", - "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "license": "MIT", + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/css-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", - "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", - "dev": true, - "license": "MIT", + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" + "d3-path": "^3.1.0" }, "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.27.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "node": ">=12" } }, - "node_modules/css-loader/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "d3-array": "2 - 3" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.5.4", - "dev": true, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "d3-time": "1 - 3" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/css-loader/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } }, - "node_modules/cssesc": { + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { "version": "3.0.0", - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" }, "engines": { - "node": ">=4" + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.14.tgz", + "integrity": "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==", + "license": "MIT", + "dependencies": { + "d3": "^7.9.0", + "lodash-es": "^4.17.21" } }, "node_modules/date-now": { @@ -4729,10 +7492,17 @@ "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==", "license": "MIT" }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true, + "license": "MIT" + }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -4747,8 +7517,92 @@ } }, "node_modules/dedent": { - "version": "0.7.0", - "license": "MIT" + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, "node_modules/detect-indent": { "version": "6.1.0", @@ -4760,17 +7614,14 @@ } }, "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, "license": "Apache-2.0", "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, "engines": { - "node": ">=0.10" + "node": ">=8" } }, "node_modules/detect-newline": { @@ -4782,6 +7633,13 @@ "node": ">=8" } }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "license": "MIT" + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -4794,6 +7652,19 @@ "node": ">=8" } }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -4845,9 +7716,9 @@ } }, "node_modules/dompurify": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz", - "integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.0.tgz", + "integrity": "sha512-nolgK9JcaUXMSmW+j1yaSvaEaoXYHwWyGJlkoCTghc97KgGDDSnpoU/PlEnw63Ah+TGKFOyY+X5LnxaWbCSfXg==", "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" @@ -4865,6 +7736,8 @@ }, "node_modules/dot-prop": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "license": "MIT", "dependencies": { "is-obj": "^2.0.0" @@ -4873,19 +7746,52 @@ "node": ">=8" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, + "license": "MIT" + }, "node_modules/editor": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/editor/-/editor-1.0.0.tgz", + "integrity": "sha512-SoRmbGStwNYHgKfjOrX2L0mUvp9bUVv0uPppZSOMAntEbcFtoC3MKF5b3T6HQPXKIV+QGY3xPO3JK5it5lVkuw==", + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.286", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", - "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "version": "1.5.302", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz", + "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==", "dev": true, "license": "ISC" }, "node_modules/elementtree": { "version": "0.1.7", + "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz", + "integrity": "sha512-wkgGT6kugeQk/P6VZ/f4T+4HB41BVgNBq5CDIZVbQ02nvTVqAiVTbskxxu3eA/X96lMlfYOwnLQpN2v5E1zDEg==", "license": "Apache-2.0", "dependencies": { "sax": "1.1.4" @@ -4894,12 +7800,46 @@ "node": ">= 0.4.0" } }, + "node_modules/emmet": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.11.tgz", + "integrity": "sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==", + "license": "MIT", + "workspaces": [ + "./packages/scanner", + "./packages/abbreviation", + "./packages/css-abbreviation", + "./" + ], + "dependencies": { + "@emmetio/abbreviation": "^2.3.3", + "@emmetio/css-abbreviation": "^2.1.8" + } + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, "node_modules/emojis-list": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": ">= 0.8" } }, "node_modules/encoding": { @@ -4914,6 +7854,8 @@ }, "node_modules/endent": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz", + "integrity": "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==", "license": "MIT", "dependencies": { "dedent": "^0.7.0", @@ -4921,6 +7863,12 @@ "objectorarray": "^1.0.5" } }, + "node_modules/endent/node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "license": "MIT" + }, "node_modules/enhanced-resolve": { "version": "5.19.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", @@ -4939,6 +7887,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -4948,24 +7897,13 @@ }, "node_modules/env-paths": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/envinfo": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", - "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", - "dev": true, - "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", @@ -4973,20 +7911,55 @@ "license": "MIT" }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/escalade": { "version": "3.2.0", @@ -4997,8 +7970,17 @@ "node": ">=6" } }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, "node_modules/escape-string-regexp": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "license": "MIT", "engines": { "node": ">=12" @@ -5009,8 +7991,11 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -5019,10 +8004,26 @@ "node": ">=8.0.0" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -5032,38 +8033,68 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=4.0" } }, "node_modules/esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, "node_modules/events": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.8.x" } }, "node_modules/execa": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", @@ -5092,14 +8123,114 @@ "node": ">= 0.8.0" } }, + "node_modules/exit-hook": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-4.0.0.tgz", + "integrity": "sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/exponential-backoff": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", "license": "Apache-2.0" }, + "node_modules/express": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.3", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.14.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/extsprintf": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", "engines": [ "node >=0.6.0" ], @@ -5107,6 +8238,8 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "license": "MIT" }, @@ -5128,41 +8261,87 @@ }, "node_modules/fast-json-parse": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", + "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", "license": "MIT" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, "node_modules/fastq": { - "version": "1.15.0", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/filesize": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-11.0.2.tgz", - "integrity": "sha512-s/iAeeWLk5BschUIpmdrF8RA8lhFZ/xDZgKw1Tan72oGws1/dFGB06nYEiyyssWUfjKNQTNRlrwMVjO9/hvXDw==", + "version": "11.0.13", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-11.0.13.tgz", + "integrity": "sha512-mYJ/qXKvREuO0uH8LTQJ6v7GsUvVOguqxg2VTwQUkyTPXXRRWPdjuUPVqdBrJQhvci48OHlNGRnux+Slr2Rnvw==", "license": "BSD-3-Clause", "engines": { - "node": ">= 10.4.0" + "node": ">= 10.8.0" } }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -5170,41 +8349,114 @@ "node": ">=8" } }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, "node_modules/find-up": { - "version": "4.1.0", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" }, "funding": { - "type": "patreon", + "type": "github", "url": "https://github.com/sponsors/rawify" } }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fs-minipass": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", @@ -5219,19 +8471,39 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "license": "MIT", "engines": { @@ -5240,15 +8512,17 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", "license": "MIT", "engines": { "node": ">=18" @@ -5257,8 +8531,49 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "license": "MIT", "engines": { "node": ">=10" @@ -5268,19 +8583,17 @@ } }, "node_modules/glob": { - "version": "7.2.3", - "dev": true, - "license": "ISC", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -5288,6 +8601,8 @@ }, "node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -5296,34 +8611,30 @@ "node": ">= 6" } }, + "node_modules/glob-to-regex.js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", + "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/glob-to-regexp": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } + "license": "BSD-2-Clause", + "peer": true }, "node_modules/globby": { "version": "11.1.0", @@ -5345,12 +8656,54 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, + "node_modules/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hachure-fill": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", + "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", + "license": "MIT" + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true, + "license": "MIT" + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -5361,10 +8714,24 @@ "node": ">=8" } }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -5385,18 +8752,38 @@ } }, "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", - "license": "ISC", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, "node_modules/html-tag-js": { - "version": "2.4.15", - "resolved": "https://registry.npmjs.org/html-tag-js/-/html-tag-js-2.4.15.tgz", - "integrity": "sha512-ll1CsDRYPQiUYv8DPUUnDy6k9CTwc7jMObXr7BYV6iuLm7ZUZ4ZSo5CjaU7qh1qL7S4TGaGT+JKqYXksa8dWrg==", + "version": "2.4.16", + "resolved": "https://registry.npmjs.org/html-tag-js/-/html-tag-js-2.4.16.tgz", + "integrity": "sha512-emVNouMF3t2yXpnnjgxCgkMY2W1ZrVC47qsHIJpPKgaH94Nqv355T7E1ZRkV6mWa3vLImHklH7vEcSURDhfq/A==", "license": "MIT" }, "node_modules/htmlparser2": { @@ -5453,6 +8840,56 @@ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", "license": "BSD-2-Clause" }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -5466,6 +8903,31 @@ "node": ">= 14" } }, + "node_modules/http-proxy-middleware": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, "node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", @@ -5481,17 +8943,28 @@ }, "node_modules/human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.18" + } + }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", - "optional": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -5501,6 +8974,8 @@ }, "node_modules/icss-utils": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, "license": "ISC", "engines": { @@ -5533,12 +9008,14 @@ }, "node_modules/immediate": { "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "license": "MIT" }, "node_modules/immutable": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", - "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz", + "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==", "dev": true, "license": "MIT" }, @@ -5558,26 +9035,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-local": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "license": "MIT", "engines": { "node": ">=0.8.19" @@ -5585,6 +9046,9 @@ }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", "dependencies": { @@ -5594,6 +9058,8 @@ }, "node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, "node_modules/ini": { @@ -5605,12 +9071,13 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/interpret": { - "version": "3.1.1", - "dev": true, - "license": "MIT", + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", "engines": { - "node": ">=10.13.0" + "node": ">=12" } }, "node_modules/ip-address": { @@ -5622,11 +9089,35 @@ "node": ">= 12" } }, + "node_modules/ipaddr.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } }, "node_modules/is-core-module": { "version": "2.16.1", @@ -5643,8 +9134,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5652,6 +9161,8 @@ }, "node_modules/is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -5660,16 +9171,51 @@ "node": ">=0.10.0" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-network-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", + "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-obj": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "license": "MIT", "engines": { "node": ">=8" @@ -5685,21 +9231,23 @@ "node": ">=8" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-stream": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "license": "MIT", "engines": { "node": ">=8" @@ -5710,21 +9258,45 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "license": "MIT" }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "license": "MIT" }, "node_modules/isexe": { - "version": "2.0.0", - "license": "ISC" + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } }, "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -5742,12 +9314,20 @@ "lodash": "4.17.21" } }, + "node_modules/java-parser/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -5757,20 +9337,33 @@ "node": ">= 10.13.0" } }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, + "license": "MIT", "bin": { - "jiti": "bin/jiti.js" + "jiti": "lib/jiti-cli.mjs" } }, - "node_modules/js-base64": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", - "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==" - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -5823,6 +9416,13 @@ "jshint": "bin/jshint" } }, + "node_modules/jshint/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/jshint/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -5848,12 +9448,18 @@ } }, "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "dev": true, - "license": "MIT" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-5.0.0.tgz", + "integrity": "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==", + "license": "MIT", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } }, "node_modules/json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT" }, @@ -5868,6 +9474,8 @@ }, "node_modules/json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", "bin": { @@ -5888,6 +9496,8 @@ }, "node_modules/jszip": { "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { "lie": "~3.3.0", @@ -5908,18 +9518,133 @@ "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==", "license": "MIT" }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, + "node_modules/katex": { + "version": "0.16.39", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.39.tgz", + "integrity": "sha512-FR2f6y85+81ZLO0GPhyQ+EJl/E5ILNWltJhpAeOTzRny952Z13x2867lTFDmvMZix//Ux3CuMQ2VkLXRbUwOFg==", + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 12" + } + }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, + "node_modules/langium": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/langium/-/langium-4.2.1.tgz", + "integrity": "sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==", + "license": "MIT", + "dependencies": { + "chevrotain": "~11.1.1", + "chevrotain-allstar": "~0.3.1", + "vscode-languageserver": "~9.0.1", + "vscode-languageserver-textdocument": "~1.0.11", + "vscode-uri": "~3.1.0" + }, + "engines": { + "node": ">=20.10.0", + "npm": ">=10.2.3" + } + }, + "node_modules/langium/node_modules/@chevrotain/cst-dts-gen": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.1.2.tgz", + "integrity": "sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/gast": "11.1.2", + "@chevrotain/types": "11.1.2", + "lodash-es": "4.17.23" + } + }, + "node_modules/langium/node_modules/@chevrotain/gast": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.1.2.tgz", + "integrity": "sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/types": "11.1.2", + "lodash-es": "4.17.23" + } + }, + "node_modules/langium/node_modules/@chevrotain/regexp-to-ast": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.1.2.tgz", + "integrity": "sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==", + "license": "Apache-2.0" + }, + "node_modules/langium/node_modules/@chevrotain/types": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz", + "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", + "license": "Apache-2.0" + }, + "node_modules/langium/node_modules/@chevrotain/utils": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.1.2.tgz", + "integrity": "sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==", + "license": "Apache-2.0" + }, + "node_modules/langium/node_modules/chevrotain": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.1.2.tgz", + "integrity": "sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==", + "license": "Apache-2.0", + "dependencies": { + "@chevrotain/cst-dts-gen": "11.1.2", + "@chevrotain/gast": "11.1.2", + "@chevrotain/regexp-to-ast": "11.1.2", + "@chevrotain/types": "11.1.2", + "@chevrotain/utils": "11.1.2", + "lodash-es": "4.17.23" + } + }, + "node_modules/langium/node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" + }, + "node_modules/launch-editor": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.0.tgz", + "integrity": "sha512-u+9asUHMJ99lA15VRMXw5XKfySFR9dGXwgsgS14YTbUq3GITP58mIM32At90P5fZ+MUId5Yw+IwI/yKub7jnCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" } }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==", + "license": "MIT" + }, "node_modules/lie": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "license": "MIT", "dependencies": { "immediate": "~3.0.5" @@ -5929,12 +9654,14 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/linkify-it": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", "dependencies": { "uc.micro": "^2.0.0" } @@ -5945,6 +9672,7 @@ "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=6.11.5" }, @@ -5955,6 +9683,8 @@ }, "node_modules/loader-utils": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "license": "MIT", "dependencies": { @@ -5967,34 +9697,37 @@ } }, "node_modules/locate-path": { - "version": "5.0.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { - "version": "4.17.21", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "license": "MIT" }, "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true, "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.zip": { - "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true, "license": "MIT" }, @@ -6008,6 +9741,21 @@ "yallist": "^3.0.2" } }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/make-fetch-happen": { "version": "15.0.3", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-15.0.3.tgz", @@ -6057,6 +9805,12 @@ "markdown-it": "*" } }, + "node_modules/markdown-it-emoji": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-3.0.0.tgz", + "integrity": "sha512-+rUD93bXHubA4arpEZO3q80so0qgoFJEKRkRbjKX8RTdca89v2kfyF+xR3i2sQTwql9tpPZPOQN5B+PunspXRg==", + "license": "MIT" + }, "node_modules/markdown-it-footnote": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/markdown-it-footnote/-/markdown-it-footnote-4.0.0.tgz", @@ -6064,9 +9818,9 @@ "license": "MIT" }, "node_modules/markdown-it-github-alerts": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/markdown-it-github-alerts/-/markdown-it-github-alerts-1.0.0.tgz", - "integrity": "sha512-RU3cbB/ewujrDpYNdyabvp4CscZ5J/3D71NWbJW+JSA0nplfutIXDMCwtGWlMLwzgBDAYkFMvYGkigq8nWOVdA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/markdown-it-github-alerts/-/markdown-it-github-alerts-1.0.1.tgz", + "integrity": "sha512-NNATF4QdoGI07hyCitoB2YqJ1YcNVCKT89ut2VtfFY9rkeFCXe/V2lOonKQLpJiq5DjiZZepf97BJx5xOjFIAw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" @@ -6081,22 +9835,175 @@ "integrity": "sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==", "license": "ISC" }, + "node_modules/markdown-it-texmath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/markdown-it-texmath/-/markdown-it-texmath-1.0.0.tgz", + "integrity": "sha512-4hhkiX8/gus+6e53PLCUmUrsa6ZWGgJW2XCW6O0ASvZUiezIK900ZicinTDtG3kAO2kon7oUA/ReWmpW2FByxg==", + "license": "MIT" + }, + "node_modules/marked": { + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", + "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mdurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "4.56.10", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.56.10.tgz", + "integrity": "sha512-eLvzyrwqLHnLYalJP7YZ3wBe79MXktMdfQbvMrVD80K+NhrIukCVBvgP30zTJYEEDh9hZ/ep9z0KOdD7FSHo7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/fs-core": "4.56.10", + "@jsonjoy.com/fs-fsa": "4.56.10", + "@jsonjoy.com/fs-node": "4.56.10", + "@jsonjoy.com/fs-node-builtins": "4.56.10", + "@jsonjoy.com/fs-node-to-fsa": "4.56.10", + "@jsonjoy.com/fs-node-utils": "4.56.10", + "@jsonjoy.com/fs-print": "4.56.10", + "@jsonjoy.com/fs-snapshot": "4.56.10", + "@jsonjoy.com/json-pack": "^1.11.0", + "@jsonjoy.com/util": "^1.9.0", + "glob-to-regex.js": "^1.0.1", + "thingies": "^2.5.0", + "tree-dump": "^1.0.3", + "tslib": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "license": "MIT", "engines": { "node": ">= 8" } }, + "node_modules/mermaid": { + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.13.0.tgz", + "integrity": "sha512-fEnci+Immw6lKMFI8sqzjlATTyjLkRa6axrEgLV2yHTfv8r+h1wjFbV6xeRtd4rUV1cS4EpR9rwp3Rci7TRWDw==", + "license": "MIT", + "dependencies": { + "@braintree/sanitize-url": "^7.1.1", + "@iconify/utils": "^3.0.2", + "@mermaid-js/parser": "^1.0.1", + "@types/d3": "^7.4.3", + "@upsetjs/venn.js": "^2.0.0", + "cytoscape": "^3.33.1", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.2.0", + "d3": "^7.9.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.14", + "dayjs": "^1.11.19", + "dompurify": "^3.3.1", + "katex": "^0.16.25", + "khroma": "^2.1.0", + "lodash-es": "^4.17.23", + "marked": "^16.3.0", + "roughjs": "^4.6.6", + "stylis": "^4.3.6", + "ts-dedent": "^2.2.0", + "uuid": "^11.1.0" + } + }, + "node_modules/mermaid/node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" + }, + "node_modules/mermaid/node_modules/marked": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", + "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/mermaid/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -6111,9 +10018,9 @@ } }, "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -6122,27 +10029,20 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/mime-db": { - "version": "1.52.0", + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">= 0.6" + "node": ">=4" } }, - "node_modules/mime-types/node_modules/mime-db": { + "node_modules/mime-db": { "version": "1.54.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", @@ -6151,17 +10051,35 @@ "node": ">= 0.6" } }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/mini-css-extract-plugin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.3.tgz", - "integrity": "sha512-tRA0+PsS4kLVijnN1w9jUu5lkxBwUk9E8SbgEB5dBJqchE6pVYdawROG6uQtpmAri7tdCK9i7b1bULeVWqS6Ag==", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.10.0.tgz", + "integrity": "sha512-540P2c5dYnJlyJxTaSloliZexv8rji6rY8FhQN+WF/82iHQfA23j/xtJx97L+mXOML27EqksSek/g4eK7jaL3g==", "dev": true, "license": "MIT", "dependencies": { @@ -6179,26 +10097,33 @@ "webpack": "^5.0.0" } }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, + "license": "ISC" + }, "node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -6216,13 +10141,13 @@ } }, "node_modules/minipass-fetch": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.0.tgz", - "integrity": "sha512-fiCdUALipqgPWrOVTz9fw0XhcazULXOSU6ie40DDbX1F49p1dBrSRBuswndTx1x3vEb/g0FT7vC4c4C2u/mh3A==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.1.tgz", + "integrity": "sha512-yHK8pb0iCGat0lDrs/D6RZmCdaBT64tULXjdxjSMAqoDi18Q3qKEUTHypHQZQd9+FYpIS+lkvpq6C/R6SbUeRw==", "license": "MIT", "dependencies": { "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", + "minipass-sized": "^2.0.0", "minizlib": "^3.0.1" }, "engines": { @@ -6293,35 +10218,17 @@ "license": "ISC" }, "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-2.0.0.tgz", + "integrity": "sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==", "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.1.2" }, "engines": { "node": ">=8" } }, - "node_modules/minipass-sized/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, "node_modules/minizlib": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", @@ -6334,23 +10241,61 @@ "node": ">= 18" } }, + "node_modules/mlly": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.1.tgz", + "integrity": "sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.16.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.3" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, "node_modules/mustache": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz", + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==", "license": "MIT", "bin": { "mustache": "bin/mustache" } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -6358,6 +10303,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -6376,6 +10322,8 @@ }, "node_modules/neo-async": { "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, "license": "MIT" }, @@ -6387,10 +10335,20 @@ "license": "MIT", "optional": true }, + "node_modules/node-forge": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, "node_modules/node-gyp": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.1.0.tgz", - "integrity": "sha512-W+RYA8jBnhSr2vrTtlPYPc1K+CSjGpVDRZxcqJcERZ8ND3A1ThWPHRwctTx3qC3oW99jt726jhdz3Y6ky87J4g==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-12.2.0.tgz", + "integrity": "sha512-q23WdzrQv48KozXlr0U1v9dwO/k59NHeSzn6loGcasyf0UnSrtzs8kRxM+mfwJSf0DkX0s43hcqgnSO4/VNthQ==", "license": "MIT", "dependencies": { "env-paths": "^2.2.0", @@ -6400,7 +10358,7 @@ "nopt": "^9.0.0", "proc-log": "^6.0.0", "semver": "^7.3.5", - "tar": "^7.5.2", + "tar": "^7.5.4", "tinyglobby": "^0.2.12", "which": "^6.0.0" }, @@ -6412,18 +10370,18 @@ } }, "node_modules/node-gyp/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "license": "ISC", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=16" + "node": ">=20" } }, "node_modules/node-gyp/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -6433,12 +10391,12 @@ } }, "node_modules/node-gyp/node_modules/which": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", - "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "license": "ISC", "dependencies": { - "isexe": "^3.1.1" + "isexe": "^4.0.0" }, "bin": { "node-which": "bin/which.js" @@ -6469,8 +10427,10 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "license": "MIT", "engines": { @@ -6502,9 +10462,9 @@ } }, "node_modules/npm-install-checks/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -6538,9 +10498,9 @@ } }, "node_modules/npm-package-arg/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -6578,9 +10538,9 @@ } }, "node_modules/npm-pick-manifest/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -6610,6 +10570,8 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "license": "MIT", "dependencies": { "path-key": "^3.0.0" @@ -6618,12 +10580,59 @@ "node": ">=8" } }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/objectorarray": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz", + "integrity": "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==", "license": "ISC" }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", "dependencies": { @@ -6632,6 +10641,8 @@ }, "node_modules/onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -6643,37 +10654,65 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-finally": { - "version": "1.0.0", + "node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", "dev": true, "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" } }, "node_modules/p-limit": { - "version": "2.3.0", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "4.1.0", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-map": { @@ -6688,18 +10727,34 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", + "node_modules/p-retry": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "dev": true, "license": "MIT", + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, "engines": { - "node": ">=6" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/package-manager-detector": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.6.0.tgz", + "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", + "license": "MIT" + }, "node_modules/pacote": { - "version": "21.0.4", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.4.tgz", - "integrity": "sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA==", + "version": "21.3.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.3.1.tgz", + "integrity": "sha512-O0EDXi85LF4AzdjG74GUwEArhdvawi/YOHcsW6IijKNj7wm8IvEWNF5GnfuxNpQ/ZpO3L37+v8hqdVh8GgWYhg==", "license": "ISC", "dependencies": { "@npmcli/git": "^7.0.0", @@ -6729,10 +10784,14 @@ }, "node_modules/pako": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "license": "(MIT AND Zlib)" }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -6755,20 +10814,12 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/parse-conflict-json/node_modules/json-parse-even-better-errors": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-5.0.0.tgz", - "integrity": "sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==", - "license": "MIT", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -6782,13 +10833,40 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-json/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/path-browserify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "dev": true, "license": "MIT" }, + "node_modules/path-data-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", + "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", + "license": "MIT" + }, "node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { @@ -6797,6 +10875,8 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", "engines": { @@ -6811,6 +10891,8 @@ }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "license": "MIT", "engines": { "node": ">=8" @@ -6818,33 +10900,42 @@ }, "node_modules/path-parse": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "license": "MIT" }, "node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", - "license": "ISC", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, + "license": "MIT" + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -6854,6 +10945,12 @@ "node": ">=8" } }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -6862,9 +10959,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", "engines": { "node": ">=12" @@ -6873,23 +10970,15 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "dev": true, + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", "license": "MIT", "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" } }, "node_modules/plist": { @@ -6906,10 +10995,26 @@ "node": ">=10.4.0" } }, + "node_modules/points-on-curve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", + "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==", + "license": "MIT" + }, + "node_modules/points-on-path": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", + "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "license": "MIT", + "dependencies": { + "path-data-parser": "0.1.0", + "points-on-curve": "0.2.0" + } + }, "node_modules/postcss": { - "version": "8.4.33", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", - "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.10.tgz", + "integrity": "sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==", "dev": true, "funding": [ { @@ -6925,24 +11030,26 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/postcss-loader": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", - "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.2.1.tgz", + "integrity": "sha512-k98jtRzthjj3f76MYTs9JTpRqV1RaaMhEU0Lpw9OTmQZQdppg4B30VZ74BojuBHt3F4KyubHJoXCMUeM8Bqeow==", "dev": true, + "license": "MIT", "dependencies": { "cosmiconfig": "^9.0.0", - "jiti": "^1.20.0", - "semver": "^7.5.4" + "jiti": "^2.5.1", + "semver": "^7.6.2" }, "engines": { "node": ">= 18.12.0" @@ -6952,7 +11059,7 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@rspack/core": "0.x || 1.x", + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", "postcss": "^7.0.0 || ^8.0.1", "webpack": "^5.0.0" }, @@ -6965,24 +11072,12 @@ } } }, - "node_modules/postcss-loader/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/postcss-loader/node_modules/semver": { - "version": "7.5.4", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -6990,11 +11085,6 @@ "node": ">=10" } }, - "node_modules/postcss-loader/node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/postcss-modules-extract-imports": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", @@ -7009,14 +11099,14 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", - "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "dev": true, "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.1.0" }, "engines": { @@ -7027,13 +11117,13 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", - "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "dev": true, "license": "ISC", "dependencies": { - "postcss-selector-parser": "^6.0.4" + "postcss-selector-parser": "^7.0.0" }, "engines": { "node": "^10 || ^12 || >= 14" @@ -7044,6 +11134,8 @@ }, "node_modules/postcss-modules-values": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, "license": "ISC", "dependencies": { @@ -7057,8 +11149,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.11", - "dev": true, + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -7070,13 +11163,15 @@ }, "node_modules/postcss-value-parser": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true, "license": "MIT" }, "node_modules/prettier": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "dev": true, "license": "MIT", "bin": { @@ -7090,9 +11185,9 @@ } }, "node_modules/prettier-plugin-java": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-2.7.4.tgz", - "integrity": "sha512-RiRNkumIW9vaDpxirgIPI+oLSRmuCmoVZuTax9i3cWzWnxd+uKyAfDe4efS+ce00owAeh0a1DI5eFaH1xYWNPg==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-2.8.1.tgz", + "integrity": "sha512-tkteH5OSCEb0E7wKnhhUSitr1pGUCUt9M//CwerSNhoalL/qv0jXTeSVBPZ36KC+kZl3nbq4dxh144NuGchACg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -7113,6 +11208,8 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "license": "MIT" }, "node_modules/proggy": { @@ -7155,6 +11252,15 @@ "node": ">=10" } }, + "node_modules/promise-retry/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/properties-parser": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.6.0.tgz", @@ -7165,8 +11271,34 @@ "node": ">= 0.3.1" } }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/punycode": { - "version": "2.3.0", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "license": "MIT", "engines": { @@ -7177,25 +11309,37 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/q": { - "version": "1.5.1", + "node_modules/qs": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/querystringify": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "funding": [ { "type": "github", @@ -7212,18 +11356,49 @@ ], "license": "MIT" }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "^5.1.0" + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/raw-loader": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", "dev": true, "license": "MIT", "dependencies": { @@ -7243,6 +11418,8 @@ }, "node_modules/raw-loader/node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -7258,6 +11435,8 @@ }, "node_modules/raw-loader/node_modules/ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -7266,11 +11445,15 @@ }, "node_modules/raw-loader/node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, "node_modules/raw-loader/node_modules/schema-utils": { - "version": "3.1.1", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "license": "MIT", "dependencies": { @@ -7286,18 +11469,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/read-chunk": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "with-open-file": "^0.1.6" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/read-cmd-shim": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-6.0.0.tgz", @@ -7308,7 +11479,9 @@ } }, "node_modules/readable-stream": { - "version": "2.3.7", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -7320,15 +11493,30 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/rechoir": { - "version": "0.8.0", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", "dependencies": { - "resolve": "^1.20.0" + "picomatch": "^2.2.1" }, "engines": { - "node": ">= 10.13.0" + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/regenerate": { @@ -7339,9 +11527,9 @@ "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", - "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", "dev": true, "license": "MIT", "dependencies": { @@ -7352,18 +11540,18 @@ } }, "node_modules/regexpu-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", - "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.0", + "regenerate-unicode-properties": "^10.2.2", "regjsgen": "^0.8.0", - "regjsparser": "^0.12.0", + "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "unicode-match-property-value-ecmascript": "^2.2.1" }, "engines": { "node": ">=4" @@ -7377,33 +11565,22 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", - "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~3.0.2" + "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/require-from-string": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "license": "MIT", "engines": { @@ -7412,73 +11589,94 @@ }, "node_modules/requires-port": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "dev": true, - "license": "MIT", + "bin": { + "resolve": "bin/resolve" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/reusify": { - "version": "1.0.4", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, + "node_modules/roughjs": { + "version": "4.6.6", + "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", + "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "license": "MIT", + "dependencies": { + "hachure-fill": "^0.5.2", + "path-data-parser": "^0.1.0", + "points-on-curve": "^0.2.0", + "points-on-path": "^0.2.1" + } + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { "type": "github", @@ -7498,21 +11696,28 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, "node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT", - "optional": true + "license": "MIT" }, "node_modules/sass": { - "version": "1.90.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz", - "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==", + "version": "1.97.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", + "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==", "dev": true, "license": "MIT", "dependencies": { @@ -7531,9 +11736,9 @@ } }, "node_modules/sass-loader": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz", - "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==", + "version": "16.0.7", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.7.tgz", + "integrity": "sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA==", "dev": true, "license": "MIT", "dependencies": { @@ -7547,7 +11752,7 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@rspack/core": "0.x || 1.x", + "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", "sass-embedded": "*", @@ -7603,6 +11808,8 @@ }, "node_modules/sax": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", + "integrity": "sha512-5f3k2PbGGp+YtKJjOItpg3P99IMD84E4HOvcfleTb5joCHNXYLsR9yWFPOYGgaeMPDubQILTCMdsFb2OMeOjtg==", "license": "ISC" }, "node_modules/schema-utils": { @@ -7625,42 +11832,211 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true, + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "license": "ISC", "bin": { "semver": "bin/semver.js" } }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "randombytes": "^2.1.0" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/setimmediate": { - "version": "1.0.5", + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, "license": "MIT" }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "node_modules/serve-index": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.2.tgz", + "integrity": "sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^6.0.2" + "accepts": "~1.3.8", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.8.0", + "mime-types": "~2.1.35", + "parseurl": "~1.3.3" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -7671,32 +12047,140 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "license": "ISC" }, "node_modules/sigstore": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-4.0.0.tgz", - "integrity": "sha512-Gw/FgHtrLM9WP8P5lLcSGh9OQcrTruWCELAiS48ik1QbL0cH+dfjomiRTUE9zzz+D1N6rOLkwXUvVmXZAsNE0Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-4.1.0.tgz", + "integrity": "sha512-/fUgUhYghuLzVT/gaJoeVehLCgZiUxPCPMcyVNY0lIf/cTCz58K/WTI7PefDarXxp9nUKpEwg1yyz3eSBMTtgA==", "license": "Apache-2.0", "dependencies": { "@sigstore/bundle": "^4.0.0", - "@sigstore/core": "^3.0.0", + "@sigstore/core": "^3.1.0", "@sigstore/protobuf-specs": "^0.5.0", - "@sigstore/sign": "^4.0.0", - "@sigstore/tuf": "^4.0.0", - "@sigstore/verify": "^3.0.0" + "@sigstore/sign": "^4.1.0", + "@sigstore/tuf": "^4.0.1", + "@sigstore/verify": "^3.1.0" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -7716,6 +12200,18 @@ "npm": ">= 3.0.0" } }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, "node_modules/socks": { "version": "2.8.7", "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", @@ -7745,17 +12241,19 @@ } }, "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "dev": true, "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" + "node": ">= 12" } }, "node_modules/source-map-js": { - "version": "1.0.2", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -7768,43 +12266,92 @@ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "license": "Apache-2.0", + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "license": "CC0-1.0" + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "license": "MIT", "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" } }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, "license": "MIT", "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.22", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", - "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", - "license": "CC0-1.0" - }, "node_modules/sprintf": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/sprintf/-/sprintf-0.1.5.tgz", @@ -7817,9 +12364,9 @@ } }, "node_modules/ssri": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz", - "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.1.tgz", + "integrity": "sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==", "license": "ISC", "dependencies": { "minipass": "^7.0.3" @@ -7828,8 +12375,20 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" @@ -7845,6 +12404,23 @@ "node": ">=0.6.19" } }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/stringify-package": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", @@ -7852,16 +12428,25 @@ "deprecated": "This module is not used anymore, and has been replaced by @npmcli/package-json", "license": "ISC" }, - "node_modules/strip-bom": { - "version": "4.0.0", - "dev": true, + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "license": "MIT", "engines": { "node": ">=6" @@ -7897,24 +12482,35 @@ "webpack": "^5.27.0" } }, + "node_modules/style-mod": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.3.tgz", + "integrity": "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==", + "license": "MIT" + }, + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "license": "MIT" + }, "node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -7924,9 +12520,9 @@ } }, "node_modules/systeminformation": { - "version": "5.27.14", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.27.14.tgz", - "integrity": "sha512-3DoNDYSZBLxBwaJtQGWNpq0fonga/VZ47HY1+7/G3YoIPaPz93Df6egSzzTKbEMmlzUpy3eQ0nR9REuYIycXGg==", + "version": "5.31.1", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.31.1.tgz", + "integrity": "sha512-6pRwxoGeV/roJYpsfcP6tN9mep6pPeCtXbUOCdVa0nme05Brwcwdge/fVNhIZn2wuUitAKZm4IYa7QjnRIa9zA==", "license": "MIT", "os": [ "darwin", @@ -7964,9 +12560,9 @@ } }, "node_modules/tar": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.7.tgz", - "integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==", + "version": "7.5.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.11.tgz", + "integrity": "sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", @@ -8006,6 +12602,7 @@ "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", @@ -8020,16 +12617,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.16", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", - "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { @@ -8054,6 +12651,39 @@ } } }, + "node_modules/thingies": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", + "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "^2" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -8070,23 +12700,6 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, "node_modules/tmp": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", @@ -8100,6 +12713,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -8107,6 +12721,43 @@ "node": ">=8.0" } }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tree-dump": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", + "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/treeverse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", @@ -8116,36 +12767,146 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "license": "MIT", + "engines": { + "node": ">=6.10" + } + }, + "node_modules/ts-loader": { + "version": "9.5.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", + "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/tuf-js": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-4.0.0.tgz", - "integrity": "sha512-Lq7ieeGvXDXwpoSmOSgLWVdsGGV9J4a77oDTAPe/Ltrqnnm/ETaRlBAQTH5JatEh8KXuE6sddf9qAv1Q2282Hg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-4.1.0.tgz", + "integrity": "sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==", "license": "MIT", "dependencies": { - "@tufjs/models": "4.0.0", - "debug": "^4.4.1", - "make-fetch-happen": "^15.0.0" + "@tufjs/models": "4.1.0", + "debug": "^4.4.3", + "make-fetch-happen": "^15.0.1" }, "engines": { "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "license": "MIT" }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, @@ -8174,9 +12935,9 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", - "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "dev": true, "license": "MIT", "engines": { @@ -8184,9 +12945,9 @@ } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "dev": true, "license": "MIT", "engines": { @@ -8219,6 +12980,8 @@ }, "node_modules/unique-string": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "license": "MIT", "dependencies": { "crypto-random-string": "^2.0.0" @@ -8227,6 +12990,16 @@ "node": ">=8" } }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -8270,6 +13043,8 @@ }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -8278,6 +13053,8 @@ }, "node_modules/url-parse": { "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "license": "MIT", "dependencies": { "querystringify": "^2.1.1", @@ -8286,42 +13063,119 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/valid-identifier": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/valid-identifier/-/valid-identifier-0.0.2.tgz", "integrity": "sha512-zaSmOW6ykXwrkX0YTuFUSoALNEKGaQHpxBJQLb3TXspRNDpBwbfrIQCZqAQ0LKBlKuyn2YOq7NNd6415hvZ33g==", "license": "Apache-2.0" }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "node_modules/validate-npm-package-name": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.0.tgz", - "integrity": "sha512-bwVk/OK+Qu108aJcMAEiU4yavHUI7aN20TgZNBj9MR2iU1zPUl1Z1Otr7771ExfYTPTvfN8ZJ1pbr5Iklgt4xg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz", + "integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==", "license": "ISC", "engines": { "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/vanilla-picker": { - "version": "2.12.3", - "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.12.3.tgz", - "integrity": "sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==", - "license": "ISC", + "node_modules/vanilla-picker": { + "version": "2.12.3", + "resolved": "https://registry.npmjs.org/vanilla-picker/-/vanilla-picker-2.12.3.tgz", + "integrity": "sha512-qVkT1E7yMbUsB2mmJNFmaXMWE2hF8ffqzMMwe9zdAikd8u2VfnsVY2HQcOUi2F38bgbxzlJBEdS1UUhOXdF9GQ==", + "license": "ISC", + "dependencies": { + "@sphinxxxx/color-conversion": "^2.2.2" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", "dependencies": { - "@sphinxxxx/color-conversion": "^2.2.2" + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" } }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "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" + }, "node_modules/walk-up-path": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-4.0.0.tgz", @@ -8337,6 +13191,7 @@ "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -8345,12 +13200,23 @@ "node": ">=10.13.0" } }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, "node_modules/webpack": { - "version": "5.105.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.0.tgz", - "integrity": "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==", + "version": "5.105.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.2.tgz", + "integrity": "sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -8394,90 +13260,203 @@ } } }, - "node_modules/webpack-cli": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", - "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", + "node_modules/webpack-bundle-analyzer": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", + "integrity": "sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==", "dev": true, "license": "MIT", "dependencies": { - "@discoveryjs/json-ext": "^0.6.1", - "@webpack-cli/configtest": "^3.0.1", - "@webpack-cli/info": "^3.0.1", - "@webpack-cli/serve": "^3.0.1", - "colorette": "^2.0.14", - "commander": "^12.1.0", - "cross-spawn": "^7.0.3", - "envinfo": "^7.14.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^6.0.1" + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", + "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", + "opener": "^1.5.2", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", + "ws": "^7.3.1" }, "bin": { - "webpack-cli": "bin/cli.js" + "webpack-bundle-analyzer": "lib/bin/analyzer.js" }, "engines": { - "node": ">=18.12.0" + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.3.0" }, "peerDependencies": { - "webpack": "^5.82.0" + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" }, "peerDependenciesMeta": { - "webpack-bundle-analyzer": { + "bufferutil": { "optional": true }, - "webpack-dev-server": { + "utf-8-validate": { "optional": true } } }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "node_modules/webpack-dev-middleware": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", + "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", "dev": true, "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^4.43.1", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, "engines": { - "node": ">=18" + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, - "node_modules/webpack-merge": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", - "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.1" + "node_modules/webpack-dev-server": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", + "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/express-serve-static-core": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "express": "^4.21.2", + "graceful-fs": "^4.2.6", + "http-proxy-middleware": "^2.0.9", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" }, "engines": { - "node": ">=18.0.0" + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } } }, "node_modules/webpack-sources": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", - "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", + "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=10.13.0" } }, + "node_modules/webpack/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/webpack/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/webpack/node_modules/mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "mime-db": "1.52.0" }, @@ -8485,43 +13464,50 @@ "node": ">= 0.6" } }, - "node_modules/which": { - "version": "2.0.2", - "license": "ISC", + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" }, "engines": { - "node": ">= 8" + "node": ">=0.8.0" } }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } }, - "node_modules/with-open-file": { - "version": "0.1.7", - "dev": true, - "license": "MIT", + "node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "license": "ISC", "dependencies": { - "p-finally": "^1.0.0", - "p-try": "^2.1.0", - "pify": "^4.0.1" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": ">=6" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", "license": "MIT", "dependencies": { "ansi-styles": "^6.2.1", @@ -8535,22 +13521,10 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "license": "MIT", "engines": { "node": ">=12" @@ -8559,51 +13533,17 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC" }, "node_modules/write-file-atomic": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -8612,8 +13552,48 @@ "typedarray-to-buffer": "^3.1.5" } }, + "node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xdg-basedir": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "license": "MIT", "engines": { "node": ">=8" @@ -8630,6 +13610,8 @@ }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "license": "ISC", "engines": { "node": ">=10" @@ -8668,56 +13650,6 @@ "node": "^20.19.0 || ^22.12.0 || >=23" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "license": "MIT" - }, - "node_modules/yargs/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -8779,12 +13711,6 @@ "dev": true, "license": "MIT" }, - "src/plugins/Executor": { - "name": "com.foxdebug.acode.rk.exec.terminal", - "version": "1.0.0", - "extraneous": true, - "license": "MIT" - }, "src/plugins/ftp": { "name": "cordova-plugin-ftp", "version": "1.1.1", @@ -8815,12 +13741,6 @@ "dev": true, "license": "ISC" }, - "src/plugins/secrets": { - "name": "com.foxdebug.acode.rk.secrets", - "version": "1.0.0", - "extraneous": true, - "license": "MIT" - }, "src/plugins/server": { "name": "cordova-plugin-server", "version": "1.0.0", diff --git a/package.json b/package.json index d4e6acefd..f2a2a811d 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "lint": "biome lint --write", "format": "biome format --write", "check": "biome check --write", + "typecheck": "tsc --noEmit", "updateAce": "node ./utils/updateAce.js" }, "keywords": [ @@ -36,12 +37,12 @@ "cordova-plugin-buildinfo": {}, "cordova-plugin-browser": {}, "cordova-plugin-sftp": {}, - "cordova-plugin-system": {}, "com.foxdebug.acode.rk.exec.proot": {}, "com.foxdebug.acode.rk.exec.terminal": {}, "com.foxdebug.acode.rk.customtabs": {}, "com.foxdebug.acode.rk.plugin.plugincontext": {}, - "com.foxdebug.acode.rk.auth": {} + "com.foxdebug.acode.rk.auth": {}, + "cordova-plugin-system": {} }, "platforms": [ "android" @@ -56,28 +57,31 @@ }, "homepage": "https://github.com/deadlyjack/acode#readme", "devDependencies": { - "@babel/core": "^7.28.0", - "@babel/plugin-transform-runtime": "^7.28.0", - "@babel/preset-env": "^7.28.0", - "@babel/runtime": "^7.28.2", - "@babel/runtime-corejs3": "^7.28.2", - "@biomejs/biome": "2.1.4", + "@babel/core": "^7.28.5", + "@babel/plugin-transform-runtime": "^7.28.5", + "@babel/preset-env": "^7.28.5", + "@babel/preset-typescript": "^7.28.5", + "@babel/runtime": "^7.28.4", + "@babel/runtime-corejs3": "^7.28.4", + "@biomejs/biome": "2.4.11", + "@rspack/cli": "^1.7.0", + "@rspack/core": "^1.7.0", "@types/ace": "^0.0.52", "@types/url-parse": "^1.4.11", - "autoprefixer": "^10.4.21", + "autoprefixer": "^10.4.22", "babel-loader": "^10.0.0", "com.foxdebug.acode.rk.auth": "file:src/plugins/auth", "com.foxdebug.acode.rk.customtabs": "file:src/plugins/custom-tabs", "com.foxdebug.acode.rk.exec.proot": "file:src/plugins/proot", "com.foxdebug.acode.rk.exec.terminal": "file:src/plugins/terminal", "com.foxdebug.acode.rk.plugin.plugincontext": "file:src/plugins/pluginContext", - "cordova-android": "^14.0.1", + "cordova-android": "^15.0.0", "cordova-clipboard": "^1.3.0", "cordova-plugin-advanced-http": "^3.3.1", "cordova-plugin-browser": "file:src/plugins/browser", "cordova-plugin-buildinfo": "file:src/plugins/cordova-plugin-buildinfo", - "cordova-plugin-device": "^2.0.3", - "cordova-plugin-file": "^8.0.1", + "cordova-plugin-device": "^2.1.0", + "cordova-plugin-file": "^8.1.3", "cordova-plugin-ftp": "file:src/plugins/ftp", "cordova-plugin-iap": "file:src/plugins/iap", "cordova-plugin-sdcard": "file:src/plugins/sdcard", @@ -86,21 +90,56 @@ "cordova-plugin-system": "file:src/plugins/system", "cordova-plugin-websocket": "file:src/plugins/websocket", "css-loader": "^7.1.2", - "mini-css-extract-plugin": "^2.9.3", + "mini-css-extract-plugin": "^2.9.4", "path-browserify": "^1.0.1", - "postcss-loader": "^8.1.1", - "prettier": "^3.6.2", - "prettier-plugin-java": "^2.7.4", + "postcss-loader": "^8.2.0", + "prettier": "^3.7.4", + "prettier-plugin-java": "^2.7.7", "raw-loader": "^4.0.2", - "sass": "^1.90.0", - "sass-loader": "^16.0.5", + "sass": "^1.94.2", + "sass-loader": "^16.0.6", "style-loader": "^4.0.0", "terminal": "^0.1.4", - "webpack": "^5.105.0", - "webpack-cli": "^6.0.1" + "ts-loader": "^9.5.4", + "typescript": "^5.9.3", + "vscode-languageserver-types": "^3.17.5" }, "dependencies": { + "@codemirror/autocomplete": "^6.20.1", + "@codemirror/commands": "^6.10.3", + "@codemirror/lang-angular": "^0.1.4", + "@codemirror/lang-cpp": "^6.0.3", + "@codemirror/lang-css": "^6.3.1", + "@codemirror/lang-go": "^6.0.1", + "@codemirror/lang-html": "^6.4.11", + "@codemirror/lang-java": "^6.0.2", + "@codemirror/lang-javascript": "^6.2.5", + "@codemirror/lang-jinja": "^6.0.0", + "@codemirror/lang-json": "^6.0.2", + "@codemirror/lang-less": "^6.0.2", + "@codemirror/lang-liquid": "^6.3.2", + "@codemirror/lang-markdown": "^6.5.0", + "@codemirror/lang-php": "^6.0.2", + "@codemirror/lang-python": "^6.2.1", + "@codemirror/lang-rust": "^6.0.2", + "@codemirror/lang-sass": "^6.0.2", + "@codemirror/lang-sql": "^6.10.0", + "@codemirror/lang-vue": "^0.1.3", + "@codemirror/lang-wast": "^6.0.2", + "@codemirror/lang-xml": "^6.1.0", + "@codemirror/lang-yaml": "^6.1.2", + "@codemirror/language": "^6.12.2", + "@codemirror/language-data": "^6.5.2", + "@codemirror/legacy-modes": "^6.5.2", + "@codemirror/lint": "^6.9.5", + "@codemirror/lsp-client": "^6.2.2", + "@codemirror/search": "^6.6.0", + "@codemirror/state": "^6.6.0", + "@codemirror/theme-one-dark": "^6.1.3", + "@codemirror/view": "^6.40.0", "@deadlyjack/ajax": "^1.2.6", + "@emmetio/codemirror6-plugin": "^0.4.0", + "@lezer/highlight": "^1.2.3", "@ungap/custom-elements": "^1.3.0", "@xterm/addon-attach": "^0.11.0", "@xterm/addon-fit": "^0.10.0", @@ -112,27 +151,40 @@ "@xterm/xterm": "^5.5.0", "acorn": "^8.15.0", "autosize": "^6.0.1", + "codemirror": "^6.0.2", "cordova": "13.0.0", - "core-js": "^3.45.0", - "crypto-js": "^4.2.0", + "core-js": "^3.47.0", "dayjs": "^1.11.19", - "dompurify": "^3.2.6", + "dompurify": "^3.4.0", "escape-string-regexp": "^5.0.0", - "filesize": "^11.0.2", - "html-tag-js": "^2.4.15", - "js-base64": "^3.7.7", + "esprima": "^4.0.1", + "filesize": "^11.0.13", + "html-tag-js": "^2.4.16", "jszip": "^3.10.1", + "katex": "^0.16.39", "markdown-it": "^14.1.1", "markdown-it-anchor": "^9.2.0", + "markdown-it-emoji": "^3.0.0", "markdown-it-footnote": "^4.0.0", "markdown-it-github-alerts": "^1.0.0", "markdown-it-task-lists": "^2.1.1", + "markdown-it-texmath": "^1.0.0", + "mermaid": "^11.13.0", "mime-types": "^3.0.1", "mustache": "^4.2.0", - "picomatch": "^4.0.3", + "picomatch": "^4.0.4", "url-parse": "^1.5.10", "vanilla-picker": "^2.12.3", "yargs": "^18.0.0" }, + "overrides": { + "@codemirror/autocomplete": "^6.20.1", + "@codemirror/commands": "^6.10.3", + "@codemirror/language": "^6.12.2", + "@codemirror/lint": "^6.9.5", + "@codemirror/search": "^6.6.0", + "@codemirror/state": "^6.6.0", + "@codemirror/view": "^6.40.0" + }, "browserslist": "cover 100%,not android < 5" } diff --git a/res/android/values/colors.xml b/res/android/values/colors.xml index 6b5433be0..dabd610cd 100644 --- a/res/android/values/colors.xml +++ b/res/android/values/colors.xml @@ -1,4 +1,4 @@ - #3a3e54 - \ No newline at end of file + #FFFFFF + diff --git a/res/android/values/themes.xml b/res/android/values/themes.xml index feed35132..62745020d 100644 --- a/res/android/values/themes.xml +++ b/res/android/values/themes.xml @@ -1,13 +1,10 @@ - diff --git a/res/android/xml/network_security_config.xml b/res/android/xml/network_security_config.xml index 855a5e4c7..bac920830 100644 --- a/res/android/xml/network_security_config.xml +++ b/res/android/xml/network_security_config.xml @@ -5,11 +5,4 @@ - - - * - localhost - - - - + \ No newline at end of file diff --git a/rspack.config.js b/rspack.config.js new file mode 100644 index 000000000..2a882aa26 --- /dev/null +++ b/rspack.config.js @@ -0,0 +1,147 @@ +const path = require('path'); +const { rspack } = require('@rspack/core'); + +module.exports = (env, options) => { + const { mode = 'development' } = options; + const prod = mode === 'production'; + + const rules = [ + // TypeScript/TSX files - Custom JSX loader + SWC + { + test: /\.tsx?$/, + exclude: /node_modules/, + use: [ + { + loader: 'builtin:swc-loader', + options: { + jsc: { + parser: { + syntax: 'typescript', + tsx: false, + }, + transform: { + // react: { + // pragma: 'tag', + // pragmaFrag: 'Array', + // throwIfNamespace: false, + // development: false, + // useBuiltins: false, + // runtime: 'classic', + // }, + }, + target: 'es2015', + }, + }, + }, + path.resolve(__dirname, 'utils/custom-loaders/html-tag-jsx-loader.js'), + ], + }, + // JavaScript files + { + test: /\.m?js$/, + oneOf: [ + // Node modules - use builtin:swc-loader only + { + include: /node_modules/, + use: [ + { + loader: 'builtin:swc-loader', + options: { + jsc: { + parser: { + syntax: 'ecmascript', + }, + target: 'es2015', + }, + }, + }, + ], + }, + // Source JS files - Custom JSX loader + SWC (JSX will be removed first) + { + use: [ + { + loader: 'builtin:swc-loader', + options: { + jsc: { + parser: { + syntax: 'ecmascript', + jsx: false, + }, + target: 'es2015', + }, + }, + }, + path.resolve(__dirname, 'utils/custom-loaders/html-tag-jsx-loader.js'), + ], + }, + ], + }, + // Handlebars and Markdown files + { + test: /\.(hbs|md)$/, + type: 'asset/source', + }, + // Module CSS/SCSS (with .m prefix) + { + test: /\.m\.(sa|sc|c)ss$/, + use: [ + 'raw-loader', + 'postcss-loader', + 'sass-loader', + ], + type: 'javascript/auto', + }, + // Asset files + { + test: /\.(png|svg|jpg|jpeg|ico|ttf|webp|eot|woff|webm|mp4|wav)(\?.*)?$/, + type: 'asset/resource', + }, + // Regular CSS/SCSS files + { + test: /(? { - if (file.session) { - file.session._addedColorRule = false; - } - }); - } - - onChangeMode(); - } -} - -export function deactivateColorView() { - const { renderer } = editor; - - changedRules.forEach((rule) => rule.shift()); - changedRules.length = 0; - forceTokenizer(); - - editor.off("changeMode", onChangeMode); - renderer.off("afterRender", afterRender); -} - -/** - * Checks if the session supports color - * @param {AceAjax.IEditSession} session - * @returns - */ -function sessionSupportsColor(session) { - const mode = session.getMode().$id.split("/").pop(); - return /css|less|scss|sass|stylus|html|svg|dart/.test(mode) ? mode : false; -} - -function onChangeMode() { - const session = editor.session; - let forceUpdate = false; - - // if mode is not css, scss, sass, less, stylus, or html, return - const mode = sessionSupportsColor(session); - if (session._addedColorRule || !mode) { - return; - } - - let rules = session.$mode.$highlightRules.getRules(); - - if (mode === "css") { - rules = { ruleset: rules["ruleset"] }; - } else if (mode === "html") { - rules = { "css-ruleset": rules["css-ruleset"] }; - } else if (mode === "svg") { - const svgColorAttrs = [ - "fill", - "stroke", - "stop-color", - "flood-color", - "lighting-color", - ]; - Object.keys(rules).forEach((key) => { - const rule = rules[key]; - if (Array.isArray(rule)) { - rule.unshift({ - token: "color", - regex: `(?<=\\b(?:${svgColorAttrs.join("|")})\\s*=\\s*["'])(${HEX}|${RGB}|${RGBA}|${HSL}|${HSLA}|\\w+)(?=["'])`, - }); - rule.unshift({ - token: "color", - regex: `(?<=style\\s*=\\s*["'][^"']*(?:${svgColorAttrs.join("|")})\\s*:\\s*)(${HEX}|${RGB}|${RGBA}|${HSL}|${HSLA}|\\w+)(?=\\s*[;'"])`, - }); - changedRules.push(rule); - forceUpdate = true; - } - }); - } - - Object.keys(rules).forEach((key) => { - const rule = rules[key]; - if (Array.isArray(rule)) { - const ruleExists = rule.some((r) => r.token === "color"); - if (ruleExists) return; - forceUpdate = true; - rule.unshift({ - token: "color", - regex: `${HEX}|${RGB}|${RGBA}|${HSL}|${HSLA}`, - }); - changedRules.push(rule); - return; - } - }); - - if (!forceUpdate) return; - - forceTokenizer(); -} - -function afterRender() { - const { session, renderer } = editor; - const { content } = renderer; - let classes = COLORPICKER_TOKEN_CLASS; - - // if session is css, scss, less, sass, stylus, or html (with css mode), continue - - const mode = sessionSupportsColor(session); - if (!mode) { - return; - } - - if (mode === "scss") { - classes += ",.ace_function"; - } - - content - .getAll(COLORPICKER_TOKEN_CLASS) - .forEach((/**@type {HTMLElement} */ el, i, els) => { - let content = el.textContent; - const previousContent = els[i - 1]?.textContent; - const nextContent = els[i + 1]?.textContent; - const multiLinePrev = previousContent + content; - const multiLineNext = content + nextContent; - - if (el.dataset.modified === "true") return; - el.dataset.modified = "true"; - - if (mode === "svg" && content in NAMED_COLORS) { - content = NAMED_COLORS[content]; - } - - if (!isValidColor(content)) { - if (isValidColor(multiLinePrev)) { - content = multiLinePrev; - } else if (isValidColor(multiLineNext)) { - content = multiLineNext; - } else { - return; - } - } - - try { - const fontColorString = - Color(content).luminance > 0.5 ? "#000" : "#fff"; - el.classList.add("ace_color"); - el.style.cssText = `background-color: ${content}; color: ${fontColorString}; pointer-events: all;`; - } catch (error) { - window.log("error", `Invalid color: ${content}`); - window.log("error", error); - } - }); -} - -function forceTokenizer() { - const { session } = editor; - // force recreation of tokenizer - session.$mode.$tokenizer = null; - session.bgTokenizer.setTokenizer(session.$mode.getTokenizer()); - // force re-highlight whole document - session.bgTokenizer.start(0); -} diff --git a/src/ace/commands.js b/src/ace/commands.js deleted file mode 100644 index 2a108159b..000000000 --- a/src/ace/commands.js +++ /dev/null @@ -1,442 +0,0 @@ -import fsOperation from "fileSystem"; -import prompt from "dialogs/prompt"; -import actions from "handlers/quickTools"; -import keyBindings from "lib/keyBindings"; -import settings from "lib/settings"; -import Url from "utils/Url"; - -const commands = [ - { - name: "focusEditor", - description: "Focus editor", - exec() { - editorManager.editor.focus(); - }, - }, - { - name: "findFile", - description: "Find file in workspace", - exec() { - acode.exec("find-file"); - }, - }, - { - name: "closeCurrentTab", - description: "Close current tab", - exec() { - acode.exec("close-current-tab"); - }, - }, - { - name: "closeAllTabs", - description: "Close all tabs", - exec() { - acode.exec("close-all-tabs"); - }, - }, - { - name: "newFile", - description: "Create new file", - exec() { - acode.exec("new-file"); - }, - readOnly: true, - }, - { - name: "openFile", - description: "Open a file", - exec() { - acode.exec("open-file"); - }, - readOnly: true, - }, - { - name: "openFolder", - description: "Open a folder", - exec() { - acode.exec("open-folder"); - }, - readOnly: true, - }, - { - name: "saveFile", - description: "Save current file", - exec() { - acode.exec("save"); - }, - readOnly: true, - }, - { - name: "saveFileAs", - description: "Save as current file", - exec() { - acode.exec("save-as"); - }, - readOnly: true, - }, - { - name: "saveAllChanges", - description: "Save all changes", - exec() { - acode.exec("save-all-changes"); - }, - readOnly: true, - }, - { - name: "nextFile", - description: "Open next file tab", - exec() { - acode.exec("next-file"); - }, - }, - { - name: "prevFile", - description: "Open previous file tab", - exec() { - acode.exec("prev-file"); - }, - }, - { - name: "showSettingsMenu", - description: "Show settings menu", - exec() { - acode.exec("open", "settings"); - }, - readOnly: true, - }, - { - name: "renameFile", - description: "Rename active file", - exec() { - acode.exec("rename"); - }, - readOnly: true, - }, - { - name: "run", - description: "Preview HTML and MarkDown", - exec() { - acode.exec("run"); - }, - readOnly: true, - }, - { - name: "openInAppBrowser", - description: "Open In-App Browser", - async exec() { - const url = await prompt("Enter url", "", "url", { - placeholder: "http://", - match: /^https?:\/\/.+/, - }); - if (url) { - acode.exec("open-inapp-browser", url); - } - }, - }, - { - name: "toggleFullscreen", - description: "Toggle full screen mode", - exec() { - acode.exec("toggle-fullscreen"); - }, - }, - { - name: "toggleSidebar", - description: "Toggle sidebar", - exec() { - acode.exec("toggle-sidebar"); - }, - }, - { - name: "toggleMenu", - description: "Toggle main menu", - exec() { - acode.exec("toggle-menu"); - }, - }, - { - name: "toggleEditMenu", - description: "Toggle edit menu", - exec() { - acode.exec("toggle-editmenu"); - }, - }, - { - name: "selectall", - description: "Select all", - exec(editor) { - editor.selectAll(); - }, - readOnly: true, - }, - { - name: "gotoline", - description: "Go to line...", - exec() { - acode.exec("goto"); - }, - readOnly: true, - }, - { - name: "find", - description: "Find", - exec() { - acode.exec("find"); - }, - readOnly: true, - }, - { - name: "copy", - description: "Copy", - exec(editor) { - const { clipboard } = cordova.plugins; - const copyText = editor.getCopyText(); - clipboard.copy(copyText); - toast(strings["copied to clipboard"]); - }, - readOnly: true, - }, - { - name: "cut", - description: "Cut", - exec(editor) { - let cutLine = - editor.$copyWithEmptySelection && editor.selection.isEmpty(); - let range = cutLine - ? editor.selection.getLineRange() - : editor.selection.getRange(); - editor._emit("cut", range); - if (!range.isEmpty()) { - const { clipboard } = cordova.plugins; - const copyText = editor.session.getTextRange(range); - clipboard.copy(copyText); - toast(strings["copied to clipboard"]); - editor.session.remove(range); - } - editor.clearSelection(); - }, - scrollIntoView: "cursor", - multiSelectAction: "forEach", - }, - { - name: "paste", - description: "Paste", - exec() { - const { clipboard } = cordova.plugins; - clipboard.paste((text) => { - editorManager.editor.$handlePaste(text); - }); - }, - scrollIntoView: "cursor", - }, - { - name: "problems", - description: "Show errors and warnings", - exec() { - acode.exec("open", "problems"); - }, - }, - { - name: "replace", - description: "Replace", - exec() { - acode.exec("replace"); - }, - }, - { - name: "openCommandPalette", - description: "Open command palette", - exec() { - acode.exec("command-palette"); - }, - readOnly: true, - }, - { - name: "modeSelect", - description: "Change language mode...", - exec() { - acode.exec("syntax"); - }, - readOnly: true, - }, - { - name: "toggleQuickTools", - description: "Toggle quick tools", - exec() { - actions("toggle"); - }, - }, - { - name: "selectWord", - description: "Select current word", - exec(editor) { - editor.selection.selectAWord(); - editor._emit("select-word"); - }, - }, - { - name: "openLogFile", - description: "Open Log File", - exec() { - acode.exec("open-log-file"); - }, - }, - { - name: "increaseFontSize", - description: "Increase font size", - exec(editor) { - let size = Number.parseInt(editor.getFontSize(), 10) || 12; - editor.setFontSize(size + 1); - settings.value.fontSize = size + 1 + "px"; - settings.update(false); - }, - }, - { - name: "decreaseFontSize", - description: "Decrease font size", - exec(editor) { - let size = Number.parseInt(editor.getFontSize(), 10) || 12; - editor.setFontSize(Math.max(size - 1 || 1)); - settings.value.fontSize = Math.max(size - 1 || 1) + "px"; - settings.update(false); - }, - }, - { - name: "openPluginsPage", - description: "Open Plugins Page", - exec() { - acode.exec("open", "plugins"); - }, - readOnly: true, - }, - { - name: "openFileExplorer", - description: "File Explorer", - exec() { - acode.exec("open", "file_browser"); - }, - readOnly: true, - }, - { - name: "copyDeviceInfo", - description: "Copy Device info", - exec() { - acode.exec("copy-device-info"); - }, - readOnly: true, - }, - { - name: "changeAppTheme", - description: "Change App Theme", - exec() { - acode.exec("change-app-theme"); - }, - readOnly: true, - }, - { - name: "changeEditorTheme", - description: "Change Editor Theme", - exec() { - acode.exec("change-editor-theme"); - }, - readOnly: true, - }, - { - name: "openTerminal", - description: "Open Terminal", - exec() { - acode.exec("new-terminal"); - }, - readOnly: true, - }, - { - name: "acode:showWelcome", - description: "Show Welcome", - exec() { - acode.exec("welcome"); - }, - readOnly: true, - }, - { - name: "run-tests", - description: "Run Tests", - exec() { - acode.exec("run-tests"); - }, - readOnly: true, - }, - { - name: "dev:toggleDevTools", - description: "Toggle Developer Tools", - exec() { - acode.exec("toggle-inspector"); - }, - readOnly: true, - }, - { - name: "dev:openInspector", - description: "Open Inspector", - exec() { - acode.exec("open-inspector"); - }, - readOnly: true, - }, -]; - -export function setCommands(editor) { - commands.forEach((command) => { - editor.commands.addCommand(command); - }); -} - -/** - * Sets key bindings for the editor - * @param {AceAjax.Editor} editor Ace editor - */ -export async function setKeyBindings({ commands }) { - let keyboardShortcuts = keyBindings; - try { - const bindingsFile = fsOperation(KEYBINDING_FILE); - if (await bindingsFile.exists()) { - const bindings = await bindingsFile.readFile("json"); - // keyboardShortcuts = compareAndFixKeyBindings(keyboardShortcuts, bindings); - keyboardShortcuts = bindings; - } else { - throw new Error("Key binding file not found"); - } - } catch (error) { - await resetKeyBindings(); - } - - Object.keys(commands.byName).forEach((name) => { - const shortcut = keyboardShortcuts[name]; - const command = commands.byName[name]; - - if (shortcut?.description) { - command.description = shortcut.description; - } - - // not chekiang if shortcut is empty because it can be used to remove shortcut - command.bindKey = { win: shortcut?.key ?? null }; - commands.addCommand(command); - }); -} - -/** - * Resets key binding - */ -export async function resetKeyBindings() { - try { - const fs = fsOperation(KEYBINDING_FILE); - const fileName = Url.basename(KEYBINDING_FILE); - const content = JSON.stringify(keyBindings, undefined, 2); - if (!(await fs.exists())) { - await fsOperation(DATA_STORAGE).createFile(fileName, content); - return; - } - await fs.writeFile(content); - } catch (error) { - window.log("error", "Reset Keybinding failed!"); - window.log("error", error); - } -} diff --git a/src/ace/modelist.js b/src/ace/modelist.js deleted file mode 100644 index 0840e7108..000000000 --- a/src/ace/modelist.js +++ /dev/null @@ -1,130 +0,0 @@ -const modesByName = {}; -const modes = []; - -export function initModes() { - ace.define( - "ace/ext/modelist", - ["require", "exports", "module"], - function (require, exports, module) { - /** - * Calculates a specificity score for a mode. - * Higher score means more specific. - * - Anchored patterns (e.g., "^Dockerfile") get a base score of 1000. - * - Non-anchored patterns (extensions) are scored by length. - */ - function getModeSpecificityScore(modeInstance) { - const extensionsStr = modeInstance.extensions; - if (!extensionsStr) return 0; - - const patterns = extensionsStr.split("|"); - let maxScore = 0; - - for (const pattern of patterns) { - let currentScore = 0; - if (pattern.startsWith("^")) { - // Exact filename match or anchored pattern - currentScore = 1000 + (pattern.length - 1); // Subtract 1 for '^' - } else { - // Extension match - currentScore = pattern.length; - } - if (currentScore > maxScore) { - maxScore = currentScore; - } - } - return maxScore; - } - module.exports = { - getModeForPath(path) { - let mode = modesByName.text; - let fileName = path.split(/[\/\\]/).pop(); - // Sort modes by specificity (descending) to check most specific first - const sortedModes = [...modes].sort((a, b) => { - return getModeSpecificityScore(b) - getModeSpecificityScore(a); - }); - - for (const iMode of sortedModes) { - if (iMode.supportsFile?.(fileName)) { - mode = iMode; - break; - } - } - return mode; - }, - get modesByName() { - return modesByName; - }, - get modes() { - return modes; - }, - }; - }, - ); -} - -/** - * Add language mode to ace editor - * @param {string} name name of the mode - * @param {string|Array} extensions extensions of the mode - * @param {string} [caption] display name of the mode - */ -export function addMode(name, extensions, caption) { - const filename = name.toLowerCase(); - const mode = new Mode(filename, caption, extensions); - modesByName[filename] = mode; - modes.push(mode); -} - -/** - * Remove language mode from ace editor - * @param {string} name - */ -export function removeMode(name) { - const filename = name.toLowerCase(); - delete modesByName[filename]; - const modeIndex = modes.findIndex((mode) => mode.name === filename); - if (modeIndex >= 0) { - modes.splice(modeIndex, 1); - } -} - -class Mode { - extensions; - displayName; - name; - mode; - extRe; - - /** - * Create a new mode - * @param {string} name - * @param {string} caption - * @param {string|Array} extensions - */ - constructor(name, caption, extensions) { - if (Array.isArray(extensions)) { - extensions = extensions.join("|"); - } - - this.name = name; - this.mode = "ace/mode/" + name; - this.extensions = extensions; - this.caption = caption || this.name.replace(/_/g, " "); - let re; - - if (/\^/.test(extensions)) { - re = - extensions.replace(/\|(\^)?/g, function (a, b) { - return "$|" + (b ? "^" : "^.*\\."); - }) + "$"; - } else { - re = "^.*\\.(" + extensions + ")$"; - } - - this.extRe = new RegExp(re, "i"); - } - - supportsFile(filename) { - return this.extRe.test(filename); - } -} diff --git a/src/ace/supportedModes.js b/src/ace/supportedModes.js deleted file mode 100644 index e0134a1d8..000000000 --- a/src/ace/supportedModes.js +++ /dev/null @@ -1,220 +0,0 @@ -import { addMode } from "./modelist"; - -const modeList = { - ABAP: "abap", - ABC: "abc", - ActionScript: "as", - ADA: "ada|adb", - Alda: "alda", - Apache_Conf: "^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd", - Apex: "apex|cls|trigger|tgr", - AQL: "aql", - AsciiDoc: "asciidoc|adoc", - ASL: "dsl|asl|asl.json", - Assembly_x86: "asm|a", - Assembly_arm32: "s", - Astro: "astro", - AutoHotKey: "ahk", - Basic: "bas", - BatchFile: "bat|cmd", - BibTeX: "bib", - C_Cpp: "cpp|c|cc|cxx|h|hh|hpp|ino", - C9Search: "c9search_results", - Cirru: "cirru|cr", - Clojure: "clj|cljs", - Clue: "clue", - Cobol: "CBL|COB", - coffee: "coffee|cf|cson|^Cakefile", - ColdFusion: "cfm|cfc", - Crystal: "cr", - CSharp: "cs", - Csound_Document: "csd", - Csound_Orchestra: "orc", - Csound_Score: "sco", - CSS: "css", - CSV: "csv", - Curly: "curly", - Cuttlefish: "conf", - D: "d|di", - Dart: "dart", - Diff: "diff|patch", - Dockerfile: "^Dockerfile", - Dot: "dot", - Drools: "drl", - Edifact: "edi", - Eiffel: "e|ge", - EJS: "ejs", - Elixir: "ex|exs", - Elm: "elm", - Erlang: "erl|hrl", - Forth: "frt|fs|ldr|fth|4th", - Fortran: "f|f90", - FSharp: "fsi|fs|ml|mli|fsx|fsscript", - FSL: "fsl", - FTL: "ftl", - Flix: "flix", - Gcode: "gcode", - Gherkin: "feature", - Gitignore: "^.gitignore", - Glsl: "glsl|frag|vert", - Gobstones: "gbs", - golang: "go", - GraphQLSchema: "gql", - Groovy: "groovy", - HAML: "haml", - Handlebars: "hbs|handlebars|tpl|mustache", - Haskell: "hs", - Haskell_Cabal: "cabal", - haXe: "hx", - Hjson: "hjson", - HTML: "html|htm|xhtml|we|wpy", - HTML_Elixir: "eex|html.eex", - HTML_Ruby: "erb|rhtml|html.erb", - INI: "ini|conf|cfg|prefs", - Io: "io", - Ion: "ion", - Jack: "jack", - Jade: "jade|pug", - Java: "java", - JavaScript: "js|jsm|jsx|cjs|mjs", - JEXL: "jexl", - JSON: "json", - JSON5: "json5", - JSONiq: "jq", - JSP: "jsp", - JSSM: "jssm|jssm_state", - JSX: "jsx", - Julia: "jl", - Kotlin: "kt|kts", - LaTeX: "tex|latex|ltx|bib", - Latte: "latte", - LESS: "less", - Liquid: "liquid", - Lisp: "lisp", - LiveScript: "ls", - Log: "log", - LogiQL: "logic|lql", - Logtalk: "lgt", - LSL: "lsl", - Lua: "lua", - LuaPage: "lp", - Lucene: "lucene", - Makefile: "^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make", - Markdown: "md|markdown", - Mask: "mask", - MATLAB: "matlab", - Maze: "mz", - MediaWiki: "wiki|mediawiki", - MEL: "mel", - MIPS: "s|asm", - MIXAL: "mixal", - MUSHCode: "mc|mush", - MySQL: "mysql", - Nasal: "nas", - Nginx: "nginx|conf", - Nim: "nim", - Nix: "nix", - NSIS: "nsi|nsh", - Nunjucks: "nunjucks|nunjs|nj|njk", - ObjectiveC: "m|mm", - OCaml: "ml|mli", - Odin: "odin", - PartiQL: "partiql|pql", - Pascal: "pas|p", - Perl: "pl|pm", - pgSQL: "pgsql", - PHP: "php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module", - PHP_Laravel_blade: "blade.php", - Pig: "pig", - PLSQL: "plsql", - Powershell: "ps1", - Praat: "praat|praatscript|psc|proc", - Prisma: "prisma", - Prolog: "plg|prolog", - Properties: "properties", - Protobuf: "proto", - Puppet: "epp|pp", - Python: "py", - PRQL: "prql", - QML: "qml", - R: "r", - Raku: "raku|rakumod|rakutest|p6|pl6|pm6", - Razor: "cshtml|asp", - RDoc: "Rd", - Red: "red|reds", - RHTML: "Rhtml", - Robot: "robot|resource", - RST: "rst", - Ruby: "rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile", - Rust: "rs", - SaC: "sac", - SASS: "sass", - SCAD: "scad", - Scala: "scala|sbt", - Scheme: "scm|sm|rkt|oak|scheme", - Scrypt: "scrypt", - SCSS: "scss", - SH: "sh|bash|^.bashrc", - SJS: "sjs", - Slim: "slim|skim", - Smarty: "smarty|tpl", - Smithy: "smithy", - snippets: "snippets", - Soy_Template: "soy", - Space: "space", - SPARQL: "rq", - SQL: "sql", - SQLServer: "sqlserver", - Stylus: "styl|stylus", - SVG: "svg", - Swift: "swift", - Tcl: "tcl", - Terraform: "tf|tfvars|terragrunt", - Tex: "tex", - Text: "txt", - Textile: "textile", - Toml: "toml", - TSV: "TSV", - TSX: "tsx", - Turtle: "ttl", - Twig: "twig|swig", - Typescript: "ts|typescript|str", - Vala: "vala", - VBScript: "vbs|vb", - Velocity: "vm", - Verilog: "v|vh|sv|svh", - VHDL: "vhd|vhdl", - Visualforce: "vfp|component|page", - Vue: "vue", - Wollok: "wlk|wpgm|wtest", - XML: "xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml", - XQuery: "xq", - YAML: "yaml|yml", - Zeek: "zeek|bro", - Zig: "zig", - Django: "html", -}; - -const languageNames = { - ObjectiveC: "Objective-C", - CSharp: "C#", - golang: "Go", - C_Cpp: "C/C++", - Csound_Document: "Csound Document", - Csound_Orchestra: "Csound", - Csound_Score: "Csound Score", - coffee: "CoffeeScript", - HTML_Ruby: "HTML (Ruby)", - HTML_Elixir: "HTML (Elixir)", - FTL: "FreeMarker", - PHP_Laravel_blade: "PHP (Blade Template)", - Perl6: "Perl 6", - AutoHotKey: "AutoHotkey/AutoIt", -}; - -Object.keys(modeList).forEach((key) => { - const extensions = modeList[key]; - const caption = languageNames[key]; - - addMode(key, extensions, caption); -}); diff --git a/src/ace/touchHandler.js b/src/ace/touchHandler.js deleted file mode 100644 index 23d29a695..000000000 --- a/src/ace/touchHandler.js +++ /dev/null @@ -1,1085 +0,0 @@ -import { key } from "handlers/quickTools"; -import tag from "html-tag-js"; -import constants from "lib/constants"; -import selectionMenu from "lib/selectionMenu"; -import appSettings from "lib/settings"; -import { getColorRange } from "utils/color/regex"; - -export let scrollAnimationFrame; // scroll animation frame id - -const SCROLL_SPEED = { - FAST_X2: 0.99, - FAST: 0.97, - NORMAL: 0.95, - SLOW: 0.9, -}; - -/** - * Handler for touch events - * @param {AceAjax.Editor} editor Ace editor instance - * @param {boolean} minimal if true, disable selection, menu and cursor - */ -export default function addTouchListeners(editor, minimal, onclick) { - const { renderer, container: $el } = editor; - const { $gutter } = renderer; - const { Range } = ace.require("ace/range"); - - let { - diagonalScrolling, - reverseScrolling, - teardropSize, - teardropTimeout, - scrollSpeed, - } = appSettings.value; - - if (minimal) { - diagonalScrolling = false; - reverseScrolling = false; - teardropSize = 0; - } - - /** - * Selection controller start - */ - const $start = tag("span", { - className: "cursor start", - dataset: { - size: teardropSize, - }, - size: teardropSize, - }); - - /** - * Selection controller end - */ - const $end = tag("span", { - className: "cursor end", - dataset: { - size: teardropSize, - }, - size: teardropSize, - }); - - /** - * Tear drop cursor - */ - const $cursor = tag("span", { - className: "cursor single", - dataset: { - size: teardropSize, - }, - get size() { - const widthSq = teardropSize * teardropSize * 2; - const actualWidth = Math.sqrt(widthSq); - delete this.size; - this.size = actualWidth; - return actualWidth; - }, - startHide() { - clearTimeout($cursor.dataset.timeout); - $cursor.dataset.timeout = setTimeout(() => { - $cursor.remove(); - hideMenu(); - }, teardropTimeout); - }, - }); - - /** - * Text menu for touch devices - */ - const $menu = ; - const RESET_CLICK_COUNT_TIME = 500; // ms - const config = { passive: false }; // event listener config - const ACE_NO_CURSOR = - ".ace_gutter,.ace_gutter *,.ace_fold,.ace_inline_button"; - - let LOCK_X = appSettings.value.textWrap; - - let scrollTimeout; // timeout to check if scrolling is finished - let menuActive; // true if menu is active - let mode; // cursor, selection or scroll - let moveY; // touch difference in vertical direction - let moveX; // touch difference in horizontal direction - let lastX; // last x - let lastY; // last y - let directionX; // direction in x - let directionY; // direction in y - let initialX; // initial x - let initialY; // initial y - let initialTimeX; // initial time - let initialTimeY; // initial time - let lockX; // lock x for prevent scrolling in horizontal direction - let lockY; // lock y for prevent scrolling in vertical direction - let clickCount = 0; // number of clicks - let selectionActive; // true if selection is active - let lastClickPos = null; - let teardropDoesShowMenu = true; // teardrop handler - let teardropTouchEnded = false; // teardrop handler - let teardropMoveTimeout; // teardrop handler - let forceCursorMode = false; // force to show cursor - let $activeTeardrop; // active teardrop - let timeTouchStart; // time of touch start - let touchEnded = true; // true if touch ended - let threshold = appSettings.value.touchMoveThreshold; - - $el.addEventListener("touchstart", touchStart, config, true); - $el.addEventListener("contextmenu", contextmenu, config, true); - - editor.setSelection = (value) => { - selectionActive = value; - }; - - editor.setMenu = (value) => { - menuActive = value; - }; - - if (!minimal) { - editor.on("change", onupdate); - editor.on("changeSession", onchangesession); - editor.on("scroll", onscroll); - editor.on("fold", onfold); - editor.on("select-word", () => { - selectionMode($end); - }); - editor.on("scroll-intoview", () => { - if (selectionActive) { - selectionMode($end); - } else { - cursorMode(); - } - }); - - appSettings.on("update:diagonalScrolling", (value) => { - diagonalScrolling = value; - }); - appSettings.on("update:reverseScrolling", (value) => { - reverseScrolling = value; - }); - appSettings.on("update:teardropSize", (value) => { - teardropSize = value; - $start.dataset.size = value; - $end.dataset.size = value; - $cursor.dataset.size = value; - }); - appSettings.on("update:textWrap", (value) => { - LOCK_X = value; - onupdate(); - }); - appSettings.on("update:scrollSpeed", (value) => { - scrollSpeed = value; - }); - appSettings.on("update:touchMoveThreshold", (value) => { - threshold = value; - }); - } - - /** - * Editor container on touch start - * @param {TouchEvent} e Touch event - */ - function touchStart(e) { - /**@type {HTMLElement} */ - const $target = e.target; - - editor.textInput.onContextMenu = null; - cancelAnimationFrame(scrollAnimationFrame); - const { clientX, clientY } = e.touches[0]; - - if (minimal && clientX <= constants.SIDEBAR_SLIDE_START_THRESHOLD_PX) { - return; - } - - if (isIn($start, clientX, clientY)) { - e.preventDefault(); - teardropHandler($start); - return; - } - - if (isIn($end, clientX, clientY)) { - e.preventDefault(); - teardropHandler($end); - return; - } - - if (isIn($cursor, clientX, clientY)) { - e.preventDefault(); - teardropHandler($cursor); - return; - } - - if ($target.matches(ACE_NO_CURSOR)) { - moveCursorTo(0, clientY); - return; - } - - touchEnded = false; - lastX = clientX; - lastY = clientY; - initialX = clientX; - initialY = clientY; - initialTimeX = e.timeStamp; - initialTimeY = e.timeStamp; - moveY = 0; - moveX = 0; - lockX = LOCK_X; - lockY = false; - mode = "wait"; - - setTimeout(() => { - clickCount = 0; - lastClickPos = null; - }, RESET_CLICK_COUNT_TIME); - - document.addEventListener("touchmove", touchMove, config); - document.addEventListener("touchend", touchEnd, config); - } - - /** - * Editor container on touch move - * @param {TouchEvent} e Event - */ - function touchMove(e) { - if (mode === "selection") { - removeListeners(); - return; - } - - let currentDirectionX; // direction in x - let currentDirectionY; // direction in y - const { clientX, clientY } = e.touches[0]; - - moveX = clientX - lastX; - moveY = clientY - lastY; - currentDirectionX = moveX > 0 ? 1 : -1; - currentDirectionY = moveY > 0 ? 1 : -1; - - if (directionX !== currentDirectionX) { - initialX = clientX; - initialTimeX = e.timeStamp; - } - - if (directionY !== currentDirectionY) { - initialY = clientY; - initialTimeY = e.timeStamp; - } - - directionX = currentDirectionX; - directionY = currentDirectionY; - lastX = clientX; - lastY = clientY; - - if (!moveX && !moveY) { - return; - } - - if (!diagonalScrolling && !lockX && !lockY) { - if (Math.abs(moveX) > Math.abs(moveY)) { - lockY = true; - } else { - lockX = true; - } - } - - if (lockX || Math.abs(moveX) < threshold) { - moveX = 0; - } - - if (lockY || Math.abs(moveY) < threshold) { - moveY = 0; - } - - if (moveX || moveY) { - e.preventDefault(); - [moveX, moveY] = testScroll(moveX, moveY); - mode = "scroll"; - scroll(moveX, moveY); - } - } - - /** - * Editor container on touch end - * @param {TouchEvent} e Event - */ - function touchEnd(e) { - const { clientX, clientY } = e.changedTouches[0]; - // why I was using e.preventDefault() ? 🤔 - // because select word and select line misbehave without - // preventDefault - removeListeners(); - touchEnded = true; - - if (mode === "scroll") { - const deltaTimeX = e.timeStamp - initialTimeX; - const deltaTimeY = e.timeStamp - initialTimeY; - const deltaX = clientX - initialX; - const deltaY = clientY - initialY; - const velocityX = lockX ? 0 : Math.round(deltaX / deltaTimeX); // in px/ms - const velocityY = lockY ? 0 : Math.round(deltaY / deltaTimeY); // in px/ms - scrollAnimation(velocityX, velocityY); - return; - } - - if (mode === "wait") { - if (lastClickPos) { - const { clientX: clickXThen, clientY: clickYThen } = lastClickPos; - const { row: rowNow, column: columnNow } = - renderer.screenToTextCoordinates(clientX, clientY); - const { row: rowThen, column: columnThen } = - renderer.screenToTextCoordinates(clickXThen, clickYThen); - - const rowDiff = Math.abs(rowNow - rowThen); - const columnDiff = Math.abs(columnNow - columnThen); - if (!rowDiff && columnDiff <= 2) { - clickCount += 1; - } - } else { - clickCount = 1; - } - - lastClickPos = { clientX, clientY }; - - if (clickCount === 2) { - mode = "selection"; - } else if (clickCount >= 3) { - mode = "select-line"; - } else { - mode = "cursor"; - } - } - - if (minimal && mode === "cursor") { - moveCursorTo(clientX, clientY); - if (onclick) onclick(); - return; - } else if (minimal) { - return; - } - - if (mode === "cursor") { - e.preventDefault(); - const shiftKey = key.shift || e.shiftKey; - const ctrlKey = key.ctrl || e.ctrlKey; - moveCursorTo(clientX, clientY, shiftKey, ctrlKey); - if (!ctrlKey && !shiftKey) { - forceCursorMode = true; - cursorMode(); - } - if (!editor.isFocused()) editor.focus(); - return; - } - - if (mode === "selection") { - e.preventDefault(); - moveCursorTo(clientX, clientY); - select(); - vibrate(); - return; - } - - if (mode === "select-line") { - e.preventDefault(); - moveCursorTo(clientX, clientY); - editor.selection.selectLine(); - selectionMode($end); - vibrate(); - } - } - - /** - * Checks if given element is in the touch area - * @param {Element} $el - * @param {number} cX - * @param {number} cY - * @returns - */ - function isIn($el, cX, cY) { - const { - x, - y, - left, - top, - width: sWidth, - height: sHeight, - } = $el.getBoundingClientRect(); - - const sx = x || left; - const sy = y || top; - - return cX > sx && cX < sx + sWidth && cY > sy && cY < sy + sHeight; - } - - /** - * Vibrate device - * @returns {void} - */ - function vibrate() { - if (appSettings.value.vibrateOnTap) { - navigator.vibrate(constants.VIBRATION_TIME); - } - } - - /** - * Callback for contextmenu event - * @param {MouseEvent} e Event - */ - function contextmenu(e) { - e.preventDefault(); - e.stopPropagation(); - if (minimal) return; - const { clientX, clientY } = e; - moveCursorTo(clientX, clientY); - select(); - touchEnded = true; - editor.focus(); - } - - /** - * Select word at cursor position - * @returns {void} - */ - function select() { - removeListeners(); - const range = getColorRange() || editor.selection.getWordRange(); - if (!range || range?.isEmpty()) return; - editor.selection.setSelectionRange(range); - selectionMode($end); - } - - /** - * Scrolls the editor with smooth animation - * @param {number} velocityX velocity in x direction - * @param {number} velocityY velocity in y direction - * @param {number} [timeThen] - * @returns {void} - */ - function scrollAnimation(velocityX, velocityY, timeThen = 0) { - if (!velocityX && !velocityY) { - onscrollend(); - return; - } - - const timeNow = Date.now(); - - if (!timeThen) { - scrollAnimationFrame = requestAnimationFrame( - scrollAnimation.bind(null, velocityX, velocityY, timeNow), - ); - return; - } - - const timeElapsed = timeNow - timeThen; - const FRICTION = SCROLL_SPEED[scrollSpeed]; - const nextX = velocityX * timeElapsed; - const nextY = velocityY * timeElapsed; - - let scrollX = Number.parseInt(nextX * 100) / 100; - let scrollY = Number.parseInt(nextY * 100) / 100; - - const [canScrollX, canScrollY] = testScroll(scrollX, scrollY); - - if (!canScrollX) { - velocityX = 0; - scrollX = 0; - } - - if (!canScrollY) { - velocityY = 0; - scrollY = 0; - } - - if (!scrollX && !scrollY) { - cancelAnimationFrame(scrollAnimationFrame); - return; - } - - scroll(scrollX, scrollY); - - velocityX *= FRICTION; - velocityY *= FRICTION; - - scrollAnimationFrame = requestAnimationFrame( - scrollAnimation.bind(null, velocityX, velocityY, timeNow), - ); - } - - /** - * Test if scrolling is possible - * @param {number} moveX move in x direction - * @param {number} moveY move in y direction - * @returns {[number, number]} - */ - function testScroll(moveX, moveY) { - const UP = reverseScrolling ? "down" : "up"; - const DOWN = reverseScrolling ? "up" : "down"; - const LEFT = reverseScrolling ? "right" : "left"; - const RIGHT = reverseScrolling ? "left" : "right"; - - const vDirection = moveY > 0 ? DOWN : UP; - const hDirection = moveX > 0 ? RIGHT : LEFT; - - const { getEditorHeight, getEditorWidth } = editorManager; - const scrollLeft = editor.renderer.getScrollLeft(); - const scrollTop = editor.renderer.getScrollTop(); - const [editorWidth, editorHeight] = [ - getEditorWidth(editor), - getEditorHeight(editor), - ]; - - if ( - (vDirection === "down" && scrollTop <= 0) || - (vDirection === "up" && scrollTop >= editorHeight) - ) { - moveY = 0; - } - - if ( - (hDirection === "right" && scrollLeft <= 0) || - (hDirection === "left" && scrollLeft >= editorWidth) - ) { - moveX = 0; - } - - return [moveX, moveY]; - } - - /** - * Scroll to given position - * @param {number} x - * @param {number} y - */ - function scroll(x, y) { - let direction = reverseScrolling ? 1 : -1; - let scrollX = direction * x; - let scrollY = direction * y; - - renderer.scrollBy(scrollX, scrollY); - } - - /** - * Remove all listeners - */ - function removeListeners() { - document.removeEventListener("touchmove", touchMove, config); - document.removeEventListener("touchend", touchEnd, config); - } - - /** - * Compare two ranges - * @param {AceAjax.Range} r1 - * @param {AceAjax.Range} r2 - * @returns {boolean} - */ - function compareRanges(r1, r2) { - return ( - r1.start.row === r2.start.row && - r1.start.column === r2.start.column && - r1.end.row === r2.end.row && - r1.end.column === r2.end.column - ); - } - - /** - * Moves cursor to given position - * @param {number} x - * @param {number} y - * @param {boolean} [shiftKey] - * @param {boolean} [ctrlKey] - */ - function moveCursorTo(x, y, shiftKey = false, ctrlKey = false) { - const pos = renderer.screenToTextCoordinates(x, y); - - hideTooltip(); - - if (shiftKey) { - const anchor = - editor.selection.getSelectionAnchor() || editor.getCursorPosition(); - editor.selection.setRange({ start: anchor, end: pos }); - selectionMode($end); - return; - } - - if (ctrlKey) { - const range = new Range(pos.row, pos.column, pos.row, pos.column); - const ranges = editor.selection.getAllRanges(); - const exists = ranges.some((r) => compareRanges(r, range)); - if (exists) { - editor.selection.clearSelection(); - ranges.splice(ranges.indexOf(exists), 1); - ranges.forEach((r) => editor.selection.addRange(r)); - return; - } - - editor.selection.addRange(range); - return; - } - - editor.selection.moveToPosition(pos); - } - - /** - * Shows teardrop - * @returns {void} - */ - function cursorMode() { - if ((!teardropSize || !editor.isFocused()) && !forceCursorMode) { - $cursor.remove(); - return; - } - - forceCursorMode = false; - clearTimeout($cursor.dataset.timeout); - clearSelectionMode(); - - const { pageX, pageY } = renderer.textToScreenCoordinates( - editor.getCursorPosition(), - ); - const { lineHeight } = renderer; - const actualHeight = lineHeight; - const [x, y] = relativePosition(pageX, pageY + actualHeight); - $cursor.style.left = `${x}px`; - $cursor.style.top = `${y}px`; - if (!$cursor.isConnected) $el.append($cursor); - $cursor.startHide(); - - editor.selection.on("changeCursor", clearCursorMode); - } - - /** - * Remove cursor mode - * @returns {void} - */ - function clearCursorMode() { - if (!$el.contains($cursor)) return; - if ($cursor.dataset.immortal === "true") return; - $cursor.remove(); - clearTimeout($cursor.dataset.timeout); - - editor.selection.off("changeCursor", clearCursorMode); - } - - /** - * Shows both teardrops - * @param {HTMLElement} $trigger - * @returns {void} - */ - function selectionMode($trigger) { - if (!teardropSize) return; - - clearCursorMode(); - selectionActive = true; - positionEnd(); - positionStart(); - if ($trigger) showMenu($trigger); - - setTimeout(() => { - editor.selection.on("changeSelection", clearSelectionMode); - editor.selection.on("changeCursor", clearSelectionMode); - }, 0); - } - - /** - * Positions the start teardrop - */ - function positionStart() { - const range = editor.getSelectionRange(); - const { pageX, pageY } = renderer.textToScreenCoordinates(range.start); - const { lineHeight } = renderer; - - // Calculate desired position but ensure it stays within viewport - let targetX = pageX - teardropSize; - const [relativeX, y] = relativePosition(targetX, pageY + lineHeight); - - // Ensure the teardrop doesn't go outside the left edge - // Leave some padding (e.g., 4px) so it's not flush against the edge - const minX = 4; - const constrainedX = Math.max(relativeX, minX); - - $start.style.left = `${constrainedX}px`; - $start.style.top = `${y}px`; - - if (!$start.isConnected) $el.append($start); - } - - /** - * Positions the end teardrop - */ - function positionEnd() { - const range = editor.getSelectionRange(); - const { pageX, pageY } = renderer.textToScreenCoordinates(range.end); - const { lineHeight } = renderer; - const [x, y] = relativePosition(pageX, pageY + lineHeight); - - $end.style.left = `${x}px`; - $end.style.top = `${y}px`; - - if (!$end.isConnected) $el.append($end); - } - - /** - * Remove selection mode - * @param {Event} e Event - * @param {boolean} clearActive whether to clear selectionActive - * @returns {void} - */ - function clearSelectionMode(e, clearActive = true) { - const $els = [$start.dataset.immortal, $end.dataset.immortal]; - if ($els.includes("true")) return; - if ($el.contains($start)) $start.remove(); - if ($el.contains($end)) $end.remove(); - if (clearActive) { - selectionActive = false; - } - - editor.selection.off("changeSelection", clearSelectionMode); - editor.selection.off("changeCursor", clearSelectionMode); - } - - /** - * Shows the edit context menu - * @param {HTMLElement} [$trigger] A trigger element that triggered the menu, if not provided, menu will be shown at the current cursor position - */ - function showMenu($trigger) { - menuActive = true; - const rect = $trigger?.getBoundingClientRect(); - const { bottom, left } = rect; - const readOnly = editor.getReadOnly(); - const [x, y] = relativePosition(left, bottom); - if (readOnly) { - populateMenuItems("read-only"); - } else { - populateMenuItems(); - } - - $menu.style.left = `${x}px`; - $menu.style.top = `${y}px`; - - if (!$menu.isConnected) $el.parentElement.append($menu); - if ($trigger) positionMenu($trigger); - - editor.selection.on("changeCursor", hideMenu); - editor.selection.on("changeSelection", hideMenu); - } - - /** - * @param {boolean} clearActive whether to clear menuActive - * @returns {void} - */ - function hideMenu(clearActive = true) { - if (!$el.parentElement.contains($menu)) return; - $menu.remove(); - editor.selection.off("changeCursor", hideMenu); - editor.selection.off("changeSelection", hideMenu); - if (clearActive) menuActive = false; - } - - /** - * Populates the menu items - * @param {HTMLElement} $trigger - * @returns - */ - function positionMenu($trigger) { - const getProp = ($el, prop) => $el.getBoundingClientRect()[prop]; - const containerRight = getProp($el, "right"); - const containerLeft = getProp($el, "left"); - const containerBottom = getProp($el, "bottom"); - const { lineHeight } = editor.renderer; - const margin = 10; - - // if menu is positioned off screen horizontally from the right - const menuRight = getProp($menu, "right"); - if (menuRight + margin > containerRight) { - const menuLeft = getProp($menu, "left"); - const [x] = relativePosition( - menuLeft - Math.abs(menuRight - containerRight), - ); - $menu.style.left = `${x - margin}px`; - } - - // if menu is positioned off screen horizontally from the left - const menuLeft = getProp($menu, "left"); - if (menuLeft - margin < containerLeft) { - const [x] = relativePosition( - menuLeft + Math.abs(menuLeft - containerLeft), - ); - $menu.style.left = `${x + margin}px`; - } - - if (shrink()) return; - - // if menu is positioned off screen vertically from the bottom - const menuBottom = getProp($menu, "bottom"); - if (menuBottom > containerBottom) { - const range = editor.getSelectionRange(); - let pos; - - if ($trigger === $start) { - pos = range.start; - } else { - pos = range.end; - } - - const { pageY } = renderer.textToScreenCoordinates(pos); - const [, y] = relativePosition(null, pageY - lineHeight * 1.8); - $menu.style.top = `${y}px`; - } - - function shrink() { - const [left, right] = [getProp($menu, "left"), getProp($menu, "right")]; - const tooLeft = left < containerLeft; - const tooRight = right > containerRight; - if (tooLeft || tooRight) { - const { scale = 1 } = $menu.dataset; - $menu.dataset.scale = Number.parseFloat(scale - 0.1); - $menu.style.transform = `scale(${$menu.dataset.scale})`; - positionMenu($trigger); - return true; - } - return false; - } - } - - /** - * Handles teardrop - * @param {HTMLDivElement} $teardrop Teardrop element to handle - */ - function teardropHandler($teardrop) { - $activeTeardrop = $teardrop; - $activeTeardrop.dataset.immortal = true; - teardropDoesShowMenu = true; - teardropTouchEnded = false; - - if (mode === "cursor") { - const timeout = Number.parseInt($cursor.dataset.timeout, 10); - clearTimeout(timeout); - } - - timeTouchStart = Date.now(); - document.addEventListener("touchmove", teardropTouchMoveHandler, config); - document.addEventListener("touchend", teardropTouchEndHandler, config); - } - - /** - * Touch event handler for teardrop - * @param {Event} e - */ - function teardropTouchMoveHandler(e) { - const { clientX, clientY } = e.touches[0]; - const { lineHeight } = renderer; - const { start, end } = editor.selection.getRange(); - let y = clientY - lineHeight * 1.8; - let x = clientX; - - if (timeTouchStart) { - timeTouchStart = null; - - // Prevents accidental touchmove - if (diffX < threshold && diffY < threshold) return; - - const diffX = Math.abs(lastX - clientX); - const diffY = Math.abs(lastY - clientY); - const timeDiff = Date.now() - timeTouchStart; - - // Prevents accidental touchmove or highly sensitive touchmove - if (timeDiff < 50) return; - return; - } - - if ($activeTeardrop === $cursor) { - const { row, column } = renderer.screenToTextCoordinates(x, y); - editor.gotoLine(row + 1, column); - } else if ($activeTeardrop === $start) { - x = clientX + teardropSize; - - const { pageX, pageY } = renderer.textToScreenCoordinates(end); - if (pageY <= y) { - y = pageY; - } - - if (pageY <= y && pageX < x) { - x = pageX; - } - - let { row, column } = renderer.screenToTextCoordinates(x, y); - - if (column === end.column) { - --column; - } - - editor.selection.setSelectionAnchor(row, column); - positionEnd(); - } else { - const { pageX, pageY } = renderer.textToScreenCoordinates(start); - if (pageY >= y) { - y = pageY; - } - - if (pageY >= y && pageX > x) { - x = pageX; - } - - let { row, column } = renderer.screenToTextCoordinates(x, y); - - // if (column === start.column) { - // ++column; - // } - - editor.selection.moveCursorToPosition({ row, column }); - positionStart(); - } - - clearTimeout(teardropMoveTimeout); - const parent = $el.getBoundingClientRect(); - let deltaX = 0; - if (clientY < parent.top) deltaX = -lineHeight; - if (clientY > parent.bottom) deltaX = lineHeight; - - if (deltaX) { - teardropMoveTimeout = setTimeout(() => { - const top = editor.session.getScrollTop(); - editor.session.setScrollTop(top + deltaX); - if (teardropTouchEnded) return; - teardropTouchMoveHandler(e); - }, 100); - } - - const [left, top] = relativePosition(clientX, clientY - lineHeight); - $activeTeardrop.style.left = `${left}px`; - $activeTeardrop.style.top = `${top}px`; - } - - /** - * Touch event handler for teardrop - */ - function teardropTouchEndHandler() { - teardropTouchEnded = true; - if ($activeTeardrop === $cursor) { - cursorMode(); - } else { - selectionMode($activeTeardrop); - } - - $activeTeardrop.dataset.immortal = false; - document.removeEventListener("touchmove", teardropTouchMoveHandler, config); - document.removeEventListener("touchend", teardropTouchEndHandler, config); - if (teardropDoesShowMenu) { - showMenu($activeTeardrop); - } - editor.focus(); - } - - /** - * Editor container on scroll - */ - function onscroll() { - clearTimeout(scrollTimeout); - clearCursorMode(); - clearSelectionMode(null, false); - hideMenu(false); - - hideTooltip(); - scrollTimeout = setTimeout(onscrollend, 100); - } - - /** - * Hides tooltip in the gutter - */ - function hideTooltip() { - $gutter.dispatchEvent(new MouseEvent("mouseout")); - } - - /** - * Editor container on scroll end - */ - function onscrollend() { - scrollTimeout = null; - editor._emit("scroll-end"); - if (!touchEnded) return; - - if (selectionActive) { - selectionMode(); - } - - if (menuActive) { - showMenu($end); - } - } - - /** - * Editor container on update - */ - function onupdate() { - clearSelectionMode(); - clearCursorMode(); - hideMenu(); - } - - /** - * Editor container on change session - */ - function onchangesession() { - if (scrollTimeout) { - clearTimeout(scrollTimeout); - onscrollend(); - } - - cancelAnimationFrame(scrollAnimationFrame); - setTimeout(() => { - const copyText = editor.session.getTextRange(editor.getSelectionRange()); - if (copyText) { - selectionMode($end); - return; - } - - clearSelectionMode(); - cursorMode(); - hideMenu(); - }, 0); - } - - /** - * Editor container on fold - */ - function onfold() { - if (selectionActive) { - positionEnd(); - positionStart(); - hideMenu(); - showMenu($end); - } else { - clearCursorMode(); - } - } - - /** - * Populates the menu items - * @param {'regular'|'read-only'|'select'} mode - */ - function populateMenuItems(mode = "regular") { - $menu.innerHTML = ""; - const copyText = editor.getCopyText(); - const items = []; - - selectionMenu().forEach((item) => { - if (mode === "read-only" && !item.readOnly) return; - if (copyText && !["selected", "all"].includes(item.mode)) return; - if (!copyText && item.mode === "selected") return; - - items.push(item); - }); - - items.forEach(({ onclick, text }) => { - $menu.append(
{text}
); - }); - } - - /** - * Returns relative position of given coordinates - * @param {number} x x coordinate - * @param {number} y y coordinate - * @returns {[number, number]} - */ - function relativePosition(x, y) { - const { top, left } = $el.getBoundingClientRect(); - return [x - left, y - top]; - } -} diff --git a/src/cm/baseExtensions.ts b/src/cm/baseExtensions.ts new file mode 100644 index 000000000..aded7737c --- /dev/null +++ b/src/cm/baseExtensions.ts @@ -0,0 +1,59 @@ +import { closeBrackets, completionKeymap } from "@codemirror/autocomplete"; +import { defaultKeymap, history, historyKeymap } from "@codemirror/commands"; +import { + bracketMatching, + defaultHighlightStyle, + foldGutter, + indentOnInput, + syntaxHighlighting, +} from "@codemirror/language"; +import { highlightSelectionMatches } from "@codemirror/search"; +import type { Extension } from "@codemirror/state"; +import { EditorState } from "@codemirror/state"; +import { + crosshairCursor, + drawSelection, + dropCursor, + highlightActiveLine, + highlightActiveLineGutter, + highlightSpecialChars, + keymap, + rectangularSelection, + tooltips, +} from "@codemirror/view"; + +/** + * Base extensions roughly matching the useful parts of CodeMirror's basicSetup + */ +export default function createBaseExtensions(): Extension[] { + return [ + highlightActiveLineGutter(), + highlightSpecialChars(), + history(), + foldGutter(), + drawSelection(), + dropCursor(), + EditorState.allowMultipleSelections.of(true), + indentOnInput(), + syntaxHighlighting(defaultHighlightStyle, { fallback: true }), + bracketMatching(), + closeBrackets(), + rectangularSelection(), + crosshairCursor(), + highlightActiveLine(), + highlightSelectionMatches(), + keymap.of([...completionKeymap, ...defaultKeymap, ...historyKeymap]), + // This prevents tooltips from being going out of the editor area + tooltips({ + tooltipSpace: (view) => { + const rect = view.dom.getBoundingClientRect(); + return { + top: rect.top, + left: rect.left, + bottom: window.innerHeight, + right: window.innerWidth, + }; + }, + }), + ]; +} diff --git a/src/cm/colorView.ts b/src/cm/colorView.ts new file mode 100644 index 000000000..94029d7ad --- /dev/null +++ b/src/cm/colorView.ts @@ -0,0 +1,280 @@ +import type { Range, Text } from "@codemirror/state"; +import type { DecorationSet, ViewUpdate } from "@codemirror/view"; +import { + Decoration, + EditorView, + ViewPlugin, + WidgetType, +} from "@codemirror/view"; +import pickColor from "dialogs/color"; +import color from "utils/color"; +import { colorRegex, HEX } from "utils/color/regex"; + +interface ColorWidgetState { + from: number; + to: number; + colorType: string; + alpha?: string; +} + +interface ColorWidgetParams extends ColorWidgetState { + color: string; + colorRaw: string; +} + +// WeakMap to carry state from widget DOM back into handler +const colorState = new WeakMap(); + +const HEX_RE = new RegExp(HEX, "gi"); + +const RGBG = new RegExp(colorRegex.anyGlobal); + +const enumColorType = { hex: "hex", rgb: "rgb", hsl: "hsl", named: "named" }; + +const disallowedBoundaryBefore = new Set(["-", ".", "/", "#"]); +const disallowedBoundaryAfter = new Set(["-", ".", "/"]); +const ignoredLeadingWords = new Set(["url"]); + +function isWhitespace(char: string): boolean { + return ( + char === " " || + char === "\t" || + char === "\n" || + char === "\r" || + char === "\f" + ); +} + +function isAlpha(char: string): boolean { + if (!char) return false; + const code = char.charCodeAt(0); + return ( + (code >= 65 && code <= 90) || // A-Z + (code >= 97 && code <= 122) + ); +} + +function charAt(doc: Text, index: number): string { + if (index < 0 || index >= doc.length) return ""; + return doc.sliceString(index, index + 1); +} + +function findPrevNonWhitespace(doc: Text, index: number): number { + for (let i = index - 1; i >= 0; i--) { + if (!isWhitespace(charAt(doc, i))) return i; + } + return -1; +} + +function findNextNonWhitespace(doc: Text, index: number): number { + for (let i = index; i < doc.length; i++) { + if (!isWhitespace(charAt(doc, i))) return i; + } + return doc.length; +} + +function readWordBefore(doc: Text, index: number): string { + let pos = index; + while (pos >= 0 && isWhitespace(charAt(doc, pos))) pos--; + if (pos < 0) return ""; + if (charAt(doc, pos) === "(") { + pos--; + } + while (pos >= 0 && isWhitespace(charAt(doc, pos))) pos--; + const end = pos; + while (pos >= 0 && isAlpha(charAt(doc, pos))) pos--; + const start = pos + 1; + if (end < start) return ""; + return doc.sliceString(start, end + 1).toLowerCase(); +} + +function shouldRenderColor(doc: Text, start: number, end: number): boolean { + const immediatePrev = charAt(doc, start - 1); + if (disallowedBoundaryBefore.has(immediatePrev)) return false; + + const immediateNext = charAt(doc, end); + if (disallowedBoundaryAfter.has(immediateNext)) return false; + + const prevNonWhitespaceIndex = findPrevNonWhitespace(doc, start); + if (prevNonWhitespaceIndex !== -1) { + const prevNonWhitespaceChar = charAt(doc, prevNonWhitespaceIndex); + if (disallowedBoundaryBefore.has(prevNonWhitespaceChar)) return false; + const prevWord = readWordBefore(doc, prevNonWhitespaceIndex); + if (ignoredLeadingWords.has(prevWord)) return false; + } + + const nextNonWhitespaceIndex = findNextNonWhitespace(doc, end); + if (nextNonWhitespaceIndex < doc.length) { + const nextNonWhitespaceChar = charAt(doc, nextNonWhitespaceIndex); + if (disallowedBoundaryAfter.has(nextNonWhitespaceChar)) return false; + } + + return true; +} + +class ColorWidget extends WidgetType { + state: ColorWidgetState; + color: string; + colorRaw: string; + + constructor({ color, colorRaw, ...state }: ColorWidgetParams) { + super(); + this.state = state; // from, to, colorType, alpha + this.color = color; // hex for input value + this.colorRaw = colorRaw; // original css color string + } + + eq(other: ColorWidget): boolean { + return ( + other.state.colorType === this.state.colorType && + other.color === this.color && + other.state.from === this.state.from && + other.state.to === this.state.to && + (other.state.alpha || "") === (this.state.alpha || "") + ); + } + + toDOM(): HTMLElement { + const wrapper = document.createElement("span"); + wrapper.className = "cm-color-chip"; + wrapper.style.display = "inline-block"; + wrapper.style.width = "0.9em"; + wrapper.style.height = "0.9em"; + wrapper.style.borderRadius = "2px"; + wrapper.style.verticalAlign = "middle"; + wrapper.style.margin = "0 2px"; + wrapper.style.boxSizing = "border-box"; + wrapper.style.border = "1px solid rgba(0,0,0,0.2)"; + wrapper.style.backgroundColor = this.colorRaw; + wrapper.dataset["color"] = this.color; + wrapper.dataset["colorraw"] = this.colorRaw; + wrapper.style.cursor = "pointer"; + colorState.set(wrapper, this.state); + return wrapper; + } + + ignoreEvent(): boolean { + return false; + } +} + +function colorDecorations(view: EditorView): DecorationSet { + const deco: Range[] = []; + const ranges = view.visibleRanges; + const doc = view.state.doc; + for (const { from, to } of ranges) { + const text = doc.sliceString(from, to); + // Any color using global matcher from utils (captures named/rgb/rgba/hsl/hsla/hex) + RGBG.lastIndex = 0; + for (let m: RegExpExecArray | null; (m = RGBG.exec(text)); ) { + const raw = m[2]; + const start = from + m.index + m[1].length; + const end = start + raw.length; + if (!shouldRenderColor(doc, start, end)) continue; + const c = color(raw); + const colorHex = c.hex.toString(false); + deco.push( + Decoration.widget({ + widget: new ColorWidget({ + from: start, + to: end, + color: colorHex, + colorRaw: raw, + colorType: enumColorType.named, + }), + side: -1, + }).range(start), + ); + } + } + + return Decoration.set(deco, true); +} + +class ColorViewPlugin { + decorations: DecorationSet; + raf = 0; + pendingView: EditorView | null = null; + + constructor(view: EditorView) { + this.decorations = colorDecorations(view); + } + + update(update: ViewUpdate): void { + if (update.docChanged || update.viewportChanged) { + this.scheduleDecorations(update.view); + } + const readOnly = update.view.contentDOM.ariaReadOnly === "true"; + const editable = update.view.contentDOM.contentEditable === "true"; + const canBeEdited = readOnly === false && editable; + this.changePicker(update.view, canBeEdited); + } + + scheduleDecorations(view: EditorView): void { + this.pendingView = view; + if (this.raf) return; + // Color chips are decorative, so batch rapid viewport/doc changes into + // one animation frame instead of rebuilding on every intermediate update. + this.raf = requestAnimationFrame(() => { + this.raf = 0; + const pendingView = this.pendingView; + this.pendingView = null; + if (!pendingView) return; + this.decorations = colorDecorations(pendingView); + }); + } + + changePicker(view: EditorView, canBeEdited: boolean): void { + const doms = view.contentDOM.querySelectorAll("input[type=color]"); + doms.forEach((inp) => { + const input = inp as HTMLInputElement; + if (canBeEdited) { + input.removeAttribute("disabled"); + } else { + input.setAttribute("disabled", ""); + } + }); + } + + destroy(): void { + if (this.raf) { + cancelAnimationFrame(this.raf); + this.raf = 0; + } + this.pendingView = null; + } +} + +export const colorView = (showPicker = true) => + ViewPlugin.fromClass(ColorViewPlugin, { + decorations: (v) => v.decorations, + eventHandlers: { + click: (e: PointerEvent, view: EditorView): boolean => { + const target = e.target as HTMLElement | null; + const chip = target?.closest?.(".cm-color-chip") as HTMLElement | null; + if (!chip) return false; + // Respect read-only and setting toggle + const readOnly = view.contentDOM.ariaReadOnly === "true"; + const editable = view.contentDOM.contentEditable === "true"; + const canBeEdited = !readOnly && editable; + if (!canBeEdited) return true; + const data = colorState.get(chip); + if (!data) return false; + + pickColor(chip.dataset.colorraw || chip.dataset.color || "") + .then((picked: string | null) => { + if (!picked) return; + view.dispatch({ + changes: { from: data.from, to: data.to, insert: picked }, + }); + }) + .catch(() => { + /* ignore */ + }); + + return true; + }, + }, + }); + +export default colorView; diff --git a/src/cm/commandRegistry.js b/src/cm/commandRegistry.js new file mode 100644 index 000000000..498d09d26 --- /dev/null +++ b/src/cm/commandRegistry.js @@ -0,0 +1,1629 @@ +import fsOperation from "fileSystem"; +import * as cmCommands from "@codemirror/commands"; +import { + copyLineDown, + copyLineUp, + cursorCharLeft, + cursorCharRight, + cursorDocEnd, + cursorDocStart, + cursorGroupLeft, + cursorGroupRight, + cursorLineDown, + cursorLineEnd, + cursorLineStart, + cursorLineUp, + cursorMatchingBracket, + cursorPageDown, + cursorPageUp, + deleteCharBackward, + deleteCharForward, + deleteGroupBackward, + deleteGroupForward, + deleteLine, + deleteLineBoundaryForward, + deleteToLineEnd, + deleteToLineStart, + indentLess, + indentMore, + indentSelection, + insertBlankLine, + insertNewlineAndIndent, + lineComment, + lineUncomment, + moveLineDown, + moveLineUp, + redo, + selectAll, + selectCharLeft, + selectCharRight, + selectDocEnd, + selectDocStart, + selectGroupLeft, + selectGroupRight, + selectLine, + selectLineDown, + selectLineEnd, + selectLineStart, + selectLineUp, + selectMatchingBracket, + selectPageDown, + selectPageUp, + simplifySelection, + toggleBlockComment, + undo, +} from "@codemirror/commands"; +import { indentUnit as indentUnitFacet } from "@codemirror/language"; +import { + closeLintPanel, + forceLinting, + nextDiagnostic, + openLintPanel, + previousDiagnostic, +} from "@codemirror/lint"; +import { + LSPPlugin, + closeReferencePanel as lspCloseReferencePanel, + findReferences as lspFindReferences, + formatDocument as lspFormatDocument, + jumpToDeclaration as lspJumpToDeclaration, + jumpToDefinition as lspJumpToDefinition, + jumpToImplementation as lspJumpToImplementation, + jumpToTypeDefinition as lspJumpToTypeDefinition, +} from "@codemirror/lsp-client"; +import { Compartment, EditorSelection } from "@codemirror/state"; +import { keymap } from "@codemirror/view"; +import { + renameSymbol as acodeRenameSymbol, + clearDiagnosticsEffect, + clientManager, + nextSignature as lspNextSignature, + prevSignature as lspPrevSignature, + showSignatureHelp as lspShowSignatureHelp, +} from "cm/lsp"; +import { + closeReferencesPanel as acodeCloseReferencesPanel, + findAllReferences as acodeFindAllReferences, + findAllReferencesInTab as acodeFindAllReferencesInTab, +} from "cm/lsp/references"; +import { showDocumentSymbols } from "components/symbolsPanel"; +import toast from "components/toast"; +import prompt from "dialogs/prompt"; +import actions from "handlers/quickTools"; +import keyBindings from "lib/keyBindings"; +import settings from "lib/settings"; +import Url from "utils/Url"; + +const commandKeymapCompartment = new Compartment(); + +/** + * @typedef {import("@codemirror/view").EditorView} EditorView + */ + +/** + * @typedef {{ + * name: string; + * description?: string; + * readOnly?: boolean; + * run: (view?: EditorView | null) => boolean | void; + * requiresView?: boolean; + * defaultDescription?: string; + * defaultKey?: string | null; + * key?: string | null; + * }} CommandEntry + */ + +/** @type {Map} */ +const commandMap = new Map(); + +/** @type {Record} */ +let resolvedKeyBindings = keyBindings; + +/** @type {Record} */ +let cachedResolvedKeyBindings = {}; + +let resolvedKeyBindingsVersion = 0; + +/** @type {import("@codemirror/view").KeyBinding[]} */ +let cachedKeymap = []; + +const ARROW_KEY_MAP = { + left: "ArrowLeft", + right: "ArrowRight", + up: "ArrowUp", + down: "ArrowDown", +}; + +const SPECIAL_KEY_MAP = { + esc: "Escape", + escape: "Escape", + return: "Enter", + enter: "Enter", + space: "Space", + del: "Delete", + delete: "Delete", + backspace: "Backspace", + tab: "Tab", + home: "Home", + end: "End", + pageup: "PageUp", + pagedown: "PageDown", + insert: "Insert", +}; + +const MODIFIER_MAP = { + ctrl: "Mod", + control: "Mod", + cmd: "Mod", + meta: "Mod", + shift: "Shift", + alt: "Alt", + option: "Alt", +}; + +const CODEMIRROR_COMMAND_ENTRIES = Object.entries(cmCommands).filter( + ([, value]) => typeof value === "function", +); + +const CODEMIRROR_COMMAND_MAP = new Map( + CODEMIRROR_COMMAND_ENTRIES.map(([name, fn]) => [name, fn]), +); + +registerCoreCommands(); +registerLspCommands(); +registerLintCommands(); +registerCommandsFromKeyBindings(); +rebuildKeymap(); + +function registerCoreCommands() { + addCommand({ + name: "focusEditor", + description: "Focus editor", + readOnly: true, + requiresView: false, + run(view) { + const resolvedView = resolveView(view); + resolvedView?.focus(); + return true; + }, + }); + addCommand({ + name: "findFile", + description: "Find file in workspace", + readOnly: true, + requiresView: false, + run() { + acode.exec("find-file"); + return true; + }, + }); + addCommand({ + name: "closeCurrentTab", + description: "Close current tab", + readOnly: false, + requiresView: false, + run() { + acode.exec("close-current-tab"); + return true; + }, + }); + addCommand({ + name: "closeAllTabs", + description: "Close all tabs", + readOnly: false, + requiresView: false, + run() { + acode.exec("close-all-tabs"); + return true; + }, + }); + addCommand({ + name: "togglePinnedTab", + description: "Pin or unpin current tab", + readOnly: true, + requiresView: false, + run() { + acode.exec("toggle-pin-tab"); + return true; + }, + }); + addCommand({ + name: "newFile", + description: "Create new file", + readOnly: true, + requiresView: false, + run() { + acode.exec("new-file"); + return true; + }, + }); + addCommand({ + name: "openFile", + description: "Open a file", + readOnly: true, + requiresView: false, + run() { + acode.exec("open-file"); + return true; + }, + }); + addCommand({ + name: "openFolder", + description: "Open a folder", + readOnly: true, + requiresView: false, + run() { + acode.exec("open-folder"); + return true; + }, + }); + addCommand({ + name: "saveFile", + description: "Save current file", + readOnly: true, + requiresView: false, + run() { + acode.exec("save"); + return true; + }, + }); + addCommand({ + name: "saveFileAs", + description: "Save as current file", + readOnly: true, + requiresView: false, + run() { + acode.exec("save-as"); + return true; + }, + }); + addCommand({ + name: "saveAllChanges", + description: "Save all changes", + readOnly: true, + requiresView: false, + run() { + acode.exec("save-all-changes"); + return true; + }, + }); + addCommand({ + name: "nextFile", + description: "Open next file tab", + readOnly: true, + requiresView: false, + run() { + acode.exec("next-file"); + return true; + }, + }); + addCommand({ + name: "prevFile", + description: "Open previous file tab", + readOnly: true, + requiresView: false, + run() { + acode.exec("prev-file"); + return true; + }, + }); + addCommand({ + name: "showSettingsMenu", + description: "Show settings menu", + readOnly: true, + requiresView: false, + run() { + acode.exec("open", "settings"); + return true; + }, + }); + addCommand({ + name: "renameFile", + description: "Rename active file", + readOnly: true, + requiresView: false, + run() { + acode.exec("rename"); + return true; + }, + }); + addCommand({ + name: "run", + description: "Preview HTML and MarkDown", + readOnly: true, + requiresView: false, + run() { + acode.exec("run"); + return true; + }, + }); + addCommand({ + name: "openInAppBrowser", + description: "Open In-App Browser", + readOnly: true, + requiresView: false, + run: openInAppBrowserCommand, + }); + addCommand({ + name: "toggleFullscreen", + description: "Toggle full screen mode", + readOnly: true, + requiresView: false, + run() { + acode.exec("toggle-fullscreen"); + return true; + }, + }); + addCommand({ + name: "toggleSidebar", + description: "Toggle sidebar", + readOnly: true, + requiresView: false, + run() { + acode.exec("toggle-sidebar"); + return true; + }, + }); + addCommand({ + name: "toggleMenu", + description: "Toggle main menu", + readOnly: true, + requiresView: false, + run() { + acode.exec("toggle-menu"); + return true; + }, + }); + addCommand({ + name: "toggleEditMenu", + description: "Toggle edit menu", + readOnly: true, + requiresView: false, + run() { + acode.exec("toggle-editmenu"); + return true; + }, + }); + addCommand({ + name: "selectall", + description: "Select all", + readOnly: true, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return selectAll(resolvedView); + }, + }); + addCommand({ + name: "gotoline", + description: "Go to line...", + readOnly: true, + requiresView: false, + run() { + acode.exec("goto"); + return true; + }, + }); + addCommand({ + name: "find", + description: "Find", + readOnly: true, + requiresView: false, + run() { + acode.exec("find"); + return true; + }, + }); + addCommand({ + name: "copy", + description: "Copy", + readOnly: true, + requiresView: true, + run: copyCommand, + }); + addCommand({ + name: "cut", + description: "Cut", + readOnly: false, + requiresView: true, + run: cutCommand, + }); + addCommand({ + name: "paste", + description: "Paste", + readOnly: false, + requiresView: true, + run: pasteCommand, + }); + addCommand({ + name: "problems", + description: "Show errors and warnings", + readOnly: true, + requiresView: false, + run() { + acode.exec("open", "problems"); + return true; + }, + }); + addCommand({ + name: "replace", + description: "Replace", + readOnly: true, + requiresView: false, + run() { + acode.exec("replace"); + return true; + }, + }); + addCommand({ + name: "openCommandPalette", + description: "Open command palette", + readOnly: true, + requiresView: false, + run() { + acode.exec("command-palette"); + return true; + }, + }); + addCommand({ + name: "modeSelect", + description: "Change language mode...", + readOnly: true, + requiresView: false, + run() { + acode.exec("syntax"); + return true; + }, + }); + addCommand({ + name: "toggleQuickTools", + description: "Toggle quick tools", + readOnly: true, + requiresView: false, + run() { + actions("toggle"); + return true; + }, + }); + addCommand({ + name: "selectWord", + description: "Select current word", + readOnly: false, + requiresView: true, + run: selectWordCommand, + }); + addCommand({ + name: "openLogFile", + description: "Open Log File", + readOnly: true, + requiresView: false, + run() { + acode.exec("open-log-file"); + return true; + }, + }); + addCommand({ + name: "increaseUiZoom", + description: "Increase UI zoom", + readOnly: true, + requiresView: false, + run: () => adjustUiZoom(10), + }); + addCommand({ + name: "decreaseUiZoom", + description: "Decrease UI zoom", + readOnly: true, + requiresView: false, + run: () => adjustUiZoom(-10), + }); + addCommand({ + name: "increaseFontSize", + description: "Increase editor font size", + readOnly: true, + requiresView: false, + run: () => adjustFontSize(1), + }); + addCommand({ + name: "decreaseFontSize", + description: "Decrease editor font size", + readOnly: true, + requiresView: false, + run: () => adjustFontSize(-1), + }); + addCommand({ + name: "openPluginsPage", + description: "Open Plugins Page", + readOnly: true, + requiresView: false, + run() { + acode.exec("open", "plugins"); + return true; + }, + }); + addCommand({ + name: "openFileExplorer", + description: "File Explorer", + readOnly: true, + requiresView: false, + run() { + acode.exec("open", "file_browser"); + return true; + }, + }); + addCommand({ + name: "copyDeviceInfo", + description: "Copy Device info", + readOnly: true, + requiresView: false, + run() { + acode.exec("copy-device-info"); + return true; + }, + }); + addCommand({ + name: "changeAppTheme", + description: "Change App Theme", + readOnly: true, + requiresView: false, + run() { + acode.exec("change-app-theme"); + return true; + }, + }); + addCommand({ + name: "changeEditorTheme", + description: "Change Editor Theme", + readOnly: true, + requiresView: false, + run() { + acode.exec("change-editor-theme"); + return true; + }, + }); + addCommand({ + name: "openTerminal", + description: "Open Terminal", + readOnly: true, + requiresView: false, + run() { + acode.exec("new-terminal"); + return true; + }, + }); + addCommand({ + name: "acode:showWelcome", + description: "Show Welcome", + readOnly: true, + requiresView: false, + run() { + acode.exec("welcome"); + return true; + }, + }); + addCommand({ + name: "run-tests", + description: "Run Tests", + key: "Ctrl-Shift-T", + readOnly: true, + requiresView: false, + run() { + acode.exec("run-tests"); + return true; + }, + }); + addCommand({ + name: "dev:openInspector", + description: "Open Inspector", + run() { + acode.exec("open-inspector"); + return true; + }, + readOnly: true, + requiresView: false, + }); + addCommand({ + name: "dev:toggleDevTools", + description: "Toggle Developer Tools", + run() { + acode.exec("toggle-inspector"); + return true; + }, + readOnly: true, + requiresView: false, + key: "Ctrl-Shift-I", + }); + + // Additional editor-centric helpers mapped to CodeMirror primitives that have existing key bindings in defaults. + addCommand({ + name: "duplicateSelection", + description: "Duplicate selection", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return copyLineDown(resolvedView); + }, + }); + addCommand({ + name: "copylinesdown", + description: "Copy lines down", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return copyLineDown(resolvedView); + }, + }); + addCommand({ + name: "copylinesup", + description: "Copy lines up", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return copyLineUp(resolvedView); + }, + }); + addCommand({ + name: "movelinesdown", + description: "Move lines down", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return moveLineDown(resolvedView); + }, + }); + addCommand({ + name: "movelinesup", + description: "Move lines up", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return moveLineUp(resolvedView); + }, + }); + addCommand({ + name: "removeline", + description: "Remove line", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return deleteLine(resolvedView); + }, + }); + addCommand({ + name: "insertlineafter", + description: "Insert line after", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return insertBlankLine(resolvedView); + }, + }); + addCommand({ + name: "selectline", + description: "Select line", + readOnly: true, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return selectLine(resolvedView); + }, + }); + addCommand({ + name: "selectlinesdown", + description: "Select line down", + readOnly: true, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return selectLineDown(resolvedView); + }, + }); + addCommand({ + name: "selectlinesup", + description: "Select line up", + readOnly: true, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return selectLineUp(resolvedView); + }, + }); + addCommand({ + name: "selectlinestart", + description: "Select line start", + readOnly: true, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return selectLineStart(resolvedView); + }, + }); + addCommand({ + name: "selectlineend", + description: "Select line end", + readOnly: true, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return selectLineEnd(resolvedView); + }, + }); + addCommand({ + name: "indent", + description: "Indent", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + const { state } = resolvedView; + const hasSelection = state.selection.ranges.some((range) => !range.empty); + if (hasSelection) { + return indentMore(resolvedView); + } + const indentString = + state.facet(indentUnitFacet) || + (settings?.value?.softTab + ? " ".repeat(Math.max(1, Number(settings?.value?.tabSize) || 2)) + : "\t"); + const insert = indentString && indentString.length ? indentString : "\t"; + resolvedView.dispatch( + state.changeByRange((range) => ({ + changes: { from: range.from, to: range.to, insert }, + range: EditorSelection.cursor(range.from + insert.length), + })), + ); + return true; + }, + }); + addCommand({ + name: "outdent", + description: "Outdent", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return indentLess(resolvedView); + }, + }); + addCommand({ + name: "indentselection", + description: "Indent selection", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return indentSelection(resolvedView); + }, + }); + addCommand({ + name: "newline", + description: "Insert newline", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return insertNewlineAndIndent(resolvedView); + }, + }); + addCommand({ + name: "joinlines", + description: "Join lines", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return deleteLineBoundaryForward(resolvedView); + }, + }); + addCommand({ + name: "deletetolinestart", + description: "Delete to line start", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return deleteToLineStart(resolvedView); + }, + }); + addCommand({ + name: "deletetolineend", + description: "Delete to line end", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return deleteToLineEnd(resolvedView); + }, + }); + addCommand({ + name: "togglecomment", + description: "Toggle comment", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return lineComment(resolvedView); + }, + }); + addCommand({ + name: "comment", + description: "Add line comment", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return lineComment(resolvedView); + }, + }); + addCommand({ + name: "uncomment", + description: "Remove line comment", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return lineUncomment(resolvedView); + }, + }); + addCommand({ + name: "toggleBlockComment", + description: "Toggle block comment", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return toggleBlockComment(resolvedView); + }, + }); + addCommand({ + name: "undo", + description: "Undo", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return undo(resolvedView); + }, + }); + addCommand({ + name: "redo", + description: "Redo", + readOnly: false, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return redo(resolvedView); + }, + }); + addCommand({ + name: "simplifySelection", + description: "Simplify selection", + readOnly: true, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return simplifySelection(resolvedView); + }, + }); +} + +function registerLspCommands() { + addCommand({ + name: "formatDocument", + description: "Format document (Language Server)", + readOnly: false, + requiresView: true, + run: runLspCommand(lspFormatDocument), + }); + addCommand({ + name: "renameSymbol", + description: "Rename symbol (Language Server)", + readOnly: false, + requiresView: true, + run: runLspCommand(acodeRenameSymbol), + }); + addCommand({ + name: "showSignatureHelp", + description: "Show signature help", + readOnly: true, + requiresView: true, + run: runLspCommand(lspShowSignatureHelp), + }); + addCommand({ + name: "nextSignature", + description: "Next signature", + readOnly: true, + requiresView: true, + run: runLspCommand(lspNextSignature, { silentOnMissing: true }), + }); + addCommand({ + name: "prevSignature", + description: "Previous signature", + readOnly: true, + requiresView: true, + run: runLspCommand(lspPrevSignature, { silentOnMissing: true }), + }); + addCommand({ + name: "jumpToDefinition", + description: "Go to definition (Language Server)", + readOnly: true, + requiresView: true, + run: runLspCommand(lspJumpToDefinition), + }); + addCommand({ + name: "jumpToDeclaration", + description: "Go to declaration (Language Server)", + readOnly: true, + requiresView: true, + run: runLspCommand(lspJumpToDeclaration), + }); + addCommand({ + name: "jumpToTypeDefinition", + description: "Go to type definition (Language Server)", + readOnly: true, + requiresView: true, + run: runLspCommand(lspJumpToTypeDefinition), + }); + addCommand({ + name: "jumpToImplementation", + description: "Go to implementation (Language Server)", + readOnly: true, + requiresView: true, + run: runLspCommand(lspJumpToImplementation), + }); + addCommand({ + name: "findReferences", + description: "Find all references (Language Server)", + readOnly: true, + requiresView: true, + async run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + const plugin = LSPPlugin.get(resolvedView); + if (!plugin) { + notifyLspUnavailable(); + return false; + } + return acodeFindAllReferences(resolvedView); + }, + }); + addCommand({ + name: "closeReferencePanel", + description: "Close references panel", + readOnly: true, + requiresView: false, + run() { + return acodeCloseReferencesPanel(); + }, + }); + addCommand({ + name: "findReferencesInTab", + description: "Find all references in new tab (Language Server)", + readOnly: true, + requiresView: true, + async run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + const plugin = LSPPlugin.get(resolvedView); + if (!plugin) { + notifyLspUnavailable(); + return false; + } + return acodeFindAllReferencesInTab(resolvedView); + }, + }); + addCommand({ + name: "restartAllLspServers", + description: "Restart all running LSP servers", + readOnly: true, + requiresView: false, + async run() { + const activeClients = clientManager.getActiveClients(); + if (!activeClients.length) { + toast("No LSP servers are currently running"); + return true; + } + const count = activeClients.length; + toast(`Restarting ${count} LSP server${count > 1 ? "s" : ""}...`); + + // Dispose all clients (also clears diagnostics) + await clientManager.dispose(); + + // Trigger reconnect for active file + editorManager?.restartLsp?.(); + return true; + }, + }); + addCommand({ + name: "stopAllLspServers", + description: "Stop all running LSP servers", + readOnly: true, + requiresView: false, + async run() { + const activeClients = clientManager.getActiveClients(); + if (!activeClients.length) { + toast("No LSP servers are currently running"); + return true; + } + const count = activeClients.length; + + // Dispose all clients + await clientManager.dispose(); + toast(`Stopped ${count} LSP server${count > 1 ? "s" : ""}`); + return true; + }, + }); + addCommand({ + name: "documentSymbols", + description: "Go to Symbol in Document...", + readOnly: true, + requiresView: true, + async run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return showDocumentSymbols(resolvedView); + }, + }); +} + +function registerLintCommands() { + addCommand({ + name: "openLintPanel", + description: "Open lint panel", + readOnly: true, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return openLintPanel(resolvedView); + }, + }); + addCommand({ + name: "closeLintPanel", + description: "Close lint panel", + readOnly: true, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return closeLintPanel(resolvedView); + }, + }); + addCommand({ + name: "nextDiagnostic", + description: "Go to next diagnostic", + readOnly: true, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return nextDiagnostic(resolvedView); + }, + }); + addCommand({ + name: "previousDiagnostic", + description: "Go to previous diagnostic", + readOnly: true, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return previousDiagnostic(resolvedView); + }, + }); +} + +function registerCommandsFromKeyBindings() { + Object.entries(keyBindings).forEach(([name, binding]) => { + if (commandMap.has(name)) return; + const description = binding?.description || humanizeCommandName(name); + const readOnly = binding?.readOnly ?? false; + const requiresView = !!binding?.editorOnly; + const commandFn = CODEMIRROR_COMMAND_MAP.get(name); + + if (binding?.action) { + addCommand({ + name, + description, + readOnly, + requiresView, + run(view) { + try { + if (requiresView) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + } + acode.exec(binding.action); + return true; + } catch (error) { + console.error(`Failed to execute action ${binding.action}`, error); + return false; + } + }, + }); + return; + } + + if (commandFn) { + addCommand({ + name, + description, + readOnly, + requiresView: true, + run(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + return commandFn(resolvedView); + }, + }); + } + }); +} + +function addCommand(entry) { + const command = { + ...entry, + defaultDescription: entry.description || entry.name, + defaultKey: entry.key ?? null, + key: entry.key ?? null, + }; + commandMap.set(entry.name, command); +} + +function resolveView(view) { + return view || editorManager?.editor || null; +} + +function notifyLspUnavailable() { + toast?.("Language server not available"); +} + +function runLspCommand(commandFn, options = {}) { + return (view) => { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + const plugin = LSPPlugin.get(resolvedView); + if (!plugin) { + if (!options?.silentOnMissing) { + notifyLspUnavailable(); + } + return false; + } + const result = commandFn(resolvedView); + return result !== false; + }; +} + +function humanizeCommandName(name) { + return name + .replace(/([a-z0-9])([A-Z])/g, "$1 $2") + .replace(/_/g, " ") + .replace(/^./, (char) => char.toUpperCase()); +} + +function copyCommand(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + const { state } = resolvedView; + const texts = state.selection.ranges.map((range) => { + if (range.empty) { + const line = state.doc.lineAt(range.head); + return state.doc.sliceString(line.from, line.to); + } + return state.doc.sliceString(range.from, range.to); + }); + const textToCopy = texts.join("\n"); + cordova.plugins.clipboard.copy(textToCopy); + toast?.(strings?.["copied to clipboard"] || "Copied to clipboard"); + return true; +} + +function cutCommand(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + const { state } = resolvedView; + const ranges = state.selection.ranges; + const segments = []; + let changes = []; + ranges.forEach((range) => { + if (range.empty) { + const line = state.doc.lineAt(range.head); + segments.push(state.doc.sliceString(line.from, line.to)); + changes.push({ from: line.from, to: line.to, insert: "" }); + return; + } + segments.push(state.doc.sliceString(range.from, range.to)); + changes.push({ from: range.from, to: range.to, insert: "" }); + }); + cordova.plugins.clipboard.copy(segments.join("\n")); + resolvedView.dispatch({ + changes, + selection: EditorSelection.single( + changes[0]?.from ?? state.selection.main.from, + ), + }); + return true; +} + +function pasteCommand(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + cordova.plugins.clipboard.paste((text = "") => { + const insertText = String(text); + resolvedView.dispatch( + resolvedView.state.changeByRange((range) => ({ + changes: { from: range.from, to: range.to, insert: insertText }, + range: EditorSelection.cursor(range.from + insertText.length), + })), + ); + }); + return true; +} + +function selectWordCommand(view) { + const resolvedView = resolveView(view); + if (!resolvedView) return false; + const { state } = resolvedView; + const ranges = state.selection.ranges.map((range) => { + const word = state.wordAt(range.head); + if (word) return EditorSelection.range(word.from, word.to); + const line = state.doc.lineAt(range.head); + return EditorSelection.range(line.from, line.to); + }); + resolvedView.dispatch({ + selection: EditorSelection.create(ranges, state.selection.mainIndex), + }); + return true; +} + +async function openInAppBrowserCommand() { + const url = await prompt("Enter url", "", "url", { + placeholder: "http://", + match: /^https?:\/\/.+/, + }); + if (url) acode.exec("open-inapp-browser", url); + return true; +} + +function adjustFontSize(delta) { + const current = settings?.value?.fontSize || "12px"; + const numeric = Number.parseInt(current, 10) || 12; + const next = Math.min(72, Math.max(6, numeric + delta)); + settings.value.fontSize = `${next}px`; + settings.update(false); + return true; +} + +function adjustUiZoom(delta) { + const current = Number(settings?.value?.uiZoom) || 100; + const next = Math.min(160, Math.max(70, current + delta)); + settings.value.uiZoom = next; + settings.update(false); + return true; +} + +function parseKeyString(keyString) { + if (!keyString) return []; + return String(keyString) + .split("|") + .map((combo) => combo.trim()) + .filter(Boolean); +} + +function hasOwnBindingOverride(name) { + return Object.prototype.hasOwnProperty.call(resolvedKeyBindings ?? {}, name); +} + +function resolveBindingInfo(name) { + const baseBinding = keyBindings[name] ?? null; + if (!hasOwnBindingOverride(name)) return baseBinding; + + const override = resolvedKeyBindings?.[name]; + if (override === null) { + return baseBinding ? { ...baseBinding, key: null } : { key: null }; + } + + if (!override || typeof override !== "object") { + return baseBinding; + } + + return baseBinding ? { ...baseBinding, ...override } : override; +} + +function buildResolvedKeyBindingsSnapshot() { + const bindingNames = new Set([ + ...Object.keys(keyBindings), + ...Object.keys(resolvedKeyBindings ?? {}), + ]); + + return Object.fromEntries( + Array.from(bindingNames, (name) => [name, resolveBindingInfo(name)]).filter( + ([, binding]) => binding, + ), + ); +} + +function toCodeMirrorKey(combo) { + if (!combo) return null; + const parts = combo.endsWith("-") + ? [...combo.slice(0, -1).split("-").filter(Boolean), "-"] + : combo + .split("-") + .map((part) => part.trim()) + .filter(Boolean); + const modifiers = []; + let key = null; + + parts.forEach((part, index) => { + const lower = part.toLowerCase(); + if (MODIFIER_MAP[lower]) { + const mod = MODIFIER_MAP[lower]; + if (!modifiers.includes(mod)) modifiers.push(mod); + return; + } + + if (ARROW_KEY_MAP[lower]) { + key = ARROW_KEY_MAP[lower]; + return; + } + + if (SPECIAL_KEY_MAP[lower]) { + key = SPECIAL_KEY_MAP[lower]; + return; + } + + if (part.length === 1 && /[a-z]/i.test(part)) { + key = part.length === 1 ? part.toLowerCase() : part; + return; + } + + key = part; + }); + + if (!key) return modifiers.join("-") || null; + return modifiers.length ? `${modifiers.join("-")}-${key}` : key; +} + +function rebuildKeymap() { + const bindings = []; + cachedResolvedKeyBindings = buildResolvedKeyBindingsSnapshot(); + commandMap.forEach((command, name) => { + const bindingInfo = resolveBindingInfo(name); + command.description = + bindingInfo?.description || command.defaultDescription; + const keySource = + bindingInfo && Object.prototype.hasOwnProperty.call(bindingInfo, "key") + ? bindingInfo.key + : (command.defaultKey ?? null); + command.key = keySource; + const combos = parseKeyString(keySource); + combos.forEach((combo) => { + const cmKey = toCodeMirrorKey(combo); + if (!cmKey) return; + bindings.push({ + key: cmKey, + run: (view) => executeCommand(name, view), + preventDefault: true, + }); + }); + }); + cachedKeymap = bindings; + resolvedKeyBindingsVersion += 1; + return bindings; +} + +function resolveCommand(name) { + return commandMap.get(name) || null; +} + +function commandRunsInReadOnly(command, view) { + if (!view) return command.readOnly; + return view.state?.readOnly ? !!command.readOnly : true; +} + +export function executeCommand(name, view, args) { + const command = resolveCommand(name); + if (!command) return false; + const targetView = command.requiresView + ? resolveView(view) + : resolveView(view) || null; + if (command.requiresView && !targetView) return false; + if (!commandRunsInReadOnly(command, targetView)) return false; + try { + const result = command.run(targetView, args); + return result !== false; + } catch (error) { + console.error(`Failed to execute command ${name}`, error); + return false; + } +} + +export function getRegisteredCommands() { + return Array.from(commandMap.values()).map((command) => ({ + name: command.name, + description: command.description || command.defaultDescription, + key: command.key || null, + })); +} + +export function getResolvedKeyBindings() { + return cachedResolvedKeyBindings; +} + +export function getResolvedKeyBindingsVersion() { + return resolvedKeyBindingsVersion; +} + +export function getCommandKeymapExtension() { + return commandKeymapCompartment.of(keymap.of(cachedKeymap)); +} + +export async function setKeyBindings(view) { + await loadCustomKeyBindings(); + const bindings = rebuildKeymap(); + const resolvedView = resolveView(view); + applyCommandKeymap(resolvedView, bindings); +} + +async function loadCustomKeyBindings() { + try { + const bindingsFile = fsOperation(KEYBINDING_FILE); + if (await bindingsFile.exists()) { + const bindings = await bindingsFile.readFile("json"); + if (bindings && typeof bindings === "object") { + resolvedKeyBindings = bindings; + } + } else { + throw new Error("Key binding file not found"); + } + } catch (error) { + await resetKeyBindings(); + resolvedKeyBindings = keyBindings; + } +} + +export async function resetKeyBindings() { + try { + const fs = fsOperation(KEYBINDING_FILE); + const fileName = Url.basename(KEYBINDING_FILE); + const content = JSON.stringify(keyBindings, undefined, 2); + if (!(await fs.exists())) { + await fsOperation(DATA_STORAGE).createFile(fileName, content); + return; + } + await fs.writeFile(content); + } catch (error) { + window.log?.("error", "Reset Keybinding failed!"); + window.log?.("error", error); + } +} + +export { commandKeymapCompartment }; + +export function registerExternalCommand(descriptor = {}) { + const normalized = normalizeExternalCommand(descriptor); + if (!normalized) return null; + + const { name } = normalized; + if (commandMap.has(name)) { + commandMap.delete(name); + } + + addCommand(normalized); + const stored = commandMap.get(name); + if (stored) { + stored.key = normalized.key ?? stored.key; + } + + rebuildKeymap(); + return stored; +} + +export function removeExternalCommand(name) { + if (!name) return false; + const exists = commandMap.has(name); + if (!exists) return false; + commandMap.delete(name); + rebuildKeymap(); + return true; +} + +export function refreshCommandKeymap(view) { + const resolvedView = resolveView(view); + applyCommandKeymap(resolvedView); +} + +function normalizeExternalCommand(descriptor) { + const name = + typeof descriptor?.name === "string" ? descriptor.name.trim() : ""; + if (!name) { + console.warn("Command registration skipped: missing name", descriptor); + return null; + } + const exec = typeof descriptor?.exec === "function" ? descriptor.exec : null; + if (!exec) { + console.warn( + `Command registration skipped for "${name}": exec must be a function.`, + ); + return null; + } + + const requiresView = descriptor?.requiresView ?? true; + const key = normalizeExternalKey(descriptor?.bindKey); + + return { + name, + description: descriptor?.description || humanizeCommandName(name), + readOnly: descriptor?.readOnly ?? true, + requiresView, + key, + run(view, args) { + try { + const resolvedView = resolveView(view); + if (requiresView && !resolvedView) return false; + const result = exec(resolvedView || null, args); + return result !== false; + } catch (error) { + console.error(`Command \"${name}\" failed`, error); + return false; + } + }, + }; +} + +function normalizeExternalKey(bindKey) { + if (!bindKey) return null; + if (typeof bindKey === "string") return bindKey; + const combos = []; + if (typeof bindKey === "object") { + const pushCombo = (combo) => { + if (typeof combo === "string" && combo.trim()) combos.push(combo.trim()); + }; + pushCombo(bindKey.win); + pushCombo(bindKey.linux); + pushCombo(bindKey.mac); + } + return combos.length ? combos.join("|") : null; +} + +function applyCommandKeymap(view, bindings = cachedKeymap) { + if (!view) return; + view.dispatch({ + effects: commandKeymapCompartment.reconfigure( + keymap.of(bindings ?? cachedKeymap), + ), + }); +} diff --git a/src/cm/editorUtils.ts b/src/cm/editorUtils.ts new file mode 100644 index 000000000..ff750f061 --- /dev/null +++ b/src/cm/editorUtils.ts @@ -0,0 +1,182 @@ +import { foldEffect, foldedRanges } from "@codemirror/language"; +import type { EditorState, StateEffect } from "@codemirror/state"; +import { EditorSelection } from "@codemirror/state"; +import type { EditorView } from "@codemirror/view"; + +export interface FoldSpan { + fromLine: number; + fromCol: number; + toLine: number; + toCol: number; +} +export interface SelectionRange { + from: number; + to: number; +} +export interface SerializedSelection { + ranges: SelectionRange[]; + mainIndex: number; +} +export interface ScrollPosition { + scrollTop: number; + scrollLeft: number; +} + +/** + * Get all folded ranges from CodeMirror editor state + */ +export function getAllFolds(state: EditorState): FoldSpan[] { + const doc = state.doc; + const folds: FoldSpan[] = []; + + foldedRanges(state).between(0, doc.length, (from, to) => { + const fromPos = doc.lineAt(from); + const toPos = doc.lineAt(to); + folds.push({ + fromLine: fromPos.number, + fromCol: from - fromPos.from, + toLine: toPos.number, + toCol: to - toPos.from, + }); + }); + + return folds; +} + +/** + * Get current selection from editor view + */ +export function getSelection(view: EditorView): SerializedSelection { + const sel = view.state.selection; + return { + ranges: sel.ranges.map((r) => ({ from: r.from, to: r.to })), + mainIndex: sel.mainIndex, + }; +} + +/** + * Get scroll position from editor view + */ +export function getScrollPosition(view: EditorView): ScrollPosition { + const { scrollTop, scrollLeft } = view.scrollDOM; + return { scrollTop, scrollLeft }; +} + +/** + * Set scroll position in CodeMirror editor view + */ +export function setScrollPosition( + view: EditorView, + scrollTop?: number, + scrollLeft?: number, +): void { + const scroller = view.scrollDOM; + + if (typeof scrollTop === "number") { + scroller.scrollTop = scrollTop; + } + + if (typeof scrollLeft === "number") { + scroller.scrollLeft = scrollLeft; + } +} + +/** + * Restore selection to editor view + */ +export function restoreSelection( + view: EditorView, + sel: SerializedSelection | null | undefined, +): void { + if (!sel || !sel.ranges || !sel.ranges.length) return; + const len = view.state.doc.length; + + const ranges = sel.ranges + .map((r) => { + const from = Math.max(0, Math.min(len, r.from | 0)); + const to = Math.max(0, Math.min(len, r.to | 0)); + return EditorSelection.range(from, to); + }) + .filter(Boolean); + + if (!ranges.length) return; + + const mainIndex = + sel.mainIndex >= 0 && sel.mainIndex < ranges.length ? sel.mainIndex : 0; + + view.dispatch({ + selection: EditorSelection.create(ranges, mainIndex), + scrollIntoView: true, + }); +} + +/** + * Restore folds to CodeMirror editor + */ +export function restoreFolds( + view: EditorView, + folds: FoldSpan[] | null | undefined, +): void { + if (!Array.isArray(folds) || folds.length === 0) return; + + function lineColToOffset( + doc: EditorState["doc"], + line: number, + col: number, + ): number { + const ln = doc.line(line); + return Math.min(ln.from + col, ln.to); + } + + function loadFolds( + state: EditorState, + saved: FoldSpan[], + ): StateEffect<{ from: number; to: number }>[] { + const doc = state.doc; + const effects: StateEffect<{ from: number; to: number }>[] = []; + + for (const f of saved) { + // Validate line numbers + if (f.fromLine < 1 || f.fromLine > doc.lines) continue; + if (f.toLine < 1 || f.toLine > doc.lines) continue; + + const from = lineColToOffset(doc, f.fromLine, f.fromCol); + const to = lineColToOffset(doc, f.toLine, f.toCol); + if (to > from) { + effects.push(foldEffect.of({ from, to })); + } + } + return effects; + } + + const restoreEffects = loadFolds(view.state, folds); + if (restoreEffects.length) { + view.dispatch({ effects: restoreEffects }); + } +} + +/** + * Clear selection, keeping only cursor position + */ +export function clearSelection(view: EditorView): void { + view.dispatch({ + selection: EditorSelection.single(view.state.selection.main.head), + scrollIntoView: true, + }); + // Also clear the global DOM selection to prevent native selection handles/menus persisting + try { + document.getSelection()?.removeAllRanges(); + } catch (_) { + // Ignore errors + } +} + +export default { + getAllFolds, + getSelection, + getScrollPosition, + setScrollPosition, + restoreSelection, + restoreFolds, + clearSelection, +}; diff --git a/src/cm/indentGuides.ts b/src/cm/indentGuides.ts new file mode 100644 index 000000000..61ac48eed --- /dev/null +++ b/src/cm/indentGuides.ts @@ -0,0 +1,435 @@ +import { getIndentUnit, syntaxTree } from "@codemirror/language"; +import type { Extension } from "@codemirror/state"; +import { EditorState, RangeSetBuilder } from "@codemirror/state"; +import { + Decoration, + type DecorationSet, + EditorView, + ViewPlugin, + type ViewUpdate, +} from "@codemirror/view"; +import type { SyntaxNode } from "@lezer/common"; + +/** + * Configuration options for indent guides + */ +export interface IndentGuidesConfig { + /** Whether to highlight the guide at the cursor's indent level */ + highlightActiveGuide?: boolean; + /** Whether to hide guides on blank lines */ + hideOnBlankLines?: boolean; +} + +const defaultConfig: Required = { + highlightActiveGuide: true, + hideOnBlankLines: false, +}; + +const GUIDE_MARK_CLASS = "cm-indent-guides"; + +/** + * Get the tab size from editor state + */ +function getTabSize(state: EditorState): number { + const tabSize = state.facet(EditorState.tabSize); + return Number.isFinite(tabSize) && tabSize > 0 ? tabSize : 4; +} + +/** + * Resolve the indentation width used for guide spacing. + */ +function getIndentUnitColumns(state: EditorState): number { + const width = getIndentUnit(state); + if (Number.isFinite(width) && width > 0) return width; + return getTabSize(state); +} + +/** + * Calculate the visual indentation of a line + */ +function getLineIndentation(line: string, tabSize: number): number { + let columns = 0; + for (const ch of line) { + if (ch === " ") { + columns++; + } else if (ch === "\t") { + columns += tabSize - (columns % tabSize); + } else { + break; + } + } + return columns; +} + +/** + * Check if a line is blank + */ +function isBlankLine(line: string): boolean { + return /^\s*$/.test(line); +} + +/** + * Count the leading indentation characters of a line. + */ +function getLeadingWhitespaceLength(line: string): number { + let count = 0; + for (const ch of line) { + if (ch === " " || ch === "\t") { + count++; + continue; + } + break; + } + return count; +} + +/** + * Node types that represent scope blocks in various languages + */ +const SCOPE_NODE_TYPES = new Set([ + "Block", + "ObjectExpression", + "ArrayExpression", + "ArrowFunction", + "FunctionDeclaration", + "FunctionExpression", + "ClassBody", + "ClassDeclaration", + "MethodDeclaration", + "SwitchBody", + "IfStatement", + "WhileStatement", + "ForStatement", + "ForInStatement", + "ForOfStatement", + "TryStatement", + "CatchClause", + "Object", + "Array", + "Element", + "SelfClosingTag", + "RuleSet", + "DeclarationList", + "Body", + "Suite", + "Program", + "Script", + "Module", +]); + +/** + * Information about the active scope for highlighting + */ +interface ActiveScope { + level: number; + startLine: number; + endLine: number; +} + +/** + * Find the active scope using syntax tree analysis + */ +function getActiveScope( + view: EditorView, + indentUnit: number, +): ActiveScope | null { + const { state } = view; + const { main } = state.selection; + const cursorPos = main.head; + + const tree = syntaxTree(state); + if (!tree || tree.length === 0) { + return getActiveScopeByIndentation(state, indentUnit); + } + + let scopeNode: SyntaxNode | null = null; + let node: SyntaxNode | null = tree.resolveInner(cursorPos, 0); + + while (node) { + if (SCOPE_NODE_TYPES.has(node.name)) { + scopeNode = node; + break; + } + node = node.parent; + } + + if (!scopeNode) { + return null; + } + + const startLine = state.doc.lineAt(scopeNode.from); + const endLine = state.doc.lineAt(scopeNode.to); + let contentStartLine = startLine.number; + if (startLine.number < endLine.number) { + contentStartLine = startLine.number + 1; + } + + const tabSize = getTabSize(state); + let level = 0; + + for (let ln = contentStartLine; ln <= endLine.number; ln++) { + const line = state.doc.line(ln); + if (!isBlankLine(line.text)) { + const indent = getLineIndentation(line.text, tabSize); + level = Math.floor(indent / indentUnit); + break; + } + } + + if (level <= 0) { + return null; + } + + return { + level, + startLine: startLine.number, + endLine: endLine.number, + }; +} + +/** + * Fallback: Find active scope by indentation when no syntax tree is available + */ +function getActiveScopeByIndentation( + state: EditorState, + indentUnit: number, +): ActiveScope | null { + const { main } = state.selection; + const cursorLine = state.doc.lineAt(main.head); + const tabSize = getTabSize(state); + + let cursorIndent = getLineIndentation(cursorLine.text, tabSize); + + if (isBlankLine(cursorLine.text)) { + for (let lineNum = cursorLine.number - 1; lineNum >= 1; lineNum--) { + const prevLine = state.doc.line(lineNum); + if (!isBlankLine(prevLine.text)) { + cursorIndent = getLineIndentation(prevLine.text, tabSize); + break; + } + } + } + + const cursorLevel = Math.floor(cursorIndent / indentUnit); + if (cursorLevel <= 0) return null; + + let startLine = cursorLine.number; + for (let lineNum = cursorLine.number - 1; lineNum >= 1; lineNum--) { + const line = state.doc.line(lineNum); + if (isBlankLine(line.text)) continue; + const lineLevel = Math.floor( + getLineIndentation(line.text, tabSize) / indentUnit, + ); + if (lineLevel < cursorLevel) break; + startLine = lineNum; + } + + let endLine = cursorLine.number; + for ( + let lineNum = cursorLine.number + 1; + lineNum <= state.doc.lines; + lineNum++ + ) { + const line = state.doc.line(lineNum); + if (isBlankLine(line.text)) { + endLine = lineNum; + continue; + } + const lineLevel = Math.floor( + getLineIndentation(line.text, tabSize) / indentUnit, + ); + if (lineLevel < cursorLevel) break; + endLine = lineNum; + } + + return { level: cursorLevel, startLine, endLine }; +} + +function buildGuideStyle( + levels: number, + guideStepPx: number, + activeGuideIndex: number, +): string { + const images = []; + const positions = []; + const sizes = []; + + for (let i = 0; i < levels; i++) { + const color = + i === activeGuideIndex + ? "var(--indent-guide-active-color)" + : "var(--indent-guide-color)"; + images.push(`linear-gradient(${color}, ${color})`); + positions.push(`${i * guideStepPx}px 0`); + sizes.push("1px 100%"); + } + + return [ + `background-image:${images.join(",")}`, + "background-repeat:no-repeat", + `background-position:${positions.join(",")}`, + `background-size:${sizes.join(",")}`, + ].join(";"); +} + +/** + * Build decorations for indent guides + */ +function buildDecorations( + view: EditorView, + config: Required, +): DecorationSet { + const builder = new RangeSetBuilder(); + const { state } = view; + const tabSize = getTabSize(state); + const indentUnit = getIndentUnitColumns(state); + const guideStepPx = Math.max(view.defaultCharacterWidth * indentUnit, 1); + + const activeScope = config.highlightActiveGuide + ? getActiveScope(view, indentUnit) + : null; + + for (const { from: blockFrom, to: blockTo } of view.visibleRanges) { + const startLine = state.doc.lineAt(blockFrom); + const endLine = state.doc.lineAt(blockTo); + + for (let lineNum = startLine.number; lineNum <= endLine.number; lineNum++) { + const line = state.doc.line(lineNum); + const lineText = line.text; + + if (config.hideOnBlankLines && isBlankLine(lineText)) { + continue; + } + + const indentColumns = getLineIndentation(lineText, tabSize); + const levels = Math.floor(indentColumns / indentUnit); + if (levels <= 0) continue; + const leadingWhitespaceLength = getLeadingWhitespaceLength(lineText); + if (leadingWhitespaceLength <= 0) continue; + + let activeGuideIndex = -1; + if ( + activeScope && + lineNum >= activeScope.startLine && + lineNum <= activeScope.endLine && + levels >= activeScope.level + ) { + activeGuideIndex = activeScope.level - 1; + } + + builder.add( + line.from, + line.from + leadingWhitespaceLength, + Decoration.mark({ + attributes: { + class: GUIDE_MARK_CLASS, + style: buildGuideStyle(levels, guideStepPx, activeGuideIndex), + }, + }), + ); + } + } + + return builder.finish(); +} + +/** + * ViewPlugin for indent guides + */ +function createIndentGuidesPlugin( + config: Required, +): ViewPlugin<{ + decorations: DecorationSet; + update(update: ViewUpdate): void; +}> { + return ViewPlugin.fromClass( + class { + decorations: DecorationSet; + raf = 0; + pendingView: EditorView | null = null; + + constructor(view: EditorView) { + this.decorations = buildDecorations(view, config); + } + + update(update: ViewUpdate): void { + if ( + !update.docChanged && + !update.viewportChanged && + !update.geometryChanged && + !(config.highlightActiveGuide && update.selectionSet) + ) { + return; + } + this.scheduleBuild(update.view); + } + + scheduleBuild(view: EditorView): void { + this.pendingView = view; + if (this.raf) return; + // Guide rebuilding is cosmetic and can be expensive on large + // viewports, so we intentionally collapse bursts into one frame. + this.raf = requestAnimationFrame(() => { + this.raf = 0; + const pendingView = this.pendingView; + this.pendingView = null; + if (!pendingView) return; + this.decorations = buildDecorations(pendingView, config); + }); + } + + destroy(): void { + if (this.raf) { + cancelAnimationFrame(this.raf); + this.raf = 0; + } + this.pendingView = null; + } + }, + { + decorations: (v) => v.decorations, + }, + ); +} + +/** + * Theme for indent guides. + * Uses a single span around leading indentation instead of per-guide widgets. + */ +const indentGuidesTheme = EditorView.baseTheme({ + ".cm-indent-guides": { + display: "inline-block", + verticalAlign: "top", + }, + "&": { + "--indent-guide-color": "rgba(128, 128, 128, 0.25)", + "--indent-guide-active-color": "rgba(128, 128, 128, 0.7)", + }, + "&light": { + "--indent-guide-color": "rgba(0, 0, 0, 0.1)", + "--indent-guide-active-color": "rgba(0, 0, 0, 0.4)", + }, + "&dark": { + "--indent-guide-color": "rgba(255, 255, 255, 0.1)", + "--indent-guide-active-color": "rgba(255, 255, 255, 0.4)", + }, +}); + +export function indentGuides(config: IndentGuidesConfig = {}): Extension { + const mergedConfig: Required = { + ...defaultConfig, + ...config, + }; + + return [createIndentGuidesPlugin(mergedConfig), indentGuidesTheme]; +} + +export function indentGuidesExtension( + enabled: boolean, + config: IndentGuidesConfig = {}, +): Extension { + if (!enabled) return []; + return indentGuides(config); +} + +export default indentGuides; diff --git a/src/cm/lineNumberSelection.ts b/src/cm/lineNumberSelection.ts new file mode 100644 index 000000000..f6ae02bdb --- /dev/null +++ b/src/cm/lineNumberSelection.ts @@ -0,0 +1,115 @@ +import { EditorSelection } from "@codemirror/state"; +import type { BlockInfo, EditorView } from "@codemirror/view"; + +type LineInfo = Pick | null | undefined; + +type LineNumberClickEvent = Pick< + MouseEvent, + | "button" + | "shiftKey" + | "altKey" + | "ctrlKey" + | "metaKey" + | "preventDefault" + | "defaultPrevented" +>; + +function toDocumentOffset( + value: number | null | undefined, + fallback = 0, +): number { + const resolved = value != null ? Number(value) : fallback; + return Number.isFinite(resolved) ? resolved : fallback; +} + +/** + * Resolve the selection range for a clicked document line. + * Includes the trailing line break when one exists to mirror Ace's + * full-line selection behavior. + */ +export function getLineSelectionRange( + state: EditorView["state"], + line: LineInfo, +): { from: number; to: number } | null { + if (!line) return null; + const from = Math.max(0, toDocumentOffset(line.from)); + const to = Math.max(from, toDocumentOffset(line.to, from)); + return { + from, + to: Math.min(to + 1, state.doc.length), + }; +} + +function getCurrentSelectionLineRange(state: EditorView["state"]): { + from: number; + to: number; +} { + const selection = state.selection.main; + const startLine = state.doc.lineAt(selection.from); + const endPos = selection.empty + ? selection.head + : Math.max(selection.to - 1, selection.from); + const endLine = state.doc.lineAt(endPos); + const startRange = getLineSelectionRange(state, startLine); + const endRange = getLineSelectionRange(state, endLine); + + return { + from: startRange?.from ?? selection.from, + to: endRange?.to ?? selection.to, + }; +} + +function createLineSelection(range: { + from: number; + to: number; +}): EditorSelection { + return EditorSelection.single(range.to, range.from); +} + +function createExtendedLineSelection( + state: EditorView["state"], + clickedRange: { from: number; to: number }, +): EditorSelection { + const currentRange = getCurrentSelectionLineRange(state); + const from = Math.min(currentRange.from, clickedRange.from); + const to = Math.max(currentRange.to, clickedRange.to); + + if (clickedRange.from <= currentRange.from) { + return EditorSelection.single(to, from); + } + + return EditorSelection.single(from, to); +} + +/** + * Select the clicked line from the line-number gutter. + * Shift-click extends the current selection by whole lines. + * Other modified or non-primary clicks are ignored so they don't interfere + * with context menus or alternate selection gestures. + */ +export function handleLineNumberClick( + view: EditorView | null | undefined, + line: LineInfo, + event: LineNumberClickEvent | null | undefined, +): boolean { + if (!view || !event || event.defaultPrevented) return false; + if ((event.button ?? 0) !== 0) return false; + if (event.altKey || event.ctrlKey || event.metaKey) { + return false; + } + + const range = getLineSelectionRange(view.state, line); + if (!range) return false; + + event.preventDefault(); + view.dispatch({ + selection: event.shiftKey + ? createExtendedLineSelection(view.state, range) + : createLineSelection(range), + userEvent: event.shiftKey ? "select.extend.pointer" : "select.pointer", + }); + view.focus(); + return true; +} + +export default handleLineNumberClick; diff --git a/src/cm/lsp/api.ts b/src/cm/lsp/api.ts new file mode 100644 index 000000000..fe3b8aad4 --- /dev/null +++ b/src/cm/lsp/api.ts @@ -0,0 +1,96 @@ +import { defineBundle, defineServer, installers } from "./providerUtils"; +import { + getServerBundle, + listServerBundles, + registerServerBundle, + unregisterServerBundle, +} from "./serverCatalog"; +import { + getServer, + getServersForLanguage, + listServers, + onRegistryChange, + type RegisterServerOptions, + registerServer, + type ServerUpdater, + unregisterServer, + updateServer, +} from "./serverRegistry"; +import type { + LspServerBundle, + LspServerDefinition, + LspServerManifest, +} from "./types"; + +export { defineBundle, defineServer, installers }; + +export type LspRegistrationEntry = LspServerManifest | LspServerBundle; + +function isBundleEntry(entry: LspRegistrationEntry): entry is LspServerBundle { + return typeof (entry as LspServerBundle)?.getServers === "function"; +} + +export function register( + entry: LspRegistrationEntry, + options?: RegisterServerOptions & { replace?: boolean }, +): LspServerDefinition | LspServerBundle { + if (isBundleEntry(entry)) { + return registerServerBundle(entry, options); + } + + return registerServer(entry, options); +} + +export function upsert( + entry: LspRegistrationEntry, +): LspServerDefinition | LspServerBundle { + return register(entry, { replace: true }); +} + +export const servers = { + get(id: string): LspServerDefinition | null { + return getServer(id); + }, + list(): LspServerDefinition[] { + return listServers(); + }, + listForLanguage( + languageId: string, + options?: { includeDisabled?: boolean }, + ): LspServerDefinition[] { + return getServersForLanguage(languageId, options); + }, + update(id: string, updater: ServerUpdater): LspServerDefinition | null { + return updateServer(id, updater); + }, + unregister(id: string): boolean { + return unregisterServer(id); + }, + onChange(listener: Parameters[0]): () => void { + return onRegistryChange(listener); + }, +}; + +export const bundles = { + list(): LspServerBundle[] { + return listServerBundles(); + }, + getForServer(id: string): LspServerBundle | null { + return getServerBundle(id); + }, + unregister(id: string): boolean { + return unregisterServerBundle(id); + }, +}; + +const lspApi = { + defineServer, + defineBundle, + register, + upsert, + installers, + servers, + bundles, +}; + +export default lspApi; diff --git a/src/cm/lsp/clientManager.ts b/src/cm/lsp/clientManager.ts new file mode 100644 index 000000000..3d37b0281 --- /dev/null +++ b/src/cm/lsp/clientManager.ts @@ -0,0 +1,1191 @@ +import { getIndentUnit, indentUnit } from "@codemirror/language"; +import type { LSPClientExtension } from "@codemirror/lsp-client"; +import { + findReferencesKeymap, + formatKeymap, + jumpToDefinitionKeymap, + LSPClient, + LSPPlugin, + serverCompletion, + serverDiagnostics, +} from "@codemirror/lsp-client"; +import { EditorState, Extension, MapMode } from "@codemirror/state"; +import { EditorView, keymap } from "@codemirror/view"; +import lspStatusBar from "components/lspStatusBar"; +import NotificationManager from "lib/notificationManager"; +import Uri from "utils/Uri"; +import { clearDiagnosticsEffect } from "./diagnostics"; +import { supportsBuiltinFormatting } from "./formattingSupport"; +import { inlayHintsExtension } from "./inlayHints"; +import { acodeRenameKeymap } from "./rename"; +import { ensureServerRunning } from "./serverLauncher"; +import serverRegistry from "./serverRegistry"; +import { hoverTooltips, signatureHelp } from "./tooltipExtensions"; +import { createTransport } from "./transport"; +import type { + BuiltinExtensionsConfig, + ClientManagerOptions, + ClientState, + DocumentUriContext, + FileMetadata, + FormattingOptions, + LspServerDefinition, + NormalizedRootUri, + ParsedUri, + RootUriContext, + TextEdit, + Transport, + TransportHandle, +} from "./types"; +import AcodeWorkspace from "./workspace"; + +function asArray(value: T | T[] | null | undefined): T[] { + if (!value) return []; + return Array.isArray(value) ? value : [value]; +} + +function pluginKey( + serverId: string, + rootUri: string | null | undefined, + useWorkspaceFolders?: boolean, +): string { + // For workspace folders mode, use just the server ID (one client per server type) + if (useWorkspaceFolders) { + return serverId; + } + return `${serverId}::${rootUri ?? "__global__"}`; +} + +function safeString(value: unknown): string { + return value != null ? String(value) : ""; +} + +function isVerboseLspLoggingEnabled(): boolean { + const buildInfo = (globalThis as { BuildInfo?: { debug?: boolean } }) + .BuildInfo; + return !!buildInfo?.debug; +} + +function logLspInfo(...args: unknown[]): void { + if (!isVerboseLspLoggingEnabled()) return; + console.info(...args); +} + +function isPlainObject(value: unknown): value is Record { + return !!value && typeof value === "object" && !Array.isArray(value); +} + +function resolveInitializationOptions( + server: LspServerDefinition, + clientConfig: Record, +): Record | undefined { + const serverOptions = isPlainObject(server.initializationOptions) + ? server.initializationOptions + : null; + const clientOptions = isPlainObject(clientConfig.initializationOptions) + ? clientConfig.initializationOptions + : null; + + if (serverOptions && clientOptions) { + return { + ...serverOptions, + ...clientOptions, + }; + } + + return serverOptions || clientOptions || undefined; +} + +interface InternalLSPRequest { + promise: Promise; +} + +type RequestInnerFn = ( + method: string, + params: Params, + mapped?: boolean, +) => InternalLSPRequest; + +function connectClient( + client: ExtendedLSPClient, + transport: Transport, + initializationOptions?: Record, +): void { + if (!initializationOptions || !Object.keys(initializationOptions).length) { + client.connect(transport); + return; + } + + const patchedClient = client as unknown as { + requestInner: RequestInnerFn; + }; + const originalRequestInner = patchedClient.requestInner.bind( + patchedClient, + ) as RequestInnerFn; + + patchedClient.requestInner = function patchedRequestInner( + method: string, + params: Params, + mapped?: boolean, + ): InternalLSPRequest { + if (method === "initialize" && isPlainObject(params)) { + params = { + ...params, + initializationOptions, + } as Params; + } + return originalRequestInner(method, params, mapped); + }; + + try { + client.connect(transport); + } finally { + patchedClient.requestInner = originalRequestInner; + } +} + +interface BuiltinExtensionsResult { + extensions: Extension[]; + diagnosticsExtension: Extension | LSPClientExtension | null; +} + +function buildBuiltinExtensions( + config: BuiltinExtensionsConfig = {}, +): BuiltinExtensionsResult { + const { + hover: includeHover = true, + completion: includeCompletion = true, + signature: includeSignature = true, + keymaps: includeKeymaps = true, + diagnostics: includeDiagnostics = true, + inlayHints: includeInlayHints = false, + formatting: includeFormatting = true, + } = config; + + const extensions: Extension[] = []; + let diagnosticsExtension: Extension | LSPClientExtension | null = null; + + if (includeCompletion) extensions.push(serverCompletion()); + if (includeHover) extensions.push(hoverTooltips()); + if (includeKeymaps) { + const bindings = [ + ...(includeFormatting ? formatKeymap : []), + ...acodeRenameKeymap, + ...jumpToDefinitionKeymap, + ...findReferencesKeymap, + ]; + if (bindings.length) { + extensions.push(keymap.of(bindings)); + } + } + if (includeSignature) extensions.push(signatureHelp()); + if (includeDiagnostics) { + const diagExt = serverDiagnostics(); + diagnosticsExtension = diagExt; + extensions.push(diagExt as Extension); + } + if (includeInlayHints) { + const hintsExt = inlayHintsExtension(); + extensions.push(hintsExt as LSPClientExtension as Extension); + } + + return { extensions, diagnosticsExtension }; +} + +interface LSPError extends Error { + code?: string; +} + +interface InitContext { + key: string; + normalizedRootUri: string | null; + originalRootUri: string | null; +} + +interface ExtendedLSPClient extends LSPClient { + __acodeLoggedInfo?: boolean; +} + +export class LspClientManager { + options: ClientManagerOptions; + + #clients: Map; + #pendingClients: Map>; + + constructor(options: ClientManagerOptions = {}) { + this.options = { ...options }; + this.#clients = new Map(); + this.#pendingClients = new Map(); + } + + setOptions(next: Partial): void { + this.options = { ...this.options, ...next }; + } + + getActiveClients(): ClientState[] { + return Array.from(this.#clients.values()); + } + + async getExtensionsForFile(metadata: FileMetadata): Promise { + const { + uri: originalUri, + languageId, + languageName, + view, + file, + rootUri, + } = metadata; + + const effectiveLang = safeString(languageId ?? languageName).toLowerCase(); + if (!effectiveLang) return []; + + const servers = serverRegistry.getServersForLanguage(effectiveLang); + if (!servers.length) return []; + + const lspExtensions: Extension[] = []; + const diagnosticsUiExtension = this.options.diagnosticsUiExtension; + + for (const server of servers) { + const normalizedUri = await this.#resolveDocumentUri(server, { + uri: originalUri, + file, + view, + languageId: effectiveLang, + rootUri, + }); + if (!normalizedUri) { + console.warn( + `Cannot resolve document URI for LSP server ${server.id}: ${originalUri}`, + ); + continue; + } + let targetLanguageId = effectiveLang; + if (server.resolveLanguageId) { + try { + const resolved = server.resolveLanguageId({ + languageId: effectiveLang, + languageName, + uri: normalizedUri, + file, + }); + if (resolved) targetLanguageId = safeString(resolved); + } catch (error) { + console.warn( + `LSP server ${server.id} failed to resolve language id for ${normalizedUri}`, + error, + ); + } + } + + try { + const clientState = await this.#ensureClient(server, { + uri: normalizedUri, + file, + view, + languageId: targetLanguageId, + rootUri, + }); + const plugin = clientState.client.plugin( + normalizedUri, + targetLanguageId, + ); + const aliases = + originalUri && originalUri !== normalizedUri ? [originalUri] : []; + clientState.attach(normalizedUri, view as EditorView, aliases); + lspExtensions.push(plugin); + } catch (error) { + const lspError = error as LSPError; + if (lspError?.code === "LSP_SERVER_UNAVAILABLE") { + console.info( + `Skipping LSP client for ${server.id}: ${lspError.message}`, + ); + continue; + } + console.error( + `Failed to initialize LSP client for ${server.id}`, + error, + ); + } + } + + if (diagnosticsUiExtension && lspExtensions.length) { + lspExtensions.push(...asArray(diagnosticsUiExtension)); + } + + return lspExtensions; + } + + async formatDocument( + metadata: FileMetadata, + options: FormattingOptions = {}, + ): Promise { + const { uri: originalUri, languageId, languageName, view, file } = metadata; + const effectiveLang = safeString(languageId ?? languageName).toLowerCase(); + if (!effectiveLang || !view) return false; + + const servers = serverRegistry.getServersForLanguage(effectiveLang); + if (!servers.length) return false; + + for (const server of servers) { + if (!supportsBuiltinFormatting(server)) continue; + try { + const normalizedUri = await this.#resolveDocumentUri(server, { + uri: originalUri, + file, + view, + languageId: effectiveLang, + rootUri: metadata.rootUri, + }); + if (!normalizedUri) { + console.warn( + `Cannot resolve document URI for formatting with ${server.id}: ${originalUri}`, + ); + continue; + } + const context: RootUriContext = { + uri: normalizedUri, + languageId: effectiveLang, + view, + file, + rootUri: metadata.rootUri, + }; + const state = await this.#ensureClient(server, context); + const capabilities = state.client.serverCapabilities; + if (!capabilities?.documentFormattingProvider) continue; + state.attach(normalizedUri, view); + const plugin = LSPPlugin.get(view); + if (!plugin) continue; + plugin.client.sync(); + const edits = await state.client.request< + { textDocument: { uri: string }; options: FormattingOptions }, + TextEdit[] | null + >("textDocument/formatting", { + textDocument: { uri: normalizedUri }, + options: buildFormattingOptions(view, options), + }); + if (!edits || !edits.length) { + plugin.client.sync(); + return true; + } + const applied = applyTextEdits(plugin, view, edits); + if (applied) { + plugin.client.sync(); + return true; + } + } catch (error) { + console.error(`LSP formatting failed for ${server.id}`, error); + } + } + return false; + } + + detach(uri: string, view: EditorView): void { + for (const state of this.#clients.values()) { + state.detach(uri, view); + } + } + + async dispose(): Promise { + try { + interface FileWithSession { + id?: string; + type?: string; + session?: EditorState; + } + + interface EditorManagerLike { + files?: FileWithSession[]; + editor?: EditorView; + activeFile?: FileWithSession; + } + + const em = (globalThis as Record).editorManager as + | EditorManagerLike + | undefined; + + if (em?.editor) { + try { + em.editor.dispatch({ effects: clearDiagnosticsEffect() }); + if (em.activeFile?.type === "editor") { + em.activeFile.session = em.editor.state; + } + } catch { + /* View may be disposed */ + } + } + + if (em?.files) { + for (const file of em.files) { + if (file?.type !== "editor" || file.id === em.activeFile?.id) + continue; + const session = file.session; + if (session && typeof session.update === "function") { + try { + file.session = session.update({ + effects: clearDiagnosticsEffect(), + }).state; + } catch { + /* State update failed */ + } + } + } + } + } catch { + /* Ignore errors */ + } + + const disposeOps: Promise[] = []; + for (const [key, state] of this.#clients.entries()) { + disposeOps.push(state.dispose()); + this.#clients.delete(key); + } + await Promise.allSettled(disposeOps); + } + + async #ensureClient( + server: LspServerDefinition, + context: RootUriContext, + ): Promise { + const useWsFolders = server.useWorkspaceFolders === true; + const resolvedRoot = await this.#resolveRootUri(server, context); + const { normalizedRootUri, originalRootUri } = normalizeRootUriForServer( + server, + resolvedRoot, + ); + + // For workspace folders mode, use a shared key based on server ID only + const key = pluginKey(server.id, normalizedRootUri, useWsFolders); + + // Return existing client if already initialized + if (this.#clients.has(key)) { + const existing = this.#clients.get(key)!; + // For workspace folders mode, add the new folder to the existing server + if (useWsFolders && normalizedRootUri) { + const workspace = existing.client.workspace as AcodeWorkspace | null; + if (workspace && !workspace.hasWorkspaceFolder(normalizedRootUri)) { + workspace.addWorkspaceFolder(normalizedRootUri); + } + } + return existing; + } + + // If initialization is already in progress, wait for it + if (this.#pendingClients.has(key)) { + return this.#pendingClients.get(key)!; + } + + // Create and track the pending initialization + const initPromise = this.#initializeClient(server, context, { + key, + normalizedRootUri: useWsFolders ? null : normalizedRootUri, + originalRootUri: useWsFolders ? null : originalRootUri, + }); + this.#pendingClients.set(key, initPromise); + + try { + return await initPromise; + } finally { + this.#pendingClients.delete(key); + } + } + + async #initializeClient( + server: LspServerDefinition, + context: RootUriContext, + initContext: InitContext, + ): Promise { + const { key, normalizedRootUri, originalRootUri } = initContext; + + const workspaceOptions = { + displayFile: this.options.displayFile, + openFile: this.options.openFile, + resolveLanguageId: this.options.resolveLanguageId, + }; + + const clientConfig = { ...(server.clientConfig ?? {}) }; + const initializationOptions = resolveInitializationOptions( + server, + clientConfig as Record, + ); + const builtinConfig = clientConfig.builtinExtensions ?? {}; + const useDefaultExtensions = clientConfig.useDefaultExtensions !== false; + const { extensions: defaultExtensions, diagnosticsExtension } = + useDefaultExtensions + ? buildBuiltinExtensions({ + hover: builtinConfig.hover !== false, + completion: builtinConfig.completion !== false, + signature: builtinConfig.signature !== false, + keymaps: builtinConfig.keymaps !== false, + diagnostics: builtinConfig.diagnostics !== false, + inlayHints: builtinConfig.inlayHints === true, + formatting: builtinConfig.formatting !== false, + }) + : { extensions: [], diagnosticsExtension: null }; + + const extraExtensions = asArray(this.options.clientExtensions); + const serverExtensions = asArray(clientConfig.extensions); + + interface ExtensionWithCapabilities { + clientCapabilities?: { + textDocument?: { + publishDiagnostics?: unknown; + }; + }; + } + + const wantsCustomDiagnostics = [ + ...extraExtensions, + ...serverExtensions, + ].some((ext) => { + const extWithCaps = ext as ExtensionWithCapabilities; + return !!extWithCaps?.clientCapabilities?.textDocument + ?.publishDiagnostics; + }); + + const filteredBuiltins = + wantsCustomDiagnostics && diagnosticsExtension + ? defaultExtensions.filter((ext) => ext !== diagnosticsExtension) + : defaultExtensions; + + const progressCapabilities: LSPClientExtension = { + clientCapabilities: { + window: { + workDoneProgress: true, + }, + }, + }; + + const mergedExtensions = [ + ...filteredBuiltins, + ...extraExtensions, + ...serverExtensions, + progressCapabilities, + ]; + clientConfig.extensions = mergedExtensions; + + const existingHandlers = clientConfig.notificationHandlers ?? {}; + + type LogLevel = "error" | "warn" | "log" | "info"; + interface LogMessageParams { + type?: number; + message?: string; + } + interface ShowMessageParams { + type?: number; + message?: string; + } + + clientConfig.notificationHandlers = { + ...existingHandlers, + "window/logMessage": (_client: LSPClient, params: unknown): boolean => { + const logParams = params as LogMessageParams; + if (!logParams?.message) return false; + const { type, message } = logParams; + let level: LogLevel = "info"; + switch (type) { + case 1: + level = "error"; + break; + case 2: + level = "warn"; + break; + case 4: + level = "log"; + break; + default: + level = "info"; + } + const logFn = console[level] ?? console.info; + logFn(`[LSP:${server.id}] ${message}`); + return true; + }, + "window/showMessage": (_client: LSPClient, params: unknown): boolean => { + const showParams = params as ShowMessageParams; + if (!showParams?.message) return false; + const { type, message } = showParams; + const serverLabel = server.label || server.id; + + // Helper to clean and truncate message for notifications + const cleanMessage = (msg: string, maxLen = 150): string => { + // Take only first line + let cleaned = msg.split("\n")[0].trim(); + if (cleaned.length > maxLen) { + cleaned = cleaned.slice(0, maxLen - 3) + "..."; + } + return cleaned; + }; + + // Use notifications for errors and warnings + if (type === 1 || type === 2) { + const notificationManager = new NotificationManager(); + notificationManager.pushNotification({ + title: serverLabel, + message: cleanMessage(message), + icon: type === 1 ? "error" : "warningreport_problem", + type: type === 1 ? "error" : "warning", + }); + logLspInfo(`[LSP:${server.id}] ${message}`); + return true; + } + + // For info/log messages, use status bar briefly + lspStatusBar.show({ + message: cleanMessage(message, 80), + title: serverLabel, + type: "info", + icon: type === 4 ? "autorenew" : "info", + duration: 5000, + }); + logLspInfo(`[LSP:${server.id}] ${message}`); + return true; + }, + "$/progress": (_client: LSPClient, params: unknown): boolean => { + interface ProgressParams { + token?: string | number; + value?: { + kind?: "begin" | "report" | "end"; + title?: string; + message?: string; + percentage?: number; + cancellable?: boolean; + }; + } + const progressParams = params as ProgressParams; + if (!progressParams?.value) return false; + + const { kind, title, message, percentage } = progressParams.value; + const displayTitle = title || server.label || server.id; + // Use server ID + token as unique status ID for concurrent progress tracking + const progressToken = progressParams.token; + const statusId = `${server.id}-progress-${progressToken ?? "default"}`; + + if (kind === "begin") { + lspStatusBar.show({ + id: statusId, + message: message || title || "Starting...", + title: displayTitle, + type: "info", + icon: "autorenew", + duration: false, + showProgress: typeof percentage === "number", + progress: percentage, + }); + } else if (kind === "report") { + lspStatusBar.update({ + id: statusId, + message: message, + progress: percentage, + }); + } else if (kind === "end") { + // Just hide the progress item silently, no "Complete" message + lspStatusBar.hideById(statusId); + } + + logLspInfo( + `[LSP:${server.id}] Progress: ${kind} - ${message || title || ""} ${typeof percentage === "number" ? `(${percentage}%)` : ""}`, + ); + return true; + }, + "$/typescriptVersion": (_client: LSPClient, params: unknown): boolean => { + interface TypeScriptVersionParams { + version?: string; + source?: string; + } + const versionParams = params as TypeScriptVersionParams; + if (!versionParams?.version) return false; + + const serverLabel = server.label || server.id; + const source = versionParams.source || "bundled"; + logLspInfo( + `[LSP:${server.id}] TypeScript ${versionParams.version} (${source})`, + ); + + // Show briefly in status bar + lspStatusBar.show({ + message: `TypeScript ${versionParams.version}`, + title: serverLabel, + type: "info", + icon: "code", + duration: 3000, + }); + return true; + }, + }; + + // Log unhandled notifications to help debug what servers are sending + const unhandledNotificationKey = + "unhandledNotification" as keyof typeof clientConfig; + if (!(unhandledNotificationKey in clientConfig)) { + ( + clientConfig as Record< + string, + (client: LSPClient, method: string, params: unknown) => void + > + ).unhandledNotification = ( + _client: LSPClient, + method: string, + params: unknown, + ) => { + logLspInfo( + `[LSP:${server.id}] Unhandled notification: ${method}`, + params, + ); + }; + } + + if (!clientConfig.workspace) { + clientConfig.workspace = (client: LSPClient) => + new AcodeWorkspace(client, workspaceOptions); + } + + if (normalizedRootUri && !clientConfig.rootUri) { + clientConfig.rootUri = normalizedRootUri; + } + + if (!normalizedRootUri && clientConfig.rootUri) { + delete clientConfig.rootUri; + } + + if (server.startupTimeout && !clientConfig.timeout) { + clientConfig.timeout = server.startupTimeout; + } + + let transportHandle: TransportHandle | undefined; + let client: ExtendedLSPClient | undefined; + + try { + // Get session from server ID for auto-port discovery + const session = server.id; + const serverResult = await ensureServerRunning(server, session); + + // Use discovered port if available (for auto-port discovery) + const dynamicPort = serverResult.discoveredPort; + + transportHandle = createTransport(server, { + ...context, + rootUri: normalizedRootUri ?? null, + originalRootUri: originalRootUri ?? undefined, + dynamicPort, + }); + await transportHandle.ready; + client = new LSPClient(clientConfig) as ExtendedLSPClient; + connectClient(client, transportHandle.transport, initializationOptions); + await client.initializing; + if (!client.__acodeLoggedInfo) { + // Log root URI info to console + if (normalizedRootUri) { + if (originalRootUri && originalRootUri !== normalizedRootUri) { + logLspInfo( + `[LSP:${server.id}] root ${normalizedRootUri} (from ${originalRootUri})`, + ); + } else { + logLspInfo(`[LSP:${server.id}] root`, normalizedRootUri); + } + } else if (originalRootUri) { + logLspInfo(`[LSP:${server.id}] root ignored`, originalRootUri); + } + if (initializationOptions) { + logLspInfo( + `[LSP:${server.id}] initializationOptions keys`, + Object.keys(initializationOptions), + ); + } + logLspInfo(`[LSP:${server.id}] initialized`); + client.__acodeLoggedInfo = true; + } + } catch (error) { + transportHandle?.dispose?.(); + throw error; + } + + const state = this.#createClientState({ + key, + server, + client, + transportHandle, + normalizedRootUri, + originalRootUri, + }); + + this.#clients.set(key, state); + return state; + } + + #createClientState(params: { + key: string; + server: LspServerDefinition; + client: LSPClient; + transportHandle: TransportHandle; + normalizedRootUri: string | null; + originalRootUri: string | null; + }): ClientState { + const { + key, + server, + client, + transportHandle, + normalizedRootUri, + originalRootUri, + } = params; + const fileRefs = new Map>(); + const uriAliases = new Map(); + const effectiveRoot = normalizedRootUri ?? originalRootUri ?? null; + + const attach = ( + uri: string, + view: EditorView, + aliases: string[] = [], + ): void => { + const existing = fileRefs.get(uri) ?? new Set(); + existing.add(view); + fileRefs.set(uri, existing); + uriAliases.set(uri, uri); + for (const alias of aliases) { + if (!alias || alias === uri) continue; + uriAliases.set(alias, uri); + } + const suffix = effectiveRoot ? ` (root ${effectiveRoot})` : ""; + logLspInfo(`[LSP:${server.id}] attached to ${uri}${suffix}`); + }; + + const detach = (uri: string, view?: EditorView): void => { + const actualUri = uriAliases.get(uri) ?? uri; + const existing = fileRefs.get(actualUri); + if (!existing) return; + if (view) existing.delete(view); + if (!view || !existing.size) { + fileRefs.delete(actualUri); + for (const [alias, target] of uriAliases.entries()) { + if (target === actualUri) { + uriAliases.delete(alias); + } + } + try { + // Only pass uri to closeFile - view is not needed for closing + // and passing it may cause issues if the view is already disposed + (client.workspace as AcodeWorkspace)?.closeFile?.(actualUri); + } catch (error) { + console.warn(`Failed to close LSP file ${actualUri}`, error); + } + } + + if (!fileRefs.size) { + this.options.onClientIdle?.({ + server, + client, + rootUri: effectiveRoot, + }); + } + }; + + const dispose = async (): Promise => { + try { + client.disconnect(); + } catch (error) { + console.warn(`Error disconnecting LSP client ${server.id}`, error); + } + try { + await transportHandle.dispose?.(); + } catch (error) { + console.warn(`Error disposing LSP transport ${server.id}`, error); + } + this.#clients.delete(key); + }; + + return { + server, + client, + transport: transportHandle, + rootUri: effectiveRoot, + attach, + detach, + dispose, + }; + } + + async #resolveRootUri( + server: LspServerDefinition, + context: RootUriContext, + ): Promise { + if (typeof server.rootUri === "function") { + try { + const value = await server.rootUri(context?.uri ?? "", context); + if (value) return safeString(value); + } catch (error) { + console.warn(`Server root resolver failed for ${server.id}`, error); + } + } + + if (context?.rootUri) return safeString(context.rootUri); + + if (typeof this.options.resolveRoot === "function") { + try { + const value = await this.options.resolveRoot(context); + if (value) return safeString(value); + } catch (error) { + console.warn("Global LSP root resolver failed", error); + } + } + + return null; + } + + async #resolveDocumentUri( + server: LspServerDefinition, + context: RootUriContext, + ): Promise { + const originalUri = context?.uri; + if (!originalUri) return null; + + let normalizedUri = normalizeDocumentUri(originalUri); + if (!normalizedUri) { + // Fall back to cache file path for providers that do not expose a file:// URI. + const cacheFile = context.file?.cacheFile; + if (cacheFile && typeof cacheFile === "string") { + normalizedUri = buildFileUri(cacheFile.replace(/^file:\/\//, "")); + if (normalizedUri) { + console.info( + `LSP using cache path for unrecognized URI: ${originalUri} -> ${normalizedUri}`, + ); + } + } + } + + if (typeof server.documentUri === "function") { + try { + const value = await server.documentUri(originalUri, { + ...context, + normalizedUri, + } as DocumentUriContext); + if (value) return safeString(value); + } catch (error) { + console.warn( + `Server document URI resolver failed for ${server.id}`, + error, + ); + } + } + + return normalizedUri; + } +} + +interface Change { + from: number; + to: number; + insert: string; +} + +function applyTextEdits( + plugin: LSPPlugin, + view: EditorView, + edits: TextEdit[], +): boolean { + const changes: Change[] = []; + for (const edit of edits) { + if (!edit?.range) continue; + let fromBase: number; + let toBase: number; + try { + fromBase = plugin.fromPosition(edit.range.start, plugin.syncedDoc); + toBase = plugin.fromPosition(edit.range.end, plugin.syncedDoc); + } catch (_) { + continue; + } + const fromResult = plugin.unsyncedChanges.mapPos( + fromBase, + 1, + MapMode.TrackDel, + ); + const toResult = plugin.unsyncedChanges.mapPos( + toBase, + -1, + MapMode.TrackDel, + ); + if (fromResult == null || toResult == null) continue; + const insert = + typeof edit.newText === "string" + ? edit.newText.replace(/\r\n/g, "\n") + : ""; + changes.push({ from: fromResult, to: toResult, insert }); + } + if (!changes.length) return false; + changes.sort((a, b) => a.from - b.from || a.to - b.to); + view.dispatch({ changes }); + return true; +} + +function buildFormattingOptions( + view: EditorView, + overrides: FormattingOptions = {}, +): FormattingOptions { + const state = view?.state; + if (!state) return { ...overrides }; + + const unitValue = state.facet(indentUnit); + const unit = + typeof unitValue === "string" && unitValue.length + ? unitValue + : String(unitValue ?? "\t"); + let tabSize = getIndentUnit(state); + if ( + typeof tabSize !== "number" || + !Number.isFinite(tabSize) || + tabSize <= 0 + ) { + tabSize = resolveIndentWidth(unit); + } + const insertSpaces = !unit.includes("\t"); + + return { + tabSize, + insertSpaces, + ...overrides, + }; +} + +function resolveIndentWidth(unit: string): number { + if (typeof unit !== "string" || !unit.length) return 4; + let width = 0; + for (const ch of unit) { + if (ch === "\t") return 4; + width += 1; + } + return width || 4; +} + +const defaultManager = new LspClientManager(); + +export default defaultManager; + +function normalizeRootUriForServer( + _server: LspServerDefinition, + rootUri: string | null, +): NormalizedRootUri { + if (!rootUri || typeof rootUri !== "string") { + return { normalizedRootUri: null, originalRootUri: null }; + } + const schemeMatch = /^([a-zA-Z][\w+\-.]*):/.exec(rootUri); + const scheme = schemeMatch ? schemeMatch[1].toLowerCase() : null; + + // Already a file:// URI - use as-is + if (scheme === "file") { + return { normalizedRootUri: rootUri, originalRootUri: rootUri }; + } + + // Try to convert content:// URIs to file:// URIs + if (scheme === "content") { + const fileUri = contentUriToFileUri(rootUri); + if (fileUri) { + return { normalizedRootUri: fileUri, originalRootUri: rootUri }; + } + // Can't convert to file:// - server won't work properly + return { normalizedRootUri: null, originalRootUri: rootUri }; + } + + // Unknown scheme - try to use as-is + return { normalizedRootUri: rootUri, originalRootUri: rootUri }; +} + +function normalizeDocumentUri(uri: string | null | undefined): string | null { + if (!uri || typeof uri !== "string") return null; + + const schemeMatch = /^([a-zA-Z][\w+\-.]*):/.exec(uri); + const scheme = schemeMatch ? schemeMatch[1].toLowerCase() : null; + + // Already a file:// URI or untitled use as-is + if (scheme === "file" || scheme === "untitled") { + return uri; + } + + // Convert content:// URIs to file:// URIs + if (scheme === "content") { + const fileUri = contentUriToFileUri(uri); + if (fileUri) { + return fileUri; + } + return null; + } + + // Unknown scheme + return uri; +} + +function contentUriToFileUri(uri: string): string | null { + try { + const parsed = Uri.parse(uri) as ParsedUri | null; + if (!parsed || typeof parsed !== "object") return null; + const { docId, rootUri, isFileUri } = parsed; + if (!docId) return null; + + if (isFileUri && rootUri) { + return rootUri; + } + + const providerMatch = + /^content:\/\/com\.((?![:<>"/\\|?*]).*?)\.documents\//.exec( + rootUri ?? "", + ); + const providerId = providerMatch ? providerMatch[1] : null; + + let normalized = docId.trim(); + if (!normalized) return null; + + switch (providerId) { + case "foxdebug.acode": + case "foxdebug.acodefree": + normalized = normalized.replace(/:+$/, ""); + if (!normalized) return null; + if (normalized.startsWith("raw:/")) { + normalized = normalized.slice(4); + } else if (normalized.startsWith("raw:")) { + normalized = normalized.slice(4); + } + if (!normalized.startsWith("/")) return null; + return buildFileUri(normalized); + case "android.externalstorage": + normalized = normalized.replace(/:+$/, ""); + if (!normalized) return null; + + if (normalized.startsWith("/")) { + return buildFileUri(normalized); + } + + if (normalized.startsWith("raw:/")) { + return buildFileUri(normalized.slice(4)); + } + + if (normalized.startsWith("raw:")) { + return buildFileUri(normalized.slice(4)); + } + + const separator = normalized.indexOf(":"); + if (separator === -1) return null; + + const root = normalized.slice(0, separator); + const remainder = normalized.slice(separator + 1); + if (!remainder) return null; + + switch (root) { + case "primary": + return buildFileUri(`/storage/emulated/0/${remainder}`); + default: + if (/^[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}$/.test(root)) { + return buildFileUri(`/storage/${root}/${remainder}`); + } + } + return null; + default: + return null; + } + } catch (_) { + return null; + } +} + +function buildFileUri(pathname: string): string | null { + if (!pathname) return null; + const normalized = pathname.startsWith("/") ? pathname : `/${pathname}`; + const encoded = encodeURI(normalized).replace(/#/g, "%23"); + return `file://${encoded}`; +} diff --git a/src/cm/lsp/codeActions.ts b/src/cm/lsp/codeActions.ts new file mode 100644 index 000000000..7f5905761 --- /dev/null +++ b/src/cm/lsp/codeActions.ts @@ -0,0 +1,418 @@ +import { LSPPlugin } from "@codemirror/lsp-client"; +import { EditorView } from "@codemirror/view"; +import toast from "components/toast"; +import select from "dialogs/select"; +import type { + CodeAction, + CodeActionContext, + CodeActionKind, + Command, + Diagnostic, + Range as LspRange, + WorkspaceEdit, +} from "vscode-languageserver-types"; +import type { Position, Range } from "./types"; +import type AcodeWorkspace from "./workspace"; + +type CodeActionResponse = (CodeAction | Command)[] | null; + +const CODE_ACTION_KINDS = { + QUICK_FIX: "quickfix", + REFACTOR: "refactor", + REFACTOR_EXTRACT: "refactor.extract", + REFACTOR_INLINE: "refactor.inline", + REFACTOR_REWRITE: "refactor.rewrite", + SOURCE: "source", + SOURCE_ORGANIZE_IMPORTS: "source.organizeImports", + SOURCE_FIX_ALL: "source.fixAll", +} as const; + +const CODE_ACTION_ICONS: Record = { + quickfix: "build", + refactor: "code", + "refactor.extract": "call_split", + "refactor.inline": "call_merge", + "refactor.rewrite": "edit", + source: "settings", + "source.organizeImports": "sort", + "source.fixAll": "done_all", +}; + +function getCodeActionIcon(kind?: CodeActionKind): string { + if (!kind) return "icon zap"; + for (const [prefix, icon] of Object.entries(CODE_ACTION_ICONS)) { + if (kind.startsWith(prefix)) return icon; + } + return "icon zap"; +} + +function formatCodeActionKind(kind?: CodeActionKind): string { + if (!kind) return ""; + return kind + .split(".") + .map((p) => p.charAt(0).toUpperCase() + p.slice(1)) + .join(" › "); +} + +function isCommand(item: CodeAction | Command): item is Command { + return ( + "command" in item && typeof item.command === "string" && !("edit" in item) + ); +} + +function lspPositionToOffset( + doc: { line: (n: number) => { from: number } }, + pos: Position, +): number { + return doc.line(pos.line + 1).from + pos.character; +} + +async function requestCodeActions( + plugin: LSPPlugin, + range: LspRange, + diagnostics: Diagnostic[] = [], +): Promise { + const context: CodeActionContext = { + diagnostics, + triggerKind: 1, // CodeActionTriggerKind.Invoked + }; + + return plugin.client.request< + { + textDocument: { uri: string }; + range: LspRange; + context: CodeActionContext; + }, + CodeActionResponse + >("textDocument/codeAction", { + textDocument: { uri: plugin.uri }, + range, + context, + }); +} + +async function resolveCodeAction( + plugin: LSPPlugin, + action: CodeAction, +): Promise { + // If action already has an edit, no need to resolve + if (action.edit) return action; + + const capabilities = plugin.client.serverCapabilities; + const provider = capabilities?.codeActionProvider; + const supportsResolve = + typeof provider === "object" && + provider !== null && + "resolveProvider" in provider && + provider.resolveProvider === true; + + if (!supportsResolve) return action; + + // Resolve to get the edit property (lazy computation per LSP 3.16+) + try { + const resolved = await plugin.client.request( + "codeAction/resolve", + action, + ); + return resolved ?? action; + } catch (error) { + console.warn("[LSP:CodeAction] Failed to resolve:", error); + return action; + } +} + +async function executeCommand( + plugin: LSPPlugin, + command: Command, +): Promise { + try { + await plugin.client.request< + { command: string; arguments?: unknown[] }, + unknown + >("workspace/executeCommand", { + command: command.command, + arguments: command.arguments, + }); + return true; + } catch (error) { + // -32601 = Method not implemented (expected for some LSP servers) + const lspError = error as { code?: number }; + if (lspError?.code !== -32601) { + console.warn("[LSP:CodeAction] Command execution failed:", error); + } + return false; + } +} + +interface LspChange { + range: Range; + newText: string; +} + +async function applyChangesToFile( + workspace: AcodeWorkspace, + uri: string, + changes: LspChange[], + mapping: { mapPosition: (uri: string, pos: Position) => number }, +): Promise { + const file = workspace.getFile(uri); + if (file) { + const view = file.getView(); + if (view) { + view.dispatch({ + changes: changes.map((c) => ({ + from: mapping.mapPosition(uri, c.range.start), + to: mapping.mapPosition(uri, c.range.end), + insert: c.newText, + })), + userEvent: "codeAction", + }); + return true; + } + } + + const displayedView = await workspace.displayFile(uri); + if (!displayedView?.state?.doc) { + console.warn(`[LSP:CodeAction] Could not open file: ${uri}`); + return false; + } + + displayedView.dispatch({ + changes: changes.map((c) => ({ + from: lspPositionToOffset(displayedView.state.doc, c.range.start), + to: lspPositionToOffset(displayedView.state.doc, c.range.end), + insert: c.newText, + })), + userEvent: "codeAction", + }); + return true; +} + +async function applyWorkspaceEdit( + view: EditorView, + edit: WorkspaceEdit, +): Promise { + const plugin = LSPPlugin.get(view); + if (!plugin) return false; + + const workspace = plugin.client.workspace as AcodeWorkspace; + if (!workspace) return false; + + let filesChanged = 0; + + const result = await plugin.client.withMapping(async (mapping) => { + // Handle simple changes format + if (edit.changes) { + for (const uri in edit.changes) { + const changes = edit.changes[uri] as LspChange[]; + if ( + changes.length && + (await applyChangesToFile(workspace, uri, changes, mapping)) + ) { + filesChanged++; + } + } + } + + // Handle documentChanges format (supports versioned edits) + if (edit.documentChanges) { + for (const docChange of edit.documentChanges) { + if ("textDocument" in docChange && "edits" in docChange) { + const uri = docChange.textDocument.uri; + const edits = docChange.edits as LspChange[]; + if ( + edits.length && + (await applyChangesToFile(workspace, uri, edits, mapping)) + ) { + filesChanged++; + } + } + } + } + return filesChanged; + }); + + return (result ?? 0) > 0; +} + +/** + * Apply a code action following the LSP spec: + * "If both edit and command are supplied, first the edit is applied, then the command is executed" + */ +async function applyCodeAction( + view: EditorView, + action: CodeAction, +): Promise { + const plugin = LSPPlugin.get(view); + if (!plugin) return false; + + plugin.client.sync(); + + // Resolve to get the edit if not already present + const resolved = await resolveCodeAction(plugin, action); + let success = false; + + // Step 1: Apply workspace edit if present + if (resolved.edit) { + success = await applyWorkspaceEdit(view, resolved.edit); + } + + // Step 2: Execute command if present (after edit per LSP spec) + if (resolved.command) { + const commandSuccess = await executeCommand(plugin, resolved.command); + success = success || commandSuccess; + } + + plugin.client.sync(); + return success; +} + +export interface CodeActionItem { + title: string; + kind?: CodeActionKind; + icon: string; + isPreferred?: boolean; + disabled?: boolean; + disabledReason?: string; + action: CodeAction | Command; +} + +export async function fetchCodeActions( + view: EditorView, +): Promise { + const plugin = LSPPlugin.get(view); + if (!plugin) return []; + + const capabilities = plugin.client.serverCapabilities; + if (!capabilities?.codeActionProvider) return []; + + const { from, to } = view.state.selection.main; + const range: LspRange = { + start: plugin.toPosition(from), + end: plugin.toPosition(to), + }; + + plugin.client.sync(); + + try { + const response = await requestCodeActions(plugin, range); + if (!response?.length) return []; + + const items: CodeActionItem[] = response.map((item) => { + if (isCommand(item)) { + return { title: item.title, icon: "terminal", action: item }; + } + return { + title: item.title, + kind: item.kind, + icon: getCodeActionIcon(item.kind), + isPreferred: item.isPreferred, + disabled: !!item.disabled, + disabledReason: item.disabled?.reason, + action: item, + }; + }); + + // Sort: preferred first, then quickfixes, then alphabetically + items.sort((a, b) => { + if (a.isPreferred && !b.isPreferred) return -1; + if (!a.isPreferred && b.isPreferred) return 1; + if (a.kind?.startsWith("quickfix") && !b.kind?.startsWith("quickfix")) + return -1; + if (!a.kind?.startsWith("quickfix") && b.kind?.startsWith("quickfix")) + return 1; + return a.title.localeCompare(b.title); + }); + + return items; + } catch (error) { + console.error("[LSP:CodeAction] Failed to fetch:", error); + return []; + } +} + +export async function executeCodeAction( + view: EditorView, + item: CodeActionItem, +): Promise { + const plugin = LSPPlugin.get(view); + if (!plugin) return false; + + try { + plugin.client.sync(); + + // Handle standalone Command (not CodeAction) + if (isCommand(item.action)) { + return executeCommand(plugin, item.action); + } + + // Handle CodeAction + return applyCodeAction(view, item.action); + } catch (error) { + console.error("[LSP:CodeAction] Failed to execute:", error); + return false; + } +} + +export function supportsCodeActions(view: EditorView): boolean { + const plugin = LSPPlugin.get(view); + return !!plugin?.client.serverCapabilities?.codeActionProvider; +} + +export async function showCodeActionsMenu(view: EditorView): Promise { + if (!supportsCodeActions(view)) return false; + + const items = await fetchCodeActions(view); + if (!items.length) { + toast("No code actions available"); + return false; + } + + const selectItems = items.map((item, i) => ({ + value: String(i), + text: item.title, + icon: item.icon, + disabled: item.disabled, + })); + + try { + const result = await select( + strings["code actions"] || "Code Actions", + selectItems as unknown as string[], + { hideOnSelect: true }, + ); + + if (result !== null && result !== undefined) { + const index = Number.parseInt(String(result), 10); + if (!Number.isNaN(index) && index >= 0 && index < items.length) { + await executeCodeAction(view, items[index]); + view.focus(); + return true; + } + } + } catch { + // User cancelled selection + } + + view.focus(); + return false; +} + +export async function performQuickFix(view: EditorView): Promise { + const items = await fetchCodeActions(view); + if (!items.length) return false; + + // Find preferred action or first quickfix + const quickFix = + items.find((i) => i.isPreferred) ?? + items.find((i) => i.kind?.startsWith("quickfix")); + + if (quickFix) { + return executeCodeAction(view, quickFix); + } + + // Fall back to showing menu + return showCodeActionsMenu(view); +} + +export { CODE_ACTION_KINDS, formatCodeActionKind, getCodeActionIcon }; diff --git a/src/cm/lsp/diagnostics.ts b/src/cm/lsp/diagnostics.ts new file mode 100644 index 000000000..ae671b374 --- /dev/null +++ b/src/cm/lsp/diagnostics.ts @@ -0,0 +1,348 @@ +import { Diagnostic, linter, lintGutter } from "@codemirror/lint"; +import type { LSPClient } from "@codemirror/lsp-client"; +import { LSPPlugin } from "@codemirror/lsp-client"; +import type { Extension } from "@codemirror/state"; +import { + EditorState, + MapMode, + StateEffect, + StateField, +} from "@codemirror/state"; +import { type EditorView, ViewPlugin } from "@codemirror/view"; +import type { + LSPClientWithWorkspace, + LSPPluginAPI, + LspDiagnostic, + PublishDiagnosticsParams, + RawDiagnostic, +} from "./types"; + +const setPublishedDiagnostics = StateEffect.define(); +let diagnosticsEventTimer: ReturnType | null = null; +let diagnosticsViewCount = 0; + +export const LSP_DIAGNOSTICS_EVENT = "acode:lsp-diagnostics-updated"; + +function isCoarsePointerDevice(): boolean { + if (typeof window !== "undefined") { + try { + if (window.matchMedia?.("(pointer: coarse)").matches) { + return true; + } + } catch (_) { + // Ignore matchMedia failures and fall back to maxTouchPoints. + } + } + + return ( + typeof navigator !== "undefined" && + Number(navigator.maxTouchPoints || 0) > 0 + ); +} + +function emitDiagnosticsUpdated(): void { + if ( + typeof document === "undefined" || + typeof document.dispatchEvent !== "function" + ) { + return; + } + + let event: CustomEvent | Event; + try { + event = new CustomEvent(LSP_DIAGNOSTICS_EVENT); + } catch (_) { + try { + event = document.createEvent("CustomEvent"); + (event as CustomEvent).initCustomEvent( + LSP_DIAGNOSTICS_EVENT, + false, + false, + undefined, + ); + } catch (_) { + return; + } + } + + document.dispatchEvent(event); +} + +function clearScheduledDiagnosticsUpdated(): void { + if (diagnosticsEventTimer == null) return; + clearTimeout(diagnosticsEventTimer); + diagnosticsEventTimer = null; +} + +const lspPublishedDiagnostics = StateField.define({ + create(): LspDiagnostic[] { + return []; + }, + update(value: LspDiagnostic[], tr): LspDiagnostic[] { + for (const effect of tr.effects) { + if (effect.is(setPublishedDiagnostics)) { + value = effect.value; + } + } + return value; + }, +}); + +type DiagnosticSeverity = "error" | "warning" | "info" | "hint"; +const severities: DiagnosticSeverity[] = [ + "hint", + "error", + "warning", + "info", + "hint", +]; + +function collectLspDiagnostics( + plugin: LSPPluginAPI, + diagnostics: RawDiagnostic[], +): LspDiagnostic[] { + const items: LspDiagnostic[] = []; + const { syncedDoc } = plugin; + + for (const diagnostic of diagnostics) { + let from: number; + let to: number; + try { + const mappedFrom = plugin.fromPosition( + diagnostic.range.start, + plugin.syncedDoc, + ); + const mappedTo = plugin.fromPosition( + diagnostic.range.end, + plugin.syncedDoc, + ); + const fromResult = plugin.unsyncedChanges.mapPos(mappedFrom); + const toResult = plugin.unsyncedChanges.mapPos(mappedTo); + if (fromResult === null || toResult === null) continue; + from = fromResult; + to = toResult; + } catch (_) { + continue; + } + if (to > syncedDoc.length) continue; + + const severity = severities[diagnostic.severity ?? 0] ?? "info"; + const source = diagnostic.code + ? `${diagnostic.source ? `${diagnostic.source}-` : ""}${diagnostic.code}` + : undefined; + + items.push({ + from, + to, + severity, + message: diagnostic.message, + source, + }); + } + + return items; +} + +function storeLspDiagnostics( + items: LspDiagnostic[], +): StateEffect { + return setPublishedDiagnostics.of(items); +} + +function sameDiagnostics( + current: readonly LspDiagnostic[], + next: readonly LspDiagnostic[], +): boolean { + if (current.length !== next.length) return false; + for (let index = 0; index < current.length; index++) { + const left = current[index]; + const right = next[index]; + if ( + left.from !== right.from || + left.to !== right.to || + left.severity !== right.severity || + left.message !== right.message || + left.source !== right.source + ) { + return false; + } + } + return true; +} + +function scheduleDiagnosticsUpdated(): void { + if (diagnosticsEventTimer != null) return; + diagnosticsEventTimer = setTimeout(() => { + diagnosticsEventTimer = null; + if (diagnosticsViewCount > 0) { + emitDiagnosticsUpdated(); + } + }, 32); +} + +const diagnosticsLifecyclePlugin = ViewPlugin.fromClass( + class { + constructor() { + diagnosticsViewCount++; + } + + destroy(): void { + diagnosticsViewCount = Math.max(0, diagnosticsViewCount - 1); + if (!diagnosticsViewCount) { + clearScheduledDiagnosticsUpdated(); + } + } + }, +); + +function mapDiagnostics( + plugin: LSPPluginAPI, + state: EditorState, +): Diagnostic[] { + const stored = state.field(lspPublishedDiagnostics); + const changes = plugin.unsyncedChanges; + const mapped: Diagnostic[] = []; + + for (const diagnostic of stored) { + let from: number | null; + let to: number | null; + try { + from = changes.mapPos(diagnostic.from, 1, MapMode.TrackDel); + to = changes.mapPos(diagnostic.to, -1, MapMode.TrackDel); + } catch (_) { + continue; + } + if (from != null && to != null) { + mapped.push({ ...diagnostic, from, to }); + } + } + + return mapped; +} + +function lspLinterSource(view: EditorView): Diagnostic[] { + const plugin = LSPPlugin.get(view) as LSPPluginAPI | null; + if (!plugin) return []; + return mapDiagnostics(plugin, view.state); +} + +export function lspDiagnosticsClientExtension(): { + clientCapabilities: Record; + notificationHandlers: Record< + string, + (client: LSPClient, params: PublishDiagnosticsParams) => boolean + >; +} { + return { + clientCapabilities: { + textDocument: { + publishDiagnostics: { + relatedInformation: true, + codeDescriptionSupport: true, + dataSupport: true, + versionSupport: true, + }, + }, + }, + notificationHandlers: { + "textDocument/publishDiagnostics": ( + client: LSPClient, + params: PublishDiagnosticsParams, + ): boolean => { + const clientWithWorkspace = client as unknown as LSPClientWithWorkspace; + const file = clientWithWorkspace.workspace.getFile(params.uri); + if ( + !file || + (params.version != null && params.version !== file.version) + ) { + return true; + } + const view = file.getView(); + if (!view) return true; + const plugin = LSPPlugin.get(view) as LSPPluginAPI | null; + if (!plugin) return true; + + const diagnostics = collectLspDiagnostics(plugin, params.diagnostics); + const current = view.state.field(lspPublishedDiagnostics, false) ?? []; + if (sameDiagnostics(current, diagnostics)) { + return true; + } + + view.dispatch({ + effects: storeLspDiagnostics(diagnostics), + }); + scheduleDiagnosticsUpdated(); + return true; + }, + }, + }; +} + +export function lspDiagnosticsUiExtension(includeGutter = true): Extension[] { + const diagnosticsMarkerFilter = isCoarsePointerDevice() + ? () => [] + : undefined; + const diagnosticsTooltipFilter = isCoarsePointerDevice() + ? () => [] + : undefined; + const extensions: Extension[] = [ + diagnosticsLifecyclePlugin, + lspPublishedDiagnostics, + linter(lspLinterSource, { + needsRefresh(update) { + return update.transactions.some((tr) => + tr.effects.some((effect) => effect.is(setPublishedDiagnostics)), + ); + }, + markerFilter: diagnosticsMarkerFilter, + tooltipFilter: diagnosticsTooltipFilter, + // keep panel closed by default + autoPanel: false, + }), + ]; + if (includeGutter) { + extensions.splice( + 1, + 0, + lintGutter({ + tooltipFilter: diagnosticsTooltipFilter, + }), + ); + } + return extensions; +} + +interface DiagnosticsExtension { + clientCapabilities: Record; + notificationHandlers: Record< + string, + (client: LSPClient, params: PublishDiagnosticsParams) => boolean + >; + editorExtension: Extension[]; +} + +export function lspDiagnosticsExtension( + includeGutter = true, +): DiagnosticsExtension { + return { + ...lspDiagnosticsClientExtension(), + editorExtension: lspDiagnosticsUiExtension(includeGutter), + }; +} + +export default lspDiagnosticsExtension; + +export function clearDiagnosticsEffect(): StateEffect { + return setPublishedDiagnostics.of([]); +} + +export function getLspDiagnostics(state: EditorState | null): LspDiagnostic[] { + if (!state || typeof state.field !== "function") return []; + try { + const stored = state.field(lspPublishedDiagnostics, false); + if (!stored || !Array.isArray(stored)) return []; + return stored.map((diagnostic) => ({ ...diagnostic })); + } catch (_) { + return []; + } +} diff --git a/src/cm/lsp/documentSymbols.ts b/src/cm/lsp/documentSymbols.ts new file mode 100644 index 000000000..8e4dc3d92 --- /dev/null +++ b/src/cm/lsp/documentSymbols.ts @@ -0,0 +1,338 @@ +/** + * LSP Document Symbols Extension for CodeMirror + * + * Provides document symbol information (functions, classes, variables, etc.) from language servers. + */ + +import { LSPPlugin } from "@codemirror/lsp-client"; +import type { EditorView } from "@codemirror/view"; +import type { + DocumentSymbol, + Position, + Range, + SymbolInformation, + SymbolKind, +} from "vscode-languageserver-types"; +import type { LSPPluginAPI } from "./types"; + +interface DocumentSymbolParams { + textDocument: { uri: string }; +} + +export interface ProcessedSymbol { + name: string; + kind: SymbolKind; + kindName: string; + detail?: string; + range: { + startLine: number; + startCharacter: number; + endLine: number; + endCharacter: number; + }; + selectionRange: { + startLine: number; + startCharacter: number; + endLine: number; + endCharacter: number; + }; + children?: ProcessedSymbol[]; + depth: number; + containerName?: string; +} + +export interface FlatSymbol { + name: string; + kind: SymbolKind; + kindName: string; + detail?: string; + line: number; + character: number; + endLine: number; + endCharacter: number; + containerName?: string; + depth: number; +} + +const SYMBOL_KIND_NAMES: Record = { + 1: "File", + 2: "Module", + 3: "Namespace", + 4: "Package", + 5: "Class", + 6: "Method", + 7: "Property", + 8: "Field", + 9: "Constructor", + 10: "Enum", + 11: "Interface", + 12: "Function", + 13: "Variable", + 14: "Constant", + 15: "String", + 16: "Number", + 17: "Boolean", + 18: "Array", + 19: "Object", + 20: "Key", + 21: "Null", + 22: "EnumMember", + 23: "Struct", + 24: "Event", + 25: "Operator", + 26: "TypeParameter", +}; + +const SYMBOL_KIND_ICONS: Record = { + 1: "insert_drive_file", + 2: "view_module", + 3: "view_module", + 4: "folder", + 5: "class", + 6: "functions", + 7: "label", + 8: "label", + 9: "functions", + 10: "list", + 11: "category", + 12: "functions", + 13: "code", + 14: "lock", + 15: "text_fields", + 16: "pin", + 17: "toggle_on", + 18: "data_array", + 19: "data_object", + 20: "key", + 21: "not_interested", + 22: "list", + 23: "data_object", + 24: "bolt", + 25: "calculate", + 26: "text_fields", +}; + +export function getSymbolKindName(kind: SymbolKind): string { + return SYMBOL_KIND_NAMES[kind] || "Unknown"; +} + +export function getSymbolKindIcon(kind: SymbolKind): string { + return SYMBOL_KIND_ICONS[kind] || "code"; +} + +function isDocumentSymbol( + item: DocumentSymbol | SymbolInformation, +): item is DocumentSymbol { + return "selectionRange" in item; +} + +function processDocumentSymbol( + symbol: DocumentSymbol, + depth = 0, + containerName?: string, +): ProcessedSymbol { + const processed: ProcessedSymbol = { + name: symbol.name, + kind: symbol.kind, + kindName: getSymbolKindName(symbol.kind), + detail: symbol.detail, + range: { + startLine: symbol.range.start.line, + startCharacter: symbol.range.start.character, + endLine: symbol.range.end.line, + endCharacter: symbol.range.end.character, + }, + selectionRange: { + startLine: symbol.selectionRange.start.line, + startCharacter: symbol.selectionRange.start.character, + endLine: symbol.selectionRange.end.line, + endCharacter: symbol.selectionRange.end.character, + }, + depth, + containerName, + }; + + if (symbol.children && symbol.children.length > 0) { + processed.children = symbol.children.map((child) => + processDocumentSymbol(child, depth + 1, symbol.name), + ); + } + + return processed; +} + +function processSymbolInformation( + symbol: SymbolInformation, + depth = 0, +): ProcessedSymbol { + return { + name: symbol.name, + kind: symbol.kind, + kindName: getSymbolKindName(symbol.kind), + range: { + startLine: symbol.location.range.start.line, + startCharacter: symbol.location.range.start.character, + endLine: symbol.location.range.end.line, + endCharacter: symbol.location.range.end.character, + }, + selectionRange: { + startLine: symbol.location.range.start.line, + startCharacter: symbol.location.range.start.character, + endLine: symbol.location.range.end.line, + endCharacter: symbol.location.range.end.character, + }, + containerName: symbol.containerName, + depth, + }; +} + +function flattenSymbols( + symbols: ProcessedSymbol[], + result: FlatSymbol[] = [], +): FlatSymbol[] { + for (const symbol of symbols) { + result.push({ + name: symbol.name, + kind: symbol.kind, + kindName: symbol.kindName, + detail: symbol.detail, + line: symbol.selectionRange.startLine, + character: symbol.selectionRange.startCharacter, + endLine: symbol.selectionRange.endLine, + endCharacter: symbol.selectionRange.endCharacter, + containerName: symbol.containerName, + depth: symbol.depth, + }); + + if (symbol.children) { + flattenSymbols(symbol.children, result); + } + } + + return result; +} + +export async function fetchDocumentSymbols( + view: EditorView, +): Promise { + const plugin = LSPPlugin.get(view) as LSPPluginAPI | null; + if (!plugin) { + return null; + } + + const client = plugin.client; + const capabilities = client.serverCapabilities; + + if (!capabilities?.documentSymbolProvider) { + return null; + } + + client.sync(); + + const params: DocumentSymbolParams = { + textDocument: { uri: plugin.uri }, + }; + + try { + const response = await client.request< + DocumentSymbolParams, + (DocumentSymbol | SymbolInformation)[] | null + >("textDocument/documentSymbol", params); + + if (!response || response.length === 0) { + return []; + } + + if (isDocumentSymbol(response[0])) { + return (response as DocumentSymbol[]).map((sym) => + processDocumentSymbol(sym), + ); + } + + return (response as SymbolInformation[]).map((sym) => + processSymbolInformation(sym), + ); + } catch (error) { + console.warn("Failed to fetch document symbols:", error); + return null; + } +} + +export async function getDocumentSymbolsFlat( + view: EditorView, +): Promise { + const symbols = await fetchDocumentSymbols(view); + if (!symbols) { + return []; + } + + return flattenSymbols(symbols); +} + +export async function navigateToSymbol( + view: EditorView, + symbol: FlatSymbol | ProcessedSymbol, +): Promise { + try { + const doc = view.state.doc; + let targetLine: number; + let targetChar: number; + + if ("line" in symbol) { + targetLine = symbol.line; + targetChar = symbol.character; + } else { + targetLine = symbol.selectionRange.startLine; + targetChar = symbol.selectionRange.startCharacter; + } + + const lineNumber = targetLine + 1; + if (lineNumber < 1 || lineNumber > doc.lines) { + return false; + } + + const line = doc.line(lineNumber); + const pos = Math.min(line.from + targetChar, line.to); + + view.dispatch({ + selection: { anchor: pos }, + scrollIntoView: true, + }); + + view.focus(); + return true; + } catch (error) { + console.warn("Failed to navigate to symbol:", error); + return false; + } +} + +export function supportsDocumentSymbols(view: EditorView): boolean { + const plugin = LSPPlugin.get(view) as LSPPluginAPI | null; + if (!plugin?.client.connected) { + return false; + } + + return !!plugin.client.serverCapabilities?.documentSymbolProvider; +} + +export interface DocumentSymbolsResult { + symbols: ProcessedSymbol[]; + flat: FlatSymbol[]; +} + +export async function getDocumentSymbols( + view: EditorView, +): Promise { + const symbols = await fetchDocumentSymbols(view); + if (symbols === null) { + return null; + } + + return { + symbols, + flat: flattenSymbols(symbols), + }; +} + +export { SymbolKind } from "vscode-languageserver-types"; diff --git a/src/cm/lsp/formatter.ts b/src/cm/lsp/formatter.ts new file mode 100644 index 000000000..440f1e22c --- /dev/null +++ b/src/cm/lsp/formatter.ts @@ -0,0 +1,121 @@ +import type { EditorView } from "@codemirror/view"; +import { getModes } from "cm/modelist"; +import toast from "components/toast"; +import lspClientManager from "./clientManager"; +import { supportsBuiltinFormatting } from "./formattingSupport"; +import serverRegistry from "./serverRegistry"; +import type { AcodeApi, FileMetadata } from "./types"; + +interface Mode { + name?: string; + extensions?: string; +} + +interface EditorManagerWithLsp { + editor?: EditorView; + activeFile?: AcodeFile; + getLspMetadata?: (file: AcodeFile) => FileMetadata | null; +} + +function getActiveMetadata( + manager: EditorManagerWithLsp | undefined, + file: AcodeFile | undefined, +): (FileMetadata & { view?: EditorView }) | null { + if (!manager?.getLspMetadata || !file) return null; + const metadata = manager.getLspMetadata(file); + if (!metadata) return null; + return { + ...metadata, + view: manager.editor, + }; +} + +export function registerLspFormatter(acode: AcodeApi): void { + const languages = new Set(); + serverRegistry.listServers().forEach((server) => { + if (!supportsBuiltinFormatting(server)) return; + (server.languages || []).forEach((lang) => { + if (lang) languages.add(String(lang)); + }); + }); + const extensions = languages.size + ? collectFormatterExtensions(languages) + : ["*"]; + + acode.registerFormatter( + "lsp", + extensions, + async () => { + const manager = window.editorManager as EditorManagerWithLsp | undefined; + const file = manager?.activeFile; + const metadata = getActiveMetadata(manager, file); + if (!metadata) { + toast("LSP formatter unavailable"); + return false; + } + const languageId = metadata.languageId; + if (!languageId) { + toast("Unknown language for LSP formatting"); + return false; + } + const servers = serverRegistry + .getServersForLanguage(languageId) + .filter(supportsBuiltinFormatting); + if (!servers.length) { + toast("No LSP formatter available"); + return false; + } + const fullMetadata = { + ...metadata, + languageName: metadata.languageName || languageId, + }; + const success = await lspClientManager.formatDocument(fullMetadata); + if (!success) { + toast("LSP formatter failed"); + } + return success; + }, + "Language Server", + ); +} + +function collectFormatterExtensions(languages: Set): string[] { + const extensions = new Set(); + const modeMap = new Map(); + + try { + const modes = getModes() as Mode[]; + modes.forEach((mode) => { + const key = String(mode?.name ?? "") + .trim() + .toLowerCase(); + if (key) modeMap.set(key, mode); + }); + } catch (_) { + // Ignore mode loading errors + } + + languages.forEach((language) => { + const key = String(language ?? "") + .trim() + .toLowerCase(); + if (!key) return; + extensions.add(key); + const mode = modeMap.get(key); + if (!mode?.extensions) return; + String(mode.extensions) + .split("|") + .forEach((part) => { + const ext = part.trim(); + if (ext && !ext.startsWith("^")) { + extensions.add(ext); + } + }); + }); + + if (!extensions.size) { + return ["*"]; + } + + return Array.from(extensions); +} diff --git a/src/cm/lsp/formattingSupport.ts b/src/cm/lsp/formattingSupport.ts new file mode 100644 index 000000000..4efc62365 --- /dev/null +++ b/src/cm/lsp/formattingSupport.ts @@ -0,0 +1,7 @@ +import type { LspServerDefinition } from "./types"; + +export function supportsBuiltinFormatting( + server: LspServerDefinition, +): boolean { + return server.clientConfig?.builtinExtensions?.formatting !== false; +} diff --git a/src/cm/lsp/index.ts b/src/cm/lsp/index.ts new file mode 100644 index 000000000..38cd2cc38 --- /dev/null +++ b/src/cm/lsp/index.ts @@ -0,0 +1,97 @@ +export { + bundles, + default as lspApi, + defineBundle, + defineServer, + installers, + register, + servers, + upsert, +} from "./api"; +export { default as clientManager, LspClientManager } from "./clientManager"; +export type { CodeActionItem } from "./codeActions"; +export { + CODE_ACTION_KINDS, + executeCodeAction, + fetchCodeActions, + formatCodeActionKind, + getCodeActionIcon, + performQuickFix, + showCodeActionsMenu, + supportsCodeActions, +} from "./codeActions"; +export { + clearDiagnosticsEffect, + getLspDiagnostics, + LSP_DIAGNOSTICS_EVENT, + lspDiagnosticsClientExtension, + lspDiagnosticsExtension, + lspDiagnosticsUiExtension, +} from "./diagnostics"; +export type { + DocumentSymbolsResult, + FlatSymbol, + ProcessedSymbol, +} from "./documentSymbols"; +export { + fetchDocumentSymbols, + getDocumentSymbols, + getDocumentSymbolsFlat, + getSymbolKindIcon, + getSymbolKindName, + navigateToSymbol, + SymbolKind, + supportsDocumentSymbols, +} from "./documentSymbols"; +export { registerLspFormatter } from "./formatter"; +export type { InlayHintsConfig } from "./inlayHints"; +export { + inlayHintsClientExtension, + inlayHintsEditorExtension, + inlayHintsExtension, +} from "./inlayHints"; +export { + closeReferencesPanel, + findAllReferences, + findAllReferencesInTab, +} from "./references"; +export { + acodeRenameExtension, + acodeRenameKeymap, + renameSymbol, +} from "./rename"; +export { + ensureServerRunning, + resetManagedServers, + stopManagedServer, +} from "./serverLauncher"; +export { default as serverRegistry } from "./serverRegistry"; +export { + nextSignature, + prevSignature, + showSignatureHelp, +} from "./tooltipExtensions"; +export { createTransport } from "./transport"; + +export type { + BuiltinExtensionsConfig, + ClientManagerOptions, + ClientState, + DiagnosticRelatedInformation, + DocumentUriContext, + FileMetadata, + FormattingOptions, + LSPClientWithWorkspace, + LSPDiagnostic, + LSPFormattingOptions, + LSPPluginAPI, + LspDiagnostic, + LspServerDefinition, + Position, + Range, + TextEdit, + TransportDescriptor, + TransportHandle, + WorkspaceOptions, +} from "./types"; +export { default as AcodeWorkspace } from "./workspace"; diff --git a/src/cm/lsp/inlayHints.ts b/src/cm/lsp/inlayHints.ts new file mode 100644 index 000000000..b68080665 --- /dev/null +++ b/src/cm/lsp/inlayHints.ts @@ -0,0 +1,345 @@ +/** + * LSP Inlay Hints Extension for CodeMirror + * + * Provides inline hints (type annotations, parameter names, etc.) from language servers. + */ + +import type { LSPClient, LSPClientExtension } from "@codemirror/lsp-client"; +import { LSPPlugin } from "@codemirror/lsp-client"; +import type { Extension, Range } from "@codemirror/state"; +import { RangeSet, StateEffect, StateField } from "@codemirror/state"; +import { + Decoration, + type DecorationSet, + EditorView, + ViewPlugin, + type ViewUpdate, + WidgetType, +} from "@codemirror/view"; +import type { + InlayHint, + InlayHintLabelPart, + Position, +} from "vscode-languageserver-types"; +import type { LSPPluginAPI } from "./types"; + +// ============================================================================ +// Types +// ============================================================================ + +interface InlayHintParams { + textDocument: { uri: string }; + range: { start: Position; end: Position }; +} + +interface ProcessedHint { + pos: number; + label: string; + paddingLeft?: boolean; + paddingRight?: boolean; + tooltip?: string; +} + +export interface InlayHintsConfig { + enabled?: boolean; + debounceMs?: number; + showTypes?: boolean; + showParameters?: boolean; + maxHints?: number; +} + +// LSP InlayHintKind constants +const TYPE_HINT = 1; +const PARAM_HINT = 2; + +// ============================================================================ +// State +// ============================================================================ + +const setHints = StateEffect.define(); + +const hintsField = StateField.define({ + create: () => [], + update(hints, tr) { + for (const e of tr.effects) { + if (e.is(setHints)) return e.value; + } + return hints; + }, +}); + +// ============================================================================ +// Widget +// ============================================================================ + +class HintWidget extends WidgetType { + constructor( + readonly label: string, + readonly padLeft: boolean, + readonly padRight: boolean, + readonly tooltip: string | undefined, + ) { + super(); + } + + eq(other: HintWidget): boolean { + return ( + this.label === other.label && + this.padLeft === other.padLeft && + this.padRight === other.padRight + ); + } + + toDOM(): HTMLSpanElement { + const el = document.createElement("span"); + el.className = `cm-inlay-hint${this.padLeft ? " cm-inlay-hint-pl" : ""}${this.padRight ? " cm-inlay-hint-pr" : ""}`; + el.textContent = this.label; + if (this.tooltip) el.title = this.tooltip; + return el; + } + + ignoreEvent(): boolean { + return true; + } +} + +// ============================================================================ +// Decorations +// ============================================================================ + +function buildDecos(hints: ProcessedHint[], docLen: number): DecorationSet { + if (!hints.length) return Decoration.none; + + const decos: Range[] = []; + for (const h of hints) { + if (h.pos < 0 || h.pos > docLen) continue; + decos.push( + Decoration.widget({ + widget: new HintWidget( + h.label, + h.paddingLeft ?? false, + h.paddingRight ?? false, + h.tooltip, + ), + side: 1, + }).range(h.pos), + ); + } + return RangeSet.of(decos, true); +} + +// ============================================================================ +// Plugin +// ============================================================================ + +function createPlugin(config: InlayHintsConfig) { + const delay = config.debounceMs ?? 200; + const max = config.maxHints ?? 500; + const showTypes = config.showTypes !== false; + const showParams = config.showParameters !== false; + + return ViewPlugin.fromClass( + class { + decorations: DecorationSet = Decoration.none; + timer: ReturnType | null = null; + reqId = 0; + + constructor(private view: EditorView) { + this.fetch(); + } + + update(update: ViewUpdate): void { + if ( + update.transactions.some((t) => t.effects.some((e) => e.is(setHints))) + ) { + this.decorations = buildDecos( + update.state.field(hintsField, false) ?? [], + update.state.doc.length, + ); + } + if (update.docChanged || update.viewportChanged) { + this.schedule(); + } + } + + schedule(): void { + if (this.timer) clearTimeout(this.timer); + this.timer = setTimeout(() => { + this.timer = null; + this.fetch(); + }, delay); + } + + async fetch(): Promise { + const lsp = LSPPlugin.get(this.view) as LSPPluginAPI | null; + if (!lsp?.client.connected) return; + + const caps = lsp.client.serverCapabilities; + if (!caps?.inlayHintProvider) return; + + lsp.client.sync(); + const id = ++this.reqId; + const doc = this.view.state.doc; + + // Visible range with buffer + const { from, to } = this.view.viewport; + const buf = 20; + const startLn = Math.max(1, doc.lineAt(Math.max(0, from)).number - buf); + const endLn = Math.min( + doc.lines, + doc.lineAt(Math.min(doc.length, to)).number + buf, + ); + + try { + const hints = await lsp.client.request< + InlayHintParams, + InlayHint[] | null + >("textDocument/inlayHint", { + textDocument: { uri: lsp.uri }, + range: { + start: lsp.toPosition(doc.line(startLn).from), + end: lsp.toPosition(doc.line(endLn).to), + }, + }); + + if (id !== this.reqId) return; + + const processed = this.process(lsp, hints ?? [], doc.length); + this.view.dispatch({ effects: setHints.of(processed) }); + } catch { + // Non-critical - silently ignore + } + } + + process( + lsp: LSPPluginAPI, + hints: InlayHint[], + docLen: number, + ): ProcessedHint[] { + const result: ProcessedHint[] = []; + + for (const h of hints) { + if (h.kind === TYPE_HINT && !showTypes) continue; + if (h.kind === PARAM_HINT && !showParams) continue; + + let pos: number; + try { + pos = lsp.fromPosition(h.position, lsp.syncedDoc); + const mapped = lsp.unsyncedChanges.mapPos(pos); + if (mapped === null) continue; + pos = mapped; + } catch { + continue; + } + + if (pos < 0 || pos > docLen) continue; + + const label = + typeof h.label === "string" + ? h.label + : Array.isArray(h.label) + ? h.label.map((p: InlayHintLabelPart) => p.value).join("") + : ""; + if (!label) continue; + + const tooltip = + typeof h.tooltip === "string" + ? h.tooltip + : h.tooltip && + typeof h.tooltip === "object" && + "value" in h.tooltip + ? (h.tooltip as { value: string }).value + : undefined; + + result.push({ + pos, + label, + paddingLeft: h.paddingLeft, + paddingRight: h.paddingRight, + tooltip, + }); + + if (result.length >= max) break; + } + + return result.sort((a, b) => a.pos - b.pos); + } + + destroy(): void { + if (this.timer) clearTimeout(this.timer); + } + }, + { decorations: (v) => v.decorations }, + ); +} + +// ============================================================================ +// Styles +// ============================================================================ + +const styles = EditorView.baseTheme({ + ".cm-inlay-hint": { + display: "inline-block", + fontFamily: "inherit", + fontSize: "0.9em", + fontStyle: "italic", + borderRadius: "3px", + padding: "0 3px", + margin: "0 2px", + verticalAlign: "baseline", + pointerEvents: "none", + }, + "&light .cm-inlay-hint": { + color: "#6a737d", + backgroundColor: "rgba(27, 31, 35, 0.05)", + }, + "&dark .cm-inlay-hint": { + color: "#6a9955", + backgroundColor: "rgba(255, 255, 255, 0.05)", + }, + ".cm-inlay-hint-pl": { marginLeft: "4px" }, + ".cm-inlay-hint-pr": { marginRight: "4px" }, +}); + +// ============================================================================ +// Exports +// ============================================================================ + +export function inlayHintsClientExtension(): LSPClientExtension { + return { + clientCapabilities: { + textDocument: { + inlayHint: { + dynamicRegistration: true, + resolveSupport: { + properties: [ + "tooltip", + "textEdits", + "label.tooltip", + "label.location", + "label.command", + ], + }, + }, + }, + }, + }; +} + +export function inlayHintsEditorExtension( + config: InlayHintsConfig = {}, +): Extension { + if (config.enabled === false) return []; + return [hintsField, createPlugin(config), styles]; +} + +export function inlayHintsExtension( + config: InlayHintsConfig = {}, +): LSPClientExtension & { editorExtension: Extension } { + return { + ...inlayHintsClientExtension(), + editorExtension: inlayHintsEditorExtension(config), + }; +} + +export default inlayHintsExtension; diff --git a/src/cm/lsp/installRuntime.ts b/src/cm/lsp/installRuntime.ts new file mode 100644 index 000000000..bf639394b --- /dev/null +++ b/src/cm/lsp/installRuntime.ts @@ -0,0 +1,46 @@ +function getExecutor(): Executor { + const executor = (globalThis as unknown as { Executor?: Executor }).Executor; + if (!executor) { + throw new Error("Executor plugin is not available"); + } + return executor; +} + +function getBackgroundExecutor(): Executor { + const executor = getExecutor(); + return executor.BackgroundExecutor ?? executor; +} + +export function quoteArg(value: unknown): string { + const str = String(value ?? ""); + if (!str.length) return "''"; + if (/^[A-Za-z0-9_@%+=:,./-]+$/.test(str)) return str; + return `'${str.replace(/'/g, "'\\''")}'`; +} + +export function formatCommand( + command: string | string[] | null | undefined, +): string { + if (Array.isArray(command)) { + return command.map((part) => quoteArg(part)).join(" "); + } + if (typeof command === "string") { + return command.trim(); + } + return ""; +} + +function wrapShellCommand(command: string): string { + const script = command.trim(); + return `sh -lc ${quoteArg(`set -e\n${script}`)}`; +} + +export async function runQuickCommand(command: string): Promise { + const wrapped = wrapShellCommand(command); + return getBackgroundExecutor().execute(wrapped, true); +} + +export async function runForegroundCommand(command: string): Promise { + const wrapped = wrapShellCommand(command); + return getExecutor().execute(wrapped, true); +} diff --git a/src/cm/lsp/installerUtils.ts b/src/cm/lsp/installerUtils.ts new file mode 100644 index 000000000..0d2b715f8 --- /dev/null +++ b/src/cm/lsp/installerUtils.ts @@ -0,0 +1,59 @@ +const ARCH_ALIASES = { + aarch64: ["aarch64", "arm64", "arm64-v8a"], + x86_64: ["x86_64", "amd64"], + armv7: ["armv7", "armv7l", "armeabi-v7a"], +} as const; + +export type NormalizedArch = keyof typeof ARCH_ALIASES; + +export function normalizeArchitecture(arch: string | null | undefined): string { + const normalized = String(arch || "") + .trim() + .toLowerCase(); + + for (const [canonical, aliases] of Object.entries(ARCH_ALIASES)) { + if (aliases.includes(normalized as never)) { + return canonical; + } + } + + return normalized; +} + +export function getArchitectureMatchers( + assets: Record | undefined | null, +): Array<{ canonicalArch: string; aliases: string[]; asset: string }> { + if (!assets || typeof assets !== "object") return []; + + const resolved = new Map(); + for (const [rawArch, rawAsset] of Object.entries(assets)) { + const asset = String(rawAsset || "").trim(); + if (!asset) continue; + + const canonicalArch = normalizeArchitecture(rawArch); + if (!canonicalArch) continue; + + const aliases = ( + ARCH_ALIASES[canonicalArch as NormalizedArch] || [canonicalArch] + ).map((value) => String(value)); + resolved.set(canonicalArch, { aliases, asset }); + } + + return Array.from(resolved.entries()).map(([canonicalArch, value]) => ({ + canonicalArch, + aliases: value.aliases, + asset: value.asset, + })); +} + +export function buildShellArchCase( + assets: Record | undefined | null, + quote: (value: unknown) => string, +): string { + return getArchitectureMatchers(assets) + .map( + ({ aliases, asset }) => + `\t${aliases.join("|")}) ASSET=${quote(asset)} ;;`, + ) + .join("\n"); +} diff --git a/src/cm/lsp/providerUtils.ts b/src/cm/lsp/providerUtils.ts new file mode 100644 index 000000000..93e8a3094 --- /dev/null +++ b/src/cm/lsp/providerUtils.ts @@ -0,0 +1,243 @@ +import type { + BridgeConfig, + InstallCheckResult, + LauncherInstallConfig, + LspServerBundle, + LspServerManifest, + TransportDescriptor, +} from "./types"; + +export interface ManagedServerOptions { + id: string; + label: string; + languages: string[]; + enabled?: boolean; + useWorkspaceFolders?: boolean; + command?: string; + args?: string[]; + transport?: Partial; + bridge?: Partial | null; + installer?: LauncherInstallConfig; + checkCommand?: string; + versionCommand?: string; + updateCommand?: string; + uninstallCommand?: string; + startupTimeout?: number; + initializationOptions?: Record; + clientConfig?: LspServerManifest["clientConfig"]; + resolveLanguageId?: LspServerManifest["resolveLanguageId"]; + rootUri?: LspServerManifest["rootUri"]; + documentUri?: LspServerManifest["documentUri"]; + capabilityOverrides?: Record; +} + +export interface BundleHooks { + getExecutable?: ( + serverId: string, + manifest: LspServerManifest, + ) => string | null | undefined; + checkInstallation?: ( + serverId: string, + manifest: LspServerManifest, + ) => Promise; + installServer?: ( + serverId: string, + manifest: LspServerManifest, + mode: "install" | "update" | "reinstall", + options?: { promptConfirm?: boolean }, + ) => Promise; +} + +export function defineBundle(options: { + id: string; + label?: string; + servers: LspServerManifest[]; + hooks?: BundleHooks; +}): LspServerBundle { + const { id, label, servers, hooks } = options; + return { + id, + label, + getServers: () => servers, + ...hooks, + }; +} + +export function defineServer(options: ManagedServerOptions): LspServerManifest { + const { + id, + label, + languages, + enabled = true, + useWorkspaceFolders = false, + command, + args, + transport, + bridge, + installer, + checkCommand, + versionCommand, + updateCommand, + uninstallCommand, + startupTimeout, + initializationOptions, + clientConfig, + resolveLanguageId, + rootUri, + documentUri, + capabilityOverrides, + } = options; + + const bridgeCommand = command || bridge?.command; + return { + id, + label, + languages, + enabled, + useWorkspaceFolders, + transport: { + kind: "websocket", + ...(transport || {}), + } as TransportDescriptor, + launcher: { + checkCommand, + versionCommand, + updateCommand, + uninstallCommand, + install: installer, + bridge: bridgeCommand + ? { + kind: "axs", + command: bridgeCommand, + args: args || bridge?.args, + port: bridge?.port, + session: bridge?.session, + } + : undefined, + }, + startupTimeout, + initializationOptions, + clientConfig, + resolveLanguageId, + rootUri, + documentUri, + capabilityOverrides, + }; +} + +export const installers = { + apk(options: { + packages: string[]; + executable: string; + label?: string; + source?: string; + }): LauncherInstallConfig { + return { + kind: "apk", + source: options.source || "apk", + label: options.label, + executable: options.executable, + packages: options.packages, + }; + }, + npm(options: { + packages: string[]; + executable: string; + label?: string; + source?: string; + global?: boolean; + }): LauncherInstallConfig { + return { + kind: "npm", + source: options.source || "npm", + label: options.label, + executable: options.executable, + packages: options.packages, + global: options.global, + }; + }, + pip(options: { + packages: string[]; + executable: string; + label?: string; + source?: string; + breakSystemPackages?: boolean; + }): LauncherInstallConfig { + return { + kind: "pip", + source: options.source || "pip", + label: options.label, + executable: options.executable, + packages: options.packages, + breakSystemPackages: options.breakSystemPackages, + }; + }, + cargo(options: { + packages: string[]; + executable: string; + label?: string; + source?: string; + }): LauncherInstallConfig { + return { + kind: "cargo", + source: options.source || "cargo", + label: options.label, + executable: options.executable, + packages: options.packages, + }; + }, + manual(options: { + binaryPath: string; + executable?: string; + label?: string; + source?: string; + }): LauncherInstallConfig { + return { + kind: "manual", + source: options.source || "manual", + label: options.label, + executable: options.executable || options.binaryPath, + binaryPath: options.binaryPath, + }; + }, + shell(options: { + command: string; + executable: string; + updateCommand?: string; + uninstallCommand?: string; + label?: string; + source?: string; + }): LauncherInstallConfig { + return { + kind: "shell", + source: options.source || "custom", + label: options.label, + executable: options.executable, + command: options.command, + updateCommand: options.updateCommand, + uninstallCommand: options.uninstallCommand, + }; + }, + githubRelease(options: { + repo: string; + binaryPath: string; + executable?: string; + assetNames: Record; + extractFile?: string; + archiveType?: "zip" | "binary"; + label?: string; + source?: string; + }): LauncherInstallConfig { + return { + kind: "github-release", + source: options.source || "github-release", + label: options.label, + executable: options.executable || options.binaryPath, + repo: options.repo, + assetNames: options.assetNames, + extractFile: options.extractFile, + archiveType: options.archiveType, + binaryPath: options.binaryPath, + }; + }, +}; diff --git a/src/cm/lsp/references.ts b/src/cm/lsp/references.ts new file mode 100644 index 000000000..53bf8e7cf --- /dev/null +++ b/src/cm/lsp/references.ts @@ -0,0 +1,226 @@ +import fsOperation from "fileSystem"; +import { LSPPlugin } from "@codemirror/lsp-client"; +import type { EditorView } from "@codemirror/view"; +import { + openReferencesTab, + showReferencesPanel, +} from "components/referencesPanel"; +import settings from "lib/settings"; + +interface Position { + line: number; + character: number; +} + +interface Range { + start: Position; + end: Position; +} + +interface Location { + uri: string; + range: Range; +} + +interface ReferenceWithContext extends Location { + lineText?: string; +} + +interface ReferenceParams { + textDocument: { uri: string }; + position: Position; + context: { includeDeclaration: boolean }; +} + +async function fetchLineText(uri: string, line: number): Promise { + try { + interface EditorManagerLike { + getFile?: (uri: string, type: string) => EditorFileLike | null; + } + + interface EditorFileLike { + session?: { + doc?: { + line?: (n: number) => { text?: string } | null; + toString?: () => string; + }; + }; + } + + const em = (globalThis as Record).editorManager as + | EditorManagerLike + | undefined; + + const openFile = em?.getFile?.(uri, "uri"); + if (openFile?.session?.doc) { + const doc = openFile.session.doc; + if (typeof doc.line === "function") { + const lineObj = doc.line(line + 1); + if (lineObj && typeof lineObj.text === "string") { + return lineObj.text; + } + } + if (typeof doc.toString === "function") { + const content = doc.toString(); + const lines = content.split("\n"); + if (lines[line] !== undefined) { + return lines[line]; + } + } + } + + const fs = fsOperation(uri); + if (fs && (await fs.exists())) { + const encoding = + (settings as { value?: { defaultFileEncoding?: string } })?.value + ?.defaultFileEncoding || "utf-8"; + const content = await fs.readFile(encoding); + if (typeof content === "string") { + const lines = content.split("\n"); + if (lines[line] !== undefined) { + return lines[line]; + } + } + } + } catch (error) { + console.warn(`Failed to fetch line text for ${uri}:${line}`, error); + } + return ""; +} + +function getWordAtCursor(view: EditorView): string { + const { state } = view; + const pos = state.selection.main.head; + const word = state.wordAt(pos); + if (word) { + return state.doc.sliceString(word.from, word.to); + } + return ""; +} + +async function fetchReferences( + view: EditorView, +): Promise<{ symbolName: string; references: ReferenceWithContext[] } | null> { + const plugin = LSPPlugin.get(view); + if (!plugin) { + return null; + } + + const client = plugin.client; + const capabilities = client.serverCapabilities; + + if (!capabilities?.referencesProvider) { + const toast = (globalThis as Record).toast as + | ((msg: string) => void) + | undefined; + toast?.("Language server does not support find references"); + return null; + } + + const { state } = view; + const pos = state.selection.main.head; + const line = state.doc.lineAt(pos); + const lineNumber = line.number - 1; + const character = pos - line.from; + const uri = plugin.uri; + + const symbolName = getWordAtCursor(view); + + client.sync(); + + const params: ReferenceParams = { + textDocument: { uri }, + position: { line: lineNumber, character }, + context: { includeDeclaration: true }, + }; + + const locations = await client.request( + "textDocument/references", + params, + ); + + if (!locations || locations.length === 0) { + return { symbolName, references: [] }; + } + + const refsWithContext: ReferenceWithContext[] = await Promise.all( + locations.map(async (loc) => { + const lineText = await fetchLineText(loc.uri, loc.range.start.line); + return { + ...loc, + lineText, + }; + }), + ); + + return { symbolName, references: refsWithContext }; +} + +export async function findAllReferences(view: EditorView): Promise { + const plugin = LSPPlugin.get(view); + if (!plugin) { + return false; + } + + const symbolName = getWordAtCursor(view); + const panel = showReferencesPanel({ symbolName }); + + try { + const result = await fetchReferences(view); + if (result === null) { + panel.setError("Failed to fetch references"); + return false; + } + panel.setReferences(result.references); + return true; + } catch (error) { + console.error("Find references failed:", error); + const errorMessage = + error instanceof Error ? error.message : "Unknown error occurred"; + panel.setError(errorMessage); + return false; + } +} + +export async function findAllReferencesInTab( + view: EditorView, +): Promise { + const plugin = LSPPlugin.get(view); + if (!plugin) { + const toast = (globalThis as Record).toast as + | ((msg: string) => void) + | undefined; + toast?.("Language server not available"); + return false; + } + + try { + const result = await fetchReferences(view); + if (result === null) { + return false; + } + + if (result.references.length === 0) { + const toast = (globalThis as Record).toast as + | ((msg: string) => void) + | undefined; + toast?.("No references found"); + return true; + } + + openReferencesTab({ + symbolName: result.symbolName, + references: result.references, + }); + return true; + } catch (error) { + console.error("Find references in tab failed:", error); + return false; + } +} + +export function closeReferencesPanel(): boolean { + const { hideReferencesPanel } = require("components/referencesPanel"); + hideReferencesPanel(); + return true; +} diff --git a/src/cm/lsp/rename.ts b/src/cm/lsp/rename.ts new file mode 100644 index 000000000..1ba871f91 --- /dev/null +++ b/src/cm/lsp/rename.ts @@ -0,0 +1,271 @@ +import { LSPPlugin } from "@codemirror/lsp-client"; +import { + type Command, + EditorView, + type KeyBinding, + keymap, +} from "@codemirror/view"; +import prompt from "dialogs/prompt"; +import type * as lsp from "vscode-languageserver-protocol"; +import type AcodeWorkspace from "./workspace"; + +interface RenameParams { + newName: string; + position: lsp.Position; + textDocument: { uri: string }; +} + +interface TextDocumentEdit { + range: lsp.Range; + newText: string; +} + +interface PrepareRenameResponse { + range?: lsp.Range; + placeholder?: string; + defaultBehavior?: boolean; +} + +interface LspChange { + range: lsp.Range; + newText: string; +} + +function getRename(plugin: LSPPlugin, pos: number, newName: string) { + return plugin.client.request( + "textDocument/rename", + { + newName, + position: plugin.toPosition(pos), + textDocument: { uri: plugin.uri }, + }, + ); +} + +function getPrepareRename(plugin: LSPPlugin, pos: number) { + return plugin.client.request< + { position: lsp.Position; textDocument: { uri: string } }, + PrepareRenameResponse | lsp.Range | null + >("textDocument/prepareRename", { + position: plugin.toPosition(pos), + textDocument: { uri: plugin.uri }, + }); +} + +async function performRename(view: EditorView): Promise { + const wordRange = view.state.wordAt(view.state.selection.main.head); + const plugin = LSPPlugin.get(view); + + if (!plugin) { + return false; + } + + const capabilities = plugin.client.serverCapabilities; + const renameProvider = capabilities?.renameProvider; + + if (renameProvider === false || renameProvider === undefined) { + return false; + } + + if (!wordRange) { + return false; + } + + const word = view.state.sliceDoc(wordRange.from, wordRange.to); + let initialValue = word; + let canRename = true; + + const supportsPrepare = + typeof renameProvider === "object" && + renameProvider !== null && + "prepareProvider" in renameProvider && + renameProvider.prepareProvider === true; + + if (supportsPrepare) { + try { + plugin.client.sync(); + const prepareResult = await getPrepareRename(plugin, wordRange.from); + if (prepareResult === null) { + canRename = false; + } else if (typeof prepareResult === "object" && prepareResult !== null) { + if ("placeholder" in prepareResult && prepareResult.placeholder) { + initialValue = prepareResult.placeholder; + } else if ( + "defaultBehavior" in prepareResult && + prepareResult.defaultBehavior + ) { + initialValue = word; + } else if ("start" in prepareResult && "end" in prepareResult) { + const from = plugin.fromPosition(prepareResult.start); + const to = plugin.fromPosition(prepareResult.end); + initialValue = view.state.sliceDoc(from, to); + } else if ("range" in prepareResult && prepareResult.range) { + const from = plugin.fromPosition(prepareResult.range.start); + const to = plugin.fromPosition(prepareResult.range.end); + initialValue = view.state.sliceDoc(from, to); + } + } + } catch (error) { + console.warn("[LSP:Rename] prepareRename failed, using word:", error); + } + } + + if (!canRename) { + const alert = (await import("dialogs/alert")).default; + alert("Rename", "Cannot rename this symbol."); + return true; + } + + const newName = await prompt( + strings["new name"] || "New name", + initialValue, + "text", + { + required: true, + placeholder: strings["enter new name"] || "Enter new name", + }, + ); + + if (newName === null || newName === initialValue) { + return true; + } + + try { + await doRename(view, String(newName), wordRange.from); + } catch (error) { + console.error("[LSP:Rename] Rename failed:", error); + const errorMessage = + error instanceof Error ? error.message : "Failed to rename symbol"; + const alert = (await import("dialogs/alert")).default; + alert("Rename Error", errorMessage); + } + + return true; +} + +function lspPositionToOffset( + doc: { line: (n: number) => { from: number } }, + pos: lsp.Position, +): number { + const line = doc.line(pos.line + 1); + return line.from + pos.character; +} + +async function applyChangesToFile( + workspace: AcodeWorkspace, + uri: string, + lspChanges: LspChange[], + mapping: { mapPosition: (uri: string, pos: lsp.Position) => number }, +): Promise { + const file = workspace.getFile(uri); + + if (file) { + const view = file.getView(); + if (view) { + view.dispatch({ + changes: lspChanges.map((change) => ({ + from: mapping.mapPosition(uri, change.range.start), + to: mapping.mapPosition(uri, change.range.end), + insert: change.newText, + })), + userEvent: "rename", + }); + return true; + } + } + + const displayedView = await workspace.displayFile(uri); + if (!displayedView?.state?.doc) { + console.warn(`[LSP:Rename] Could not open file: ${uri}`); + return false; + } + + const doc = displayedView.state.doc; + displayedView.dispatch({ + changes: lspChanges.map((change) => ({ + from: lspPositionToOffset(doc, change.range.start), + to: lspPositionToOffset(doc, change.range.end), + insert: change.newText, + })), + userEvent: "rename", + }); + + return true; +} + +async function doRename( + view: EditorView, + newName: string, + position: number, +): Promise { + const plugin = LSPPlugin.get(view); + if (!plugin) return; + + plugin.client.sync(); + + const response = await plugin.client.withMapping((mapping) => + getRename(plugin, position, newName).then((response) => { + if (!response) return null; + return { response, mapping }; + }), + ); + + if (!response) { + console.info("[LSP:Rename] No changes returned from server"); + return; + } + + const { response: workspaceEdit, mapping } = response; + const workspace = plugin.client.workspace as AcodeWorkspace; + let filesChanged = 0; + + if (workspaceEdit.changes) { + for (const uri in workspaceEdit.changes) { + const lspChanges = workspaceEdit.changes[uri] as TextDocumentEdit[]; + if (!lspChanges.length) continue; + + const success = await applyChangesToFile( + workspace, + uri, + lspChanges, + mapping, + ); + if (success) filesChanged++; + } + } + + if (workspaceEdit.documentChanges) { + for (const docChange of workspaceEdit.documentChanges) { + if ("textDocument" in docChange && "edits" in docChange) { + const uri = docChange.textDocument.uri; + const edits = docChange.edits as TextDocumentEdit[]; + if (!edits.length) continue; + + const success = await applyChangesToFile( + workspace, + uri, + edits, + mapping, + ); + if (success) filesChanged++; + } + } + } + + console.info( + `[LSP:Rename] Renamed to "${newName}" in ${filesChanged} file(s)`, + ); +} + +export const renameSymbol: Command = (view) => { + performRename(view).catch((error) => { + console.error("[LSP:Rename] Rename command failed:", error); + }); + return true; +}; + +export const acodeRenameKeymap: readonly KeyBinding[] = [ + { key: "F2", run: renameSymbol, preventDefault: true }, +]; + +export const acodeRenameExtension = () => keymap.of([...acodeRenameKeymap]); diff --git a/src/cm/lsp/serverCatalog.ts b/src/cm/lsp/serverCatalog.ts new file mode 100644 index 000000000..d1b1aefab --- /dev/null +++ b/src/cm/lsp/serverCatalog.ts @@ -0,0 +1,127 @@ +import { builtinServerBundles } from "./servers"; +import type { LspServerBundle, LspServerManifest } from "./types"; + +function toKey(id: string | undefined | null): string { + return String(id ?? "") + .trim() + .toLowerCase(); +} + +interface RegistryAdapter { + registerServer: ( + definition: LspServerManifest, + options?: { replace?: boolean }, + ) => unknown; + unregisterServer: (id: string) => boolean; +} + +const bundles = new Map(); +const bundleServers = new Map>(); +const serverOwners = new Map(); + +let registryAdapter: RegistryAdapter | null = null; +let builtinsRegistered = false; + +export function bindServerRegistry(adapter: RegistryAdapter): void { + registryAdapter = adapter; +} + +function requireRegistry(): RegistryAdapter { + if (!registryAdapter) { + throw new Error("LSP server catalog is not bound to the registry"); + } + return registryAdapter; +} + +function resolveBundleServers(bundle: LspServerBundle): LspServerManifest[] { + const servers = bundle.getServers(); + return Array.isArray(servers) ? servers : []; +} + +export function registerServerBundle( + bundle: LspServerBundle, + options: { replace?: boolean } = {}, +): LspServerBundle { + const { replace = false } = options; + const key = toKey(bundle.id); + if (!key) { + throw new Error("LSP server bundle requires a non-empty id"); + } + + if (bundles.has(key) && !replace) { + const existing = bundles.get(key); + if (existing) return existing; + } + + const registry = requireRegistry(); + const definitions = resolveBundleServers(bundle); + const previousIds = bundleServers.get(key) || new Set(); + const nextIds = new Set(); + + for (const definition of definitions) { + const serverId = toKey(definition.id); + if (!serverId) { + throw new Error(`LSP server bundle ${key} returned a server without id`); + } + + const owner = serverOwners.get(serverId); + if (owner && owner !== key && !replace) { + throw new Error( + `LSP server ${serverId} is already provided by ${owner}; ${key} must replace explicitly`, + ); + } + + registry.registerServer(definition, { replace: true }); + serverOwners.set(serverId, key); + nextIds.add(serverId); + } + + for (const previousId of previousIds) { + if (!nextIds.has(previousId) && serverOwners.get(previousId) === key) { + registry.unregisterServer(previousId); + serverOwners.delete(previousId); + } + } + + const normalizedBundle = { + ...bundle, + id: key, + }; + bundles.set(key, normalizedBundle); + bundleServers.set(key, nextIds); + return normalizedBundle; +} + +export function unregisterServerBundle(id: string): boolean { + const key = toKey(id); + if (!key || !bundles.has(key)) return false; + + const registry = requireRegistry(); + for (const serverId of bundleServers.get(key) || []) { + if (serverOwners.get(serverId) === key) { + registry.unregisterServer(serverId); + serverOwners.delete(serverId); + } + } + + bundleServers.delete(key); + return bundles.delete(key); +} + +export function listServerBundles(): LspServerBundle[] { + return Array.from(bundles.values()); +} + +export function getServerBundle(id: string): LspServerBundle | null { + const owner = serverOwners.get(toKey(id)); + if (!owner) return null; + return bundles.get(owner) || null; +} + +export function ensureBuiltinBundlesRegistered(): void { + if (builtinsRegistered) return; + builtinServerBundles.forEach((bundle) => { + registerServerBundle(bundle, { replace: false }); + }); + builtinsRegistered = true; +} diff --git a/src/cm/lsp/serverLauncher.ts b/src/cm/lsp/serverLauncher.ts new file mode 100644 index 000000000..5b00c077a --- /dev/null +++ b/src/cm/lsp/serverLauncher.ts @@ -0,0 +1,1291 @@ +import lspStatusBar from "components/lspStatusBar"; +import toast from "components/toast"; +import alert from "dialogs/alert"; +import confirm from "dialogs/confirm"; +import loader from "dialogs/loader"; +import { buildShellArchCase } from "./installerUtils"; +import { + formatCommand, + quoteArg, + runForegroundCommand, + runQuickCommand, +} from "./installRuntime"; +import { getServerBundle } from "./serverCatalog"; +import type { + BridgeConfig, + InstallCheckResult, + InstallStatus, + LauncherConfig, + LspServerDefinition, + LspServerStats, + LspServerStatsFormatted, + ManagedServerEntry, + PortInfo, + WaitOptions, +} from "./types"; + +const managedServers = new Map(); +const checkedCommands = new Map(); +const pendingInstallChecks = new Map>(); +const announcedServers = new Set(); + +const STATUS_PRESENT: InstallStatus = "present"; +const STATUS_DECLINED: InstallStatus = "declined"; +const STATUS_FAILED: InstallStatus = "failed"; + +const AXS_BINARY = "$PREFIX/axs"; + +function getTerminalRequiredMessage(): string { + return ( + strings?.terminal_required_message_for_lsp ?? + "Terminal not installed. Please install Terminal first to use LSP servers." + ); +} + +interface LspError extends Error { + code?: string; +} + +function getExecutor(): Executor { + const executor = (globalThis as unknown as { Executor?: Executor }).Executor; + if (!executor) { + throw new Error("Executor plugin is not available"); + } + return executor; +} + +/** + * Get the background executor + */ +function getBackgroundExecutor(): Executor { + const executor = getExecutor(); + return executor.BackgroundExecutor ?? executor; +} + +function joinCommand(command: string, args: string[] = []): string { + if (!Array.isArray(args) || !args.length) return quoteArg(command); + return [quoteArg(command), ...args.map((arg) => quoteArg(arg))].join(" "); +} + +export { formatCommand } from "./installRuntime"; + +// ============================================================================ +// Auto-Port Discovery +// ============================================================================ + +// Cache for the filesDir path +let cachedFilesDir: string | null = null; + +/** + * Get the terminal home directory from system.getFilesDir(). + * This is where axs stores port files. + */ +async function getTerminalHomeDir(): Promise { + if (cachedFilesDir) { + return `${cachedFilesDir}/alpine/home`; + } + + const system = ( + globalThis as unknown as { + system?: { + getFilesDir: ( + success: (filesDir: string) => void, + error: (error: string) => void, + ) => void; + }; + } + ).system; + + if (!system?.getFilesDir) { + throw new Error("System plugin is not available"); + } + + return new Promise((resolve, reject) => { + system.getFilesDir( + (filesDir: string) => { + cachedFilesDir = filesDir; + resolve(`${filesDir}/alpine/home`); + }, + (error: string) => reject(new Error(error)), + ); + }); +} + +/** + * Get the port file path for a given server and session. + * Port file format: ~/.axs/lsp_ports/{serverName}_{session} + */ +async function getPortFilePath( + serverName: string, + session: string, +): Promise { + const homeDir = await getTerminalHomeDir(); + // Use just the binary name (not full path), mirroring axs behavior + const baseName = serverName.split("/").pop() || serverName; + return `file://${homeDir}/.axs/lsp_ports/${baseName}_${session}`; +} + +/** + * Read the port from a port file using the filesystem API. + * Returns null if the file doesn't exist or contains invalid data. + */ +async function readPortFromFile(filePath: string): Promise { + try { + // Dynamic import to get fsOperation + const { default: fsOperation } = await import("fileSystem"); + const fs = fsOperation(filePath); + + // Check if file exists first + const exists = await fs.exists(); + if (!exists) { + return null; + } + + // Read the file content as text + const content = (await fs.readFile("utf-8")) as string; + const port = Number.parseInt(content.trim(), 10); + + if (!Number.isFinite(port) || port <= 0 || port > 65535) { + return null; + } + + return port; + } catch { + // File doesn't exist or couldn't be read + return null; + } +} + +/** + * Get the port for a running LSP server from the axs port file. + * @param serverName - The LSP server binary name (e.g., "typescript-language-server") + * @param session - Session ID for port file naming + */ +export async function getLspPort( + serverName: string, + session: string, +): Promise { + try { + const filePath = await getPortFilePath(serverName, session); + const port = await readPortFromFile(filePath); + + if (port === null) { + return null; + } + + return { port, filePath, session }; + } catch { + return null; + } +} + +/** + * Wait for the server ready signal (when axs prints "listening on"). + * The axs proxy writes the port file immediately after binding, then prints the message. + * So once the signal is received, the port file should be available. + */ +async function waitForServerReady( + serverId: string, + timeout = 10000, +): Promise { + const deadline = Date.now() + timeout; + const pollInterval = 50; + + while (Date.now() < deadline) { + if (serverReadySignals.has(serverId)) { + serverReadySignals.delete(serverId); + return true; + } + await sleep(pollInterval); + } + + return false; +} + +/** + * Wait for the port file to be available after server signals ready. + * This is the most efficient approach: wait for ready signal, then read port. + */ +async function waitForPort( + serverId: string, + serverName: string, + session: string, + timeout = 10000, +): Promise { + // First, wait for the server to signal it's ready + const ready = await waitForServerReady(serverId, timeout); + + if (!ready) { + console.warn( + `[LSP:${serverId}] Server did not signal ready within timeout`, + ); + } + + // The port file should be available now (axs writes it before printing "listening on") + // Read it directly + const portInfo = await getLspPort(serverName, session); + + if (!portInfo && ready) { + // Server signaled ready but port file not found - retry a few times + for (let i = 0; i < 5; i++) { + await sleep(100); + const retryPortInfo = await getLspPort(serverName, session); + if (retryPortInfo) { + return retryPortInfo; + } + } + } + + return portInfo; +} + +/** + * Quick check if a server is running and connectable. + * Attempts a fast WebSocket connection test. + */ +async function checkServerAlive(url: string, timeout = 1000): Promise { + return new Promise((resolve) => { + try { + const ws = new WebSocket(url); + const timer = setTimeout(() => { + try { + ws.close(); + } catch {} + resolve(false); + }, timeout); + + ws.onopen = () => { + clearTimeout(timer); + try { + ws.close(); + } catch {} + resolve(true); + }; + + ws.onerror = () => { + clearTimeout(timer); + resolve(false); + }; + + ws.onclose = () => { + clearTimeout(timer); + resolve(false); + }; + } catch { + resolve(false); + } + }); +} + +/** + * Check if we can reuse an existing server by testing the port. + * Returns the port number if the server is alive, null otherwise. + */ +export async function canReuseExistingServer( + server: LspServerDefinition, + session: string, +): Promise { + const bridge = server.launcher?.bridge; + const serverName = + resolveServerExecutable(server) || + bridge?.command || + server.launcher?.command || + server.id; + + const portInfo = await getLspPort(serverName, session); + if (!portInfo) { + return null; + } + + const url = `ws://127.0.0.1:${portInfo.port}/`; + const alive = await checkServerAlive(url, 1000); + + if (alive) { + console.info( + `[LSP:${server.id}] Reusing existing server on port ${portInfo.port}`, + ); + return portInfo.port; + } + + console.info( + `[LSP:${server.id}] Found stale port file, will start new server`, + ); + return null; +} + +function buildAxsBridgeCommand( + bridge: BridgeConfig | undefined, + commandOverride?: string | null, + session?: string, +): string | null { + if (!bridge || bridge.kind !== "axs") return null; + + const binary = + commandOverride || bridge.command + ? String(commandOverride || bridge.command) + : (() => { + throw new Error("Bridge requires a command to execute"); + })(); + const args: string[] = Array.isArray(bridge.args) + ? bridge.args.map((arg) => String(arg)) + : []; + + // Use session ID or bridge session or server command as fallback session + const effectiveSession = session || bridge.session || binary; + + const parts = [AXS_BINARY, "lsp"]; + + // Add --session flag for port file naming + parts.push("--session", quoteArg(effectiveSession)); + + // Only add --port if explicitly specified + if ( + typeof bridge.port === "number" && + bridge.port > 0 && + bridge.port <= 65535 + ) { + parts.push("--port", String(bridge.port)); + } + + parts.push(quoteArg(binary)); + + if (args.length) { + parts.push("--"); + args.forEach((arg) => parts.push(quoteArg(arg))); + } + return parts.join(" "); +} + +function resolveStartCommand( + server: LspServerDefinition, + session?: string, +): string | null { + const launcher = server.launcher; + if (!launcher) return null; + const executable = resolveServerExecutable(server); + + if (launcher.startCommand) { + return formatCommand(launcher.startCommand); + } + if (launcher.command) { + return joinCommand(executable || launcher.command, launcher.args); + } + if (launcher.bridge) { + return buildAxsBridgeCommand(launcher.bridge, executable, session); + } + return null; +} + +export function getStartCommand(server: LspServerDefinition): string | null { + return resolveStartCommand(server); +} + +function getInstallCacheKey(server: LspServerDefinition): string | null { + const checkCommand = + server.launcher?.checkCommand || buildDerivedCheckCommand(server); + if (!checkCommand) return null; + return `${server.id}:${checkCommand}`; +} + +function normalizeInstallSpec(server: LspServerDefinition) { + const install = server.launcher?.install; + if (!install) return null; + + const packages = Array.isArray(install.packages) + ? install.packages + .map((entry) => String(entry || "").trim()) + .filter(Boolean) + : []; + const kind = + install.kind || + (install.binaryPath ? "manual" : null) || + (install.source === "apk" ? "apk" : null) || + (install.source === "npm" ? "npm" : null) || + (install.source === "pip" ? "pip" : null) || + (install.source === "cargo" ? "cargo" : null) || + (install.command ? "shell" : null) || + "shell"; + + return { + ...install, + kind, + packages, + command: + typeof install.command === "string" && install.command.trim() + ? install.command.trim() + : undefined, + updateCommand: + typeof install.updateCommand === "string" && install.updateCommand.trim() + ? install.updateCommand.trim() + : undefined, + source: + install.source || + (kind === "shell" ? "custom" : kind === "manual" ? "manual" : kind), + executable: + typeof install.executable === "string" && install.executable.trim() + ? install.executable.trim() + : undefined, + binaryPath: + typeof install.binaryPath === "string" && install.binaryPath.trim() + ? install.binaryPath.trim() + : undefined, + repo: + typeof install.repo === "string" && install.repo.trim() + ? install.repo.trim() + : undefined, + assetNames: + install.assetNames && typeof install.assetNames === "object" + ? Object.fromEntries( + Object.entries(install.assetNames) + .map(([key, value]) => [String(key), String(value || "").trim()]) + .filter(([, value]) => Boolean(value)), + ) + : {}, + archiveType: install.archiveType === "binary" ? "binary" : "zip", + extractFile: + typeof install.extractFile === "string" && install.extractFile.trim() + ? install.extractFile.trim() + : undefined, + npmCommand: + typeof install.npmCommand === "string" && install.npmCommand.trim() + ? install.npmCommand.trim() + : "npm", + pipCommand: + typeof install.pipCommand === "string" && install.pipCommand.trim() + ? install.pipCommand.trim() + : "pip", + pythonCommand: + typeof install.pythonCommand === "string" && install.pythonCommand.trim() + ? install.pythonCommand.trim() + : "python3", + global: install.global !== false, + breakSystemPackages: install.breakSystemPackages !== false, + }; +} + +function getInstallerExecutable(server: LspServerDefinition): string | null { + const install = normalizeInstallSpec(server); + if (!install) return null; + return install.binaryPath || install.executable || null; +} + +function getProviderExecutable(server: LspServerDefinition): string | null { + const bundle = getServerBundle(server.id); + if (!bundle?.getExecutable) return null; + try { + return bundle.getExecutable(server.id, server) || null; + } catch (error) { + console.warn(`Failed to resolve bundle executable for ${server.id}`, error); + return null; + } +} + +function resolveServerExecutable(server: LspServerDefinition): string | null { + return ( + getProviderExecutable(server) || + getInstallerExecutable(server) || + server.launcher?.bridge?.command || + server.launcher?.command || + null + ); +} + +function getInstallLabel(server: LspServerDefinition): string { + return ( + normalizeInstallSpec(server)?.label || + server.launcher?.install?.label || + server.label || + server.id + ).trim(); +} + +function buildUninstallCommand(server: LspServerDefinition): string | null { + const spec = normalizeInstallSpec(server); + if (!spec) return null; + + if (spec.uninstallCommand) { + return spec.uninstallCommand; + } + if (server.launcher?.uninstallCommand) { + return server.launcher.uninstallCommand; + } + + switch (spec.kind) { + case "apk": + return spec.packages.length + ? `apk del ${spec.packages.map((entry) => quoteArg(entry)).join(" ")}` + : null; + case "npm": { + if (!spec.packages.length) return null; + const npmCommand = spec.npmCommand || "npm"; + const uninstallFlags = + spec.global !== false ? "uninstall -g" : "uninstall"; + return `${npmCommand} ${uninstallFlags} ${spec.packages.map((entry) => quoteArg(entry)).join(" ")}`; + } + case "pip": + return spec.packages.length + ? `${spec.pipCommand || "pip"} uninstall -y ${spec.packages.map((entry) => quoteArg(entry)).join(" ")}` + : null; + case "cargo": + return spec.packages.length + ? spec.packages + .map((entry) => `cargo uninstall ${quoteArg(entry)}`) + .join(" && ") + : null; + case "github-release": + case "manual": + return spec.binaryPath ? `rm -f ${quoteArg(spec.binaryPath)}` : null; + default: + return null; + } +} + +function buildInstallCommand( + server: LspServerDefinition, + mode: "install" | "update" = "install", +): string | null { + const spec = normalizeInstallSpec(server); + if (!spec) return null; + + if (mode === "update" && spec.updateCommand) { + return spec.updateCommand; + } + + switch (spec.kind) { + case "apk": + return spec.packages.length + ? `apk add --no-cache ${spec.packages.map((entry) => quoteArg(entry)).join(" ")}` + : null; + case "npm": { + if (!spec.packages.length) return null; + const npmCommand = spec.npmCommand || "npm"; + const installFlags = spec.global !== false ? "install -g" : "install"; + return `apk add --no-cache nodejs npm && ${npmCommand} ${installFlags} ${spec.packages.map((entry) => quoteArg(entry)).join(" ")}`; + } + case "pip": { + if (!spec.packages.length) return null; + const pipCommand = spec.pipCommand || "pip"; + const breakPackages = + spec.breakSystemPackages !== false + ? "PIP_BREAK_SYSTEM_PACKAGES=1 " + : ""; + return `apk add --no-cache python3 py3-pip && ${breakPackages}${pipCommand} install ${spec.packages.map((entry) => quoteArg(entry)).join(" ")}`; + } + case "cargo": + return spec.packages.length + ? `apk add --no-cache rust cargo && cargo install ${spec.packages.map((entry) => quoteArg(entry)).join(" ")}` + : null; + case "github-release": { + if (!spec.repo || !spec.binaryPath) return null; + const caseLines = buildShellArchCase(spec.assetNames, quoteArg); + if (!caseLines) return null; + const archivePath = '"$TMP_DIR/$ASSET"'; + const extractedFile = quoteArg(spec.extractFile || "luau-lsp"); + const installTarget = quoteArg(spec.binaryPath); + const downloadUrl = `https://github.com/${spec.repo}/releases/latest/download/$ASSET`; + + if (spec.archiveType === "binary") { + return `apk add --no-cache curl && ARCH="$(uname -m)" && case "$ARCH" in\n${caseLines}\n\t*) echo "Unsupported architecture: $ARCH" >&2; exit 1 ;;\nesac && TMP_DIR="$(mktemp -d)" && cleanup() { rm -rf "$TMP_DIR"; } && trap cleanup EXIT && curl -fsSL "${downloadUrl}" -o ${archivePath} && install -Dm755 ${archivePath} ${installTarget}`; + } + + return `apk add --no-cache curl unzip && ARCH="$(uname -m)" && case "$ARCH" in\n${caseLines}\n\t*) echo "Unsupported architecture: $ARCH" >&2; exit 1 ;;\nesac && TMP_DIR="$(mktemp -d)" && cleanup() { rm -rf "$TMP_DIR"; } && trap cleanup EXIT && curl -fsSL "${downloadUrl}" -o ${archivePath} && unzip -oq ${archivePath} -d "$TMP_DIR" && install -Dm755 "$TMP_DIR"/${extractedFile} ${installTarget}`; + } + case "manual": + return null; + default: + return spec.command || null; + } +} + +function buildDerivedCheckCommand(server: LspServerDefinition): string | null { + const binary = resolveServerExecutable(server)?.trim() || ""; + const install = normalizeInstallSpec(server); + + if (install?.kind === "manual" && install.binaryPath) { + return `test -x ${quoteArg(install.binaryPath)}`; + } + + if (binary.includes("/")) { + return `test -x ${quoteArg(binary)}`; + } + + if (binary) { + return `which ${quoteArg(binary)}`; + } + + return null; +} + +function getUpdateCommand(server: LspServerDefinition): string | null { + const launcher = server.launcher; + if (!launcher) return null; + if ( + typeof launcher.updateCommand === "string" && + launcher.updateCommand.trim() + ) { + return launcher.updateCommand.trim(); + } + return buildInstallCommand(server, "update"); +} + +async function readServerVersion( + server: LspServerDefinition, +): Promise { + const command = server.launcher?.versionCommand; + if (!command) return null; + + try { + const output = await runQuickCommand(command); + const version = String(output || "") + .split("\n") + .map((line) => line.trim()) + .find(Boolean); + return version || null; + } catch { + return null; + } +} + +export function getInstallCommand( + server: LspServerDefinition, + mode: "install" | "update" = "install", +): string | null { + if (mode === "update") { + return getUpdateCommand(server); + } + return buildInstallCommand(server, "install"); +} + +export function getInstallSource(server: LspServerDefinition): string | null { + return normalizeInstallSpec(server)?.source || null; +} + +export function getUninstallCommand( + server: LspServerDefinition, +): string | null { + return buildUninstallCommand(server); +} + +export async function checkServerInstallation( + server: LspServerDefinition, +): Promise { + const bundle = getServerBundle(server.id); + if (bundle?.checkInstallation) { + try { + const result = await bundle.checkInstallation(server.id, server); + if (result) return result; + } catch (error) { + return { + status: "failed", + version: null, + canInstall: Boolean(getInstallCommand(server, "install")), + canUpdate: Boolean(getInstallCommand(server, "update")), + message: error instanceof Error ? error.message : String(error), + }; + } + } + + const launcher = server.launcher; + const installCommand = getInstallCommand(server, "install"); + const updateCommand = getInstallCommand(server, "update"); + const checkCommand = + launcher?.checkCommand || buildDerivedCheckCommand(server); + + if (!checkCommand) { + return { + status: "unknown", + version: await readServerVersion(server), + canInstall: Boolean(installCommand), + canUpdate: Boolean(updateCommand), + message: "No install check configured for this server.", + }; + } + + try { + await runQuickCommand(checkCommand); + return { + status: "present", + version: await readServerVersion(server), + canInstall: Boolean(installCommand), + canUpdate: Boolean(updateCommand), + }; + } catch (error) { + return { + status: installCommand ? "missing" : "failed", + version: null, + canInstall: Boolean(installCommand), + canUpdate: Boolean(updateCommand), + message: error instanceof Error ? error.message : String(error), + }; + } +} + +export function resetInstallState(serverId?: string): void { + if (!serverId) { + checkedCommands.clear(); + return; + } + + const prefix = `${serverId}:`; + for (const key of Array.from(checkedCommands.keys())) { + if (key.startsWith(prefix)) { + checkedCommands.delete(key); + } + } +} + +async function ensureInstalled(server: LspServerDefinition): Promise { + const launcher = server.launcher; + const checkCommand = + launcher?.checkCommand || buildDerivedCheckCommand(server); + if (!checkCommand) return true; + + const cacheKey = getInstallCacheKey(server); + if (!cacheKey) return true; + + // Return cached result if already checked + if (checkedCommands.has(cacheKey)) { + const status = checkedCommands.get(cacheKey); + if (status === STATUS_PRESENT) { + return true; + } + if (status === STATUS_DECLINED) { + return false; + } + checkedCommands.delete(cacheKey); + } + + // If there's already a pending check for this server, wait for it + if (pendingInstallChecks.has(cacheKey)) { + const pending = pendingInstallChecks.get(cacheKey); + if (pending) return pending; + } + + // Create and track the pending promise + const checkPromise = performInstallCheck(server, launcher, cacheKey); + pendingInstallChecks.set(cacheKey, checkPromise); + + try { + return await checkPromise; + } finally { + pendingInstallChecks.delete(cacheKey); + } +} + +interface LoaderDialog { + show: () => void; + destroy: () => void; +} + +type InstallActionMode = "install" | "update" | "reinstall"; + +export async function installServer( + server: LspServerDefinition, + mode: InstallActionMode = "install", + options: { promptConfirm?: boolean } = {}, +): Promise { + const bundle = getServerBundle(server.id); + if (bundle?.installServer) { + return bundle.installServer(server.id, server, mode, options); + } + + const { promptConfirm = true } = options; + const cacheKey = getInstallCacheKey(server); + const displayLabel = getInstallLabel(server); + const isUpdate = mode === "update"; + const actionLabel = isUpdate ? "Update" : "Install"; + const command = + mode === "install" + ? getInstallCommand(server, "install") + : getUpdateCommand(server); + + if (!command) { + throw new Error( + `${displayLabel} has no ${actionLabel.toLowerCase()} command.`, + ); + } + + if (promptConfirm) { + const shouldContinue = await confirm( + displayLabel, + `${actionLabel} ${displayLabel} language server?`, + ); + if (!shouldContinue) { + if (cacheKey) { + checkedCommands.set(cacheKey, STATUS_DECLINED); + } + return false; + } + } + + let loadingDialog: LoaderDialog | null = null; + try { + loadingDialog = loader.create( + displayLabel, + `${actionLabel}ing ${displayLabel}...`, + ); + loadingDialog.show(); + await runForegroundCommand(command); + resetInstallState(server.id); + + const result = await checkServerInstallation(server); + if (cacheKey && result.status === "present") { + checkedCommands.set(cacheKey, STATUS_PRESENT); + } + + toast( + result.status === "present" + ? `${displayLabel} ${isUpdate ? "updated" : "installed"}` + : `${displayLabel} ${actionLabel.toLowerCase()} finished`, + ); + return true; + } catch (error) { + console.error(`Failed to ${actionLabel.toLowerCase()} ${server.id}`, error); + if (cacheKey) { + checkedCommands.set(cacheKey, STATUS_FAILED); + } + toast(strings?.error ?? "Error"); + throw error; + } finally { + loadingDialog?.destroy?.(); + } +} + +export async function uninstallServer( + server: LspServerDefinition, + options: { promptConfirm?: boolean } = {}, +): Promise { + const bundle = getServerBundle(server.id); + if (bundle?.uninstallServer) { + return bundle.uninstallServer(server.id, server, options); + } + + const { promptConfirm = true } = options; + const cacheKey = getInstallCacheKey(server); + const displayLabel = getInstallLabel(server); + const command = getUninstallCommand(server); + + if (!command) { + throw new Error(`${displayLabel} has no uninstall command.`); + } + + if (promptConfirm) { + const shouldContinue = await confirm( + displayLabel, + `Uninstall ${displayLabel} language server?`, + ); + if (!shouldContinue) { + return false; + } + } + + let loadingDialog: LoaderDialog | null = null; + try { + loadingDialog = loader.create( + displayLabel, + `Uninstalling ${displayLabel}...`, + ); + loadingDialog.show(); + await runForegroundCommand(command); + if (cacheKey) { + checkedCommands.delete(cacheKey); + } + resetInstallState(server.id); + stopManagedServer(server.id); + return true; + } catch (error) { + console.error(`Failed to uninstall ${server.id}`, error); + toast(strings?.error ?? "Error"); + throw error; + } finally { + loadingDialog?.destroy(); + } +} + +async function performInstallCheck( + server: LspServerDefinition, + launcher: LauncherConfig | undefined, + cacheKey: string, +): Promise { + try { + const checkCommand = + launcher?.checkCommand || buildDerivedCheckCommand(server); + if (checkCommand) { + await runQuickCommand(checkCommand); + } + checkedCommands.set(cacheKey, STATUS_PRESENT); + return true; + } catch (error) { + if (!getInstallCommand(server, "install")) { + checkedCommands.set(cacheKey, STATUS_FAILED); + console.warn( + `LSP server ${server.id} is missing check command result and has no installer.`, + error, + ); + throw error; + } + + const installed = await installServer(server, "install", { + promptConfirm: true, + }); + if (!installed) { + checkedCommands.set(cacheKey, STATUS_DECLINED); + return false; + } + checkedCommands.set(cacheKey, STATUS_PRESENT); + return true; + } +} + +async function startInteractiveServer( + command: string, + serverId: string, +): Promise { + const executor = getExecutor(); + const callback: ExecutorCallback = (type, data) => { + if (type === "stderr") { + if (/proot warning/i.test(data)) return; + console.warn(`[LSP:${serverId}] ${data}`); + } else if (type === "stdout" && data && data.trim()) { + console.info(`[LSP:${serverId}] ${data}`); + // Detect when the axs proxy signals it's listening + if (/listening on/i.test(data)) { + signalServerReady(serverId); + } + } + }; + const uuid = await executor.start(command, callback, true); + managedServers.set(serverId, { + uuid, + command, + startedAt: Date.now(), + }); + return uuid; +} + +function sleep(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +/** + * Tracks servers that have signaled they're ready (listening) + * Key: serverId, Value: timestamp when ready + */ +const serverReadySignals = new Map(); + +/** + * Called when stdout contains a "listening" message from the axs proxy. + * This signals that the server is ready to accept connections. + */ +export function signalServerReady(serverId: string): void { + serverReadySignals.set(serverId, Date.now()); +} + +/** + * Wait for the LSP server to be ready. + * + * This function polls for a ready signal (set when stdout contains "listening") + */ +async function waitForWebSocket( + url: string, + options: WaitOptions = {}, +): Promise { + const { + delay = 100, // Poll interval + probeTimeout = 5000, // Max wait time + } = options; + + // Extract server ID from URL (e.g., "ws://127.0.0.1:2090" -> check by port) + const portMatch = url.match(/:(\d+)/); + const port = portMatch ? portMatch[1] : null; + + // Find the server ID that's starting on this port + let targetServerId: string | null = null; + const entries = Array.from(managedServers.entries()); + for (const [serverId, entry] of entries) { + if ( + entry.command.includes(`--port ${port}`) || + entry.command.includes(`:${port}`) + ) { + targetServerId = serverId; + break; + } + } + + const deadline = Date.now() + probeTimeout; + + while (Date.now() < deadline) { + // Check if we got a ready signal + if (targetServerId && serverReadySignals.has(targetServerId)) { + // Server is ready, clear the signal and return + serverReadySignals.delete(targetServerId); + return; + } + + await sleep(delay); + } + + // Timeout reached, proceed anyway (transport will retry if needed) + console.debug( + `[LSP] waitForWebSocket timed out for ${url}, proceeding anyway`, + ); +} + +export interface EnsureServerResult { + uuid: string | null; + /** Port discovered from port file (for auto-port discovery) */ + discoveredPort?: number; +} + +export async function ensureServerRunning( + server: LspServerDefinition, + session?: string, +): Promise { + const launcher = server.launcher; + if (!launcher) return { uuid: null }; + + // Derive session from server ID if not provided + const effectiveSession = session || server.id; + + // Check if server is already running via port file (dead client detection) + const bridge = launcher.bridge; + const serverName = + resolveServerExecutable(server) || + bridge?.command || + launcher.command || + server.id; + + try { + const existingPort = await canReuseExistingServer(server, effectiveSession); + if (existingPort !== null) { + // Server is already running and responsive, no need to start + return { uuid: null, discoveredPort: existingPort }; + } + } catch { + // Failed to check, proceed with normal startup + } + + const terminal = ( + globalThis as unknown as { + Terminal?: { isInstalled?: () => Promise | boolean }; + } + ).Terminal; + let isTerminalInstalled = false; + try { + isTerminalInstalled = Boolean(await terminal?.isInstalled?.()); + } catch {} + if (!isTerminalInstalled) { + const message = getTerminalRequiredMessage(); + alert(strings?.error, message); + const unavailable: LspError = new Error(message); + unavailable.code = "LSP_SERVER_UNAVAILABLE"; + throw unavailable; + } + + const installed = await ensureInstalled(server); + if (!installed) { + const unavailable: LspError = new Error( + `Language server ${server.id} is not available.`, + ); + unavailable.code = "LSP_SERVER_UNAVAILABLE"; + throw unavailable; + } + + const key = server.id; + if (managedServers.has(key)) { + const existing = managedServers.get(key); + return { uuid: existing?.uuid ?? null }; + } + + const command = resolveStartCommand(server, effectiveSession); + if (!command) { + return { uuid: null }; + } + + try { + const uuid = await startInteractiveServer(command, key); + + // For auto-port discovery, wait for server ready signal then read port + let discoveredPort: number | undefined; + if (bridge && !bridge.port) { + // Auto-port mode - wait for server ready signal and then read port file + const portInfo = await waitForPort( + key, + serverName, + effectiveSession, + 10000, + ); + if (portInfo) { + discoveredPort = portInfo.port; + console.info( + `[LSP:${server.id}] Auto-discovered port ${discoveredPort}`, + ); + // Update managed server entry with the port + const entry = managedServers.get(key); + if (entry) { + entry.port = discoveredPort; + } + } + } else if ( + server.transport?.url && + (server.transport.kind === "websocket" || + server.transport.kind === "stdio") + ) { + // Fixed port mode - wait for the server to signal ready + await waitForWebSocket(server.transport.url); + } + + if (!announcedServers.has(key)) { + console.info(`[LSP:${server.id}] ${server.label} connected`); + announcedServers.add(key); + } + return { uuid, discoveredPort }; + } catch (error) { + console.error(`Failed to start language server ${server.id}`, error); + const errorMessage = error instanceof Error ? error.message : String(error); + lspStatusBar.show({ + message: errorMessage || "Connection failed", + title: `${server.label} failed`, + type: "error", + icon: "error", + duration: false, + }); + const entry = managedServers.get(key); + if (entry) { + getExecutor() + .stop(entry.uuid) + .catch((err: Error) => { + console.warn( + `Failed to stop language server shell ${server.id}`, + err, + ); + }); + managedServers.delete(key); + } + const unavailable: LspError = new Error( + `Language server ${server.id} failed to start (${errorMessage})`, + ); + unavailable.code = "LSP_SERVER_UNAVAILABLE"; + throw unavailable; + } +} + +export function stopManagedServer(serverId: string): void { + const entry = managedServers.get(serverId); + if (!entry) return; + const executor = getExecutor(); + executor.stop(entry.uuid).catch((error: Error) => { + console.warn(`Failed to stop language server ${serverId}`, error); + }); + managedServers.delete(serverId); + announcedServers.delete(serverId); + + // Stop foreground service when all servers are stopped + if (managedServers.size === 0) { + executor.stopService().catch(() => {}); + } +} + +export function resetManagedServers(): void { + for (const id of Array.from(managedServers.keys())) { + stopManagedServer(id); + } + managedServers.clear(); + // Ensure foreground service is stopped + getExecutor() + .stopService() + .catch(() => {}); +} + +/** + * Get managed server info by server ID + */ +export function getManagedServerInfo( + serverId: string, +): ManagedServerEntry | null { + return managedServers.get(serverId) ?? null; +} + +/** + * Get all managed servers + */ +export function getAllManagedServers(): Map { + return new Map(managedServers); +} + +function formatMemory(bytes: number): string { + if (!bytes || bytes <= 0) return "—"; + const mb = bytes / (1024 * 1024); + if (mb >= 1) return `${mb.toFixed(1)} MB`; + const kb = bytes / 1024; + return `${kb.toFixed(0)} KB`; +} + +function formatUptime(seconds: number): string { + if (!seconds || seconds <= 0) return "—"; + if (seconds < 60) return `${seconds}s`; + const mins = Math.floor(seconds / 60); + const secs = seconds % 60; + if (mins < 60) return `${mins}m ${secs}s`; + const hours = Math.floor(mins / 60); + const remainingMins = mins % 60; + return `${hours}h ${remainingMins}m`; +} + +/** + * Fetch server stats from the axs proxy /status endpoint + * @param serverId - The server ID to fetch stats for + * @param timeout - Timeout in milliseconds (default: 2000) + */ +export async function getServerStats( + serverId: string, + timeout = 2000, +): Promise { + const entry = managedServers.get(serverId); + if (!entry?.port) { + return null; + } + + try { + const controller = new AbortController(); + const timeoutId = setTimeout(() => controller.abort(), timeout); + + const response = await fetch(`http://127.0.0.1:${entry.port}/status`, { + signal: controller.signal, + }); + + clearTimeout(timeoutId); + + if (!response.ok) { + return null; + } + + const data = (await response.json()) as LspServerStats; + + // Aggregate stats from all processes + let totalMemory = 0; + let maxUptime = 0; + let firstPid: number | null = null; + + for (const proc of data.processes || []) { + totalMemory += proc.memory_bytes || 0; + if (proc.uptime_secs > maxUptime) { + maxUptime = proc.uptime_secs; + } + if (firstPid === null && proc.pid) { + firstPid = proc.pid; + } + } + + return { + memoryBytes: totalMemory, + memoryFormatted: formatMemory(totalMemory), + uptimeSeconds: maxUptime, + uptimeFormatted: formatUptime(maxUptime), + pid: firstPid, + processCount: data.processes?.length ?? 0, + }; + } catch { + return null; + } +} diff --git a/src/cm/lsp/serverRegistry.ts b/src/cm/lsp/serverRegistry.ts new file mode 100644 index 000000000..88bb48263 --- /dev/null +++ b/src/cm/lsp/serverRegistry.ts @@ -0,0 +1,428 @@ +import { + bindServerRegistry, + ensureBuiltinBundlesRegistered, +} from "./serverCatalog"; +import type { + AcodeClientConfig, + BridgeConfig, + LanguageResolverContext, + LauncherConfig, + LspServerDefinition, + LspServerManifest, + RegistryEventListener, + RegistryEventType, + RootUriContext, + TransportDescriptor, + WebSocketTransportOptions, +} from "./types"; + +const registry = new Map(); +const listeners = new Set(); + +function toKey(id: string | undefined | null): string { + return String(id ?? "") + .trim() + .toLowerCase(); +} + +function clone(value: T): T | undefined { + if (!value || typeof value !== "object") return undefined; + try { + return JSON.parse(JSON.stringify(value)) as T; + } catch (_) { + return value; + } +} + +function sanitizeLanguages(languages: string[] = []): string[] { + if (!Array.isArray(languages)) return []; + return languages + .map((lang) => + String(lang ?? "") + .trim() + .toLowerCase(), + ) + .filter(Boolean); +} + +function parsePort(value: unknown): number | null { + const num = Number(value); + if (!Number.isFinite(num)) return null; + const int = Math.floor(num); + if (int !== num || int <= 0 || int > 65535) return null; + return int; +} + +interface RawBridgeConfig { + kind?: string; + port?: unknown; + command?: string; + args?: unknown[]; + session?: string; +} + +function sanitizeInstallKind( + value: unknown, +): + | "apk" + | "npm" + | "pip" + | "cargo" + | "github-release" + | "manual" + | "shell" + | undefined { + switch (value) { + case "apk": + case "npm": + case "pip": + case "cargo": + case "github-release": + case "manual": + case "shell": + return value; + default: + return undefined; + } +} + +function sanitizeBridge( + serverId: string, + bridge: RawBridgeConfig | undefined | null, +): BridgeConfig | undefined { + if (!bridge || typeof bridge !== "object") return undefined; + const kind = bridge.kind ?? "axs"; + if (kind !== "axs") { + throw new Error( + `LSP server ${serverId} declares unsupported bridge kind ${kind}`, + ); + } + // Port is now optional - if not provided, auto-port discovery will be used + const port = bridge.port ? (parsePort(bridge.port) ?? undefined) : undefined; + const command = bridge.command ? String(bridge.command) : null; + if (!command) { + throw new Error(`LSP server ${serverId} bridge must supply a command`); + } + const args = Array.isArray(bridge.args) + ? bridge.args.map((arg) => String(arg)) + : undefined; + return { + kind: "axs", + port, + command, + args, + session: bridge.session ? String(bridge.session) : undefined, + }; +} + +interface RawTransportDescriptor { + kind?: string; + command?: string; + args?: unknown[]; + options?: Record | WebSocketTransportOptions; + url?: string; +} + +interface RawLauncherConfig { + command?: string; + args?: unknown[]; + startCommand?: string | string[]; + checkCommand?: string; + versionCommand?: string; + updateCommand?: string; + install?: { + kind?: string; + command?: string; + updateCommand?: string; + uninstallCommand?: string; + label?: string; + source?: string; + executable?: string; + packages?: unknown[]; + pipCommand?: string; + npmCommand?: string; + pythonCommand?: string; + global?: boolean; + breakSystemPackages?: boolean; + repo?: string; + assetNames?: Record; + archiveType?: string; + extractFile?: string; + binaryPath?: string; + }; + bridge?: RawBridgeConfig; +} + +export type RawServerDefinition = LspServerManifest; + +function sanitizeDefinition( + definition: RawServerDefinition, +): LspServerDefinition { + if (!definition || typeof definition !== "object") { + throw new TypeError("LSP server definition must be an object"); + } + + const id = toKey(definition.id); + if (!id) throw new Error("LSP server definition requires a non-empty id"); + + const transport: RawTransportDescriptor = definition.transport ?? {}; + const kind = (transport.kind ?? "stdio") as + | "stdio" + | "websocket" + | "external"; + + if (!transport || typeof transport !== "object") { + throw new Error(`LSP server ${id} is missing a transport descriptor`); + } + + if ( + !("languages" in definition) || + !sanitizeLanguages(definition.languages).length + ) { + throw new Error(`LSP server ${id} must declare supported languages`); + } + + if (kind === "stdio" && !transport.command) { + throw new Error(`LSP server ${id} (stdio) requires a command`); + } + + // Websocket transport requires a URL unless a bridge is configured for auto-port discovery + const hasBridge = definition.launcher?.bridge?.command; + if (kind === "websocket" && !transport.url && !hasBridge) { + throw new Error( + `LSP server ${id} (websocket) requires a url or a launcher bridge`, + ); + } + + const transportOptions: Record = + transport.options && typeof transport.options === "object" + ? { ...transport.options } + : {}; + + const sanitizedTransport: TransportDescriptor = { + kind, + command: transport.command, + args: Array.isArray(transport.args) + ? transport.args.map((arg) => String(arg)) + : undefined, + options: transportOptions, + url: transport.url, + protocols: undefined, + }; + + let launcher: LauncherConfig | undefined; + if (definition.launcher && typeof definition.launcher === "object") { + const rawLauncher = definition.launcher; + const installExecutable = + typeof rawLauncher.install?.executable === "string" + ? rawLauncher.install.executable.trim() + : ""; + launcher = { + command: rawLauncher.command, + args: Array.isArray(rawLauncher.args) + ? rawLauncher.args.map((arg) => String(arg)) + : undefined, + startCommand: Array.isArray(rawLauncher.startCommand) + ? rawLauncher.startCommand.map((arg) => String(arg)) + : rawLauncher.startCommand, + checkCommand: rawLauncher.checkCommand, + versionCommand: rawLauncher.versionCommand, + updateCommand: rawLauncher.updateCommand, + uninstallCommand: rawLauncher.uninstallCommand, + install: + rawLauncher.install && typeof rawLauncher.install === "object" + ? { + kind: sanitizeInstallKind(rawLauncher.install.kind), + command: rawLauncher.install.command ?? "", + updateCommand: rawLauncher.install.updateCommand, + uninstallCommand: rawLauncher.install.uninstallCommand, + label: rawLauncher.install.label, + source: rawLauncher.install.source, + executable: installExecutable || undefined, + packages: Array.isArray(rawLauncher.install.packages) + ? rawLauncher.install.packages.map((entry) => String(entry)) + : undefined, + pipCommand: rawLauncher.install.pipCommand, + npmCommand: rawLauncher.install.npmCommand, + pythonCommand: rawLauncher.install.pythonCommand, + global: rawLauncher.install.global, + breakSystemPackages: rawLauncher.install.breakSystemPackages, + repo: rawLauncher.install.repo, + assetNames: + rawLauncher.install.assetNames && + typeof rawLauncher.install.assetNames === "object" + ? Object.fromEntries( + Object.entries(rawLauncher.install.assetNames).map( + ([key, value]) => [String(key), String(value)], + ), + ) + : undefined, + archiveType: + rawLauncher.install.archiveType === "binary" ? "binary" : "zip", + extractFile: rawLauncher.install.extractFile, + binaryPath: rawLauncher.install.binaryPath, + } + : undefined, + bridge: sanitizeBridge(id, rawLauncher.bridge), + }; + + const installKind = launcher.install?.kind; + const isManagedInstall = installKind && installKind !== "shell"; + if (isManagedInstall) { + const providedExecutable = + launcher.install?.binaryPath || launcher.install?.executable; + if (!providedExecutable) { + throw new Error( + `LSP server ${id} managed installers must declare install.binaryPath or install.executable`, + ); + } + } + } + + const sanitized: LspServerDefinition = { + id, + label: definition.label ?? id, + enabled: definition.enabled !== false, + languages: sanitizeLanguages(definition.languages), + transport: sanitizedTransport, + initializationOptions: clone(definition.initializationOptions), + clientConfig: clone(definition.clientConfig), + startupTimeout: + typeof definition.startupTimeout === "number" + ? definition.startupTimeout + : undefined, + capabilityOverrides: clone(definition.capabilityOverrides), + rootUri: + typeof definition.rootUri === "function" ? definition.rootUri : null, + documentUri: + typeof definition.documentUri === "function" + ? definition.documentUri + : null, + resolveLanguageId: + typeof definition.resolveLanguageId === "function" + ? definition.resolveLanguageId + : null, + launcher, + useWorkspaceFolders: definition.useWorkspaceFolders === true, + }; + + if (!Object.keys(transportOptions).length) { + sanitized.transport.options = undefined; + } + + return sanitized; +} + +function notify(event: RegistryEventType, payload: LspServerDefinition): void { + listeners.forEach((fn) => { + try { + fn(event, payload); + } catch (error) { + console.error("LSP server registry listener failed", error); + } + }); +} + +export interface RegisterServerOptions { + replace?: boolean; +} + +export function registerServer( + definition: RawServerDefinition, + options: RegisterServerOptions = {}, +): LspServerDefinition { + const { replace = false } = options; + const normalized = sanitizeDefinition(definition); + const exists = registry.has(normalized.id); + if (exists && !replace) { + const existing = registry.get(normalized.id); + if (existing) return existing; + } + + registry.set(normalized.id, normalized); + notify("register", normalized); + return normalized; +} + +export function unregisterServer(id: string): boolean { + const key = toKey(id); + if (!key || !registry.has(key)) return false; + const existing = registry.get(key); + registry.delete(key); + if (existing) { + notify("unregister", existing); + } + return true; +} + +export type ServerUpdater = ( + current: LspServerDefinition, +) => Partial | null; + +export function updateServer( + id: string, + updater: ServerUpdater, +): LspServerDefinition | null { + const key = toKey(id); + if (!key || !registry.has(key)) return null; + const current = registry.get(key); + if (!current) return null; + const next = updater({ ...current }); + if (!next) return current; + const normalized = sanitizeDefinition({ + ...current, + ...next, + id: current.id, + }); + registry.set(key, normalized); + notify("update", normalized); + return normalized; +} + +export function getServer(id: string): LspServerDefinition | null { + return registry.get(toKey(id)) ?? null; +} + +export function listServers(): LspServerDefinition[] { + return Array.from(registry.values()); +} + +export interface GetServersOptions { + includeDisabled?: boolean; +} + +export function getServersForLanguage( + languageId: string, + options: GetServersOptions = {}, +): LspServerDefinition[] { + const { includeDisabled = false } = options; + const langKey = toKey(languageId); + if (!langKey) return []; + + return listServers().filter((server) => { + if (!includeDisabled && !server.enabled) return false; + return server.languages.includes(langKey); + }); +} + +export function onRegistryChange(listener: RegistryEventListener): () => void { + if (typeof listener !== "function") return () => {}; + listeners.add(listener); + return () => listeners.delete(listener); +} + +bindServerRegistry({ + registerServer, + unregisterServer, +}); +ensureBuiltinBundlesRegistered(); + +export default { + registerServer, + unregisterServer, + updateServer, + getServer, + getServersForLanguage, + listServers, + onRegistryChange, +}; diff --git a/src/cm/lsp/servers/index.ts b/src/cm/lsp/servers/index.ts new file mode 100644 index 000000000..9164ea1a8 --- /dev/null +++ b/src/cm/lsp/servers/index.ts @@ -0,0 +1,22 @@ +import type { LspServerBundle, LspServerManifest } from "../types"; +import { javascriptBundle, javascriptServers } from "./javascript"; +import { luauBundle, luauServers } from "./luau"; +import { pythonBundle, pythonServers } from "./python"; +import { systemsBundle, systemsServers } from "./systems"; +import { webBundle, webServers } from "./web"; + +export const builtinServers: LspServerManifest[] = [ + ...javascriptServers, + ...pythonServers, + ...luauServers, + ...webServers, + ...systemsServers, +]; + +export const builtinServerBundles: LspServerBundle[] = [ + javascriptBundle, + pythonBundle, + luauBundle, + webBundle, + systemsBundle, +]; diff --git a/src/cm/lsp/servers/javascript.ts b/src/cm/lsp/servers/javascript.ts new file mode 100644 index 000000000..066359275 --- /dev/null +++ b/src/cm/lsp/servers/javascript.ts @@ -0,0 +1,308 @@ +import { defineBundle, defineServer, installers } from "../providerUtils"; +import type { LspServerBundle, LspServerManifest } from "../types"; +import { resolveJsTsLanguageId } from "./shared"; + +export const javascriptServers: LspServerManifest[] = [ + defineServer({ + id: "typescript", + label: "TypeScript / JavaScript", + useWorkspaceFolders: true, + languages: [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "tsx", + "jsx", + ], + transport: { + kind: "websocket", + }, + command: "typescript-language-server", + args: ["--stdio"], + checkCommand: "which typescript-language-server", + installer: installers.npm({ + executable: "typescript-language-server", + packages: ["typescript-language-server", "typescript"], + }), + enabled: true, + initializationOptions: { + provideFormatter: true, + hostInfo: "acode", + tsserver: { + maxTsServerMemory: 4096, + useSeparateSyntaxServer: true, + }, + preferences: { + includeInlayParameterNameHints: "all", + includeInlayParameterNameHintsWhenArgumentMatchesName: true, + includeInlayFunctionParameterTypeHints: true, + includeInlayVariableTypeHints: true, + includeInlayVariableTypeHintsWhenTypeMatchesName: false, + includeInlayPropertyDeclarationTypeHints: true, + includeInlayFunctionLikeReturnTypeHints: true, + includeInlayEnumMemberValueHints: true, + importModuleSpecifierPreference: "shortest", + importModuleSpecifierEnding: "auto", + includePackageJsonAutoImports: "auto", + provideRefactorNotApplicableReason: true, + allowIncompleteCompletions: true, + allowRenameOfImportPath: true, + generateReturnInDocTemplate: true, + organizeImportsIgnoreCase: "auto", + organizeImportsCollation: "ordinal", + organizeImportsCollationConfig: "default", + autoImportFileExcludePatterns: [], + preferTypeOnlyAutoImports: false, + }, + completions: { + completeFunctionCalls: true, + }, + diagnostics: { + reportStyleChecksAsWarnings: true, + }, + }, + resolveLanguageId: ({ languageId, languageName }) => + resolveJsTsLanguageId(languageId, languageName), + }), + defineServer({ + id: "vtsls", + label: "TypeScript / JavaScript (vtsls)", + useWorkspaceFolders: true, + languages: [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "tsx", + "jsx", + ], + transport: { + kind: "websocket", + }, + command: "vtsls", + args: ["--stdio"], + checkCommand: "which vtsls", + installer: installers.npm({ + executable: "vtsls", + packages: ["@vtsls/language-server"], + }), + enabled: false, + initializationOptions: { + hostInfo: "acode", + typescript: { + enablePromptUseWorkspaceTsdk: true, + inlayHints: { + parameterNames: { + enabled: "all", + suppressWhenArgumentMatchesName: false, + }, + parameterTypes: { + enabled: true, + }, + variableTypes: { + enabled: true, + suppressWhenTypeMatchesName: false, + }, + propertyDeclarationTypes: { + enabled: true, + }, + functionLikeReturnTypes: { + enabled: true, + }, + enumMemberValues: { + enabled: true, + }, + }, + suggest: { + completeFunctionCalls: true, + includeCompletionsForModuleExports: true, + includeCompletionsWithInsertText: true, + includeAutomaticOptionalChainCompletions: true, + includeCompletionsWithSnippetText: true, + includeCompletionsWithClassMemberSnippets: true, + includeCompletionsWithObjectLiteralMethodSnippets: true, + autoImports: true, + classMemberSnippets: { + enabled: true, + }, + objectLiteralMethodSnippets: { + enabled: true, + }, + }, + preferences: { + importModuleSpecifier: "shortest", + importModuleSpecifierEnding: "auto", + includePackageJsonAutoImports: "auto", + preferTypeOnlyAutoImports: false, + quoteStyle: "auto", + jsxAttributeCompletionStyle: "auto", + }, + format: { + enable: true, + insertSpaceAfterCommaDelimiter: true, + insertSpaceAfterSemicolonInForStatements: true, + insertSpaceBeforeAndAfterBinaryOperators: true, + insertSpaceAfterKeywordsInControlFlowStatements: true, + insertSpaceAfterFunctionKeywordForAnonymousFunctions: false, + insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: false, + insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: false, + insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: true, + insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: false, + insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces: false, + placeOpenBraceOnNewLineForFunctions: false, + placeOpenBraceOnNewLineForControlBlocks: false, + semicolons: "ignore", + }, + updateImportsOnFileMove: { + enabled: "always", + }, + codeActionsOnSave: { + organizeImports: false, + addMissingImports: false, + }, + workspaceSymbols: { + scope: "allOpenProjects", + }, + }, + javascript: { + inlayHints: { + parameterNames: { + enabled: "all", + suppressWhenArgumentMatchesName: false, + }, + parameterTypes: { + enabled: true, + }, + variableTypes: { + enabled: true, + suppressWhenTypeMatchesName: false, + }, + propertyDeclarationTypes: { + enabled: true, + }, + functionLikeReturnTypes: { + enabled: true, + }, + enumMemberValues: { + enabled: true, + }, + }, + suggest: { + completeFunctionCalls: true, + includeCompletionsForModuleExports: true, + autoImports: true, + classMemberSnippets: { + enabled: true, + }, + }, + preferences: { + importModuleSpecifier: "shortest", + quoteStyle: "auto", + }, + format: { + enable: true, + }, + updateImportsOnFileMove: { + enabled: "always", + }, + }, + tsserver: { + maxTsServerMemory: 8092, + }, + vtsls: { + experimental: { + completion: { + enableServerSideFuzzyMatch: true, + entriesLimit: 5000, + }, + }, + autoUseWorkspaceTsdk: true, + }, + }, + resolveLanguageId: ({ languageId, languageName }) => + resolveJsTsLanguageId(languageId, languageName), + }), + defineServer({ + id: "eslint", + label: "ESLint", + languages: [ + "javascript", + "javascriptreact", + "typescript", + "typescriptreact", + "tsx", + "jsx", + "vue", + "svelte", + "html", + "markdown", + "json", + "jsonc", + ], + transport: { + kind: "websocket", + }, + command: "vscode-eslint-language-server", + args: ["--stdio"], + checkCommand: "which vscode-eslint-language-server", + installer: installers.npm({ + executable: "vscode-eslint-language-server", + packages: ["vscode-langservers-extracted"], + }), + enabled: false, + initializationOptions: { + validate: "on", + rulesCustomizations: [], + run: "onType", + nodePath: null, + workingDirectory: { + mode: "auto", + }, + problems: { + shortenToSingleLine: false, + }, + codeActionOnSave: { + enable: true, + rules: [], + mode: "all", + }, + codeAction: { + disableRuleComment: { + enable: true, + location: "separateLine", + commentStyle: "line", + }, + showDocumentation: { + enable: true, + }, + }, + experimental: { + useFlatConfig: false, + }, + format: { + enable: true, + }, + quiet: false, + onIgnoredFiles: "off", + useESLintClass: false, + }, + clientConfig: { + builtinExtensions: { + hover: false, + completion: false, + signature: false, + keymaps: false, + diagnostics: true, + }, + }, + resolveLanguageId: ({ languageId, languageName }) => + resolveJsTsLanguageId(languageId, languageName), + }), +]; + +export const javascriptBundle: LspServerBundle = defineBundle({ + id: "builtin-javascript", + label: "JavaScript / TypeScript", + servers: javascriptServers, +}); diff --git a/src/cm/lsp/servers/luau.ts b/src/cm/lsp/servers/luau.ts new file mode 100644 index 000000000..4d401ff4d --- /dev/null +++ b/src/cm/lsp/servers/luau.ts @@ -0,0 +1,188 @@ +import toast from "components/toast"; +import confirm from "dialogs/confirm"; +import loader from "dialogs/loader"; +import { buildShellArchCase } from "../installerUtils"; +import { + quoteArg, + runForegroundCommand, + runQuickCommand, +} from "../installRuntime"; +import { defineBundle, defineServer, installers } from "../providerUtils"; +import type { + InstallCheckResult, + LspServerBundle, + LspServerManifest, +} from "../types"; + +function isGlibcRuntimeError(output: string): boolean { + return ( + output.includes("ld-linux-aarch64.so.1") || + output.includes("ld-linux-x86-64.so.2") || + output.includes("Error loading shared library") || + output.includes("__fprintf_chk") || + output.includes("__snprintf_chk") || + output.includes("__vsnprintf_chk") || + output.includes("__libc_single_threaded") || + output.includes("GLIBC_") + ); +} + +function getLuauRuntimeFailureMessage(output: string): string { + if (isGlibcRuntimeError(output)) { + return "Luau release binary requires glibc and is not runnable in this Alpine/musl environment."; + } + + const firstLine = String(output || "") + .split("\n") + .map((line) => line.trim()) + .find(Boolean); + return firstLine || "Luau binary is installed but not runnable."; +} + +async function readLuauRuntimeFailure(binaryPath: string): Promise { + const command = `${quoteArg(binaryPath)} --help >/dev/null 2>&1 || ${quoteArg(binaryPath)} lsp --help >/dev/null 2>&1`; + try { + await runQuickCommand(command); + return ""; + } catch (error) { + const primaryMessage = + error instanceof Error ? error.message : String(error); + try { + const lddOutput = await runQuickCommand( + `command -v ldd >/dev/null 2>&1 && ldd ${quoteArg(binaryPath)} 2>&1 || true`, + ); + return [primaryMessage, lddOutput].filter(Boolean).join("\n"); + } catch { + return primaryMessage; + } + } +} + +export const luauServers: LspServerManifest[] = [ + defineServer({ + id: "luau", + label: "Luau", + useWorkspaceFolders: true, + languages: ["luau"], + command: "/usr/local/bin/luau-lsp", + args: ["lsp"], + installer: installers.githubRelease({ + repo: "JohnnyMorganz/luau-lsp", + binaryPath: "/usr/local/bin/luau-lsp", + assetNames: { + aarch64: "luau-lsp-linux-arm64.zip", + arm64: "luau-lsp-linux-arm64.zip", + "arm64-v8a": "luau-lsp-linux-arm64.zip", + x86_64: "luau-lsp-linux-x86_64.zip", + amd64: "luau-lsp-linux-x86_64.zip", + }, + extractFile: "luau-lsp", + }), + enabled: false, + }), +]; + +export const luauBundle: LspServerBundle = defineBundle({ + id: "builtin-luau", + label: "Luau", + servers: luauServers, + hooks: { + getExecutable: (_, manifest) => + manifest.launcher?.install?.binaryPath || + manifest.launcher?.install?.executable || + null, + async checkInstallation(_, manifest): Promise { + const binary = + manifest.launcher?.install?.binaryPath || + manifest.launcher?.install?.executable; + if (!binary) { + return { + status: "failed", + version: null, + canInstall: true, + canUpdate: true, + message: "Luau bundle is missing a binary path", + }; + } + + try { + await runQuickCommand(`test -x ${quoteArg(binary)}`); + const runtimeFailure = await readLuauRuntimeFailure(binary); + if (runtimeFailure) { + return { + status: "failed", + version: null, + canInstall: true, + canUpdate: true, + message: getLuauRuntimeFailureMessage(runtimeFailure), + }; + } + return { + status: "present", + version: null, + canInstall: true, + canUpdate: true, + }; + } catch (error) { + return { + status: "missing", + version: null, + canInstall: true, + canUpdate: true, + message: error instanceof Error ? error.message : String(error), + }; + } + }, + async installServer(_, manifest, mode, options = {}): Promise { + const { promptConfirm = true } = options; + const install = manifest.launcher?.install; + const assetCases = buildShellArchCase(install?.assetNames, quoteArg); + const binaryPath = install?.binaryPath; + const repo = install?.repo; + if (!assetCases || !binaryPath || !repo) { + throw new Error("Luau bundle is missing release metadata"); + } + + const label = manifest.label || "Luau"; + const actionLabel = mode === "update" ? "Update" : "Install"; + + if (promptConfirm) { + const shouldContinue = await confirm( + label, + `${actionLabel} ${label} language server?`, + ); + if (!shouldContinue) { + return false; + } + } + + const downloadUrl = `https://github.com/${repo}/releases/latest/download/$ASSET`; + const command = `apk add --no-cache curl unzip && ARCH="$(uname -m)" && case "$ARCH" in +${assetCases} +\t*) echo "Unsupported architecture: $ARCH" >&2; exit 1 ;; +esac && apk add --no-cache gcompat libstdc++ && TMP_DIR="$(mktemp -d)" && cleanup() { rm -rf "$TMP_DIR"; } && trap cleanup EXIT && curl -fsSL "${downloadUrl}" -o "$TMP_DIR/$ASSET" && unzip -oq "$TMP_DIR/$ASSET" -d "$TMP_DIR" && chmod +x "$TMP_DIR/luau-lsp" && if ! "$TMP_DIR/luau-lsp" --help >/dev/null 2>&1 && ! "$TMP_DIR/luau-lsp" lsp --help >/dev/null 2>&1; then command -v ldd >/dev/null 2>&1 && ldd "$TMP_DIR/luau-lsp" >&2 || true; echo "Luau release binary is not runnable in this environment." >&2; exit 1; fi && install -Dm755 "$TMP_DIR/luau-lsp" ${quoteArg(binaryPath)}`; + + const loadingDialog = loader.create( + label, + `${actionLabel}ing ${label}...`, + ); + try { + loadingDialog.show(); + await runForegroundCommand(command); + const runtimeFailure = await readLuauRuntimeFailure(binaryPath); + if (runtimeFailure) { + await runQuickCommand(`rm -f ${quoteArg(binaryPath)}`); + throw new Error(getLuauRuntimeFailureMessage(runtimeFailure)); + } + toast(`${label} ${mode === "update" ? "updated" : "installed"}`); + return true; + } catch (error) { + console.error(`Failed to ${actionLabel.toLowerCase()} ${label}`, error); + toast(strings?.error ?? "Error"); + throw error; + } finally { + loadingDialog.destroy(); + } + }, + }, +}); diff --git a/src/cm/lsp/servers/python.ts b/src/cm/lsp/servers/python.ts new file mode 100644 index 000000000..98e9efbd7 --- /dev/null +++ b/src/cm/lsp/servers/python.ts @@ -0,0 +1,45 @@ +import { defineBundle, defineServer, installers } from "../providerUtils"; +import type { LspServerBundle, LspServerManifest } from "../types"; + +export const pythonServers: LspServerManifest[] = [ + defineServer({ + id: "ty", + label: "Python (ty)", + languages: ["python"], + command: "ty", + args: ["server"], + checkCommand: "which ty", + installer: installers.pip({ + executable: "ty", + packages: ["ty"], + }), + enabled: true, + }), + defineServer({ + id: "python", + label: "Python (pylsp)", + languages: ["python"], + command: "pylsp", + checkCommand: "which pylsp", + installer: installers.pip({ + executable: "pylsp", + packages: ["python-lsp-server[all]"], + }), + initializationOptions: { + pylsp: { + plugins: { + pyflakes: { enabled: true }, + pycodestyle: { enabled: true }, + mccabe: { enabled: true }, + }, + }, + }, + enabled: false, + }), +]; + +export const pythonBundle: LspServerBundle = defineBundle({ + id: "builtin-python", + label: "Python", + servers: pythonServers, +}); diff --git a/src/cm/lsp/servers/shared.ts b/src/cm/lsp/servers/shared.ts new file mode 100644 index 000000000..5b0d84e8c --- /dev/null +++ b/src/cm/lsp/servers/shared.ts @@ -0,0 +1,28 @@ +export function normalizeServerLanguageKey( + value: string | undefined | null, +): string { + return String(value ?? "") + .trim() + .toLowerCase(); +} + +export function resolveJsTsLanguageId( + languageId: string | undefined, + languageName: string | undefined, +): string | null { + const lang = normalizeServerLanguageKey(languageId ?? languageName); + switch (lang) { + case "tsx": + case "typescriptreact": + return "typescriptreact"; + case "jsx": + case "javascriptreact": + return "javascriptreact"; + case "ts": + return "typescript"; + case "js": + return "javascript"; + default: + return lang || null; + } +} diff --git a/src/cm/lsp/servers/systems.ts b/src/cm/lsp/servers/systems.ts new file mode 100644 index 000000000..1e0dc84ae --- /dev/null +++ b/src/cm/lsp/servers/systems.ts @@ -0,0 +1,260 @@ +import { defineBundle, defineServer, installers } from "../providerUtils"; +import type { LspServerBundle, LspServerManifest } from "../types"; + +export const systemsServers: LspServerManifest[] = [ + defineServer({ + id: "clangd", + label: "C / C++ (clangd)", + languages: ["c", "cpp"], + command: "clangd", + args: [ + "--background-index=0", + "--clang-tidy=0", + "--header-insertion=never", + ], + checkCommand: "which clangd", + installer: installers.apk({ + executable: "clangd", + packages: ["clang-extra-tools"], + }), + enabled: false, + }), + defineServer({ + id: "gopls", + label: "Go (gopls)", + languages: ["go", "go.mod", "go.sum", "gotmpl"], + command: "gopls", + args: ["serve"], + checkCommand: "which gopls", + installer: installers.apk({ + executable: "gopls", + packages: ["go", "gopls"], + }), + initializationOptions: { + usePlaceholders: false, + completeUnimported: true, + deepCompletion: true, + completionBudget: "100ms", + matcher: "Fuzzy", + staticcheck: true, + gofumpt: true, + hints: { + assignVariableTypes: true, + compositeLiteralFields: true, + compositeLiteralTypes: true, + constantValues: true, + functionTypeParameters: true, + parameterNames: true, + rangeVariableTypes: true, + }, + diagnosticsDelay: "250ms", + diagnosticsTrigger: "Edit", + annotations: { + bounds: true, + escape: true, + inline: true, + nil: true, + }, + semanticTokens: true, + analyses: { + nilness: true, + unusedparams: true, + unusedvariable: true, + unusedwrite: true, + shadow: true, + fieldalignment: false, + stringintconv: true, + }, + importShortcut: "Both", + symbolMatcher: "FastFuzzy", + symbolStyle: "Dynamic", + symbolScope: "all", + local: "", + linksInHover: true, + hoverKind: "FullDocumentation", + verboseOutput: false, + }, + enabled: true, + }), + defineServer({ + id: "rust-analyzer", + label: "Rust (rust-analyzer)", + useWorkspaceFolders: true, + languages: ["rust"], + command: "rust-analyzer", + checkCommand: "which rust-analyzer", + installer: installers.apk({ + executable: "rust-analyzer", + packages: ["rust", "cargo", "rust-analyzer"], + }), + initializationOptions: { + cargo: { + allFeatures: true, + buildScripts: { + enable: true, + }, + loadOutDirsFromCheck: true, + }, + procMacro: { + enable: true, + attributes: { + enable: true, + }, + }, + checkOnSave: { + enable: true, + command: "clippy", + extraArgs: ["--no-deps"], + }, + diagnostics: { + enable: true, + experimental: { + enable: true, + }, + }, + inlayHints: { + bindingModeHints: { + enable: false, + }, + chainingHints: { + enable: true, + }, + closingBraceHints: { + enable: true, + minLines: 25, + }, + closureReturnTypeHints: { + enable: "with_block", + }, + lifetimeElisionHints: { + enable: "skip_trivial", + useParameterNames: true, + }, + maxLength: 25, + parameterHints: { + enable: true, + }, + reborrowHints: { + enable: "mutable", + }, + typeHints: { + enable: true, + hideClosureInitialization: false, + hideNamedConstructor: false, + }, + }, + lens: { + enable: true, + debug: { + enable: true, + }, + implementations: { + enable: true, + }, + references: { + adt: { enable: false }, + enumVariant: { enable: false }, + method: { enable: false }, + trait: { enable: false }, + }, + run: { + enable: true, + }, + }, + completion: { + autoimport: { + enable: true, + }, + autoself: { + enable: true, + }, + callable: { + snippets: "fill_arguments", + }, + postfix: { + enable: true, + }, + privateEditable: { + enable: false, + }, + }, + semanticHighlighting: { + doc: { + comment: { + inject: { + enable: true, + }, + }, + }, + operator: { + enable: true, + specialization: { + enable: true, + }, + }, + punctuation: { + enable: false, + separate: { + macro: { + bang: true, + }, + }, + specialization: { + enable: true, + }, + }, + strings: { + enable: true, + }, + }, + hover: { + actions: { + debug: { + enable: true, + }, + enable: true, + gotoTypeDef: { + enable: true, + }, + implementations: { + enable: true, + }, + references: { + enable: true, + }, + run: { + enable: true, + }, + }, + documentation: { + enable: true, + }, + links: { + enable: true, + }, + }, + workspace: { + symbol: { + search: { + kind: "all_symbols", + scope: "workspace", + }, + }, + }, + rustfmt: { + extraArgs: [], + overrideCommand: null, + rangeFormatting: { + enable: false, + }, + }, + }, + enabled: true, + }), +]; + +export const systemsBundle: LspServerBundle = defineBundle({ + id: "builtin-systems", + label: "Systems", + servers: systemsServers, +}); diff --git a/src/cm/lsp/servers/web.ts b/src/cm/lsp/servers/web.ts new file mode 100644 index 000000000..ecc074665 --- /dev/null +++ b/src/cm/lsp/servers/web.ts @@ -0,0 +1,65 @@ +import { defineBundle, defineServer, installers } from "../providerUtils"; +import type { LspServerBundle, LspServerManifest } from "../types"; + +export const webServers: LspServerManifest[] = [ + defineServer({ + id: "html", + label: "HTML", + languages: ["html", "vue", "svelte"], + command: "vscode-html-language-server", + args: ["--stdio"], + checkCommand: "which vscode-html-language-server", + installer: installers.npm({ + executable: "vscode-html-language-server", + packages: ["vscode-langservers-extracted"], + }), + clientConfig: { + builtinExtensions: { + keymaps: false, + }, + }, + enabled: true, + }), + defineServer({ + id: "css", + label: "CSS", + languages: ["css", "scss", "less"], + command: "vscode-css-language-server", + args: ["--stdio"], + checkCommand: "which vscode-css-language-server", + installer: installers.npm({ + executable: "vscode-css-language-server", + packages: ["vscode-langservers-extracted"], + }), + clientConfig: { + builtinExtensions: { + keymaps: false, + }, + }, + enabled: true, + }), + defineServer({ + id: "json", + label: "JSON", + languages: ["json", "jsonc"], + command: "vscode-json-language-server", + args: ["--stdio"], + checkCommand: "which vscode-json-language-server", + installer: installers.npm({ + executable: "vscode-json-language-server", + packages: ["vscode-langservers-extracted"], + }), + clientConfig: { + builtinExtensions: { + keymaps: false, + }, + }, + enabled: true, + }), +]; + +export const webBundle: LspServerBundle = defineBundle({ + id: "builtin-web", + label: "Web", + servers: webServers, +}); diff --git a/src/cm/lsp/tooltipExtensions.ts b/src/cm/lsp/tooltipExtensions.ts new file mode 100644 index 000000000..db09cc53c --- /dev/null +++ b/src/cm/lsp/tooltipExtensions.ts @@ -0,0 +1,621 @@ +import { + highlightingFor, + type Language, + language as languageFacet, +} from "@codemirror/language"; +import { LSPPlugin } from "@codemirror/lsp-client"; +import { + type Extension, + Prec, + StateEffect, + StateField, +} from "@codemirror/state"; +import { + type Command, + closeHoverTooltips, + EditorView, + hasHoverTooltips, + hoverTooltip, + type KeyBinding, + keymap, + showTooltip, + type Tooltip, + ViewPlugin, + type ViewUpdate, +} from "@codemirror/view"; +import { highlightCode } from "@lezer/highlight"; +import type { + HoverParams, + SignatureHelpContext, + SignatureHelpParams, +} from "vscode-languageserver-protocol"; +import type { + Hover, + SignatureHelp as LspSignatureHelp, + MarkedString, + MarkupContent, +} from "vscode-languageserver-types"; + +interface LspClientInternals { + config?: { + highlightLanguage?: (language: string) => Language | null | undefined; + }; + hasCapability?: (name: string) => boolean; +} + +const SIGNATURE_TRIGGER_DELAY = 120; +const SIGNATURE_RETRIGGER_DELAY = 250; + +function fromPosition( + doc: EditorView["state"]["doc"], + position: { line: number; character: number }, +): number { + const line = doc.line(position.line + 1); + return Math.min(line.to, line.from + position.character); +} + +function escapeHtml(value: string): string { + return value.replace(/[&<>"']/g, (match) => { + switch (match) { + case "&": + return "&"; + case "<": + return "<"; + case ">": + return ">"; + case '"': + return """; + default: + return "'"; + } + }); +} + +function renderCode(plugin: LSPPlugin, code: MarkedString): string { + const client = plugin.client as typeof plugin.client & LspClientInternals; + + if (typeof code === "string") { + return plugin.docToHTML(code, "markdown"); + } + + const { language, value } = code; + let lang = client.config?.highlightLanguage?.(language || "") ?? undefined; + + if (!lang) { + const viewLang = plugin.view.state.facet(languageFacet); + if (viewLang && (!language || viewLang.name === language)) { + lang = viewLang; + } + } + + if (!lang) return escapeHtml(value); + + let result = ""; + highlightCode( + value, + lang.parser.parse(value), + { style: (tags) => highlightingFor(plugin.view.state, tags) }, + (text, cls) => { + result += cls + ? `${escapeHtml(text)}` + : escapeHtml(text); + }, + () => { + result += "
"; + }, + ); + return result; +} + +function renderTooltipContent( + plugin: LSPPlugin, + value: string | MarkupContent | MarkedString | MarkedString[], +): string { + if (Array.isArray(value)) { + return value.map((item) => renderCode(plugin, item)).join("
"); + } + + if ( + typeof value === "string" || + (typeof value === "object" && value != null && "language" in value) + ) { + return renderCode(plugin, value); + } + + return plugin.docToHTML(value); +} + +function isPointerOrTouchSelection(update: ViewUpdate): boolean { + return ( + update.selectionSet && + update.transactions.some( + (tr) => + tr.isUserEvent("pointer") || + tr.isUserEvent("select.pointer") || + tr.isUserEvent("touch") || + tr.isUserEvent("select.touch"), + ) + ); +} + +function closeHoverIfNeeded(view: EditorView): void { + if (hasHoverTooltips(view.state)) { + view.dispatch({ effects: closeHoverTooltips }); + } +} + +function hoverRequest(plugin: LSPPlugin, pos: number) { + const client = plugin.client as typeof plugin.client & LspClientInternals; + if (client.hasCapability?.("hoverProvider") === false) { + return Promise.resolve(null); + } + + plugin.client.sync(); + return plugin.client.request( + "textDocument/hover", + { + position: plugin.toPosition(pos), + textDocument: { uri: plugin.uri }, + }, + ); +} + +function lspTooltipSource( + view: EditorView, + pos: number, +): Promise { + const plugin = LSPPlugin.get(view); + if (!plugin) return Promise.resolve(null); + + return hoverRequest(plugin, pos).then((result) => { + if (!result) return null; + + return { + pos: result.range + ? fromPosition(view.state.doc, result.range.start) + : pos, + end: result.range ? fromPosition(view.state.doc, result.range.end) : pos, + create() { + const dom = document.createElement("div"); + dom.className = "cm-lsp-hover-tooltip cm-lsp-documentation"; + dom.innerHTML = renderTooltipContent(plugin, result.contents); + return { dom }; + }, + above: true, + }; + }); +} + +const closeHoverOnInteraction = ViewPlugin.fromClass( + class { + constructor(readonly view: EditorView) {} + }, + { + eventObservers: { + pointerdown() { + closeHoverIfNeeded(this.view); + }, + touchstart() { + closeHoverIfNeeded(this.view); + }, + wheel() { + closeHoverIfNeeded(this.view); + }, + scroll() { + closeHoverIfNeeded(this.view); + }, + }, + }, +); + +function getSignatureHelp( + plugin: LSPPlugin, + pos: number, + context: SignatureHelpContext, +) { + const client = plugin.client as typeof plugin.client & LspClientInternals; + if (client.hasCapability?.("signatureHelpProvider") === false) { + return Promise.resolve(null); + } + + plugin.client.sync(); + return plugin.client.request( + "textDocument/signatureHelp", + { + context, + position: plugin.toPosition(pos), + textDocument: { uri: plugin.uri }, + }, + ); +} + +function sameSignatures(a: LspSignatureHelp, b: LspSignatureHelp): boolean { + if (a.signatures.length !== b.signatures.length) return false; + return a.signatures.every((signature, index) => { + return signature.label === b.signatures[index]?.label; + }); +} + +function sameActiveParam( + a: LspSignatureHelp, + b: LspSignatureHelp, + active: number, +): boolean { + const current = a.signatures[active]; + const next = b.signatures[active]; + if (!current || !next) return false; + + return ( + (current.activeParameter ?? a.activeParameter) === + (next.activeParameter ?? b.activeParameter) + ); +} + +class SignatureState { + constructor( + readonly data: LspSignatureHelp, + readonly active: number, + readonly tooltip: Tooltip, + ) {} +} + +const signatureEffect = StateEffect.define<{ + data: LspSignatureHelp; + active: number; + pos: number; +} | null>(); + +function signatureTooltip( + data: LspSignatureHelp, + active: number, + pos: number, +): Tooltip { + return { + pos, + above: true, + create: (view) => drawSignatureTooltip(view, data, active), + }; +} + +const signatureState = StateField.define({ + create() { + return null; + }, + update(value, tr) { + for (const effect of tr.effects) { + if (effect.is(signatureEffect)) { + if (effect.value) { + return new SignatureState( + effect.value.data, + effect.value.active, + signatureTooltip( + effect.value.data, + effect.value.active, + effect.value.pos, + ), + ); + } + return null; + } + } + + if (value && tr.docChanged) { + return new SignatureState(value.data, value.active, { + ...value.tooltip, + pos: tr.changes.mapPos(value.tooltip.pos), + }); + } + + return value; + }, + provide: (field) => + showTooltip.from(field, (value) => value?.tooltip ?? null), +}); + +function drawSignatureTooltip( + view: EditorView, + data: LspSignatureHelp, + active: number, +) { + const dom = document.createElement("div"); + dom.className = "cm-lsp-signature-tooltip"; + + if (data.signatures.length > 1) { + dom.classList.add("cm-lsp-signature-multiple"); + const num = dom.appendChild(document.createElement("div")); + num.className = "cm-lsp-signature-num"; + num.textContent = `${active + 1}/${data.signatures.length}`; + } + + const signature = data.signatures[active]; + if (!signature) { + return { dom }; + } + + const sig = dom.appendChild(document.createElement("div")); + sig.className = "cm-lsp-signature"; + let activeFrom = 0; + let activeTo = 0; + const activeParamIndex = signature.activeParameter ?? data.activeParameter; + const activeParam = + activeParamIndex != null && signature.parameters + ? signature.parameters[activeParamIndex] + : null; + + if (activeParam && Array.isArray(activeParam.label)) { + [activeFrom, activeTo] = activeParam.label; + } else if (activeParam) { + const found = signature.label.indexOf(activeParam.label as string); + if (found > -1) { + activeFrom = found; + activeTo = found + activeParam.label.length; + } + } + + if (activeTo) { + sig.appendChild( + document.createTextNode(signature.label.slice(0, activeFrom)), + ); + const activeElt = sig.appendChild(document.createElement("span")); + activeElt.className = "cm-lsp-active-parameter"; + activeElt.textContent = signature.label.slice(activeFrom, activeTo); + sig.appendChild(document.createTextNode(signature.label.slice(activeTo))); + } else { + sig.textContent = signature.label; + } + + if (signature.documentation) { + const plugin = LSPPlugin.get(view); + if (plugin) { + const docs = dom.appendChild(document.createElement("div")); + docs.className = "cm-lsp-signature-documentation cm-lsp-documentation"; + docs.innerHTML = plugin.docToHTML(signature.documentation); + } + } + + return { dom }; +} + +const signaturePlugin = ViewPlugin.fromClass( + class { + activeRequest: { pos: number; drop: boolean } | null = null; + delayedRequest = 0; + + constructor(readonly view: EditorView) {} + + update(update: ViewUpdate) { + const pointerOrTouchSelection = isPointerOrTouchSelection(update); + + if (this.activeRequest) { + if (update.selectionSet) { + this.activeRequest.drop = true; + this.activeRequest = null; + } else if (update.docChanged) { + this.activeRequest.pos = update.changes.mapPos( + this.activeRequest.pos, + ); + } + } + + const plugin = LSPPlugin.get(update.view); + if (!plugin) return; + + const sigState = update.view.state.field(signatureState); + let triggerCharacter = ""; + + if ( + update.docChanged && + update.transactions.some((tr) => tr.isUserEvent("input.type")) + ) { + const serverConf = + plugin.client.serverCapabilities?.signatureHelpProvider; + const triggers = (serverConf?.triggerCharacters || []).concat( + (sigState && serverConf?.retriggerCharacters) || [], + ); + + if (triggers.length) { + update.changes.iterChanges((_fromA, _toA, _fromB, _toB, inserted) => { + const insertedText = inserted.toString(); + if (!insertedText) return; + for (const trigger of triggers) { + if (insertedText.includes(trigger)) { + triggerCharacter = trigger; + } + } + }); + } + } + + if (triggerCharacter) { + this.scheduleRequest( + plugin, + { + triggerKind: 2, + isRetrigger: !!sigState, + triggerCharacter, + activeSignatureHelp: sigState?.data, + }, + SIGNATURE_TRIGGER_DELAY, + ); + } else if (sigState && update.selectionSet && !pointerOrTouchSelection) { + this.scheduleRequest( + plugin, + { + triggerKind: 3, + isRetrigger: true, + activeSignatureHelp: sigState.data, + }, + SIGNATURE_RETRIGGER_DELAY, + ); + } + } + + scheduleRequest( + plugin: LSPPlugin, + context: SignatureHelpContext, + delay: number, + ) { + if (this.delayedRequest) { + clearTimeout(this.delayedRequest); + } + this.delayedRequest = window.setTimeout(() => { + this.delayedRequest = 0; + this.startRequest(plugin, context); + }, delay); + } + + startRequest(plugin: LSPPlugin, context: SignatureHelpContext) { + if (this.delayedRequest) { + clearTimeout(this.delayedRequest); + this.delayedRequest = 0; + } + + const { view } = plugin; + const pos = view.state.selection.main.head; + + if (this.activeRequest) this.activeRequest.drop = true; + const request = (this.activeRequest = { pos, drop: false }); + + getSignatureHelp(plugin, pos, context).then( + (result) => { + if (request.drop) return; + + if (result && result.signatures.length) { + const current = view.state.field(signatureState); + const same = current && sameSignatures(current.data, result); + const active = + same && context.triggerKind === 3 + ? current!.active + : (result.activeSignature ?? 0); + + if (same && sameActiveParam(current!.data, result, active)) return; + + view.dispatch({ + effects: signatureEffect.of({ + data: result, + active, + pos: same ? current!.tooltip.pos : request.pos, + }), + }); + } else if (view.state.field(signatureState, false)) { + view.dispatch({ effects: signatureEffect.of(null) }); + } + }, + context.triggerKind === 1 + ? (error) => plugin.reportError("Signature request failed", error) + : undefined, + ); + } + + close() { + if (this.delayedRequest) { + clearTimeout(this.delayedRequest); + this.delayedRequest = 0; + } + if (this.activeRequest) { + this.activeRequest.drop = true; + this.activeRequest = null; + } + if (this.view.state.field(signatureState, false)) { + this.view.dispatch({ effects: signatureEffect.of(null) }); + } + } + + destroy() { + this.close(); + } + }, + { + eventObservers: { + pointerdown() { + this.close(); + }, + touchstart() { + this.close(); + }, + wheel() { + this.close(); + }, + scroll() { + this.close(); + }, + }, + }, +); + +export const showSignatureHelp: Command = (view) => { + let plugin = view.plugin(signaturePlugin); + if (!plugin) { + view.dispatch({ + effects: StateEffect.appendConfig.of([signatureState, signaturePlugin]), + }); + plugin = view.plugin(signaturePlugin); + } + + const field = view.state.field(signatureState); + if (!plugin || field === undefined) return false; + + const lspPlugin = LSPPlugin.get(view); + if (!lspPlugin) return false; + + plugin.startRequest(lspPlugin, { + triggerKind: 1, + activeSignatureHelp: field ? field.data : undefined, + isRetrigger: !!field, + }); + return true; +}; + +export const nextSignature: Command = (view) => { + const field = view.state.field(signatureState, false); + if (!field) return false; + if (field.active < field.data.signatures.length - 1) { + view.dispatch({ + effects: signatureEffect.of({ + data: field.data, + active: field.active + 1, + pos: field.tooltip.pos, + }), + }); + } + return true; +}; + +export const prevSignature: Command = (view) => { + const field = view.state.field(signatureState, false); + if (!field) return false; + if (field.active > 0) { + view.dispatch({ + effects: signatureEffect.of({ + data: field.data, + active: field.active - 1, + pos: field.tooltip.pos, + }), + }); + } + return true; +}; + +export const signatureKeymap: readonly KeyBinding[] = [ + { key: "Mod-Shift-Space", run: showSignatureHelp }, + { key: "Mod-Shift-ArrowUp", run: prevSignature }, + { key: "Mod-Shift-ArrowDown", run: nextSignature }, +]; + +export function hoverTooltips(config: { hoverTime?: number } = {}): Extension { + return [ + hoverTooltip(lspTooltipSource, { + hideOnChange: true, + hoverTime: config.hoverTime, + }), + closeHoverOnInteraction, + ]; +} + +export function signatureHelp(config: { keymap?: boolean } = {}): Extension { + return [ + signatureState, + signaturePlugin, + config.keymap === false ? [] : Prec.high(keymap.of(signatureKeymap)), + ]; +} diff --git a/src/cm/lsp/transport.ts b/src/cm/lsp/transport.ts new file mode 100644 index 000000000..3a9d0a71c --- /dev/null +++ b/src/cm/lsp/transport.ts @@ -0,0 +1,400 @@ +/* + Language servers that expose stdio are proxied through a lightweight + WebSocket bridge so the CodeMirror client can continue to speak WebSocket. +*/ + +import type { Transport } from "@codemirror/lsp-client"; +import type { + LspServerDefinition, + TransportContext, + TransportHandle, + WebSocketTransportOptions, +} from "./types"; + +const DEFAULT_TIMEOUT = 5000; +const RECONNECT_BASE_DELAY = 500; +const RECONNECT_MAX_DELAY = 10000; +const RECONNECT_MAX_ATTEMPTS = 5; + +type MessageListener = (data: string) => void; + +interface TransportInterface extends Transport { + send(message: string): void; + subscribe(handler: MessageListener): void; + unsubscribe(handler: MessageListener): void; +} + +function createWebSocketTransport( + server: LspServerDefinition, + context: TransportContext, +): TransportHandle { + const transport = server.transport; + if (!transport) { + throw new Error( + `LSP server ${server.id} is missing transport configuration`, + ); + } + + let url = transport.url; + const options: WebSocketTransportOptions = transport.options ?? {}; + + // Use dynamic port from auto-port discovery if available + if (context.dynamicPort && context.dynamicPort > 0) { + url = `ws://127.0.0.1:${context.dynamicPort}/`; + console.info( + `[LSP:${server.id}] Using auto-discovered port ${context.dynamicPort}`, + ); + } + + // URL is only required when not using dynamic port + if (!url) { + throw new Error( + `WebSocket transport for ${server.id} has no URL (and no dynamic port available)`, + ); + } + + // Store validated URL in a const for TypeScript narrowing in nested functions + const wsUrl: string = url; + + const listeners = new Set(); + const binaryMode = !!options.binary; + const timeout = options.timeout ?? DEFAULT_TIMEOUT; + const enableReconnect = options.reconnect !== false; + const maxReconnectAttempts = + options.maxReconnectAttempts ?? RECONNECT_MAX_ATTEMPTS; + + let socket: WebSocket | null = null; + let disposed = false; + let reconnectAttempts = 0; + let reconnectTimer: ReturnType | null = null; + let connected = false; + + const encoder = binaryMode ? new TextEncoder() : null; + + function createSocket(): WebSocket { + try { + // pylsp's websocket endpoint does not require subprotocol negotiation. + // Avoid passing protocols to keep the handshake simple. + const ws = new WebSocket(wsUrl); + if (binaryMode) { + ws.binaryType = "arraybuffer"; + } + return ws; + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + throw new Error( + `Failed to construct WebSocket for ${server.id} (${wsUrl}): ${message}`, + ); + } + } + + function handleMessage(event: MessageEvent): void { + let data: string; + if (typeof event.data === "string") { + data = event.data; + } else if (event.data instanceof Blob) { + // Handle Blob synchronously by queuing - avoids async ordering issues + event.data + .text() + .then((text: string) => { + dispatchToListeners(text); + }) + .catch((err: Error) => { + console.error("Failed to read Blob message", err); + }); + return; + } else if (event.data instanceof ArrayBuffer) { + data = new TextDecoder().decode(event.data); + } else { + console.warn( + "Unknown WebSocket message type", + typeof event.data, + event.data, + ); + data = String(event.data); + } + dispatchToListeners(data); + } + + function dispatchToListeners(data: string): void { + // Debugging aid while stabilising websocket transport + if (context?.debugWebSocket) { + console.debug(`[LSP:${server.id}] <=`, data); + } + + // Temporary fix + // Intercept server requests that the CodeMirror LSP client doesn't handle + // The client only handles notifications, but some servers (e.g., TypeScript) + // send requests like window/workDoneProgress/create that need a response + try { + const msg = JSON.parse(data); + if ( + msg && + typeof msg.id !== "undefined" && + msg.method === "window/workDoneProgress/create" + ) { + // This is a request, respond with success + const response = JSON.stringify({ + jsonrpc: "2.0", + id: msg.id, + result: null, + }); + if (context?.debugWebSocket) { + console.debug(`[LSP:${server.id}] => (auto-response)`, response); + } + if (socket && socket.readyState === WebSocket.OPEN) { + if (binaryMode && encoder) { + socket.send(encoder.encode(response)); + } else { + socket.send(response); + } + } + // Don't pass this request to listeners since we handled it + console.info( + `[LSP:${server.id}] Auto-responded to window/workDoneProgress/create`, + ); + return; + } + } catch (_) { + // Not valid JSON or missing fields, pass through normally + } + + listeners.forEach((listener) => { + try { + listener(data); + } catch (error) { + console.error("LSP transport listener failed", error); + } + }); + } + + function handleClose(event: CloseEvent): void { + connected = false; + if (disposed) return; + + const wasClean = event.wasClean || event.code === 1000; + if (wasClean) { + console.info(`[LSP:${server.id}] WebSocket closed cleanly`); + return; + } + + console.warn( + `[LSP:${server.id}] WebSocket closed unexpectedly (code: ${event.code})`, + ); + + if (enableReconnect && reconnectAttempts < maxReconnectAttempts) { + scheduleReconnect(); + } else if (reconnectAttempts >= maxReconnectAttempts) { + console.error(`[LSP:${server.id}] Max reconnection attempts reached`); + } + } + + function handleError(event: Event): void { + if (disposed) return; + const errorEvent = event as ErrorEvent; + const reason = + errorEvent?.message || errorEvent?.type || "connection error"; + console.error(`[LSP:${server.id}] WebSocket error: ${reason}`); + } + + function scheduleReconnect(): void { + if (disposed || reconnectTimer) return; + + const delay = Math.min( + RECONNECT_BASE_DELAY * Math.pow(2, reconnectAttempts), + RECONNECT_MAX_DELAY, + ); + reconnectAttempts++; + + console.info( + `[LSP:${server.id}] Reconnecting in ${delay}ms (attempt ${reconnectAttempts}/${maxReconnectAttempts})`, + ); + + reconnectTimer = setTimeout(() => { + reconnectTimer = null; + if (disposed) return; + attemptReconnect(); + }, delay); + } + + function attemptReconnect(): void { + if (disposed) return; + + try { + socket = createSocket(); + setupSocketHandlers(socket); + + socket.onopen = () => { + connected = true; + reconnectAttempts = 0; + console.info(`[LSP:${server.id}] Reconnected successfully`); + if (socket) { + socket.onopen = null; + } + }; + } catch (error) { + console.error(`[LSP:${server.id}] Reconnection failed`, error); + if (reconnectAttempts < maxReconnectAttempts) { + scheduleReconnect(); + } + } + } + + function setupSocketHandlers(ws: WebSocket): void { + ws.onmessage = handleMessage; + ws.onclose = handleClose; + ws.onerror = handleError; + } + + // Initial socket creation + socket = createSocket(); + + const ready = new Promise((resolve, reject) => { + const timeoutId = setTimeout(() => { + if (socket) { + socket.onopen = null; + socket.onerror = null; + } + try { + socket?.close(); + } catch (_) { + // Ignore close errors + } + reject(new Error(`Timed out opening WebSocket for ${server.id}`)); + }, timeout); + + if (socket) { + socket.onopen = () => { + clearTimeout(timeoutId); + connected = true; + if (socket) { + setupSocketHandlers(socket); + } + resolve(); + }; + + socket.onerror = (event: Event) => { + clearTimeout(timeoutId); + if (socket) { + socket.onopen = null; + socket.onerror = null; + } + const errorEvent = event as ErrorEvent; + const reason = + errorEvent?.message || errorEvent?.type || "connection error"; + reject(new Error(`WebSocket error for ${server.id}: ${reason}`)); + }; + } + }); + + const transportInterface: TransportInterface = { + send(message: string): void { + if (!connected || !socket || socket.readyState !== WebSocket.OPEN) { + throw new Error("WebSocket transport is not open"); + } + if (binaryMode && encoder) { + socket.send(encoder.encode(message)); + } else { + socket.send(message); + } + }, + subscribe(handler: MessageListener): void { + listeners.add(handler); + }, + unsubscribe(handler: MessageListener): void { + listeners.delete(handler); + }, + }; + + const dispose = (): void => { + disposed = true; + connected = false; + + if (reconnectTimer) { + clearTimeout(reconnectTimer); + reconnectTimer = null; + } + + listeners.clear(); + + if (socket) { + if ( + socket.readyState === WebSocket.CLOSED || + socket.readyState === WebSocket.CLOSING + ) { + return; + } + try { + socket.close(1000, "Client disposed"); + } catch (_) { + // Ignore close errors + } + } + }; + + return { transport: transportInterface, dispose, ready }; +} + +function createStdioTransport( + server: LspServerDefinition, + context: TransportContext, +): TransportHandle { + if (!server.transport) { + throw new Error( + `LSP server ${server.id} is missing transport configuration`, + ); + } + if ( + !server.transport.url && + !(context.dynamicPort && context.dynamicPort > 0) + ) { + throw new Error( + `STDIO transport for ${server.id} is missing a websocket bridge url`, + ); + } + if (!server.transport.options?.binary) { + console.info( + `LSP server ${server.id} is using stdio bridge without binary mode. Falling back to text frames.`, + ); + } + return createWebSocketTransport(server, context); +} + +export function createTransport( + server: LspServerDefinition, + context: TransportContext = {}, +): TransportHandle { + if (!server) { + throw new Error("createTransport requires a server configuration"); + } + if (!server.transport) { + throw new Error( + `LSP server ${server.id || "unknown"} is missing transport configuration`, + ); + } + + const kind = server.transport.kind; + if (!kind) { + throw new Error( + `LSP server ${server.id} transport is missing 'kind' property`, + ); + } + + switch (kind) { + case "websocket": + return createWebSocketTransport(server, context); + case "stdio": + return createStdioTransport(server, context); + case "external": + if (typeof server.transport.create === "function") { + return server.transport.create(server, context); + } + throw new Error( + `LSP server ${server.id} declares an external transport without a create() factory`, + ); + default: + throw new Error(`Unsupported transport kind: ${kind}`); + } +} + +export default { createTransport }; diff --git a/src/cm/lsp/types.ts b/src/cm/lsp/types.ts new file mode 100644 index 000000000..7802be5f8 --- /dev/null +++ b/src/cm/lsp/types.ts @@ -0,0 +1,534 @@ +import type { + LSPClient, + LSPClientConfig, + LSPClientExtension, + Transport, + Workspace, + WorkspaceFile, +} from "@codemirror/lsp-client"; +import type { ChangeSet, Extension, MapMode, Text } from "@codemirror/state"; +import type { EditorView } from "@codemirror/view"; + +import type { + Diagnostic as LSPDiagnostic, + FormattingOptions as LSPFormattingOptions, + Position, + Range, + TextEdit, +} from "vscode-languageserver-types"; + +export type { + LSPClient, + LSPClientConfig, + LSPClientExtension, + LSPDiagnostic, + LSPFormattingOptions, + Position, + Range, + TextEdit, + Transport, + Workspace, + WorkspaceFile, +}; + +export interface WorkspaceFileUpdate { + file: WorkspaceFile; + prevDoc: Text; + changes: ChangeSet; +} + +// ============================================================================ +// Transport Types +// ============================================================================ + +export type TransportKind = "websocket" | "stdio" | "external"; +type MaybePromise = T | Promise; + +export interface WebSocketTransportOptions { + binary?: boolean; + timeout?: number; + reconnect?: boolean; + maxReconnectAttempts?: number; +} + +export interface TransportDescriptor { + kind: TransportKind; + url?: string; + command?: string; + args?: string[]; + options?: WebSocketTransportOptions; + protocols?: string[]; + create?: ( + server: LspServerDefinition, + context: TransportContext, + ) => TransportHandle; +} + +export interface TransportHandle { + transport: Transport; + dispose: () => Promise | void; + ready: Promise; +} + +export interface TransportContext { + uri?: string; + file?: AcodeFile; + view?: EditorView; + languageId?: string; + rootUri?: string | null; + originalRootUri?: string; + debugWebSocket?: boolean; + /** Dynamically discovered port from auto-port discovery */ + dynamicPort?: number; +} + +// ============================================================================ +// Server Registry Types +// ============================================================================ + +export interface BridgeConfig { + kind: "axs"; + /** Optional port - if not provided, auto-port discovery will be used */ + port?: number; + command: string; + args?: string[]; + /** Session ID for port file naming (defaults to command name) */ + session?: string; +} + +export type InstallerKind = + | "apk" + | "npm" + | "pip" + | "cargo" + | "github-release" + | "manual" + | "shell"; + +export interface LauncherInstallConfig { + kind?: InstallerKind; + command?: string; + updateCommand?: string; + uninstallCommand?: string; + label?: string; + source?: string; + executable?: string; + packages?: string[]; + pipCommand?: string; + npmCommand?: string; + pythonCommand?: string; + global?: boolean; + breakSystemPackages?: boolean; + repo?: string; + assetNames?: Record; + archiveType?: "zip" | "binary"; + extractFile?: string; + binaryPath?: string; +} + +export interface LauncherConfig { + command?: string; + args?: string[]; + startCommand?: string | string[]; + checkCommand?: string; + versionCommand?: string; + updateCommand?: string; + uninstallCommand?: string; + install?: LauncherInstallConfig; + bridge?: BridgeConfig; +} + +export interface BuiltinExtensionsConfig { + hover?: boolean; + completion?: boolean; + signature?: boolean; + keymaps?: boolean; + diagnostics?: boolean; + inlayHints?: boolean; + formatting?: boolean; +} + +export interface AcodeClientConfig { + useDefaultExtensions?: boolean; + builtinExtensions?: BuiltinExtensionsConfig; + extensions?: (Extension | LSPClientExtension)[]; + notificationHandlers?: Record< + string, + (client: LSPClient, params: unknown) => boolean + >; + workspace?: (client: LSPClient) => Workspace; + rootUri?: string; + timeout?: number; +} + +export interface LanguageResolverContext { + languageId: string; + languageName?: string; + uri?: string; + file?: AcodeFile; +} + +export interface DocumentUriContext extends RootUriContext { + normalizedUri?: string | null; +} + +export interface LspServerManifest { + id?: string; + label?: string; + enabled?: boolean; + languages?: string[]; + transport?: TransportDescriptor; + initializationOptions?: Record; + clientConfig?: Record | AcodeClientConfig; + startupTimeout?: number; + capabilityOverrides?: Record; + rootUri?: + | ((uri: string, context: unknown) => MaybePromise) + | ((uri: string, context: RootUriContext) => MaybePromise) + | null; + documentUri?: + | (( + uri: string, + context: DocumentUriContext, + ) => MaybePromise) + | null; + resolveLanguageId?: + | ((context: LanguageResolverContext) => string | null) + | null; + launcher?: LauncherConfig; + useWorkspaceFolders?: boolean; +} + +export interface LspServerBundle { + id: string; + label?: string; + getServers: () => LspServerManifest[]; + getExecutable?: ( + serverId: string, + manifest: LspServerManifest, + ) => string | null | undefined; + checkInstallation?: ( + serverId: string, + manifest: LspServerManifest, + ) => Promise; + installServer?: ( + serverId: string, + manifest: LspServerManifest, + mode: "install" | "update" | "reinstall", + options?: { promptConfirm?: boolean }, + ) => Promise; + uninstallServer?: ( + serverId: string, + manifest: LspServerManifest, + options?: { promptConfirm?: boolean }, + ) => Promise; +} + +export type LspServerProvider = LspServerBundle; + +export interface LspServerDefinition { + id: string; + label: string; + enabled: boolean; + languages: string[]; + transport: TransportDescriptor; + initializationOptions?: Record; + clientConfig?: AcodeClientConfig; + startupTimeout?: number; + capabilityOverrides?: Record; + rootUri?: + | ((uri: string, context: RootUriContext) => MaybePromise) + | null; + documentUri?: + | (( + uri: string, + context: DocumentUriContext, + ) => MaybePromise) + | null; + resolveLanguageId?: + | ((context: LanguageResolverContext) => string | null) + | null; + launcher?: LauncherConfig; + /** + * When true, uses a single server instance with workspace folders + * instead of starting separate servers per project root. + * Heavy LSP servers like TypeScript and rust-analyzer should use this. + */ + useWorkspaceFolders?: boolean; +} + +export interface RootUriContext { + uri?: string; + file?: AcodeFile; + view?: EditorView; + languageId?: string; + rootUri?: string; +} + +export type RegistryEventType = "register" | "unregister" | "update"; + +export type RegistryEventListener = ( + event: RegistryEventType, + server: LspServerDefinition, +) => void; + +// ============================================================================ +// Client Manager Types +// ============================================================================ + +export interface FileMetadata { + uri: string; + languageId?: string; + languageName?: string; + view?: EditorView; + file?: AcodeFile; + rootUri?: string; +} + +export interface FormattingOptions { + tabSize?: number; + insertSpaces?: boolean; + [key: string]: unknown; +} + +export interface ClientManagerOptions { + diagnosticsUiExtension?: Extension | Extension[]; + clientExtensions?: Extension | Extension[]; + resolveRoot?: (context: RootUriContext) => Promise; + displayFile?: (uri: string) => Promise; + openFile?: (uri: string) => Promise; + resolveLanguageId?: (uri: string) => string | null; + onClientIdle?: (info: ClientIdleInfo) => void; +} + +export interface ClientIdleInfo { + server: LspServerDefinition; + client: LSPClient; + rootUri: string | null; +} + +export interface ClientState { + server: LspServerDefinition; + client: LSPClient; + transport: TransportHandle; + rootUri: string | null; + attach: (uri: string, view: EditorView, aliases?: string[]) => void; + detach: (uri: string, view?: EditorView) => void; + dispose: () => Promise; +} + +export interface NormalizedRootUri { + normalizedRootUri: string | null; + originalRootUri: string | null; +} + +// ============================================================================ +// Server Launcher Types +// ============================================================================ + +export interface ManagedServerEntry { + uuid: string; + command: string; + startedAt: number; + /** Port number for the axs proxy (for stats endpoint) */ + port?: number; +} + +export type InstallStatus = "present" | "declined" | "failed"; + +export interface InstallCheckResult { + status: "present" | "missing" | "failed" | "unknown"; + version?: string | null; + canInstall: boolean; + canUpdate: boolean; + message?: string; +} + +/** + * Port information from auto-port discovery + */ +export interface PortInfo { + /** The discovered port number */ + port: number; + /** Path to the port file */ + filePath: string; + /** Session ID used for the port file */ + session: string; +} + +export interface WaitOptions { + attempts?: number; + delay?: number; + probeTimeout?: number; +} + +/** + * Result from ensureServerRunning + */ +export interface EnsureServerResult { + uuid: string | null; + /** Port discovered from port file (for auto-port discovery) */ + discoveredPort?: number; +} + +/** + * Stats returned from the axs proxy /status endpoint + */ +export interface LspServerStats { + program: string; + processes: Array<{ + pid: number; + uptime_secs: number; + memory_bytes: number; + }>; +} + +/** + * Formatted stats for UI display + */ +export interface LspServerStatsFormatted { + memoryBytes: number; + memoryFormatted: string; + uptimeSeconds: number; + uptimeFormatted: string; + pid: number | null; + processCount: number; +} + +// ============================================================================ +// Workspace Types +// ============================================================================ + +export interface WorkspaceOptions { + displayFile?: (uri: string) => Promise; + openFile?: (uri: string) => Promise; + resolveLanguageId?: (uri: string) => string | null; +} + +// ============================================================================ +// Diagnostics Types +// ============================================================================ + +export interface LspDiagnostic { + from: number; + to: number; + severity: "error" | "warning" | "info" | "hint"; + message: string; + source?: string; + /** Related diagnostic information (e.g., location of declaration for 'unused' errors) */ + relatedInformation?: DiagnosticRelatedInformation[]; +} + +/** Related information for a diagnostic (mapped to editor positions) */ +export interface DiagnosticRelatedInformation { + /** Document URI */ + uri: string; + /** Start position (offset in document) */ + from: number; + /** End position (offset in document) */ + to: number; + /** Message describing the relationship */ + message: string; +} + +export interface PublishDiagnosticsParams { + uri: string; + version?: number; + diagnostics: RawDiagnostic[]; +} + +export interface RawDiagnostic { + range: Range; + severity?: number; + code?: number | string; + source?: string; + message: string; + /** Related diagnostic locations from LSP (raw positions) */ + relatedInformation?: RawDiagnosticRelatedInformation[]; +} + +/** Raw related information from LSP (before position mapping) */ +export interface RawDiagnosticRelatedInformation { + location: { + uri: string; + range: Range; + }; + message: string; +} + +// ============================================================================ +// Formatter Types +// ============================================================================ + +export interface AcodeApi { + registerFormatter: ( + id: string, + extensions: string[], + formatter: () => Promise, + label: string, + ) => void; +} + +/** + * Uri utility interface + */ +export interface ParsedUri { + docId?: string; + rootUri?: string; + isFileUri?: boolean; +} + +/** + * Interface representing the LSPPlugin instance API. + */ +export interface LSPPluginAPI { + /** The document URI this plugin is attached to */ + uri: string; + /** The LSP client instance */ + client: LSPClient & { sync: () => void; connected?: boolean }; + /** Convert a document offset to an LSP Position */ + toPosition: (offset: number) => { line: number; character: number }; + /** Convert an LSP Position to a document offset */ + fromPosition: ( + pos: { line: number; character: number }, + doc?: unknown, + ) => number; + /** The currently synced document state */ + syncedDoc: { length: number }; + /** Pending changes that haven't been synced yet */ + unsyncedChanges: { + mapPos: (pos: number, assoc?: number, mode?: MapMode) => number | null; + empty: boolean; + }; + /** Clear pending changes */ + clear: () => void; +} + +/** + * Interface for workspace file with view access + */ +export interface WorkspaceFileWithView { + version: number; + getView: () => EditorView | null; +} + +/** + * Interface for workspace with file access + */ +export interface WorkspaceWithFileAccess { + getFile: (uri: string) => WorkspaceFileWithView | null; +} + +/** + * LSPClient with workspace access (for type casting in notification handlers) + */ +export interface LSPClientWithWorkspace { + workspace: WorkspaceWithFileAccess; +} + +// Extend the LSPClient with Acode-specific properties +declare module "@codemirror/lsp-client" { + interface LSPClient { + __acodeLoggedInfo?: boolean; + } +} diff --git a/src/cm/lsp/workspace.ts b/src/cm/lsp/workspace.ts new file mode 100644 index 000000000..01a071dee --- /dev/null +++ b/src/cm/lsp/workspace.ts @@ -0,0 +1,289 @@ +import type { WorkspaceFile } from "@codemirror/lsp-client"; +import { LSPPlugin, Workspace } from "@codemirror/lsp-client"; +import type { Text, TransactionSpec } from "@codemirror/state"; +import type { EditorView } from "@codemirror/view"; +import { getModeForPath } from "cm/modelist"; +import type { WorkspaceFileUpdate, WorkspaceOptions } from "./types"; + +class AcodeWorkspaceFile implements WorkspaceFile { + uri: string; + languageId: string; + version: number; + doc: Text; + views: Set; + + constructor( + uri: string, + languageId: string, + version: number, + doc: Text, + view?: EditorView, + ) { + this.uri = uri; + this.languageId = languageId; + this.version = version; + this.doc = doc; + this.views = new Set(); + if (view) this.views.add(view); + } + + getView(preferred?: EditorView): EditorView | null { + if (preferred && this.views.has(preferred)) return preferred; + const iterator = this.views.values(); + const next = iterator.next(); + return next.done ? null : next.value; + } +} + +export default class AcodeWorkspace extends Workspace { + files: AcodeWorkspaceFile[]; + options: WorkspaceOptions; + + #fileMap: Map; + #versions: Record; + #workspaceFolders: Set; + + constructor( + client: ConstructorParameters[0], + options: WorkspaceOptions = {}, + ) { + super(client); + this.files = []; + this.#fileMap = new Map(); + this.#versions = Object.create(null) as Record; + this.#workspaceFolders = new Set(); + this.options = options; + } + + #getOrCreateFile( + uri: string, + languageId: string, + view: EditorView, + ): AcodeWorkspaceFile { + let file = this.#fileMap.get(uri); + if (!file) { + const doc = view.state?.doc; + if (!doc) { + throw new Error( + `Cannot create workspace file without document: ${uri}`, + ); + } + file = new AcodeWorkspaceFile( + uri, + languageId, + this.#nextFileVersion(uri), + doc, + view, + ); + this.#fileMap.set(uri, file); + this.files.push(file); + this.client.didOpen(file); + } + file.views.add(view); + return file; + } + + #getFileEntry(uri: string): AcodeWorkspaceFile | null { + return this.#fileMap.get(uri) ?? null; + } + + #removeFileEntry(file: AcodeWorkspaceFile): void { + this.#fileMap.delete(file.uri); + this.files = this.files.filter((candidate) => candidate !== file); + } + + #nextFileVersion(uri: string): number { + const current = this.#versions[uri] ?? -1; + const next = current + 1; + this.#versions[uri] = next; + return next; + } + + #resolveLanguageIdForUri(uri: string): string { + if (typeof this.options.resolveLanguageId === "function") { + const resolved = this.options.resolveLanguageId(uri); + if (resolved) return resolved; + } + try { + const mode = getModeForPath(uri); + if (mode?.name) { + return String(mode.name).toLowerCase(); + } + } catch (error) { + console.warn( + `[LSP:Workspace] Failed to resolve language id for ${uri}`, + error, + ); + } + return "plaintext"; + } + + syncFiles(): readonly WorkspaceFileUpdate[] { + const updates: WorkspaceFileUpdate[] = []; + for (const file of this.files) { + const view = file.getView(); + if (!view) continue; + const plugin = LSPPlugin.get(view); + if (!plugin) continue; + const { unsyncedChanges } = plugin; + if (unsyncedChanges.empty) continue; + + updates.push({ file, prevDoc: file.doc, changes: unsyncedChanges }); + file.doc = view.state.doc; + file.version = this.#nextFileVersion(file.uri); + plugin.clear(); + } + return updates; + } + + openFile(uri: string, languageId: string, view: EditorView): void { + if (!view) return; + this.#getOrCreateFile(uri, languageId, view); + } + + closeFile(uri: string, view?: EditorView): void { + const file = this.#getFileEntry(uri); + if (!file) return; + + if (view && file.views.has(view)) { + file.views.delete(view); + } + + if (!file.views.size) { + this.client.didClose(uri); + this.#removeFileEntry(file); + } + } + + getFile(uri: string): AcodeWorkspaceFile | null { + return this.#getFileEntry(uri); + } + + requestFile(uri: string): Promise { + return Promise.resolve(this.#getFileEntry(uri)); + } + + connected(): void { + for (const file of this.files) { + this.client.didOpen(file); + } + } + + updateFile(uri: string, update: TransactionSpec): void { + const file = this.#getFileEntry(uri); + + if (file) { + const view = file.getView(); + if (view) { + view.dispatch(update); + return; + } + } + + // File is not open - try to open it and apply the update + this.#applyUpdateToClosedFile(uri, update).catch((error) => { + console.warn(`[LSP:Workspace] Failed to apply update: ${uri}`, error); + }); + } + + async #applyUpdateToClosedFile( + uri: string, + update: TransactionSpec, + ): Promise { + if (typeof this.options.displayFile !== "function") return; + + try { + const view = await this.options.displayFile(uri); + if (!view?.state?.doc) return; + const languageId = this.#resolveLanguageIdForUri(uri); + const file = this.#getOrCreateFile(uri, languageId, view); + const fileView = file.getView(); + if (fileView) { + fileView.dispatch(update); + } + } catch (error) { + console.error(`[LSP:Workspace] Failed to apply update: ${uri}`, error); + } + } + + async displayFile(uri: string): Promise { + if (typeof this.options.displayFile === "function") { + try { + return await this.options.displayFile(uri); + } catch (error) { + console.error("[LSP:Workspace] Failed to display file", error); + } + } + return null; + } + + // ======================================================================== + // Workspace Folders Support + // ======================================================================== + + #getFolderName(uri: string): string { + const parts = uri.replace(/\/$/, "").split("/"); + return parts[parts.length - 1] || uri; + } + + #sendNotification(method: string, params: unknown): void { + // Access the client's transport to send raw JSON-RPC notification + const client = this.client as unknown as { + connected: boolean; + transport?: { send: (message: string) => void }; + }; + + if (!client.connected || !client.transport) { + console.warn(`[LSP:Workspace] Cannot send notification: not connected`); + return; + } + + const message = JSON.stringify({ + jsonrpc: "2.0", + method, + params, + }); + + client.transport.send(message); + } + + hasWorkspaceFolder(uri: string): boolean { + return this.#workspaceFolders.has(uri); + } + + getWorkspaceFolders(): string[] { + return Array.from(this.#workspaceFolders); + } + + addWorkspaceFolder(uri: string): boolean { + if (this.#workspaceFolders.has(uri)) { + return false; + } + + this.#workspaceFolders.add(uri); + this.#sendNotification("workspace/didChangeWorkspaceFolders", { + event: { + added: [{ uri, name: this.#getFolderName(uri) }], + removed: [], + }, + }); + console.info(`[LSP:Workspace] Added workspace folder: ${uri}`); + return true; + } + + removeWorkspaceFolder(uri: string): boolean { + if (!this.#workspaceFolders.has(uri)) { + return false; + } + + this.#workspaceFolders.delete(uri); + this.#sendNotification("workspace/didChangeWorkspaceFolders", { + event: { + added: [], + removed: [{ uri, name: this.#getFolderName(uri) }], + }, + }); + console.info(`[LSP:Workspace] Removed workspace folder: ${uri}`); + return true; + } +} diff --git a/src/cm/mainEditorExtensions.ts b/src/cm/mainEditorExtensions.ts new file mode 100644 index 000000000..8ddf9c68d --- /dev/null +++ b/src/cm/mainEditorExtensions.ts @@ -0,0 +1,56 @@ +import type { Extension } from "@codemirror/state"; +import { EditorView, scrollPastEnd } from "@codemirror/view"; + +interface MainEditorExtensionOptions { + emmetExtensions?: Extension[]; + baseExtensions?: Extension[]; + commandKeymapExtension?: Extension; + themeExtension?: Extension; + pointerCursorVisibilityExtension?: Extension; + shiftClickSelectionExtension?: Extension; + touchSelectionUpdateExtension?: Extension; + searchExtension?: Extension; + readOnlyExtension?: Extension; + optionExtensions?: Extension[]; +} + +function pushExtension(target: Extension[], extension?: Extension): void { + if (extension == null) return; + target.push(extension); +} + +export const fixedHeightTheme = EditorView.theme({ + "&": { height: "100%" }, + ".cm-scroller": { height: "100%", overflow: "auto" }, +}); + +export function createMainEditorExtensions( + options: MainEditorExtensionOptions = {}, +): Extension[] { + const extensions: Extension[] = []; + + if (options.emmetExtensions?.length) { + extensions.push(...options.emmetExtensions); + } + if (options.baseExtensions?.length) { + extensions.push(...options.baseExtensions); + } + + pushExtension(extensions, options.commandKeymapExtension); + pushExtension(extensions, options.themeExtension); + extensions.push(fixedHeightTheme); + extensions.push(scrollPastEnd()); + pushExtension(extensions, options.pointerCursorVisibilityExtension); + pushExtension(extensions, options.shiftClickSelectionExtension); + pushExtension(extensions, options.touchSelectionUpdateExtension); + pushExtension(extensions, options.searchExtension); + pushExtension(extensions, options.readOnlyExtension); + + if (options.optionExtensions?.length) { + extensions.push(...options.optionExtensions); + } + + return extensions; +} + +export default createMainEditorExtensions; diff --git a/src/cm/modelist.ts b/src/cm/modelist.ts new file mode 100644 index 000000000..faa6b5a84 --- /dev/null +++ b/src/cm/modelist.ts @@ -0,0 +1,258 @@ +import type { Extension } from "@codemirror/state"; + +export type LanguageExtensionProvider = () => Extension | Promise; + +export interface AddModeOptions { + aliases?: string[]; + filenameMatchers?: RegExp[]; +} + +export interface ModesByName { + [name: string]: Mode; +} + +const modesByName: ModesByName = {}; +const modes: Mode[] = []; + +function normalizeModeKey(value: string): string { + return String(value ?? "") + .trim() + .toLowerCase(); +} + +function normalizeAliases(aliases: string[] = [], name: string): string[] { + const normalized = new Set(); + for (const alias of aliases) { + const key = normalizeModeKey(alias); + if (!key || key === name) continue; + normalized.add(key); + } + return [...normalized]; +} + +function escapeRegExp(value: string): string { + return String(value ?? "").replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} + +/** + * Initialize CodeMirror mode list functionality + */ +export function initModes(): void { + // CodeMirror modes don't need the same ace.define wrapper + // but we maintain the same API structure for compatibility +} + +/** + * Add language mode to CodeMirror editor + */ +export function addMode( + name: string, + extensions: string | string[], + caption?: string, + languageExtension: LanguageExtensionProvider | null = null, + options: AddModeOptions = {}, +): void { + const filename = normalizeModeKey(name); + const mode = new Mode( + filename, + caption, + extensions, + languageExtension, + options, + ); + modesByName[filename] = mode; + mode.aliases.forEach((alias) => { + if (!modesByName[alias]) { + modesByName[alias] = mode; + } + }); + modes.push(mode); +} + +/** + * Remove language mode from CodeMirror editor + */ +export function removeMode(name: string): void { + const filename = normalizeModeKey(name); + const mode = modesByName[filename]; + if (!mode) return; + + delete modesByName[mode.name]; + mode.aliases.forEach((alias) => { + if (modesByName[alias] === mode) { + delete modesByName[alias]; + } + }); + + const modeIndex = modes.findIndex( + (registeredMode) => registeredMode === mode, + ); + if (modeIndex >= 0) { + modes.splice(modeIndex, 1); + } +} + +/** + * Get mode for file path + */ +export function getModeForPath(path: string): Mode { + let mode = modesByName.text; + const fileName = path.split(/[/\\]/).pop() || ""; + + // Sort modes by specificity (descending) to check most specific first + const sortedModes = [...modes].sort((a, b) => { + return getModeSpecificityScore(b) - getModeSpecificityScore(a); + }); + + for (const iMode of sortedModes) { + if (iMode.supportsFile?.(fileName)) { + mode = iMode; + break; + } + } + return mode; +} + +/** + * Calculates a specificity score for a mode. + * Higher score means more specific. + * - Anchored patterns (e.g., "^Dockerfile") get a base score of 1000. + * - Non-anchored patterns (extensions) are scored by length. + */ +function getModeSpecificityScore(modeInstance: Mode): number { + const extensionsStr = modeInstance.extensions; + let maxScore = 0; + + if (extensionsStr) { + const patterns = extensionsStr.split("|"); + for (const pattern of patterns) { + let currentScore = 0; + if (pattern.startsWith("^")) { + // Exact filename match or anchored pattern + currentScore = 1000 + (pattern.length - 1); // Subtract 1 for '^' + } else { + // Extension match + currentScore = pattern.length; + } + if (currentScore > maxScore) { + maxScore = currentScore; + } + } + } + + for (const matcher of modeInstance.filenameMatchers) { + const score = 1000 + matcher.source.length; + if (score > maxScore) { + maxScore = score; + } + } + + return maxScore; +} + +/** + * Get all modes by name + */ +export function getModesByName(): ModesByName { + return modesByName; +} + +/** + * Get all modes array + */ +export function getModes(): Mode[] { + return modes; +} + +export function getMode(name: string): Mode | null { + return modesByName[normalizeModeKey(name)] || null; +} + +export class Mode { + extensions: string; + caption: string; + name: string; + mode: string; + aliases: string[]; + extRe: RegExp | null; + filenameMatchers: RegExp[]; + languageExtension: LanguageExtensionProvider | null; + + constructor( + name: string, + caption: string | undefined, + extensions: string | string[], + languageExtension: LanguageExtensionProvider | null = null, + options: AddModeOptions = {}, + ) { + if (Array.isArray(extensions)) { + extensions = extensions.join("|"); + } + + this.name = name; + this.mode = name; // CodeMirror uses different mode naming + this.extensions = extensions; + this.caption = caption || this.name.replace(/_/g, " "); + this.aliases = normalizeAliases(options.aliases, this.name); + this.filenameMatchers = Array.isArray(options.filenameMatchers) + ? options.filenameMatchers.filter((matcher) => matcher instanceof RegExp) + : []; + this.languageExtension = languageExtension; + let re = ""; + + if (!extensions) { + this.extRe = null; + return; + } + + const patterns = extensions + .split("|") + .map((pattern) => pattern.trim()) + .filter(Boolean); + const filenamePatterns = patterns + .filter((pattern) => pattern.startsWith("^")) + .map((pattern) => `^${escapeRegExp(pattern.slice(1))}$`); + const extensionPatterns = patterns + .filter((pattern) => !pattern.startsWith("^")) + .map((pattern) => escapeRegExp(pattern)); + const regexParts: string[] = []; + + if (extensionPatterns.length) { + regexParts.push(`^.*\\.(${extensionPatterns.join("|")})$`); + } + + regexParts.push(...filenamePatterns); + + if (!regexParts.length) { + this.extRe = null; + return; + } + + re = + regexParts.length === 1 ? regexParts[0] : `(?:${regexParts.join("|")})`; + this.extRe = new RegExp(re, "i"); + } + + supportsFile(filename: string): boolean { + if (this.extRe?.test(filename)) return true; + + return this.filenameMatchers.some((matcher) => { + matcher.lastIndex = 0; + return matcher.test(filename); + }); + } + + /** + * Get the CodeMirror language extension + */ + getExtension(): LanguageExtensionProvider | null { + return this.languageExtension; + } + + /** + * Check if the language extension is available (loaded) + */ + isAvailable(): boolean { + return this.languageExtension !== null; + } +} diff --git a/src/cm/modes/luau/index.ts b/src/cm/modes/luau/index.ts new file mode 100644 index 000000000..c78cfd098 --- /dev/null +++ b/src/cm/modes/luau/index.ts @@ -0,0 +1,801 @@ +import { + IndentContext, + LanguageSupport, + StreamLanguage, + StringStream, +} from "@codemirror/language"; + +type Tokenizer = (stream: StringStream, state: LuauState) => string | null; + +interface LuauState { + basecol: number; + indentDepth: number; + cur: Tokenizer; + stack: Tokenizer[]; + expectFunctionName: boolean; + afterFunctionName: boolean; + expectTypeName: boolean; + afterTypeName: boolean; + afterTypeIdentifier: boolean; + inType: boolean; + typeDepth: number; + genericDepth: number; + interpolationBraceDepth: number; + afterPropertyAccess: boolean; + lastIdentifierWasStandard: boolean; + docCommentExpectParamName: boolean; + docCommentExpectType: boolean; +} + +const controlKeywords = new Set([ + "break", + "continue", + "do", + "else", + "elseif", + "end", + "for", + "function", + "if", + "in", + "repeat", + "return", + "then", + "type", + "until", + "while", +]); + +const modifierKeywords = new Set(["export", "local"]); +const logicalKeywords = new Set(["and", "not", "or"]); +const typePrimitives = new Set([ + "any", + "boolean", + "buffer", + "never", + "nil", + "number", + "string", + "symbol", + "thread", + "unknown", + "userdata", + "vector", +]); + +const standardFunctions = new Set([ + "assert", + "collectgarbage", + "delay", + "error", + "gcinfo", + "getfenv", + "getmetatable", + "ipairs", + "loadstring", + "newproxy", + "next", + "pairs", + "pcall", + "print", + "printidentity", + "rawequal", + "rawset", + "require", + "select", + "setfenv", + "setmetatable", + "settings", + "spawn", + "stats", + "tick", + "time", + "tonumber", + "tostring", + "type", + "typeof", + "unpack", + "UserSettings", + "version", + "wait", + "warn", +]); + +const standardNamespaces = new Set([ + "bit32", + "buffer", + "coroutine", + "debug", + "math", + "os", + "string", + "table", + "task", + "utf8", + "vector", + "Enum", +]); + +const standardVariables = new Set([ + "_G", + "_VERSION", + "DebuggerManager", + "PluginManager", + "game", + "plugin", + "script", + "shared", + "workspace", +]); + +const metamethods = new Set([ + "__add", + "__call", + "__concat", + "__div", + "__eq", + "__idiv", + "__index", + "__iter", + "__le", + "__len", + "__lt", + "__metatable", + "__mod", + "__mode", + "__mul", + "__newindex", + "__pow", + "__sub", + "__tostring", + "__unm", +]); + +const typeTerminators = new Set([ + "break", + "continue", + "do", + "else", + "elseif", + "end", + "for", + "if", + "in", + "local", + "repeat", + "return", + "then", + "until", + "while", +]); + +const indentTokens = new Set(["do", "function", "if", "repeat", "(", "{"]); +const dedentTokens = new Set(["end", "until", ")", "}"]); +const dedentPartial = /^(?:end|until|\)|}|else|elseif)\b/; + +function pushTokenizer(state: LuauState, tokenizer: Tokenizer) { + state.stack.push(state.cur); + state.cur = tokenizer; +} + +function popTokenizer(state: LuauState) { + state.cur = state.stack.pop() || normal; +} + +function enterTypeContext(state: LuauState, depth = 0) { + state.inType = true; + state.typeDepth = depth; +} + +function exitTypeContext(state: LuauState) { + state.inType = false; + state.typeDepth = 0; + state.genericDepth = 0; + state.afterTypeIdentifier = false; +} + +function isWordStart(char: string) { + return /[A-Za-z_]/.test(char); +} + +function isWord(char: string) { + return /[A-Za-z0-9_]/.test(char); +} + +function isUpperConstant(word: string) { + return /^[A-Z_][A-Z0-9_]*$/.test(word); +} + +function isStandardWord(word: string) { + return ( + standardFunctions.has(word) || + standardNamespaces.has(word) || + standardVariables.has(word) + ); +} + +function looksLikeMethodSeparator(stream: StringStream) { + return /^\s*[A-Za-z_][A-Za-z0-9_]*\s*\(/.test( + stream.string.slice(stream.pos), + ); +} + +function readLongBracket(stream: StringStream) { + let level = 0; + while (stream.eat("=")) level++; + return stream.eat("[") ? level : -1; +} + +function bracketed(level: number, style: string): Tokenizer { + return (stream, state) => { + let seenEquals: number | null = null; + while (true) { + const char = stream.next(); + if (char == null) break; + if (seenEquals == null) { + if (char === "]") seenEquals = 0; + } else if (char === "=") { + seenEquals++; + } else if (char === "]" && seenEquals === level) { + popTokenizer(state); + break; + } else { + seenEquals = null; + } + } + + return style; + }; +} + +function quotedString(quote: string): Tokenizer { + return (stream, state) => { + let escaped = false; + while (true) { + const char = stream.next(); + if (char == null) break; + if (char === quote && !escaped) { + popTokenizer(state); + break; + } + escaped = !escaped && char === "\\"; + } + + return "string"; + }; +} + +const interpolatedString: Tokenizer = (stream, state) => { + while (true) { + const char = stream.next(); + if (char == null) break; + if (char === "\\") { + stream.next(); + continue; + } + + if (char === "{") { + if (stream.pos - stream.start > 1) { + stream.backUp(1); + return "string"; + } + + state.interpolationBraceDepth = 0; + pushTokenizer(state, interpolatedExpression); + return "punctuation"; + } + + if (char === "`") { + popTokenizer(state); + break; + } + } + + return "string"; +}; + +const interpolatedExpression: Tokenizer = (stream, state) => { + if (stream.eatSpace()) return null; + + if (stream.peek() === "}" && state.interpolationBraceDepth === 0) { + stream.next(); + popTokenizer(state); + return "punctuation"; + } + + const style = normal(stream, state); + const token = stream.current(); + + if (state.cur === interpolatedExpression) { + if (token === "{") { + state.interpolationBraceDepth++; + } else if (token === "}" && state.interpolationBraceDepth > 0) { + state.interpolationBraceDepth--; + } + } + + return style; +}; + +const docCommentLine: Tokenizer = (stream, state) => { + if (stream.sol()) { + popTokenizer(state); + return normal(stream, state); + } + + if (stream.eatSpace()) return null; + + const peek = stream.peek(); + if (!peek) { + state.docCommentExpectParamName = false; + state.docCommentExpectType = false; + return null; + } + + if (stream.match(/(?:\\|@)[A-Za-z_][A-Za-z0-9_]*/)) { + const tag = stream.current(); + state.docCommentExpectParamName = /(?:\\|@)param$/.test(tag); + state.docCommentExpectType = false; + return "attributeName"; + } + + if (state.docCommentExpectParamName && isWordStart(peek)) { + stream.next(); + stream.eatWhile(isWord); + state.docCommentExpectParamName = false; + state.docCommentExpectType = true; + return "variableName"; + } + + if ( + state.docCommentExpectType && + (isWordStart(peek) || + peek === "{" || + peek === "(" || + peek === "[" || + peek === "?" || + peek === "." || + peek === "|") + ) { + stream.next(); + stream.eatWhile(/[^\s,;]+/); + state.docCommentExpectType = false; + return "typeName"; + } + + stream.next(); + stream.eatWhile((char) => !/\s/.test(char)); + return "comment"; +}; + +function readNumber(stream: StringStream, firstChar: string) { + const next = stream.peek(); + if (firstChar === "0" && next && /[xX]/.test(next)) { + stream.next(); + stream.eatWhile(/[0-9a-fA-F_]/); + return; + } + + stream.eatWhile(/[\d_]/); + + if (stream.peek() === "." && stream.string.charAt(stream.pos + 1) !== ".") { + stream.next(); + stream.eatWhile(/[\d_]/); + } + + const exponent = stream.peek(); + if (exponent && /[eE]/.test(exponent)) { + stream.next(); + stream.eat(/[+-]/); + stream.eatWhile(/[\d_]/); + } +} + +function classifyIdentifier(word: string, state: LuauState) { + if (state.expectFunctionName && isWordStart(word)) { + state.expectFunctionName = false; + state.afterFunctionName = true; + state.afterPropertyAccess = false; + state.afterTypeIdentifier = false; + state.lastIdentifierWasStandard = false; + return metamethods.has(word) + ? "variableName.function.definition.special" + : "variableName.function.definition"; + } + + if (state.expectTypeName && word !== "function") { + state.expectTypeName = false; + state.afterTypeName = true; + state.afterTypeIdentifier = true; + state.afterFunctionName = false; + state.lastIdentifierWasStandard = false; + return "typeName.definition"; + } + + if (state.afterPropertyAccess) { + state.afterPropertyAccess = false; + const isStandardProperty = state.lastIdentifierWasStandard; + const isStandardMember = isStandardProperty || isStandardWord(word); + state.lastIdentifierWasStandard = isStandardMember; + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + if (metamethods.has(word)) return "propertyName.special"; + return isStandardMember ? "propertyName.standard" : "propertyName"; + } + + if (logicalKeywords.has(word)) { + state.lastIdentifierWasStandard = false; + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + return "operatorKeyword"; + } + + if (modifierKeywords.has(word)) { + state.lastIdentifierWasStandard = false; + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + return "modifier"; + } + + if (word === "type") { + state.expectTypeName = true; + state.afterTypeName = false; + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + state.lastIdentifierWasStandard = false; + return "definitionKeyword"; + } + + if (word === "function") { + if (!state.expectTypeName) state.expectFunctionName = true; + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + state.lastIdentifierWasStandard = false; + return "controlKeyword"; + } + + if (word === "self") { + state.lastIdentifierWasStandard = false; + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + return "variableName.special"; + } + + if (word === "true" || word === "false") { + state.lastIdentifierWasStandard = false; + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + return "bool"; + } + + if (word === "nil") { + state.lastIdentifierWasStandard = false; + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + return "null"; + } + + if (controlKeywords.has(word)) { + if (state.inType && state.typeDepth === 0 && typeTerminators.has(word)) { + exitTypeContext(state); + } + state.lastIdentifierWasStandard = false; + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + return "controlKeyword"; + } + + if (state.inType) { + state.lastIdentifierWasStandard = false; + state.afterFunctionName = false; + state.afterTypeIdentifier = true; + if (word === "typeof") return "variableName.function.standard"; + if (typePrimitives.has(word) || isUpperConstant(word)) return "typeName"; + return "typeName"; + } + + if (standardNamespaces.has(word)) { + state.lastIdentifierWasStandard = true; + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + return "namespace"; + } + + if (standardVariables.has(word)) { + state.lastIdentifierWasStandard = true; + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + return "variableName.standard"; + } + + if (standardFunctions.has(word)) { + state.lastIdentifierWasStandard = true; + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + return "variableName.function.standard"; + } + + if (isUpperConstant(word)) { + state.lastIdentifierWasStandard = false; + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + return "variableName.constant"; + } + + state.lastIdentifierWasStandard = isStandardWord(word); + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + return "variableName"; +} + +const normal: Tokenizer = (stream, state) => { + const char = stream.next(); + if (!char) return null; + + if (char === "-" && stream.eat("-")) { + if (stream.eat("-")) { + state.docCommentExpectParamName = false; + state.docCommentExpectType = false; + pushTokenizer(state, docCommentLine); + return "comment"; + } + if (stream.eat("[")) { + const longBracketStart = stream.pos; + const level = readLongBracket(stream); + if (level >= 0) { + pushTokenizer(state, bracketed(level, "comment")); + return state.cur(stream, state); + } + stream.backUp(stream.pos - longBracketStart); + } + stream.skipToEnd(); + return "comment"; + } + + if (char === '"' || char === "'") { + pushTokenizer(state, quotedString(char)); + return state.cur(stream, state); + } + + if (char === "`") { + pushTokenizer(state, interpolatedString); + return state.cur(stream, state); + } + + if (char === "[") { + const longBracketStart = stream.pos; + const level = readLongBracket(stream); + if (level >= 0) { + pushTokenizer(state, bracketed(level, "string")); + return state.cur(stream, state); + } + stream.backUp(stream.pos - longBracketStart); + } + + if (char === "@" && isWordStart(stream.peek() || "")) { + stream.eatWhile(isWord); + state.lastIdentifierWasStandard = false; + return "attributeName"; + } + + if (/\d/.test(char) || (char === "." && /\d/.test(stream.peek() || ""))) { + readNumber(stream, char); + state.lastIdentifierWasStandard = false; + return "number"; + } + + if (isWordStart(char)) { + stream.eatWhile(isWord); + return classifyIdentifier(stream.current(), state); + } + + if (char === "." || char === ":") { + if (char === "." && stream.eat(".")) { + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + if (stream.eat(".")) { + state.lastIdentifierWasStandard = false; + return "keyword"; + } + stream.eat("="); + state.lastIdentifierWasStandard = false; + return "operator"; + } + + if (char === ":" && stream.eat(":")) { + enterTypeContext(state); + state.lastIdentifierWasStandard = false; + return "operator"; + } + + if ( + char === ":" && + !state.expectFunctionName && + !looksLikeMethodSeparator(stream) + ) { + enterTypeContext(state); + state.lastIdentifierWasStandard = false; + return "operator"; + } + + state.afterPropertyAccess = true; + return "punctuation"; + } + + if (char === "-" && stream.eat(">")) { + enterTypeContext(state); + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + state.lastIdentifierWasStandard = false; + return "operator"; + } + + if ( + char === "<" && + (state.afterTypeName || + state.afterFunctionName || + state.afterTypeIdentifier) + ) { + enterTypeContext(state); + state.genericDepth++; + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + state.lastIdentifierWasStandard = false; + return "operator"; + } + + if ( + (char === "|" || char === "&" || char === "?") && + (state.inType || char === "?") + ) { + state.lastIdentifierWasStandard = false; + return "operator"; + } + + if ( + char === "+" || + char === "-" || + char === "*" || + char === "/" || + char === "%" || + char === "^" || + char === "#" || + char === "=" || + char === "<" || + char === ">" || + char === "~" || + char === "!" + ) { + stream.eat("="); + if (char === ">" && state.genericDepth > 0) { + state.genericDepth--; + if (state.genericDepth === 0 && state.typeDepth === 0) { + state.inType = false; + } + state.afterTypeIdentifier = true; + state.lastIdentifierWasStandard = false; + return "operator"; + } + if (char === "/" && stream.eat("/")) stream.eat("="); + if (char === "=" && state.afterTypeName && state.genericDepth === 0) { + state.afterTypeName = false; + enterTypeContext(state); + } + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + state.lastIdentifierWasStandard = false; + return "operator"; + } + + if (char === "(" || char === "{" || char === "[") { + if (char === "(" && state.expectFunctionName) { + state.expectFunctionName = false; + } + if (char === "(") { + state.expectTypeName = false; + } + if (state.inType) state.typeDepth++; + state.lastIdentifierWasStandard = false; + if (state.afterTypeName && char === "(") { + state.afterTypeName = false; + enterTypeContext(state, 1); + } + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + return "punctuation"; + } + + if (char === ")" || char === "}" || char === "]") { + if (state.inType) { + if (state.typeDepth > 0) { + state.typeDepth--; + } else if ( + char === ")" && + /^\s*->/.test(stream.string.slice(stream.pos)) + ) { + enterTypeContext(state); + } else { + exitTypeContext(state); + } + } + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + state.lastIdentifierWasStandard = false; + return "punctuation"; + } + + if (char === "," || char === ";") { + if (state.inType && state.typeDepth === 0) exitTypeContext(state); + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + state.lastIdentifierWasStandard = false; + return "punctuation"; + } + + state.afterFunctionName = false; + state.afterTypeIdentifier = false; + state.lastIdentifierWasStandard = false; + return null; +}; + +const luauLanguage = StreamLanguage.define({ + name: "luau", + startState() { + return { + basecol: 0, + indentDepth: 0, + cur: normal, + stack: [], + expectFunctionName: false, + afterFunctionName: false, + expectTypeName: false, + afterTypeName: false, + afterTypeIdentifier: false, + inType: false, + typeDepth: 0, + genericDepth: 0, + interpolationBraceDepth: 0, + afterPropertyAccess: false, + lastIdentifierWasStandard: false, + docCommentExpectParamName: false, + docCommentExpectType: false, + }; + }, + copyState(state) { + return { + ...state, + stack: state.stack.slice(), + }; + }, + token(stream, state) { + if (stream.sol()) state.basecol = stream.indentation(); + if (stream.eatSpace()) return null; + + const style = state.cur(stream, state); + const word = stream.current(); + + if (style !== "comment" && style !== "string") { + if (indentTokens.has(word)) state.indentDepth++; + if (dedentTokens.has(word)) state.indentDepth--; + } + + return style; + }, + indent(state, textAfter, context: IndentContext) { + const closing = dedentPartial.test(textAfter); + return ( + state.basecol + context.unit * (state.indentDepth - (closing ? 1 : 0)) + ); + }, + languageData: { + commentTokens: { line: "--", block: { open: "--[[", close: "]]" } }, + closeBrackets: { brackets: ["(", "[", "{", '"', "'", "`"] }, + indentOnInput: /^\s*(?:end|until|else|elseif|\)|\})$/, + }, +}); + +export function luau() { + return new LanguageSupport(luauLanguage); +} + +export { luauLanguage }; diff --git a/src/cm/rainbowBrackets.ts b/src/cm/rainbowBrackets.ts new file mode 100644 index 000000000..9c3759153 --- /dev/null +++ b/src/cm/rainbowBrackets.ts @@ -0,0 +1,459 @@ +import { syntaxTree } from "@codemirror/language"; +import { RangeSetBuilder } from "@codemirror/state"; +import type { DecorationSet, ViewUpdate } from "@codemirror/view"; +import { Decoration, EditorView, ViewPlugin } from "@codemirror/view"; +import type { SyntaxNode } from "@lezer/common"; + +const DEFAULT_DARK_COLORS = [ + "#e5c07b", + "#c678dd", + "#56b6c2", + "#61afef", + "#98c379", + "#d19a66", +]; + +const DEFAULT_LIGHT_COLORS = [ + "#795e26", + "#af00db", + "#005cc5", + "#008000", + "#b15c00", + "#267f99", +]; + +const BLOCK_SIZE = 2048; +const MAX_BLOCK_CACHE_ENTRIES = 192; +const CONTEXT_SIGNATURE_DEPTH = 4; +const MIN_LOOK_BEHIND = 4000; +const MAX_LOOK_BEHIND = 24000; +const DEFAULT_EXACT_SCAN_LIMIT = 24000; + +const SKIP_CONTEXTS = new Set([ + "String", + "TemplateString", + "Comment", + "LineComment", + "BlockComment", + "RegExp", +]); + +const CLOSING_TO_OPENING = { + ")": "(", + "]": "[", + "}": "{", +} as const; + +type ClosingBracket = keyof typeof CLOSING_TO_OPENING; + +export interface RainbowBracketThemeConfig { + dark?: boolean; + keyword?: string; + type?: string; + class?: string; + function?: string; + string?: string; + number?: string; + constant?: string; + variable?: string; + foreground?: string; +} + +export interface RainbowBracketsOptions { + colors?: readonly string[]; + exactScanLimit?: number; + lookBehind?: number; +} + +interface BracketInfo { + char: string; + colorIndex: number; +} + +interface BracketToken { + offset: number; + char: string; +} + +interface BlockCacheEntry { + carrySkipChars: number; + tokens: readonly BracketToken[]; +} + +function normalizeHexColor(value: unknown): string | null { + if (typeof value !== "string") return null; + const color = value.trim().toLowerCase(); + if (/^#([\da-f]{3}|[\da-f]{6})$/.test(color)) return color; + return null; +} + +function alignToBlockStart(pos: number): number { + return pos - (pos % BLOCK_SIZE); +} + +function clampLookBehind(value: number | undefined): number { + if (!Number.isFinite(value)) return MAX_LOOK_BEHIND; + return Math.max( + MIN_LOOK_BEHIND, + Math.min(MAX_LOOK_BEHIND, Math.floor(value || 0)), + ); +} + +function getScanStart( + view: EditorView, + lookBehind: number, + exactScanLimit: number, +): number { + const ranges = view.visibleRanges; + if (!ranges.length) return 0; + + const firstVisibleFrom = ranges[0].from; + const lastVisibleTo = ranges[ranges.length - 1].to; + const docLength = view.state.doc.length; + + if (docLength <= exactScanLimit || firstVisibleFrom <= exactScanLimit) { + return 0; + } + + const visibleSpan = Math.max(1, lastVisibleTo - firstVisibleFrom); + const dynamicLookBehind = Math.max( + MIN_LOOK_BEHIND, + Math.min(MAX_LOOK_BEHIND, visibleSpan * 3), + ); + + return Math.max( + 0, + firstVisibleFrom - Math.max(lookBehind, dynamicLookBehind), + ); +} + +function isBracketCode(code: number): boolean { + return ( + code === 40 || + code === 41 || + code === 91 || + code === 93 || + code === 123 || + code === 125 + ); +} + +function isOpeningBracket(char: string): boolean { + return char === "(" || char === "[" || char === "{"; +} + +function getSkipContextEnd( + tree: ReturnType, + pos: number, +): number { + let node: SyntaxNode | null = tree.resolveInner(pos, 1); + + while (node) { + if (SKIP_CONTEXTS.has(node.name)) return node.to; + node = node.parent; + } + + return -1; +} + +function getContextChainSignature( + tree: ReturnType, + pos: number, +): string { + if (tree.length <= 0) return ""; + + const clampedPos = Math.max(0, Math.min(tree.length - 1, pos)); + let node: SyntaxNode | null = tree.resolveInner(clampedPos, 1); + const parts: string[] = []; + + for (let depth = 0; node && depth < CONTEXT_SIGNATURE_DEPTH; depth++) { + parts.push(node.name); + node = node.parent; + } + + return parts.join(">"); +} + +function getBlockContextSignature( + tree: ReturnType, + blockStart: number, + blockEnd: number, +): string { + if (blockEnd <= blockStart) return ""; + const endPos = Math.max(blockStart, blockEnd - 1); + return `${getContextChainSignature(tree, blockStart)}|${getContextChainSignature(tree, endPos)}`; +} + +function getBlockCacheKey( + blockText: string, + initialSkipChars: number, + contextSignature: string, +): string { + return `${initialSkipChars}\u0000${contextSignature}\u0000${blockText}`; +} + +function tokenizeBlock( + tree: ReturnType, + blockText: string, + blockStart: number, + initialSkipChars: number, +): BlockCacheEntry { + const tokens: BracketToken[] = []; + let skipUntilOffset = Math.max(0, initialSkipChars); + + if (!blockText.length) { + return { carrySkipChars: skipUntilOffset, tokens }; + } + + if (skipUntilOffset >= blockText.length) { + return { carrySkipChars: skipUntilOffset - blockText.length, tokens }; + } + + for (let offset = 0; offset < blockText.length; offset++) { + if (offset < skipUntilOffset) continue; + + const code = blockText.charCodeAt(offset); + if (!isBracketCode(code)) continue; + + const pos = blockStart + offset; + const skipContextEnd = getSkipContextEnd(tree, pos); + if (skipContextEnd > pos) { + skipUntilOffset = Math.max(skipUntilOffset, skipContextEnd - blockStart); + continue; + } + + tokens.push({ offset, char: blockText[offset] }); + } + + return { + carrySkipChars: Math.max(0, skipUntilOffset - blockText.length), + tokens, + }; +} + +function isVisiblePosition( + pos: number, + ranges: readonly { from: number; to: number }[], + cursor: { index: number }, +): boolean { + while (cursor.index < ranges.length && pos >= ranges[cursor.index].to) { + cursor.index++; + } + + const range = ranges[cursor.index]; + return !!range && pos >= range.from && pos < range.to; +} + +function buildTheme(colors: readonly string[]) { + const themeSpec: Record = {}; + + colors.forEach((color, index) => { + const selector = `.cm-rainbowBracket-${index}`; + themeSpec[selector] = { color: `${color} !important` }; + themeSpec[`${selector} span`] = { color: `${color} !important` }; + }); + + return EditorView.baseTheme(themeSpec); +} + +export function getRainbowBracketColors( + themeConfig: RainbowBracketThemeConfig = {}, +): string[] { + const fallback = themeConfig.dark + ? DEFAULT_DARK_COLORS + : DEFAULT_LIGHT_COLORS; + const colors: string[] = []; + const seen = new Set(); + + for (const candidate of [ + themeConfig.keyword, + themeConfig.type, + themeConfig.class, + themeConfig.function, + themeConfig.string, + themeConfig.number, + themeConfig.constant, + themeConfig.variable, + themeConfig.foreground, + ]) { + const color = normalizeHexColor(candidate); + if (!color || seen.has(color)) continue; + seen.add(color); + colors.push(color); + if (colors.length === fallback.length) break; + } + + if (colors.length < 4) { + return [...fallback]; + } + + for (const fallbackColor of fallback) { + if (colors.length === fallback.length) break; + if (seen.has(fallbackColor)) continue; + colors.push(fallbackColor); + } + + return colors; +} + +export function rainbowBrackets(options: RainbowBracketsOptions = {}) { + const colors = + options.colors != null && options.colors.length > 0 + ? [...options.colors] + : getRainbowBracketColors(); + const exactScanLimit = Math.max( + MIN_LOOK_BEHIND, + Math.floor(options.exactScanLimit || DEFAULT_EXACT_SCAN_LIMIT), + ); + const lookBehind = clampLookBehind(options.lookBehind); + const theme = buildTheme(colors); + const marks = colors.map((_, index) => + Decoration.mark({ class: `cm-rainbowBracket-${index}` }), + ); + + const rainbowBracketsPlugin = ViewPlugin.fromClass( + class { + decorations: DecorationSet; + blockCache = new Map(); + raf = 0; + pendingView: EditorView | null = null; + + constructor(view: EditorView) { + this.decorations = this.buildDecorations(view); + } + + update(update: ViewUpdate) { + if (!update.docChanged && !update.viewportChanged) return; + this.scheduleBuild(update.view); + } + + scheduleBuild(view: EditorView): void { + this.pendingView = view; + if (this.raf) return; + // Bracket recoloring is cosmetic. Collapse bursts of edits/scroll + // events into a single frame so large pastes don't block repeatedly. + this.raf = requestAnimationFrame(() => { + this.raf = 0; + const pendingView = this.pendingView; + this.pendingView = null; + if (!pendingView) return; + this.decorations = this.buildDecorations(pendingView); + }); + } + + buildDecorations(view: EditorView): DecorationSet { + const visibleRanges = view.visibleRanges; + if (!visibleRanges.length || !marks.length) return Decoration.none; + + const tree = syntaxTree(view.state); + const scanStart = alignToBlockStart( + getScanStart(view, lookBehind, exactScanLimit), + ); + const scanEnd = visibleRanges[visibleRanges.length - 1].to; + const visibleCursor = { index: 0 }; + const openBrackets: BracketInfo[] = []; + let carrySkipChars = 0; + const builder = new RangeSetBuilder(); + + for ( + let blockStart = scanStart; + blockStart < scanEnd; + blockStart += BLOCK_SIZE + ) { + const blockEnd = Math.min(scanEnd, blockStart + BLOCK_SIZE); + const blockText = view.state.doc.sliceString(blockStart, blockEnd); + const cacheKey = getBlockCacheKey( + blockText, + carrySkipChars, + getBlockContextSignature(tree, blockStart, blockEnd), + ); + let cachedBlock = this.getCachedBlock(cacheKey); + + if (!cachedBlock) { + cachedBlock = tokenizeBlock( + tree, + blockText, + blockStart, + carrySkipChars, + ); + this.setCachedBlock(cacheKey, cachedBlock); + } + + for (const token of cachedBlock.tokens) { + const pos = blockStart + token.offset; + + if (isOpeningBracket(token.char)) { + const colorIndex = openBrackets.length % marks.length; + if (isVisiblePosition(pos, visibleRanges, visibleCursor)) { + builder.add(pos, pos + 1, marks[colorIndex]); + } + openBrackets.push({ char: token.char, colorIndex }); + continue; + } + + const matchingOpen = + CLOSING_TO_OPENING[token.char as ClosingBracket]; + if (!matchingOpen) continue; + + for (let index = openBrackets.length - 1; index >= 0; index--) { + if (openBrackets[index].char !== matchingOpen) continue; + + if (isVisiblePosition(pos, visibleRanges, visibleCursor)) { + builder.add( + pos, + pos + 1, + marks[openBrackets[index].colorIndex], + ); + } + + openBrackets.length = index; + break; + } + } + + carrySkipChars = cachedBlock.carrySkipChars; + } + + return builder.finish(); + } + + getCachedBlock(key: string): BlockCacheEntry | null { + const cached = this.blockCache.get(key); + if (!cached) return null; + this.blockCache.delete(key); + this.blockCache.set(key, cached); + return cached; + } + + setCachedBlock(key: string, value: BlockCacheEntry): void { + if (this.blockCache.has(key)) { + this.blockCache.delete(key); + } + + this.blockCache.set(key, value); + if (this.blockCache.size <= MAX_BLOCK_CACHE_ENTRIES) return; + + const oldestKey = this.blockCache.keys().next().value; + if (oldestKey !== undefined) { + this.blockCache.delete(oldestKey); + } + } + + destroy(): void { + if (this.raf) { + cancelAnimationFrame(this.raf); + this.raf = 0; + } + this.pendingView = null; + this.blockCache.clear(); + } + }, + { + decorations: (value) => value.decorations, + }, + ); + + return [rainbowBracketsPlugin, theme]; +} + +export default rainbowBrackets; diff --git a/src/cm/supportedModes.ts b/src/cm/supportedModes.ts new file mode 100644 index 000000000..3214aca86 --- /dev/null +++ b/src/cm/supportedModes.ts @@ -0,0 +1,190 @@ +import { languages } from "@codemirror/language-data"; +import type { Extension } from "@codemirror/state"; +import { addMode } from "./modelist"; + +type FilenameMatcher = string | RegExp; + +interface LanguageDescription { + name?: string; + alias?: readonly string[]; + extensions?: readonly string[]; + filenames?: readonly FilenameMatcher[]; + filename?: FilenameMatcher; + load?: () => Promise; +} + +function normalizeModeKey(value: string): string { + return String(value ?? "") + .trim() + .toLowerCase(); +} + +function isSafeModeId(value: string): boolean { + return /^[a-z0-9][a-z0-9._-]*$/.test(value); +} + +function slugifyModeId(value: string): string { + return normalizeModeKey(value) + .replace(/\+\+/g, "pp") + .replace(/#/g, "sharp") + .replace(/&/g, "and") + .replace(/[^a-z0-9._-]+/g, "-") + .replace(/^-+|-+$/g, ""); +} + +function collectAliases( + name: string, + aliases: readonly string[] | undefined, +): string[] { + return [ + ...new Set( + [name, ...(aliases || [])].map(normalizeModeKey).filter(Boolean), + ), + ]; +} + +function getModeId(name: string, aliases: string[]): string { + const normalizedName = normalizeModeKey(name); + if (isSafeModeId(normalizedName)) return normalizedName; + + const safeAlias = aliases.find( + (alias) => alias !== normalizedName && isSafeModeId(alias), + ); + return safeAlias || slugifyModeId(name) || normalizedName || "text"; +} + +function escapeRegExp(value: string): string { + return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} + +async function shouldAutoCloseTags(): Promise { + const { default: appSettings } = await import("lib/settings"); + return appSettings.value.autoCloseTags !== false; +} + +function createLanguageLoader(name: string, lang: LanguageDescription) { + const normalizedName = normalizeModeKey(name); + + switch (normalizedName) { + case "html": + return async () => { + const { html } = await import("@codemirror/lang-html"); + return html({ autoCloseTags: await shouldAutoCloseTags() }); + }; + + case "xml": + return async () => { + const { xml } = await import("@codemirror/lang-xml"); + return xml({ autoCloseTags: await shouldAutoCloseTags() }); + }; + + case "vue": + return async () => { + const [{ vue }, { html }] = await Promise.all([ + import("@codemirror/lang-vue"), + import("@codemirror/lang-html"), + ]); + return vue({ + base: html({ autoCloseTags: await shouldAutoCloseTags() }), + }); + }; + + case "angular": + return async () => { + const [{ angular }, { html }] = await Promise.all([ + import("@codemirror/lang-angular"), + import("@codemirror/lang-html"), + ]); + return angular({ + base: html({ + autoCloseTags: await shouldAutoCloseTags(), + selfClosingTags: true, + }), + }); + }; + + case "php": + return async () => { + const [{ php }, { html }] = await Promise.all([ + import("@codemirror/lang-php"), + import("@codemirror/lang-html"), + ]); + const htmlSupport = html({ + autoCloseTags: await shouldAutoCloseTags(), + matchClosingTags: false, + }); + return [ + php({ baseLanguage: htmlSupport.language }), + htmlSupport.support, + ]; + }; + } + + return typeof lang.load === "function" ? () => lang.load!() : null; +} + +// 1) Always register a plain text fallback +addMode("Text", "txt|text|log|plain", "Plain Text", () => []); + +// 2) Register all languages provided by @codemirror/language-data +// We convert extensions like [".js", ".mjs"] into a modelist pattern: "js|mjs" +// and preserve aliases and filename regexes for languages like C++ and Dockerfile. +for (const lang of languages as readonly LanguageDescription[]) { + try { + const name = String(lang?.name || "").trim(); + if (!name) continue; + + const aliases = collectAliases(name, lang.alias); + const modeId = getModeId(name, aliases); + const parts: string[] = []; + const filenameMatchers: RegExp[] = []; + + // File extensions + if (Array.isArray(lang.extensions)) { + for (const e of lang.extensions) { + if (typeof e !== "string") continue; + const cleaned = e.replace(/^\./, "").trim(); + if (cleaned) parts.push(cleaned); + } + } + + // Exact filenames / filename regexes (Dockerfile, PKGBUILD, nginx*.conf, etc.) + const filenames = Array.isArray(lang.filenames) + ? lang.filenames + : lang.filename + ? [lang.filename] + : []; + for (const fn of filenames) { + if (typeof fn === "string") { + const cleaned = fn.trim(); + if (cleaned) { + filenameMatchers.push(new RegExp(`^${escapeRegExp(cleaned)}$`, "i")); + } + continue; + } + + if (fn instanceof RegExp) { + filenameMatchers.push(new RegExp(fn.source, fn.flags)); + } + } + + const pattern = parts.join("|"); + + // Wrap language-data loader as our modelist language provider + // lang.load() returns a Promise; we let the editor handle async loading + const loader = createLanguageLoader(name, lang); + + addMode(modeId, pattern, name, loader, { + aliases, + filenameMatchers, + }); + } catch (_) { + // Ignore faulty entries to avoid breaking the whole registration + } +} + +// Luau isn't bundled in @codemirror/language-data, so register it explicitly. +addMode("Luau", "luau", "Luau", async () => { + const { luau } = await import("./modes/luau"); + return luau(); +}); diff --git a/src/cm/themes/aura.js b/src/cm/themes/aura.js new file mode 100644 index 000000000..fdbe82456 --- /dev/null +++ b/src/cm/themes/aura.js @@ -0,0 +1,150 @@ +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language"; +import { EditorView } from "@codemirror/view"; +import { tags as t } from "@lezer/highlight"; + +// Aura theme configuration and extensions +export const config = { + name: "aura", + dark: true, + background: "#21202e", + foreground: "#edecee", + selection: "#3d375e7f", + cursor: "#a277ff", + dropdownBackground: "#21202e", + dropdownBorder: "#3b334b", + activeLine: "#4d4b6622", + lineNumber: "#a394f033", + lineNumberActive: "#cdccce", + matchingBracket: "#a394f033", + keyword: "#a277ff", + storage: "#a277ff", + variable: "#edecee", + parameter: "#edecee", + function: "#ffca85", + string: "#61ffca", + constant: "#61ffca", + type: "#82e2ff", + class: "#82e2ff", + number: "#61ffca", + comment: "#6d6d6d", + heading: "#a277ff", + invalid: "#ff6767", + regexp: "#61ffca", +}; + +export const auraTheme = EditorView.theme( + { + "&": { + color: config.foreground, + backgroundColor: config.background, + }, + + ".cm-content": { caretColor: config.cursor }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: config.cursor }, + "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": + { + backgroundColor: config.selection, + }, + + ".cm-panels": { + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-panels.cm-panels-top": { borderBottom: "2px solid black" }, + ".cm-panels.cm-panels-bottom": { borderTop: "2px solid black" }, + + ".cm-searchMatch": { + backgroundColor: config.dropdownBackground, + outline: `1px solid ${config.dropdownBorder}`, + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: config.selection, + }, + + ".cm-activeLine": { backgroundColor: config.activeLine }, + ".cm-selectionMatch": { backgroundColor: config.selection }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: config.matchingBracket, + outline: "none", + }, + + ".cm-gutters": { + backgroundColor: config.background, + color: config.foreground, + border: "none", + }, + ".cm-activeLineGutter": { backgroundColor: config.background }, + + ".cm-lineNumbers .cm-gutterElement": { color: config.lineNumber }, + ".cm-lineNumbers .cm-activeLineGutter": { color: config.lineNumberActive }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: config.foreground, + }, + ".cm-tooltip": { + border: `1px solid ${config.dropdownBorder}`, + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent", + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: config.foreground, + borderBottomColor: config.foreground, + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + background: config.selection, + color: config.foreground, + }, + }, + }, + { dark: config.dark }, +); + +export const auraHighlightStyle = HighlightStyle.define([ + { tag: t.keyword, color: config.keyword }, + { + tag: [t.name, t.deleted, t.character, t.macroName], + color: config.variable, + }, + { tag: [t.propertyName], color: config.function }, + { + tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)], + color: config.string, + }, + { tag: [t.function(t.variableName), t.labelName], color: config.function }, + { + tag: [t.color, t.constant(t.name), t.standard(t.name)], + color: config.constant, + }, + { tag: [t.definition(t.name), t.separator], color: config.variable }, + { tag: [t.className], color: config.class }, + { + tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace], + color: config.number, + }, + { tag: [t.typeName], color: config.type }, + { tag: [t.operator, t.operatorKeyword], color: config.keyword }, + { tag: [t.url, t.escape, t.regexp, t.link], color: config.regexp }, + { tag: [t.meta, t.comment], color: config.comment }, + { tag: t.strong, fontWeight: "bold" }, + { tag: t.emphasis, fontStyle: "italic" }, + { tag: t.link, textDecoration: "underline" }, + { tag: t.heading, fontWeight: "bold", color: config.heading }, + { tag: [t.atom, t.bool, t.special(t.variableName)], color: config.variable }, + { tag: t.invalid, color: config.invalid }, + { tag: t.strikethrough, textDecoration: "line-through" }, +]); + +export function aura() { + return [auraTheme, syntaxHighlighting(auraHighlightStyle)]; +} + +export default aura; diff --git a/src/cm/themes/dracula.js b/src/cm/themes/dracula.js new file mode 100644 index 000000000..3da64920d --- /dev/null +++ b/src/cm/themes/dracula.js @@ -0,0 +1,147 @@ +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language"; +import { EditorView, lineNumbers } from "@codemirror/view"; +import { tags as t } from "@lezer/highlight"; + +export const config = { + name: "dracula", + dark: true, + background: "#282A36", + foreground: "#F8F8F2", + selection: "#44475A", + cursor: "#F8F8F2", + dropdownBackground: "#282A36", + dropdownBorder: "#191A21", + activeLine: "#53576c22", + lineNumber: "#6272A4", + lineNumberActive: "#F8F8F2", + matchingBracket: "#44475A", + keyword: "#FF79C6", + storage: "#FF79C6", + variable: "#F8F8F2", + parameter: "#F8F8F2", + function: "#50FA7B", + string: "#F1FA8C", + constant: "#BD93F9", + type: "#8BE9FD", + class: "#8BE9FD", + number: "#BD93F9", + comment: "#6272A4", + heading: "#BD93F9", + invalid: "#FF5555", + regexp: "#F1FA8C", +}; + +export const draculaTheme = EditorView.theme( + { + "&": { + color: config.foreground, + backgroundColor: config.background, + }, + + ".cm-content": { caretColor: config.cursor }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: config.cursor }, + "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": + { backgroundColor: config.selection }, + + ".cm-panels": { + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-panels.cm-panels-top": { borderBottom: "2px solid black" }, + ".cm-panels.cm-panels-bottom": { borderTop: "2px solid black" }, + + ".cm-searchMatch": { + backgroundColor: config.dropdownBackground, + outline: `1px solid ${config.dropdownBorder}`, + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: config.selection, + }, + + ".cm-activeLine": { backgroundColor: config.activeLine }, + ".cm-selectionMatch": { backgroundColor: config.selection }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: config.matchingBracket, + outline: "none", + }, + + ".cm-gutters": { + backgroundColor: config.background, + color: config.foreground, + border: "none", + }, + ".cm-activeLineGutter": { backgroundColor: config.background }, + + ".cm-lineNumbers .cm-gutterElement": { color: config.lineNumber }, + ".cm-lineNumbers .cm-activeLineGutter": { color: config.lineNumberActive }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: config.foreground, + }, + ".cm-tooltip": { + border: `1px solid ${config.dropdownBorder}`, + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent", + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: config.foreground, + borderBottomColor: config.foreground, + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + background: config.selection, + color: config.foreground, + }, + }, + }, + { dark: config.dark }, +); + +export const draculaHighlightStyle = HighlightStyle.define([ + { tag: t.keyword, color: config.keyword }, + { + tag: [t.name, t.deleted, t.character, t.macroName], + color: config.variable, + }, + { tag: [t.propertyName], color: config.function }, + { + tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)], + color: config.string, + }, + { tag: [t.function(t.variableName), t.labelName], color: config.function }, + { + tag: [t.color, t.constant(t.name), t.standard(t.name)], + color: config.constant, + }, + { tag: [t.definition(t.name), t.separator], color: config.variable }, + { tag: [t.className], color: config.class }, + { + tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace], + color: config.number, + }, + { tag: [t.typeName], color: config.type, fontStyle: config.type }, + { tag: [t.operator, t.operatorKeyword], color: config.keyword }, + { tag: [t.url, t.escape, t.regexp, t.link], color: config.regexp }, + { tag: [t.meta, t.comment], color: config.comment }, + { tag: t.strong, fontWeight: "bold" }, + { tag: t.emphasis, fontStyle: "italic" }, + { tag: t.link, textDecoration: "underline" }, + { tag: t.heading, fontWeight: "bold", color: config.heading }, + { tag: [t.atom, t.bool, t.special(t.variableName)], color: config.variable }, + { tag: t.invalid, color: config.invalid }, + { tag: t.strikethrough, textDecoration: "line-through" }, +]); + +export function dracula() { + return [draculaTheme, syntaxHighlighting(draculaHighlightStyle)]; +} + +export default dracula; diff --git a/src/cm/themes/githubDark.js b/src/cm/themes/githubDark.js new file mode 100644 index 000000000..b08bbfb66 --- /dev/null +++ b/src/cm/themes/githubDark.js @@ -0,0 +1,147 @@ +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language"; +import { EditorView, lineNumbers } from "@codemirror/view"; +import { tags as t } from "@lezer/highlight"; + +export const config = { + name: "githubDark", + dark: true, + background: "#24292e", + foreground: "#d1d5da", + selection: "#3392FF44", + cursor: "#c8e1ff", + dropdownBackground: "#24292e", + dropdownBorder: "#1b1f23", + activeLine: "#4d566022", + lineNumber: "#444d56", + lineNumberActive: "#e1e4e8", + matchingBracket: "#17E5E650", + keyword: "#f97583", + storage: "#f97583", + variable: "#ffab70", + parameter: "#e1e4e8", + function: "#79b8ff", + string: "#9ecbff", + constant: "#79b8ff", + type: "#79b8ff", + class: "#b392f0", + number: "#79b8ff", + comment: "#6a737d", + heading: "#79b8ff", + invalid: "#f97583", + regexp: "#9ecbff", +}; + +export const githubDarkTheme = EditorView.theme( + { + "&": { + color: config.foreground, + backgroundColor: config.background, + }, + + ".cm-content": { caretColor: config.cursor }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: config.cursor }, + "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": + { backgroundColor: config.selection }, + + ".cm-panels": { + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-panels.cm-panels-top": { borderBottom: "2px solid black" }, + ".cm-panels.cm-panels-bottom": { borderTop: "2px solid black" }, + + ".cm-searchMatch": { + backgroundColor: config.dropdownBackground, + outline: `1px solid ${config.dropdownBorder}`, + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: config.selection, + }, + + ".cm-activeLine": { backgroundColor: config.activeLine }, + ".cm-selectionMatch": { backgroundColor: config.selection }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: config.matchingBracket, + outline: "none", + }, + + ".cm-gutters": { + backgroundColor: config.background, + color: config.foreground, + border: "none", + }, + ".cm-activeLineGutter": { backgroundColor: config.background }, + + ".cm-lineNumbers .cm-gutterElement": { color: config.lineNumber }, + ".cm-lineNumbers .cm-activeLineGutter": { color: config.lineNumberActive }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: config.foreground, + }, + ".cm-tooltip": { + border: `1px solid ${config.dropdownBorder}`, + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent", + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: config.foreground, + borderBottomColor: config.foreground, + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + background: config.selection, + color: config.foreground, + }, + }, + }, + { dark: config.dark }, +); + +export const githubDarkHighlightStyle = HighlightStyle.define([ + { tag: t.keyword, color: config.keyword }, + { + tag: [t.name, t.deleted, t.character, t.macroName], + color: config.variable, + }, + { tag: [t.propertyName], color: config.function }, + { + tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)], + color: config.string, + }, + { tag: [t.function(t.variableName), t.labelName], color: config.function }, + { + tag: [t.color, t.constant(t.name), t.standard(t.name)], + color: config.constant, + }, + { tag: [t.definition(t.name), t.separator], color: config.variable }, + { tag: [t.className], color: config.class }, + { + tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace], + color: config.number, + }, + { tag: [t.typeName], color: config.type, fontStyle: config.type }, + { tag: [t.operator, t.operatorKeyword], color: config.keyword }, + { tag: [t.url, t.escape, t.regexp, t.link], color: config.regexp }, + { tag: [t.meta, t.comment], color: config.comment }, + { tag: t.strong, fontWeight: "bold" }, + { tag: t.emphasis, fontStyle: "italic" }, + { tag: t.link, textDecoration: "underline" }, + { tag: t.heading, fontWeight: "bold", color: config.heading }, + { tag: [t.atom, t.bool, t.special(t.variableName)], color: config.variable }, + { tag: t.invalid, color: config.invalid }, + { tag: t.strikethrough, textDecoration: "line-through" }, +]); + +export function githubDark() { + return [githubDarkTheme, syntaxHighlighting(githubDarkHighlightStyle)]; +} + +export default githubDark; diff --git a/src/cm/themes/githubLight.js b/src/cm/themes/githubLight.js new file mode 100644 index 000000000..92dcc83a5 --- /dev/null +++ b/src/cm/themes/githubLight.js @@ -0,0 +1,147 @@ +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language"; +import { EditorView, lineNumbers } from "@codemirror/view"; +import { tags as t } from "@lezer/highlight"; + +export const config = { + name: "githubLight", + dark: false, + background: "#fff", + foreground: "#444d56", + selection: "#0366d625", + cursor: "#044289", + dropdownBackground: "#fff", + dropdownBorder: "#e1e4e8", + activeLine: "#c6c6c622", + lineNumber: "#1b1f234d", + lineNumberActive: "#24292e", + matchingBracket: "#34d05840", + keyword: "#d73a49", + storage: "#d73a49", + variable: "#e36209", + parameter: "#24292e", + function: "#005cc5", + string: "#032f62", + constant: "#005cc5", + type: "#005cc5", + class: "#6f42c1", + number: "#005cc5", + comment: "#6a737d", + heading: "#005cc5", + invalid: "#cb2431", + regexp: "#032f62", +}; + +export const githubLightTheme = EditorView.theme( + { + "&": { + color: config.foreground, + backgroundColor: config.background, + }, + + ".cm-content": { caretColor: config.cursor }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: config.cursor }, + "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": + { backgroundColor: config.selection }, + + ".cm-panels": { + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-panels.cm-panels-top": { borderBottom: "2px solid black" }, + ".cm-panels.cm-panels-bottom": { borderTop: "2px solid black" }, + + ".cm-searchMatch": { + backgroundColor: config.dropdownBackground, + outline: `1px solid ${config.dropdownBorder}`, + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: config.selection, + }, + + ".cm-activeLine": { backgroundColor: config.activeLine }, + ".cm-selectionMatch": { backgroundColor: config.selection }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: config.matchingBracket, + outline: "none", + }, + + ".cm-gutters": { + backgroundColor: config.background, + color: config.foreground, + border: "none", + }, + ".cm-activeLineGutter": { backgroundColor: config.background }, + + ".cm-lineNumbers .cm-gutterElement": { color: config.lineNumber }, + ".cm-lineNumbers .cm-activeLineGutter": { color: config.lineNumberActive }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: config.foreground, + }, + ".cm-tooltip": { + border: `1px solid ${config.dropdownBorder}`, + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent", + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: config.foreground, + borderBottomColor: config.foreground, + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + background: config.selection, + color: config.foreground, + }, + }, + }, + { dark: config.dark }, +); + +export const githubLightHighlightStyle = HighlightStyle.define([ + { tag: t.keyword, color: config.keyword }, + { + tag: [t.name, t.deleted, t.character, t.macroName], + color: config.variable, + }, + { tag: [t.propertyName], color: config.function }, + { + tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)], + color: config.string, + }, + { tag: [t.function(t.variableName), t.labelName], color: config.function }, + { + tag: [t.color, t.constant(t.name), t.standard(t.name)], + color: config.constant, + }, + { tag: [t.definition(t.name), t.separator], color: config.variable }, + { tag: [t.className], color: config.class }, + { + tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace], + color: config.number, + }, + { tag: [t.typeName], color: config.type, fontStyle: config.type }, + { tag: [t.operator, t.operatorKeyword], color: config.keyword }, + { tag: [t.url, t.escape, t.regexp, t.link], color: config.regexp }, + { tag: [t.meta, t.comment], color: config.comment }, + { tag: t.strong, fontWeight: "bold" }, + { tag: t.emphasis, fontStyle: "italic" }, + { tag: t.link, textDecoration: "underline" }, + { tag: t.heading, fontWeight: "bold", color: config.heading }, + { tag: [t.atom, t.bool, t.special(t.variableName)], color: config.variable }, + { tag: t.invalid, color: config.invalid }, + { tag: t.strikethrough, textDecoration: "line-through" }, +]); + +export function githubLight() { + return [githubLightTheme, syntaxHighlighting(githubLightHighlightStyle)]; +} + +export default githubLight; diff --git a/src/cm/themes/index.js b/src/cm/themes/index.js new file mode 100644 index 000000000..c81be5925 --- /dev/null +++ b/src/cm/themes/index.js @@ -0,0 +1,250 @@ +import { EditorState } from "@codemirror/state"; +import { oneDark } from "@codemirror/theme-one-dark"; +import aura, { config as auraConfig } from "./aura"; +import dracula, { config as draculaConfig } from "./dracula"; +import githubDark, { config as githubDarkConfig } from "./githubDark"; +import githubLight, { config as githubLightConfig } from "./githubLight"; +import monokai, { config as monokaiConfig } from "./monokai"; +import noctisLilac, { config as noctisLilacConfig } from "./noctisLilac"; +import solarizedDark, { config as solarizedDarkConfig } from "./solarizedDark"; +import solarizedLight, { + config as solarizedLightConfig, +} from "./solarizedLight"; +import tokyoNight, { config as tokyoNightConfig } from "./tokyoNight"; +import tokyoNightDay, { config as tokyoNightDayConfig } from "./tokyoNightDay"; +import tomorrowNight, { config as tomorrowNightConfig } from "./tomorrowNight"; +import tomorrowNightBright, { + config as tomorrowNightBrightConfig, +} from "./tomorrowNightBright"; +import vscodeDark, { config as vscodeDarkConfig } from "./vscodeDark"; + +const oneDarkConfig = { + name: "one_dark", + dark: true, + background: "#282c34", + foreground: "#abb2bf", + keyword: "#c678dd", + string: "#98c379", + number: "#d19a66", + comment: "#5c6370", + function: "#61afef", + variable: "#e06c75", + type: "#e5c07b", + class: "#e5c07b", + constant: "#d19a66", + operator: "#56b6c2", + invalid: "#ff6b6b", +}; + +const themes = new Map(); +const warnedInvalidThemes = new Set(); + +function normalizeExtensions(value, target = []) { + if (Array.isArray(value)) { + value.forEach((item) => normalizeExtensions(item, target)); + return target; + } + + if (value !== null && value !== undefined) { + target.push(value); + } + + return target; +} + +function toExtensionGetter(getExtension) { + if (typeof getExtension === "function") { + return () => normalizeExtensions(getExtension()); + } + + return () => normalizeExtensions(getExtension); +} + +function logInvalidThemeOnce(themeId, error, reason = "") { + if (warnedInvalidThemes.has(themeId)) return; + warnedInvalidThemes.add(themeId); + const message = reason + ? `[editorThemes] Theme '${themeId}' is invalid: ${reason}` + : `[editorThemes] Theme '${themeId}' is invalid.`; + console.error(message, error); +} + +function validateThemeExtensions(themeId, extensions) { + if (!extensions.length) { + logInvalidThemeOnce(themeId, null, "no extensions were returned"); + return false; + } + + try { + // Validate against Acode's own CodeMirror instance. + EditorState.create({ doc: "", extensions }); + return true; + } catch (error) { + logInvalidThemeOnce(themeId, error); + return false; + } +} + +function resolveThemeEntryExtensions(theme, fallbackExtensions) { + const fallback = fallbackExtensions.length + ? [...fallbackExtensions] + : [oneDark]; + + if (!theme) return fallback; + + try { + const resolved = normalizeExtensions(theme.getExtension?.()); + if (!validateThemeExtensions(theme.id, resolved)) { + return fallback; + } + return resolved; + } catch (error) { + logInvalidThemeOnce(theme.id, error); + return fallback; + } +} + +export function addTheme(id, caption, isDark, getExtension, config = null) { + const key = String(id || "") + .trim() + .toLowerCase(); + if (!key || themes.has(key)) return false; + + const theme = { + id: key, + caption: caption || id, + isDark: !!isDark, + getExtension: toExtensionGetter(getExtension), + config: config || null, + }; + + if (!validateThemeExtensions(key, theme.getExtension())) { + return false; + } + + themes.set(key, theme); + return true; +} + +export function getThemes() { + return Array.from(themes.values()); +} + +export function getThemeById(id) { + if (!id) return null; + return themes.get(String(id).toLowerCase()) || null; +} + +export function getThemeConfig(id) { + if (!id) return oneDarkConfig; + const theme = themes.get(String(id).toLowerCase()); + return theme?.config || oneDarkConfig; +} + +export function getThemeExtensions(id, fallback = [oneDark]) { + const fallbackExtensions = normalizeExtensions(fallback); + const theme = + getThemeById(id) || getThemeById(String(id || "").replace(/-/g, "_")); + return resolveThemeEntryExtensions(theme, fallbackExtensions); +} + +export function removeTheme(id) { + if (!id) return; + themes.delete(String(id).toLowerCase()); +} + +addTheme("one_dark", "One Dark", true, () => [oneDark], oneDarkConfig); +addTheme(auraConfig.name, "Aura", !!auraConfig.dark, () => aura(), auraConfig); +addTheme( + noctisLilacConfig.name, + noctisLilacConfig.caption || "Noctis Lilac", + !!noctisLilacConfig.dark, + () => noctisLilac(), + noctisLilacConfig, +); +addTheme( + draculaConfig.name, + "Dracula", + !!draculaConfig.dark, + () => dracula(), + draculaConfig, +); +addTheme( + githubDarkConfig.name, + "GitHub Dark", + !!githubDarkConfig.dark, + () => githubDark(), + githubDarkConfig, +); +addTheme( + githubLightConfig.name, + "GitHub Light", + !!githubLightConfig.dark, + () => githubLight(), + githubLightConfig, +); +addTheme( + solarizedDarkConfig.name, + "Solarized Dark", + !!solarizedDarkConfig.dark, + () => solarizedDark(), + solarizedDarkConfig, +); +addTheme( + solarizedLightConfig.name, + "Solarized Light", + !!solarizedLightConfig.dark, + () => solarizedLight(), + solarizedLightConfig, +); +addTheme( + tokyoNightDayConfig.name, + "Tokyo Night Day", + !!tokyoNightDayConfig.dark, + () => tokyoNightDay(), + tokyoNightDayConfig, +); +addTheme( + tokyoNightConfig.name, + "Tokyo Night", + !!tokyoNightConfig.dark, + () => tokyoNight(), + tokyoNightConfig, +); +addTheme( + tomorrowNightConfig.name, + "Tomorrow Night", + !!tomorrowNightConfig.dark, + () => tomorrowNight(), + tomorrowNightConfig, +); +addTheme( + tomorrowNightBrightConfig.name, + "Tomorrow Night Bright", + !!tomorrowNightBrightConfig.dark, + () => tomorrowNightBright(), + tomorrowNightBrightConfig, +); +addTheme( + monokaiConfig.name, + "Monokai", + !!monokaiConfig.dark, + () => monokai(), + monokaiConfig, +); +addTheme( + vscodeDarkConfig.name, + "VS Code Dark", + !!vscodeDarkConfig.dark, + () => vscodeDark(), + vscodeDarkConfig, +); + +export default { + getThemes, + getThemeById, + getThemeConfig, + getThemeExtensions, + addTheme, + removeTheme, +}; diff --git a/src/cm/themes/monokai.js b/src/cm/themes/monokai.js new file mode 100644 index 000000000..e43e2969d --- /dev/null +++ b/src/cm/themes/monokai.js @@ -0,0 +1,155 @@ +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language"; +import { EditorView } from "@codemirror/view"; +import { tags as t } from "@lezer/highlight"; + +export const config = { + name: "monokai", + dark: true, + background: "#272822", + foreground: "#f8f8f2", + selection: "#4a4a76", + cursor: "#f8f8f0", + dropdownBackground: "#414339", + dropdownBorder: "#3e3d32", + activeLine: "#3e3d3257", + lineNumber: "#f8f8f270", + lineNumberActive: "#f8f8f2", + matchingBracket: "#3e3d32", + keyword: "#F92672", + storage: "#F92672", + variable: "#FD971F", + parameter: "#FD971F", + function: "#66D9EF", + string: "#E6DB74", + constant: "#AE81FF", + type: "#66D9EF", + class: "#A6E22E", + number: "#AE81FF", + comment: "#88846f", + heading: "#A6E22E", + invalid: "#F44747", + regexp: "#E6DB74", + tag: "#F92672", +}; + +export const monokaiTheme = EditorView.theme( + { + "&": { + color: config.foreground, + backgroundColor: config.background, + }, + + ".cm-content": { caretColor: config.cursor }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: config.cursor }, + "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": + { + backgroundColor: config.selection, + }, + + ".cm-panels": { + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-panels.cm-panels-top": { + borderBottom: `1px solid ${config.dropdownBorder}`, + }, + ".cm-panels.cm-panels-bottom": { + borderTop: `1px solid ${config.dropdownBorder}`, + }, + + ".cm-searchMatch": { + backgroundColor: config.dropdownBackground, + outline: `1px solid ${config.dropdownBorder}`, + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: config.selection, + }, + + ".cm-activeLine": { backgroundColor: config.activeLine }, + ".cm-selectionMatch": { backgroundColor: config.selection }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: config.matchingBracket, + outline: "none", + }, + + ".cm-gutters": { + backgroundColor: config.background, + color: config.foreground, + border: "none", + }, + ".cm-activeLineGutter": { backgroundColor: config.background }, + + ".cm-lineNumbers .cm-gutterElement": { color: config.lineNumber }, + ".cm-lineNumbers .cm-activeLineGutter": { color: config.lineNumberActive }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: config.foreground, + }, + ".cm-tooltip": { + border: `1px solid ${config.dropdownBorder}`, + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent", + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: config.foreground, + borderBottomColor: config.foreground, + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + background: config.selection, + color: config.foreground, + }, + }, + }, + { dark: config.dark }, +); + +export const monokaiHighlightStyle = HighlightStyle.define([ + { tag: t.keyword, color: config.keyword }, + { + tag: [t.name, t.deleted, t.character, t.macroName], + color: config.variable, + }, + { tag: [t.propertyName], color: config.function }, + { + tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)], + color: config.string, + }, + { tag: [t.function(t.variableName), t.labelName], color: config.function }, + { + tag: [t.color, t.constant(t.name), t.standard(t.name)], + color: config.constant, + }, + { tag: [t.definition(t.name), t.separator], color: config.variable }, + { tag: [t.className], color: config.class }, + { + tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace], + color: config.number, + }, + { tag: [t.typeName], color: config.type }, + { tag: [t.operator, t.operatorKeyword], color: config.keyword }, + { tag: [t.url, t.escape, t.regexp, t.link], color: config.regexp }, + { tag: [t.meta, t.comment], color: config.comment }, + { tag: t.tagName, color: config.tag }, + { tag: t.strong, fontWeight: "bold" }, + { tag: t.emphasis, fontStyle: "italic" }, + { tag: t.link, textDecoration: "underline" }, + { tag: t.heading, fontWeight: "bold", color: config.heading }, + { tag: [t.atom, t.bool, t.special(t.variableName)], color: config.variable }, + { tag: t.invalid, color: config.invalid }, + { tag: t.strikethrough, textDecoration: "line-through" }, +]); + +export function monokai() { + return [monokaiTheme, syntaxHighlighting(monokaiHighlightStyle)]; +} + +export default monokai; diff --git a/src/cm/themes/noctisLilac.js b/src/cm/themes/noctisLilac.js new file mode 100644 index 000000000..c8665b661 --- /dev/null +++ b/src/cm/themes/noctisLilac.js @@ -0,0 +1,138 @@ +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language"; +import { EditorView } from "@codemirror/view"; +import { tags as t } from "@lezer/highlight"; + +export const config = { + name: "noctisLilac", + dark: false, + background: "#f2f1f8", + foreground: "#0c006b", + selection: "#d5d1f2", + cursor: "#5c49e9", + dropdownBackground: "#f2f1f8", + dropdownBorder: "#e1def3", + activeLine: "#e1def3", + lineNumber: "#0c006b70", + lineNumberActive: "#0c006b", + matchingBracket: "#d5d1f2", + keyword: "#ff5792", + storage: "#ff5792", + variable: "#0c006b", + parameter: "#0c006b", + function: "#0095a8", + string: "#00b368", + constant: "#5842ff", + type: "#b3694d", + class: "#0094f0", + number: "#5842ff", + comment: "#9995b7", + heading: "#0094f0", + invalid: "#ff5792", + regexp: "#00b368", +}; + +export const noctisLilacTheme = EditorView.theme( + { + "&": { + color: config.foreground, + backgroundColor: config.background, + }, + + ".cm-content": { caretColor: config.cursor }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: config.cursor }, + "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": + { + backgroundColor: config.selection, + }, + + ".cm-panels": { + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-panels.cm-panels-top": { borderBottom: "2px solid black" }, + ".cm-panels.cm-panels-bottom": { borderTop: "2px solid black" }, + + ".cm-searchMatch": { + backgroundColor: config.dropdownBackground, + outline: `1px solid ${config.dropdownBorder}`, + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: config.selection, + }, + + ".cm-activeLine": { backgroundColor: config.activeLine }, + ".cm-selectionMatch": { backgroundColor: config.selection }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: config.matchingBracket, + outline: "none", + }, + + ".cm-gutters": { + backgroundColor: config.background, + color: config.foreground, + border: "none", + }, + ".cm-activeLineGutter": { backgroundColor: config.background }, + + ".cm-lineNumbers .cm-gutterElement": { color: config.lineNumber }, + ".cm-lineNumbers .cm-activeLineGutter": { color: config.lineNumberActive }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: config.foreground, + }, + ".cm-tooltip": { + border: `1px solid ${config.dropdownBorder}`, + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent", + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: config.foreground, + borderBottomColor: config.foreground, + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + background: config.selection, + color: config.foreground, + }, + }, + }, + { dark: config.dark }, +); + +export const noctisLilacHighlightStyle = HighlightStyle.define([ + { tag: t.comment, color: config.comment }, + { tag: t.keyword, color: config.keyword, fontWeight: "bold" }, + { tag: [t.definitionKeyword, t.modifier], color: config.keyword }, + { + tag: [t.className, t.tagName, t.definition(t.typeName)], + color: config.class, + }, + { tag: [t.number, t.bool, t.null, t.special(t.brace)], color: config.number }, + { + tag: [t.definition(t.propertyName), t.function(t.variableName)], + color: config.function, + }, + { tag: t.typeName, color: config.type }, + { tag: [t.propertyName, t.variableName], color: "#fa8900" }, + { tag: t.operator, color: config.keyword }, + { tag: t.self, color: "#e64100" }, + { tag: [t.string, t.regexp], color: config.string }, + { tag: [t.paren, t.bracket], color: "#0431fa" }, + { tag: t.labelName, color: "#00bdd6" }, + { tag: t.attributeName, color: "#e64100" }, + { tag: t.angleBracket, color: config.comment }, +]); + +export function noctisLilac() { + return [noctisLilacTheme, syntaxHighlighting(noctisLilacHighlightStyle)]; +} + +export default noctisLilac; diff --git a/src/cm/themes/solarizedDark.js b/src/cm/themes/solarizedDark.js new file mode 100644 index 000000000..aab15ece3 --- /dev/null +++ b/src/cm/themes/solarizedDark.js @@ -0,0 +1,147 @@ +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language"; +import { EditorView, lineNumbers } from "@codemirror/view"; +import { tags as t } from "@lezer/highlight"; + +export const config = { + name: "solarizedDark", + dark: true, + background: "#002B36", + foreground: "#93A1A1", + selection: "#274642", + cursor: "#D30102", + dropdownBackground: "#002B36", + dropdownBorder: "#2AA19899", + activeLine: "#005b7022", + lineNumber: "#93A1A1", + lineNumberActive: "#949494", + matchingBracket: "#073642", + keyword: "#859900", + storage: "#93A1A1", + variable: "#268BD2", + parameter: "#268BD2", + function: "#268BD2", + string: "#2AA198", + constant: "#CB4B16", + type: "#CB4B16", + class: "#CB4B16", + number: "#D33682", + comment: "#586E75", + heading: "#268BD2", + invalid: "#DC322F", + regexp: "#DC322F", +}; + +export const solarizedDarkTheme = EditorView.theme( + { + "&": { + color: config.foreground, + backgroundColor: config.background, + }, + + ".cm-content": { caretColor: config.cursor }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: config.cursor }, + "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": + { backgroundColor: config.selection }, + + ".cm-panels": { + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-panels.cm-panels-top": { borderBottom: "2px solid black" }, + ".cm-panels.cm-panels-bottom": { borderTop: "2px solid black" }, + + ".cm-searchMatch": { + backgroundColor: config.dropdownBackground, + outline: `1px solid ${config.dropdownBorder}`, + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: config.selection, + }, + + ".cm-activeLine": { backgroundColor: config.activeLine }, + ".cm-selectionMatch": { backgroundColor: config.selection }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: config.matchingBracket, + outline: "none", + }, + + ".cm-gutters": { + backgroundColor: config.background, + color: config.foreground, + border: "none", + }, + ".cm-activeLineGutter": { backgroundColor: config.background }, + + ".cm-lineNumbers .cm-gutterElement": { color: config.lineNumber }, + ".cm-lineNumbers .cm-activeLineGutter": { color: config.lineNumberActive }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: config.foreground, + }, + ".cm-tooltip": { + border: `1px solid ${config.dropdownBorder}`, + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent", + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: config.foreground, + borderBottomColor: config.foreground, + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + background: config.selection, + color: config.foreground, + }, + }, + }, + { dark: config.dark }, +); + +export const solarizedDarkHighlightStyle = HighlightStyle.define([ + { tag: t.keyword, color: config.keyword }, + { + tag: [t.name, t.deleted, t.character, t.macroName], + color: config.variable, + }, + { tag: [t.propertyName], color: config.function }, + { + tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)], + color: config.string, + }, + { tag: [t.function(t.variableName), t.labelName], color: config.function }, + { + tag: [t.color, t.constant(t.name), t.standard(t.name)], + color: config.constant, + }, + { tag: [t.definition(t.name), t.separator], color: config.variable }, + { tag: [t.className], color: config.class }, + { + tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace], + color: config.number, + }, + { tag: [t.typeName], color: config.type, fontStyle: config.type }, + { tag: [t.operator, t.operatorKeyword], color: config.keyword }, + { tag: [t.url, t.escape, t.regexp, t.link], color: config.regexp }, + { tag: [t.meta, t.comment], color: config.comment }, + { tag: t.strong, fontWeight: "bold" }, + { tag: t.emphasis, fontStyle: "italic" }, + { tag: t.link, textDecoration: "underline" }, + { tag: t.heading, fontWeight: "bold", color: config.heading }, + { tag: [t.atom, t.bool, t.special(t.variableName)], color: config.variable }, + { tag: t.invalid, color: config.invalid }, + { tag: t.strikethrough, textDecoration: "line-through" }, +]); + +export function solarizedDark() { + return [solarizedDarkTheme, syntaxHighlighting(solarizedDarkHighlightStyle)]; +} + +export default solarizedDark; diff --git a/src/cm/themes/solarizedLight.js b/src/cm/themes/solarizedLight.js new file mode 100644 index 000000000..022899460 --- /dev/null +++ b/src/cm/themes/solarizedLight.js @@ -0,0 +1,150 @@ +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language"; +import { EditorView, lineNumbers } from "@codemirror/view"; +import { tags as t } from "@lezer/highlight"; + +export const config = { + name: "solarizedLight", + dark: false, + background: "#FDF6E3", + foreground: "#586E75", + selection: "#EEE8D5", + cursor: "#657B83", + dropdownBackground: "#FDF6E3", + dropdownBorder: "#D3AF86", + activeLine: "#d5bd5c22", + lineNumber: "#586E75", + lineNumberActive: "#567983", + matchingBracket: "#EEE8D5", + keyword: "#859900", + storage: "#586E75", + variable: "#268BD2", + parameter: "#268BD2", + function: "#268BD2", + string: "#2AA198", + constant: "#CB4B16", + type: "#CB4B16", + class: "#CB4B16", + number: "#D33682", + comment: "#93A1A1", + heading: "#268BD2", + invalid: "#DC322F", + regexp: "#DC322F", +}; + +export const solarizedLightTheme = EditorView.theme( + { + "&": { + color: config.foreground, + backgroundColor: config.background, + }, + + ".cm-content": { caretColor: config.cursor }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: config.cursor }, + "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": + { backgroundColor: config.selection }, + + ".cm-panels": { + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-panels.cm-panels-top": { borderBottom: "2px solid black" }, + ".cm-panels.cm-panels-bottom": { borderTop: "2px solid black" }, + + ".cm-searchMatch": { + backgroundColor: config.dropdownBackground, + outline: `1px solid ${config.dropdownBorder}`, + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: config.selection, + }, + + ".cm-activeLine": { backgroundColor: config.activeLine }, + ".cm-selectionMatch": { backgroundColor: config.selection }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: config.matchingBracket, + outline: "none", + }, + + ".cm-gutters": { + backgroundColor: config.background, + color: config.foreground, + border: "none", + }, + ".cm-activeLineGutter": { backgroundColor: config.background }, + + ".cm-lineNumbers .cm-gutterElement": { color: config.lineNumber }, + ".cm-lineNumbers .cm-activeLineGutter": { color: config.lineNumberActive }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: config.foreground, + }, + ".cm-tooltip": { + border: `1px solid ${config.dropdownBorder}`, + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent", + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: config.foreground, + borderBottomColor: config.foreground, + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + background: config.selection, + color: config.foreground, + }, + }, + }, + { dark: config.dark }, +); + +export const solarizedLightHighlightStyle = HighlightStyle.define([ + { tag: t.keyword, color: config.keyword }, + { + tag: [t.name, t.deleted, t.character, t.macroName], + color: config.variable, + }, + { tag: [t.propertyName], color: config.function }, + { + tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)], + color: config.string, + }, + { tag: [t.function(t.variableName), t.labelName], color: config.function }, + { + tag: [t.color, t.constant(t.name), t.standard(t.name)], + color: config.constant, + }, + { tag: [t.definition(t.name), t.separator], color: config.variable }, + { tag: [t.className], color: config.class }, + { + tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace], + color: config.number, + }, + { tag: [t.typeName], color: config.type, fontStyle: config.type }, + { tag: [t.operator, t.operatorKeyword], color: config.keyword }, + { tag: [t.url, t.escape, t.regexp, t.link], color: config.regexp }, + { tag: [t.meta, t.comment], color: config.comment }, + { tag: t.strong, fontWeight: "bold" }, + { tag: t.emphasis, fontStyle: "italic" }, + { tag: t.link, textDecoration: "underline" }, + { tag: t.heading, fontWeight: "bold", color: config.heading }, + { tag: [t.atom, t.bool, t.special(t.variableName)], color: config.variable }, + { tag: t.invalid, color: config.invalid }, + { tag: t.strikethrough, textDecoration: "line-through" }, +]); + +export function solarizedLight() { + return [ + solarizedLightTheme, + syntaxHighlighting(solarizedLightHighlightStyle), + ]; +} + +export default solarizedLight; diff --git a/src/cm/themes/tokyoNight.js b/src/cm/themes/tokyoNight.js new file mode 100644 index 000000000..33af93847 --- /dev/null +++ b/src/cm/themes/tokyoNight.js @@ -0,0 +1,147 @@ +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language"; +import { EditorView, lineNumbers } from "@codemirror/view"; +import { tags as t } from "@lezer/highlight"; + +export const config = { + name: "tokyoNight", + dark: true, + background: "#1a1b26", + foreground: "#787c99", + selection: "#515c7e40", + cursor: "#c0caf5", + dropdownBackground: "#1a1b26", + dropdownBorder: "#787c99", + activeLine: "#43455c22", + lineNumber: "#363b54", + lineNumberActive: "#737aa2", + matchingBracket: "#16161e", + keyword: "#bb9af7", + storage: "#bb9af7", + variable: "#c0caf5", + parameter: "#c0caf5", + function: "#7aa2f7", + string: "#9ece6a", + constant: "#bb9af7", + type: "#0db9d7", + class: "#c0caf5", + number: "#ff9e64", + comment: "#444b6a", + heading: "#89ddff", + invalid: "#ff5370", + regexp: "#b4f9f8", +}; + +export const tokyoNightTheme = EditorView.theme( + { + "&": { + color: config.foreground, + backgroundColor: config.background, + }, + + ".cm-content": { caretColor: config.cursor }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: config.cursor }, + "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": + { backgroundColor: config.selection }, + + ".cm-panels": { + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-panels.cm-panels-top": { borderBottom: "2px solid black" }, + ".cm-panels.cm-panels-bottom": { borderTop: "2px solid black" }, + + ".cm-searchMatch": { + backgroundColor: config.dropdownBackground, + outline: `1px solid ${config.dropdownBorder}`, + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: config.selection, + }, + + ".cm-activeLine": { backgroundColor: config.activeLine }, + ".cm-selectionMatch": { backgroundColor: config.selection }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: config.matchingBracket, + outline: "none", + }, + + ".cm-gutters": { + backgroundColor: config.background, + color: config.foreground, + border: "none", + }, + ".cm-activeLineGutter": { backgroundColor: config.background }, + + ".cm-lineNumbers .cm-gutterElement": { color: config.lineNumber }, + ".cm-lineNumbers .cm-activeLineGutter": { color: config.lineNumberActive }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: config.foreground, + }, + ".cm-tooltip": { + border: `1px solid ${config.dropdownBorder}`, + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent", + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: config.foreground, + borderBottomColor: config.foreground, + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + background: config.selection, + color: config.foreground, + }, + }, + }, + { dark: config.dark }, +); + +export const tokyoNightHighlightStyle = HighlightStyle.define([ + { tag: t.keyword, color: config.keyword }, + { + tag: [t.name, t.deleted, t.character, t.macroName], + color: config.variable, + }, + { tag: [t.propertyName], color: config.function }, + { + tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)], + color: config.string, + }, + { tag: [t.function(t.variableName), t.labelName], color: config.function }, + { + tag: [t.color, t.constant(t.name), t.standard(t.name)], + color: config.constant, + }, + { tag: [t.definition(t.name), t.separator], color: config.variable }, + { tag: [t.className], color: config.class }, + { + tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace], + color: config.number, + }, + { tag: [t.typeName], color: config.type, fontStyle: config.type }, + { tag: [t.operator, t.operatorKeyword], color: config.keyword }, + { tag: [t.url, t.escape, t.regexp, t.link], color: config.regexp }, + { tag: [t.meta, t.comment], color: config.comment }, + { tag: t.strong, fontWeight: "bold" }, + { tag: t.emphasis, fontStyle: "italic" }, + { tag: t.link, textDecoration: "underline" }, + { tag: t.heading, fontWeight: "bold", color: config.heading }, + { tag: [t.atom, t.bool, t.special(t.variableName)], color: config.variable }, + { tag: t.invalid, color: config.invalid }, + { tag: t.strikethrough, textDecoration: "line-through" }, +]); + +export function tokyoNight() { + return [tokyoNightTheme, syntaxHighlighting(tokyoNightHighlightStyle)]; +} + +export default tokyoNight; diff --git a/src/cm/themes/tokyoNightDay.js b/src/cm/themes/tokyoNightDay.js new file mode 100644 index 000000000..e9f948ffe --- /dev/null +++ b/src/cm/themes/tokyoNightDay.js @@ -0,0 +1,147 @@ +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language"; +import { EditorView, lineNumbers } from "@codemirror/view"; +import { tags as t } from "@lezer/highlight"; + +export const config = { + name: "tokyoNightDay", + dark: false, + background: "#e1e2e7", + foreground: "#6a6f8e", + selection: "#8591b840", + cursor: "#3760bf", + dropdownBackground: "#e1e2e7", + dropdownBorder: "#6a6f8e", + activeLine: "#a7aaba22", + lineNumber: "#b3b6cd", + lineNumberActive: "#68709a", + matchingBracket: "#e9e9ec", + keyword: "#9854f1", + storage: "#9854f1", + variable: "#3760bf", + parameter: "#3760bf", + function: "#2e7de9", + string: "#587539", + constant: "#9854f1", + type: "#07879d", + class: "#3760bf", + number: "#b15c00", + comment: "#9da3c2", + heading: "#006a83", + invalid: "#ff3e64", + regexp: "#2e5857", +}; + +export const tokyoNightDayTheme = EditorView.theme( + { + "&": { + color: config.foreground, + backgroundColor: config.background, + }, + + ".cm-content": { caretColor: config.cursor }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: config.cursor }, + "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": + { backgroundColor: config.selection }, + + ".cm-panels": { + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-panels.cm-panels-top": { borderBottom: "2px solid black" }, + ".cm-panels.cm-panels-bottom": { borderTop: "2px solid black" }, + + ".cm-searchMatch": { + backgroundColor: config.dropdownBackground, + outline: `1px solid ${config.dropdownBorder}`, + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: config.selection, + }, + + ".cm-activeLine": { backgroundColor: config.activeLine }, + ".cm-selectionMatch": { backgroundColor: config.selection }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: config.matchingBracket, + outline: "none", + }, + + ".cm-gutters": { + backgroundColor: config.background, + color: config.foreground, + border: "none", + }, + ".cm-activeLineGutter": { backgroundColor: config.background }, + + ".cm-lineNumbers .cm-gutterElement": { color: config.lineNumber }, + ".cm-lineNumbers .cm-activeLineGutter": { color: config.lineNumberActive }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: config.foreground, + }, + ".cm-tooltip": { + border: `1px solid ${config.dropdownBorder}`, + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent", + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: config.foreground, + borderBottomColor: config.foreground, + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + background: config.selection, + color: config.foreground, + }, + }, + }, + { dark: config.dark }, +); + +export const tokyoNightDayHighlightStyle = HighlightStyle.define([ + { tag: t.keyword, color: config.keyword }, + { + tag: [t.name, t.deleted, t.character, t.macroName], + color: config.variable, + }, + { tag: [t.propertyName], color: config.function }, + { + tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)], + color: config.string, + }, + { tag: [t.function(t.variableName), t.labelName], color: config.function }, + { + tag: [t.color, t.constant(t.name), t.standard(t.name)], + color: config.constant, + }, + { tag: [t.definition(t.name), t.separator], color: config.variable }, + { tag: [t.className], color: config.class }, + { + tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace], + color: config.number, + }, + { tag: [t.typeName], color: config.type, fontStyle: config.type }, + { tag: [t.operator, t.operatorKeyword], color: config.keyword }, + { tag: [t.url, t.escape, t.regexp, t.link], color: config.regexp }, + { tag: [t.meta, t.comment], color: config.comment }, + { tag: t.strong, fontWeight: "bold" }, + { tag: t.emphasis, fontStyle: "italic" }, + { tag: t.link, textDecoration: "underline" }, + { tag: t.heading, fontWeight: "bold", color: config.heading }, + { tag: [t.atom, t.bool, t.special(t.variableName)], color: config.variable }, + { tag: t.invalid, color: config.invalid }, + { tag: t.strikethrough, textDecoration: "line-through" }, +]); + +export function tokyoNightDay() { + return [tokyoNightDayTheme, syntaxHighlighting(tokyoNightDayHighlightStyle)]; +} + +export default tokyoNightDay; diff --git a/src/cm/themes/tomorrowNight.js b/src/cm/themes/tomorrowNight.js new file mode 100644 index 000000000..ef09700e7 --- /dev/null +++ b/src/cm/themes/tomorrowNight.js @@ -0,0 +1,155 @@ +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language"; +import { EditorView } from "@codemirror/view"; +import { tags as t } from "@lezer/highlight"; + +// Palette adapted from Tomorrow Night (Chris Kempson) +export const config = { + name: "tomorrowNight", + dark: true, + background: "#1D1F21", + foreground: "#C5C8C6", + selection: "#373B41", + cursor: "#AEAFAD", + dropdownBackground: "#1D1F21", + dropdownBorder: "#4B4E55", + activeLine: "#282A2E", + lineNumber: "#4B4E55", + lineNumberActive: "#C5C8C6", + matchingBracket: "#282A2E", + keyword: "#B294BB", + storage: "#B294BB", + variable: "#CC6666", + parameter: "#DE935F", + function: "#81A2BE", + string: "#B5BD68", + constant: "#DE935F", + type: "#F0C674", + class: "#F0C674", + number: "#DE935F", + comment: "#969896", + heading: "#81A2BE", + invalid: "#DF5F5F", + regexp: "#CC6666", + operator: "#8ABEB7", + tag: "#CC6666", +}; + +export const tomorrowNightTheme = EditorView.theme( + { + "&": { + color: config.foreground, + backgroundColor: config.background, + }, + + ".cm-content": { caretColor: config.cursor }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: config.cursor }, + "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": + { backgroundColor: config.selection }, + + ".cm-panels": { + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-panels.cm-panels-top": { + borderBottom: `1px solid ${config.dropdownBorder}`, + }, + ".cm-panels.cm-panels-bottom": { + borderTop: `1px solid ${config.dropdownBorder}`, + }, + + ".cm-searchMatch": { + backgroundColor: config.dropdownBackground, + outline: `1px solid ${config.dropdownBorder}`, + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: config.selection, + }, + + ".cm-activeLine": { backgroundColor: config.activeLine }, + ".cm-selectionMatch": { backgroundColor: config.selection }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: config.matchingBracket, + outline: "none", + }, + + ".cm-gutters": { + backgroundColor: config.background, + color: config.foreground, + border: "none", + }, + ".cm-activeLineGutter": { backgroundColor: config.background }, + + ".cm-lineNumbers .cm-gutterElement": { color: config.lineNumber }, + ".cm-lineNumbers .cm-activeLineGutter": { color: config.lineNumberActive }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: config.foreground, + }, + ".cm-tooltip": { + border: `1px solid ${config.dropdownBorder}`, + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent", + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: config.foreground, + borderBottomColor: config.foreground, + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + background: config.selection, + color: config.foreground, + }, + }, + }, + { dark: config.dark }, +); + +export const tomorrowNightHighlightStyle = HighlightStyle.define([ + { tag: t.keyword, color: config.keyword }, + { + tag: [t.name, t.deleted, t.character, t.macroName], + color: config.variable, + }, + { tag: [t.propertyName], color: config.function }, + { + tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)], + color: config.string, + }, + { tag: [t.function(t.variableName), t.labelName], color: config.function }, + { + tag: [t.color, t.constant(t.name), t.standard(t.name)], + color: config.constant, + }, + { tag: [t.definition(t.name), t.separator], color: config.variable }, + { tag: [t.className], color: config.class }, + { + tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace], + color: config.number, + }, + { tag: [t.typeName], color: config.type }, + { tag: [t.operator, t.operatorKeyword], color: config.operator }, + { tag: [t.url, t.escape, t.regexp, t.link], color: config.regexp }, + { tag: [t.meta, t.comment], color: config.comment }, + { tag: t.tagName, color: config.tag }, + { tag: t.strong, fontWeight: "bold" }, + { tag: t.emphasis, fontStyle: "italic" }, + { tag: t.link, textDecoration: "underline" }, + { tag: t.heading, fontWeight: "bold", color: config.heading }, + { tag: [t.atom, t.bool, t.special(t.variableName)], color: config.variable }, + { tag: t.invalid, color: config.invalid }, + { tag: t.strikethrough, textDecoration: "line-through" }, +]); + +export function tomorrowNight() { + return [tomorrowNightTheme, syntaxHighlighting(tomorrowNightHighlightStyle)]; +} + +export default tomorrowNight; diff --git a/src/cm/themes/tomorrowNightBright.js b/src/cm/themes/tomorrowNightBright.js new file mode 100644 index 000000000..7fb6b25bf --- /dev/null +++ b/src/cm/themes/tomorrowNightBright.js @@ -0,0 +1,158 @@ +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language"; +import { EditorView } from "@codemirror/view"; +import { tags as t } from "@lezer/highlight"; + +// Palette adapted from Tomorrow Night Bright (Chris Kempson) +export const config = { + name: "tomorrowNightBright", + dark: true, + background: "#000000", + foreground: "#DEDEDE", + selection: "#424242", + cursor: "#9F9F9F", + dropdownBackground: "#000000", + dropdownBorder: "#343434", + activeLine: "#2A2A2A", + lineNumber: "#343434", + lineNumberActive: "#DEDEDE", + matchingBracket: "#2A2A2A", + keyword: "#C397D8", + storage: "#C397D8", + variable: "#D54E53", + parameter: "#E78C45", + function: "#7AA6DA", + string: "#B9CA4A", + constant: "#E78C45", + type: "#E7C547", + class: "#E7C547", + number: "#E78C45", + comment: "#969896", + heading: "#7AA6DA", + invalid: "#DF5F5F", + regexp: "#D54E53", + operator: "#70C0B1", + tag: "#D54E53", +}; + +export const tomorrowNightBrightTheme = EditorView.theme( + { + "&": { + color: config.foreground, + backgroundColor: config.background, + }, + + ".cm-content": { caretColor: config.cursor }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: config.cursor }, + "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": + { backgroundColor: config.selection }, + + ".cm-panels": { + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-panels.cm-panels-top": { + borderBottom: `1px solid ${config.dropdownBorder}`, + }, + ".cm-panels.cm-panels-bottom": { + borderTop: `1px solid ${config.dropdownBorder}`, + }, + + ".cm-searchMatch": { + backgroundColor: config.dropdownBackground, + outline: `1px solid ${config.dropdownBorder}`, + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: config.selection, + }, + + ".cm-activeLine": { backgroundColor: config.activeLine }, + ".cm-selectionMatch": { backgroundColor: config.selection }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: config.matchingBracket, + outline: "none", + }, + + ".cm-gutters": { + backgroundColor: config.background, + color: config.foreground, + border: "none", + }, + ".cm-activeLineGutter": { backgroundColor: config.background }, + + ".cm-lineNumbers .cm-gutterElement": { color: config.lineNumber }, + ".cm-lineNumbers .cm-activeLineGutter": { color: config.lineNumberActive }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: config.foreground, + }, + ".cm-tooltip": { + border: `1px solid ${config.dropdownBorder}`, + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent", + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: config.foreground, + borderBottomColor: config.foreground, + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + background: config.selection, + color: config.foreground, + }, + }, + }, + { dark: config.dark }, +); + +export const tomorrowNightBrightHighlightStyle = HighlightStyle.define([ + { tag: t.keyword, color: config.keyword }, + { + tag: [t.name, t.deleted, t.character, t.macroName], + color: config.variable, + }, + { tag: [t.propertyName], color: config.function }, + { + tag: [t.processingInstruction, t.string, t.inserted, t.special(t.string)], + color: config.string, + }, + { tag: [t.function(t.variableName), t.labelName], color: config.function }, + { + tag: [t.color, t.constant(t.name), t.standard(t.name)], + color: config.constant, + }, + { tag: [t.definition(t.name), t.separator], color: config.variable }, + { tag: [t.className], color: config.class }, + { + tag: [t.number, t.changed, t.annotation, t.modifier, t.self, t.namespace], + color: config.number, + }, + { tag: [t.typeName], color: config.type }, + { tag: [t.operator, t.operatorKeyword], color: config.operator }, + { tag: [t.url, t.escape, t.regexp, t.link], color: config.regexp }, + { tag: [t.meta, t.comment], color: config.comment }, + { tag: t.tagName, color: config.tag }, + { tag: t.strong, fontWeight: "bold" }, + { tag: t.emphasis, fontStyle: "italic" }, + { tag: t.link, textDecoration: "underline" }, + { tag: t.heading, fontWeight: "bold", color: config.heading }, + { tag: [t.atom, t.bool, t.special(t.variableName)], color: config.variable }, + { tag: t.invalid, color: config.invalid }, + { tag: t.strikethrough, textDecoration: "line-through" }, +]); + +export function tomorrowNightBright() { + return [ + tomorrowNightBrightTheme, + syntaxHighlighting(tomorrowNightBrightHighlightStyle), + ]; +} + +export default tomorrowNightBright; diff --git a/src/cm/themes/vscodeDark.js b/src/cm/themes/vscodeDark.js new file mode 100644 index 000000000..21e634b11 --- /dev/null +++ b/src/cm/themes/vscodeDark.js @@ -0,0 +1,189 @@ +import { HighlightStyle, syntaxHighlighting } from "@codemirror/language"; +import { EditorView } from "@codemirror/view"; +import { tags as t } from "@lezer/highlight"; + +export const config = { + name: "vscodeDark", + dark: true, + background: "#1e1e1e", + foreground: "#9cdcfe", + selection: "#6199ff2f", + selectionMatch: "#72a1ff59", + cursor: "#c6c6c6", + dropdownBackground: "#1e1e1e", + dropdownBorder: "#3c3c3c", + activeLine: "#ffffff0f", + lineNumber: "#838383", + lineNumberActive: "#ffffff", + matchingBracket: "#515c6a", + keyword: "#569cd6", + variable: "#9cdcfe", + parameter: "#9cdcfe", + function: "#dcdcaa", + string: "#ce9178", + constant: "#569cd6", + type: "#4ec9b0", + class: "#4ec9b0", + number: "#b5cea8", + comment: "#6a9955", + heading: "#9cdcfe", + invalid: "#ff0000", + regexp: "#d16969", + tag: "#4ec9b0", + operator: "#d4d4d4", + angleBracket: "#808080", +}; + +export const vscodeDarkTheme = EditorView.theme( + { + "&": { + color: config.foreground, + backgroundColor: config.background, + }, + + ".cm-content": { caretColor: config.cursor }, + + ".cm-cursor, .cm-dropCursor": { borderLeftColor: config.cursor }, + "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": + { + backgroundColor: config.selection, + }, + + ".cm-panels": { + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-panels.cm-panels-top": { + borderBottom: `1px solid ${config.dropdownBorder}`, + }, + ".cm-panels.cm-panels-bottom": { + borderTop: `1px solid ${config.dropdownBorder}`, + }, + + ".cm-searchMatch": { + backgroundColor: config.dropdownBackground, + outline: `1px solid ${config.dropdownBorder}`, + }, + ".cm-searchMatch.cm-searchMatch-selected": { + backgroundColor: config.selectionMatch, + }, + + ".cm-activeLine": { backgroundColor: config.activeLine }, + ".cm-selectionMatch": { backgroundColor: config.selectionMatch }, + + "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": { + backgroundColor: config.matchingBracket, + outline: "none", + }, + + ".cm-gutters": { + backgroundColor: config.background, + color: config.lineNumber, + border: "none", + }, + ".cm-activeLineGutter": { backgroundColor: config.background }, + + ".cm-lineNumbers .cm-gutterElement": { color: config.lineNumber }, + ".cm-lineNumbers .cm-activeLineGutter": { color: config.lineNumberActive }, + + ".cm-foldPlaceholder": { + backgroundColor: "transparent", + border: "none", + color: config.foreground, + }, + ".cm-tooltip": { + border: `1px solid ${config.dropdownBorder}`, + backgroundColor: config.dropdownBackground, + color: config.foreground, + }, + ".cm-tooltip .cm-tooltip-arrow:before": { + borderTopColor: "transparent", + borderBottomColor: "transparent", + }, + ".cm-tooltip .cm-tooltip-arrow:after": { + borderTopColor: config.foreground, + borderBottomColor: config.foreground, + }, + ".cm-tooltip-autocomplete": { + "& > ul > li[aria-selected]": { + background: config.selectionMatch, + color: config.foreground, + }, + }, + }, + { dark: config.dark }, +); + +export const vscodeDarkHighlightStyle = HighlightStyle.define([ + { + tag: [ + t.keyword, + t.operatorKeyword, + t.modifier, + t.color, + t.constant(t.name), + t.standard(t.name), + t.standard(t.tagName), + t.special(t.brace), + t.atom, + t.bool, + t.special(t.variableName), + ], + color: config.keyword, + }, + { tag: [t.controlKeyword, t.moduleKeyword], color: "#c586c0" }, + { + tag: [ + t.name, + t.deleted, + t.character, + t.macroName, + t.propertyName, + t.variableName, + t.labelName, + t.definition(t.name), + ], + color: config.variable, + }, + { tag: t.heading, fontWeight: "bold", color: config.heading }, + { + tag: [ + t.typeName, + t.className, + t.tagName, + t.number, + t.changed, + t.annotation, + t.self, + t.namespace, + ], + color: config.type, + }, + { + tag: [t.function(t.variableName), t.function(t.propertyName)], + color: config.function, + }, + { tag: [t.number], color: config.number }, + { + tag: [t.operator, t.punctuation, t.separator, t.url, t.escape, t.regexp], + color: config.operator, + }, + { tag: [t.regexp], color: config.regexp }, + { + tag: [t.special(t.string), t.processingInstruction, t.string, t.inserted], + color: config.string, + }, + { tag: [t.angleBracket], color: config.angleBracket }, + { tag: t.strong, fontWeight: "bold" }, + { tag: t.emphasis, fontStyle: "italic" }, + { tag: t.strikethrough, textDecoration: "line-through" }, + { tag: [t.meta, t.comment], color: config.comment }, + { tag: t.link, color: config.comment, textDecoration: "underline" }, + { tag: t.invalid, color: config.invalid }, +]); + +export function vscodeDark() { + return [vscodeDarkTheme, syntaxHighlighting(vscodeDarkHighlightStyle)]; +} + +export default vscodeDark; diff --git a/src/cm/touchSelectionMenu.js b/src/cm/touchSelectionMenu.js new file mode 100644 index 000000000..9006ddb29 --- /dev/null +++ b/src/cm/touchSelectionMenu.js @@ -0,0 +1,603 @@ +import { EditorSelection } from "@codemirror/state"; +import selectionMenu from "lib/selectionMenu"; + +const TAP_MAX_DELAY = 500; +const TAP_MAX_DISTANCE = 20; +const EDGE_SCROLL_GAP = 40; +const MENU_MARGIN = 10; +const MENU_SHOW_DELAY = 120; +const MENU_CARET_GAP = 10; +const MENU_SELECTION_GAP = 12; +const MENU_HANDLE_CLEARANCE = 28; +const TAP_MAX_COLUMN_DELTA = 2; +const TAP_MAX_POS_DELTA = 2; + +/** + * Classify taps into single/double/triple tap buckets. + * @param {{x:number,y:number,time:number,count:number}|null} previousTap + * @param {{x:number,y:number,time:number}} tap + * @returns {{x:number,y:number,time:number,count:number}} + */ +export function classifyTap(previousTap, tap) { + if (!previousTap) { + return { ...tap, count: 1 }; + } + + const dt = tap.time - previousTap.time; + const dx = tap.x - previousTap.x; + const dy = tap.y - previousTap.y; + const distance = Math.hypot(dx, dy); + const sameTextZone = + tap.line != null && + previousTap.line != null && + tap.line === previousTap.line && + Math.abs((tap.column ?? 0) - (previousTap.column ?? 0)) <= + TAP_MAX_COLUMN_DELTA; + const nearSamePos = + tap.pos != null && + previousTap.pos != null && + Math.abs(tap.pos - previousTap.pos) <= TAP_MAX_POS_DELTA; + + if ( + dt <= TAP_MAX_DELAY && + (distance <= TAP_MAX_DISTANCE || sameTextZone || nearSamePos) + ) { + return { + ...tap, + count: Math.min(previousTap.count + 1, 3), + }; + } + + return { ...tap, count: 1 }; +} + +/** + * Clamp menu coordinates so it stays within the container bounds. + * @param {{left:number, top:number, width:number, height:number}} menuRect + * @param {{left:number, top:number, width:number, height:number}} containerRect + * @returns {{left:number, top:number}} + */ +export function clampMenuPosition(menuRect, containerRect) { + const maxLeft = Math.max( + containerRect.left + MENU_MARGIN, + containerRect.left + containerRect.width - menuRect.width - MENU_MARGIN, + ); + const maxTop = Math.max( + containerRect.top + MENU_MARGIN, + containerRect.top + containerRect.height - menuRect.height - MENU_MARGIN, + ); + + return { + left: clamp(menuRect.left, containerRect.left + MENU_MARGIN, maxLeft), + top: clamp(menuRect.top, containerRect.top + MENU_MARGIN, maxTop), + }; +} + +/** + * Filter menu items using Ace-compatible rules. + * @param {ReturnType} items + * @param {{readOnly:boolean,hasSelection:boolean}} options + */ +export function filterSelectionMenuItems(items, options) { + const { readOnly, hasSelection } = options; + return items.filter((item) => { + if (readOnly && !item.readOnly) return false; + if (hasSelection && !["selected", "all"].includes(item.mode)) return false; + if (!hasSelection && item.mode === "selected") return false; + return true; + }); +} + +/** + * Detect which edge(s) should trigger drag auto-scroll. + * @param {{ + * x:number, + * y:number, + * rect:{left:number,right:number,top:number,bottom:number}, + * allowHorizontal?:boolean, + * gap?:number, + * }} options + * @returns {{horizontal:number, vertical:number}} + */ +export function getEdgeScrollDirections(options) { + const { x, y, rect, allowHorizontal = true, gap = EDGE_SCROLL_GAP } = options; + let horizontal = 0; + let vertical = 0; + + if (allowHorizontal) { + if (x < rect.left + gap) horizontal = -1; + else if (x > rect.right - gap) horizontal = 1; + } + + if (y < rect.top + gap) vertical = -1; + else if (y > rect.bottom - gap) vertical = 1; + + return { horizontal, vertical }; +} + +function clamp(value, min, max) { + return Math.max(min, Math.min(max, value)); +} + +export default function createTouchSelectionMenu(view, options = {}) { + return new TouchSelectionMenuController(view, options); +} + +class TouchSelectionMenuController { + #view; + #container; + #getActiveFile; + #isShiftSelectionActive; + #stateSyncRaf = 0; + #isScrolling = false; + #isPointerInteracting = false; + #shiftSelectionSession = null; + #pendingShiftSelectionClick = null; + #menuActive = false; + #menuRequested = false; + #enabled = true; + #handlingMenuAction = false; + #menuShowTimer = null; + + constructor(view, options = {}) { + this.#view = view; + this.#container = + options.container || view.dom.closest(".editor-container") || view.dom; + this.#getActiveFile = options.getActiveFile || (() => null); + this.#isShiftSelectionActive = + options.isShiftSelectionActive || (() => false); + this.$menu = document.createElement("menu"); + this.$menu.className = "cursor-menu"; + this.#bindEvents(); + } + + #bindEvents() { + const root = this.#view.dom; + root.addEventListener("contextmenu", this.#onContextMenu, true); + document.addEventListener("pointerdown", this.#onGlobalPointerDown, true); + document.addEventListener("pointerup", this.#onGlobalPointerUp, true); + document.addEventListener("pointercancel", this.#onGlobalPointerUp, true); + } + + destroy() { + const root = this.#view.dom; + root.removeEventListener("contextmenu", this.#onContextMenu, true); + document.removeEventListener( + "pointerdown", + this.#onGlobalPointerDown, + true, + ); + document.removeEventListener("pointerup", this.#onGlobalPointerUp, true); + document.removeEventListener( + "pointercancel", + this.#onGlobalPointerUp, + true, + ); + this.#clearMenuShowTimer(); + cancelAnimationFrame(this.#stateSyncRaf); + this.#stateSyncRaf = 0; + this.#shiftSelectionSession = null; + this.#pendingShiftSelectionClick = null; + this.#hideMenu(true); + } + + setEnabled(enabled) { + this.#enabled = !!enabled; + if (this.#enabled) return; + this.#shiftSelectionSession = null; + this.#pendingShiftSelectionClick = null; + this.#menuRequested = false; + this.#isPointerInteracting = false; + this.#isScrolling = false; + this.#clearMenuShowTimer(); + cancelAnimationFrame(this.#stateSyncRaf); + this.#stateSyncRaf = 0; + this.#hideMenu(true); + } + + setSelection(value) { + if (!this.#enabled) return; + if (value) { + this.#menuRequested = true; + } + this.onStateChanged({ + pointerTriggered: !!value, + selectionChanged: true, + }); + } + + setMenu(value) { + this.#menuRequested = !!value; + if (!this.#enabled) return; + if (!value) { + this.#clearMenuShowTimer(); + this.#hideMenu(); + return; + } + this.#scheduleMenuShow(MENU_SHOW_DELAY); + } + + isMenuVisible() { + return this.#menuActive && this.$menu.isConnected; + } + + onScrollStart() { + if (!this.#enabled) return; + if (this.#isScrolling) return; + this.#clearMenuShowTimer(); + this.#isScrolling = true; + this.#hideMenu(); + } + + onScrollEnd() { + if (!this.#enabled || !this.#isScrolling) return; + this.#isScrolling = false; + if (this.#shouldShowMenu()) this.#scheduleMenuShow(MENU_SHOW_DELAY); + } + + onStateChanged(meta = {}) { + if (!this.#enabled) return; + if (this.#handlingMenuAction) return; + if (meta.selectionChanged && this.#menuActive) { + this.#hideMenu(); + } + if (!this.#shouldShowMenu()) { + if (!this.#hasSelection()) { + this.#menuRequested = false; + } + this.#clearMenuShowTimer(); + this.#hideMenu(); + return; + } + const delay = + meta.pointerTriggered || meta.selectionChanged ? MENU_SHOW_DELAY : 0; + this.#scheduleMenuShow(delay); + } + + onSessionChanged() { + if (!this.#enabled) return; + this.#shiftSelectionSession = null; + this.#pendingShiftSelectionClick = null; + this.#menuRequested = false; + this.#isPointerInteracting = false; + this.#isScrolling = false; + this.#clearMenuShowTimer(); + this.#hideMenu(true); + } + + #onContextMenu = (event) => { + if (!this.#enabled) return; + if (this.#isIgnoredPointerTarget(event.target)) return; + event.preventDefault(); + event.stopPropagation(); + this.#menuRequested = true; + this.#scheduleMenuShow(MENU_SHOW_DELAY); + }; + + #onGlobalPointerDown = (event) => { + const target = event.target; + if (this.$menu.contains(target)) return; + if (this.#isIgnoredPointerTarget(target)) { + this.#shiftSelectionSession = null; + return; + } + if (target instanceof Node && this.#view.dom.contains(target)) { + this.#captureShiftSelection(event); + this.#isPointerInteracting = true; + this.#clearMenuShowTimer(); + this.#hideMenu(); + return; + } + this.#shiftSelectionSession = null; + this.#isPointerInteracting = false; + this.#menuRequested = false; + this.#hideMenu(); + }; + + #onGlobalPointerUp = (event) => { + if (event.type === "pointerup") { + this.#commitShiftSelection(event); + } else { + this.#shiftSelectionSession = null; + } + if (!this.#isPointerInteracting) return; + this.#isPointerInteracting = false; + if (!this.#enabled) return; + if (this.#shouldShowMenu()) { + this.#scheduleMenuShow(MENU_SHOW_DELAY); + return; + } + if (!this.#hasSelection()) { + this.#menuRequested = false; + } + this.#hideMenu(); + }; + + #captureShiftSelection(event) { + if (!this.#canExtendSelection(event)) { + this.#shiftSelectionSession = null; + return; + } + + this.#shiftSelectionSession = { + pointerId: event.pointerId, + anchor: this.#view.state.selection.main.anchor, + x: event.clientX, + y: event.clientY, + }; + } + + #commitShiftSelection(event) { + const session = this.#shiftSelectionSession; + this.#shiftSelectionSession = null; + if (!session) return; + if (!this.#canExtendSelection(event)) return; + if (event.pointerId !== session.pointerId) return; + if ( + Math.hypot(event.clientX - session.x, event.clientY - session.y) > + TAP_MAX_DISTANCE + ) { + return; + } + const target = event.target; + if (!(target instanceof Node) || !this.#view.dom.contains(target)) return; + if (this.#isIgnoredPointerTarget(target)) return; + + // Rely on pointer coordinates instead of click events so touch selection + // keeps working when the browser/native path owns the actual tap. + const head = this.#view.posAtCoords( + { x: event.clientX, y: event.clientY }, + false, + ); + this.#view.dispatch({ + selection: EditorSelection.range(session.anchor, head), + userEvent: "select.extend", + }); + this.#pendingShiftSelectionClick = { + x: event.clientX, + y: event.clientY, + timeStamp: event.timeStamp, + }; + event.preventDefault(); + } + + #canExtendSelection(event) { + if (!this.#enabled) return false; + if (!(event.isTrusted && event.isPrimary)) return false; + if (typeof event.button === "number" && event.button !== 0) return false; + return !!this.#isShiftSelectionActive(event); + } + + consumePendingShiftSelectionClick(event) { + const pending = this.#pendingShiftSelectionClick; + this.#pendingShiftSelectionClick = null; + if (!pending || !this.#enabled) return false; + if (event.timeStamp - pending.timeStamp > TAP_MAX_DELAY) return false; + if ( + Math.hypot(event.clientX - pending.x, event.clientY - pending.y) > + TAP_MAX_DISTANCE + ) { + return false; + } + const target = event.target; + if (!(target instanceof Node) || !this.#view.dom.contains(target)) + return false; + if (this.#isIgnoredPointerTarget(target)) return false; + return true; + } + + #shouldShowMenu() { + if (this.#isScrolling || this.#isPointerInteracting || !this.#view.hasFocus) + return false; + return this.#hasSelection() || this.#menuRequested; + } + + #scheduleMenuShow(delay = 0) { + this.#clearMenuShowTimer(); + if (!this.#enabled || this.#isScrolling) return; + this.#menuShowTimer = setTimeout(() => { + this.#menuShowTimer = null; + if (!this.#enabled || this.#isScrolling) return; + if (!this.#shouldShowMenu()) { + if (!this.#hasSelection()) { + this.#menuRequested = false; + } + this.#hideMenu(); + return; + } + cancelAnimationFrame(this.#stateSyncRaf); + this.#stateSyncRaf = requestAnimationFrame(() => { + this.#stateSyncRaf = 0; + this.#showMenuDeferred(); + }); + }, delay); + } + + #safeCoordsAtPos(view, pos) { + try { + return view.coordsAtPos(pos); + } catch { + return null; + } + } + + #getMenuAnchor(selection = this.#hasSelection()) { + const range = this.#view.state.selection.main; + if (!selection) { + const caret = this.#safeCoordsAtPos(this.#view, range.head); + if (!caret) return null; + return { + x: (caret.left + caret.right) / 2, + top: caret.top, + bottom: caret.bottom, + hasSelection: false, + }; + } + + const start = this.#safeCoordsAtPos(this.#view, range.from); + const end = this.#safeCoordsAtPos(this.#view, range.to); + const primary = start || end; + if (!primary) return null; + const secondary = end || start || primary; + return { + x: ((start?.left ?? primary.left) + (end?.left ?? secondary.left)) / 2, + top: Math.min(primary.top, secondary.top), + bottom: Math.max(primary.bottom, secondary.bottom), + hasSelection: true, + }; + } + + #showMenu(anchor) { + const hasSelection = this.#hasSelection(); + const items = filterSelectionMenuItems(selectionMenu(), { + readOnly: this.#isReadOnly(), + hasSelection, + }); + + this.$menu.innerHTML = ""; + if (!items.length) { + this.#menuRequested = false; + this.#hideMenu(true); + return; + } + + items.forEach(({ onclick, text }) => { + const $item = document.createElement("div"); + if (typeof text === "string") { + $item.textContent = text; + } else if (text instanceof Node) { + $item.append(text.cloneNode(true)); + } + let handled = false; + const runAction = (event) => { + if (handled) return; + handled = true; + event.preventDefault(); + event.stopPropagation(); + this.#handlingMenuAction = true; + try { + onclick?.(); + } finally { + this.#handlingMenuAction = false; + this.#menuRequested = false; + this.#hideMenu(); + this.#view.focus(); + } + }; + $item.addEventListener("pointerdown", runAction); + $item.addEventListener("click", runAction); + this.$menu.append($item); + }); + + if (!this.$menu.isConnected) { + this.#container.append(this.$menu); + } + + const containerRect = this.#container.getBoundingClientRect(); + this.$menu.style.left = "0px"; + this.$menu.style.top = "0px"; + this.$menu.style.visibility = "hidden"; + + const menuRect = this.$menu.getBoundingClientRect(); + const preferredLeft = anchor.x - menuRect.width / 2; + const aboveGap = anchor.hasSelection ? MENU_SELECTION_GAP : MENU_CARET_GAP; + const belowGap = anchor.hasSelection + ? MENU_HANDLE_CLEARANCE + : MENU_CARET_GAP; + const topAbove = anchor.top - menuRect.height - aboveGap; + const topBelow = anchor.bottom + belowGap; + const minTop = containerRect.top + MENU_MARGIN; + const maxTop = + containerRect.top + containerRect.height - menuRect.height - MENU_MARGIN; + const fitsAbove = topAbove >= minTop; + const fitsBelow = topBelow <= maxTop; + const clamped = clampMenuPosition( + { + left: preferredLeft, + top: fitsAbove || !fitsBelow ? topAbove : topBelow, + width: menuRect.width, + height: menuRect.height, + }, + { + left: containerRect.left, + top: containerRect.top, + width: containerRect.width, + height: containerRect.height, + }, + ); + + this.$menu.style.left = `${clamped.left - containerRect.left}px`; + this.$menu.style.top = `${clamped.top - containerRect.top}px`; + this.$menu.style.visibility = ""; + this.#menuActive = true; + this.#menuRequested = false; + } + + #showMenuDeferred() { + if (!this.#enabled || this.#isScrolling || !this.#shouldShowMenu()) return; + const useSelectionAnchor = this.#hasSelection(); + this.#view.requestMeasure({ + read: () => this.#getMenuAnchor(useSelectionAnchor), + write: (anchor) => { + if (!this.#enabled || this.#isScrolling || !this.#shouldShowMenu()) { + this.#hideMenu(); + return; + } + if (!anchor) { + this.#hideMenu(true); + return; + } + this.#showMenu(anchor); + }, + }); + } + + #hideMenu(force = false) { + if (!force && !this.#menuActive && !this.$menu.isConnected) return; + if (this.$menu.isConnected) { + this.$menu.remove(); + } + this.#menuActive = false; + } + + #clearMenuShowTimer() { + clearTimeout(this.#menuShowTimer); + this.#menuShowTimer = null; + } + + #isReadOnly() { + const activeFile = this.#getActiveFile(); + if (activeFile?.type === "editor") { + return !activeFile.editable || !!activeFile.loading; + } + return !!this.#view.state?.readOnly; + } + + #isIgnoredPointerTarget(target) { + let element = null; + if (target instanceof Element) { + element = target; + } else if (target instanceof Node) { + element = target.parentElement; + } + if (!element) return false; + if (element.closest(".cm-tooltip, .cm-panel")) return true; + const editorContent = element.closest(".cm-content"); + if (editorContent && this.#view.dom.contains(editorContent)) { + return false; + } + if ( + element.closest( + 'input, textarea, select, button, a, [contenteditable], [role="button"]', + ) + ) { + return true; + } + return false; + } + + #hasSelection() { + const selection = this.#view.state.selection.main; + return selection.from !== selection.to; + } +} diff --git a/src/components/fileTree/index.js b/src/components/fileTree/index.js index c402c738d..16b129c44 100644 --- a/src/components/fileTree/index.js +++ b/src/components/fileTree/index.js @@ -167,6 +167,7 @@ export default class FileTree { // Child file tree for nested folders let childTree = null; + $content._fileTree = null; const toggle = async () => { const isExpanded = !$wrapper.classList.contains("hidden"); @@ -179,6 +180,7 @@ export default class FileTree { childTree.destroy(); this.childTrees.delete(url); childTree = null; + $content._fileTree = null; } this.options.onExpandedChange?.(url, false); } else { @@ -192,6 +194,7 @@ export default class FileTree { _depth: this.depth + 1, }); this.childTrees.set(url, childTree); + $content._fileTree = childTree; try { await childTree.load(url); } finally { @@ -216,20 +219,34 @@ export default class FileTree { queueMicrotask(() => toggle()); } - // Add properties for external access (keep unclasped for collapsableList compatibility) - Object.defineProperties($wrapper, { - collapsed: { get: () => $wrapper.classList.contains("hidden") }, - expanded: { get: () => !$wrapper.classList.contains("hidden") }, - unclasped: { get: () => !$wrapper.classList.contains("hidden") }, // Legacy compatibility - $title: { get: () => $title }, - $ul: { get: () => $content }, - expand: { - value: () => !$wrapper.classList.contains("hidden") || toggle(), - }, - collapse: { - value: () => $wrapper.classList.contains("hidden") || toggle(), - }, - }); + const defineCollapsibleAccessors = ($el, { includeTitle = true } = {}) => { + const properties = { + collapsed: { get: () => $wrapper.classList.contains("hidden") }, + expanded: { get: () => !$wrapper.classList.contains("hidden") }, + unclasped: { get: () => !$wrapper.classList.contains("hidden") }, // Legacy compatibility + $ul: { get: () => $content }, + fileTree: { get: () => childTree }, + refresh: { + value: () => childTree?.refresh(), + }, + expand: { + value: () => !$wrapper.classList.contains("hidden") || toggle(), + }, + collapse: { + value: () => $wrapper.classList.contains("hidden") || toggle(), + }, + }; + + if (includeTitle) { + properties.$title = { get: () => $title }; + } + + Object.defineProperties($el, properties); + }; + + // Keep nested folders compatible with the legacy collapsableList API. + defineCollapsibleAccessors($wrapper); + defineCollapsibleAccessors($title, { includeTitle: false }); return $wrapper; } @@ -281,11 +298,7 @@ export default class FileTree { * Clear all rendered content */ clear() { - // Destroy all child trees - for (const childTree of this.childTrees.values()) { - childTree.destroy(); - } - this.childTrees.clear(); + this.destroyChildTrees(); if (this.virtualList) { this.virtualList.destroy(); @@ -322,6 +335,16 @@ export default class FileTree { } } + /** + * Destroy all expanded child trees and clear their references. + */ + destroyChildTrees() { + for (const childTree of this.childTrees.values()) { + childTree.destroy(); + } + this.childTrees.clear(); + } + /** * Append a new entry to the tree * @param {string} name @@ -356,6 +379,7 @@ export default class FileTree { this.virtualList.setItems(this.entries); } else { // Fragment mode: re-render + this.destroyChildTrees(); this.container.innerHTML = ""; this.renderWithFragment(); } diff --git a/src/components/inputhints/index.js b/src/components/inputhints/index.js index a340730a9..23bba3cfe 100644 --- a/src/components/inputhints/index.js +++ b/src/components/inputhints/index.js @@ -4,6 +4,7 @@ import "./style.scss"; * @typedef {Object} HintObj * @property {string} value * @property {string} text + * @property {boolean} [active] */ /** @@ -139,7 +140,7 @@ export default function inputhints($input, hints, onSelect) { function oninput() { const { value: toTest } = this; const matched = []; - const regexp = new RegExp(toTest, "i"); + const regexp = new RegExp(escapeRegExp(toTest), "i"); hints.forEach((hint) => { const { value, text } = hint; if (regexp.test(value) || regexp.test(text)) { @@ -351,6 +352,7 @@ export default function inputhints($input, hints, onSelect) { function Hint({ hint }) { let value = ""; let text = ""; + let active = false; if (typeof hint === "string") { value = hint; @@ -358,9 +360,17 @@ function Hint({ hint }) { } else { value = hint.value; text = hint.text; + active = !!hint.active; } - return
  • ; + return ( +
  • + ); } /** @@ -378,3 +388,7 @@ function Ul({ hints = [] }) { ); } + +function escapeRegExp(value) { + return String(value ?? "").replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} diff --git a/src/components/lspInfoDialog/index.js b/src/components/lspInfoDialog/index.js new file mode 100644 index 000000000..5bea3db08 --- /dev/null +++ b/src/components/lspInfoDialog/index.js @@ -0,0 +1,708 @@ +import "./styles.scss"; +import lspClientManager from "cm/lsp/clientManager"; +import { getServerStats } from "cm/lsp/serverLauncher"; +import serverRegistry from "cm/lsp/serverRegistry"; +import toast from "components/toast"; +import actionStack from "lib/actionStack"; +import restoreTheme from "lib/restoreTheme"; + +let dialogInstance = null; + +const lspLogs = new Map(); +const MAX_LOGS = 200; +const logListeners = new Set(); +const IGNORED_LOG_PATTERNS = [ + /\$\/progress\b/i, + /\bProgress:/i, + /\bwindow\/workDoneProgress\/create\b/i, + /\bAuto-responded to window\/workDoneProgress\/create\b/i, +]; + +function shouldIgnoreLog(message) { + if (typeof message !== "string") return false; + return IGNORED_LOG_PATTERNS.some((pattern) => pattern.test(message)); +} + +function addLspLog(serverId, level, message, details = null) { + if (shouldIgnoreLog(message)) { + return; + } + + if (!lspLogs.has(serverId)) { + lspLogs.set(serverId, []); + } + const logs = lspLogs.get(serverId); + const entry = { + timestamp: new Date(), + level, + message, + details, + }; + logs.push(entry); + if (logs.length > MAX_LOGS) { + logs.shift(); + } + logListeners.forEach((fn) => fn(serverId, entry)); +} + +function getLspLogs(serverId) { + return lspLogs.get(serverId) || []; +} + +function clearLspLogs(serverId) { + lspLogs.delete(serverId); +} + +const originalConsoleInfo = console.info; +const originalConsoleWarn = console.warn; +const originalConsoleError = console.error; + +function stripAnsi(str) { + if (typeof str !== "string") return str; + return str.replace(/\x1b\[[0-9;]*m/g, ""); +} + +function extractServerId(message) { + const cleaned = stripAnsi(message); + // Match [LSP:serverId] format + const lspMatch = cleaned?.match?.(/\[LSP:([^\]]+)\]/); + if (lspMatch) return lspMatch[1]; + + // Match [LSP-STDERR:program] format from axs proxy + const stderrMatch = cleaned?.match?.(/\[LSP-STDERR:([^\]]+)\]/); + if (stderrMatch) { + const program = stderrMatch[1]; + return program; + } + + return null; +} + +function extractLogMessage(message) { + const cleaned = stripAnsi(message); + // Strip [LSP:...] and [LSP-STDERR:...] prefixes + // Strip ISO timestamps like 2026-02-05T08:26:24.745443Z + // Strip log levels like INFO, WARN, ERROR and the source like axs::lsp: + return ( + cleaned + ?.replace?.(/\[LSP:[^\]]+\]\s*/, "") + ?.replace?.(/\[LSP-STDERR:[^\]]+\]\s*/, "") + ?.replace?.(/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z?\s*/g, "") + ?.replace?.(/\s*(INFO|WARN|ERROR|DEBUG|TRACE)\s+/gi, "") + ?.replace?.(/[a-z_]+::[a-z_]+:\s*/gi, "") + ?.trim() || cleaned + ); +} + +console.info = function (...args) { + originalConsoleInfo.apply(console, args); + const msg = args[0]; + if ( + typeof msg === "string" && + (msg.includes("[LSP:") || msg.includes("[LSP-STDERR:")) + ) { + const serverId = extractServerId(msg); + if (serverId) { + addLspLog(serverId, "info", extractLogMessage(msg)); + } + } +}; + +console.warn = function (...args) { + originalConsoleWarn.apply(console, args); + const msg = args[0]; + if ( + typeof msg === "string" && + (msg.includes("[LSP:") || msg.includes("[LSP-STDERR:")) + ) { + const serverId = extractServerId(msg); + if (serverId) { + // stderr from axs is logged as warn, mark it appropriately + const isStderr = msg.includes("[LSP-STDERR:"); + addLspLog(serverId, isStderr ? "stderr" : "warn", extractLogMessage(msg)); + } + } +}; + +console.error = function (...args) { + originalConsoleError.apply(console, args); + const msg = args[0]; + if ( + typeof msg === "string" && + (msg.includes("[LSP:") || msg.includes("[LSP-STDERR:")) + ) { + const serverId = extractServerId(msg); + if (serverId) { + addLspLog(serverId, "error", extractLogMessage(msg)); + } + } +}; + +function getActiveClients() { + try { + return lspClientManager.getActiveClients(); + } catch { + return []; + } +} + +function getCurrentFileLanguage() { + try { + const file = window.editorManager?.activeFile; + if (!file || file.type !== "editor") return null; + return file.currentMode?.toLowerCase() || null; + } catch { + return null; + } +} + +function getServersForCurrentFile() { + const language = getCurrentFileLanguage(); + if (!language) return []; + + try { + return serverRegistry.getServersForLanguage(language); + } catch { + return []; + } +} + +function getServerStatus(serverId) { + const activeClients = getActiveClients(); + const client = activeClients.find((c) => c.server?.id === serverId); + if (!client) return "stopped"; + try { + return client.client?.connected !== false ? "active" : "connecting"; + } catch { + return "stopped"; + } +} + +function getClientState(serverId) { + const activeClients = getActiveClients(); + return activeClients.find((c) => c.server?.id === serverId) || null; +} + +function getStatusColor(status) { + switch (status) { + case "active": + return "var(--lsp-status-active, #22c55e)"; + case "connecting": + return "var(--lsp-status-connecting, #f59e0b)"; + default: + return "var(--lsp-status-stopped, #6b7280)"; + } +} + +function copyLogsToClipboard(serverId, serverLabel) { + const logs = getLspLogs(serverId); + if (logs.length === 0) { + toast("No logs to copy"); + return; + } + + const text = logs + .map((log) => { + const time = log.timestamp.toLocaleTimeString("en-US", { + hour12: false, + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + }); + return `[${time}] [${log.level.toUpperCase()}] ${log.message}`; + }) + .join("\n"); + + const header = `=== ${serverLabel} LSP Logs ===\n`; + + if (navigator.clipboard?.writeText) { + navigator.clipboard + .writeText(header + text) + .then(() => { + toast("Logs copied"); + }) + .catch(() => { + toast("Failed to copy"); + }); + } else if (cordova?.plugins?.clipboard) { + cordova.plugins.clipboard.copy(header + text); + toast("Logs copied"); + } else { + toast("Clipboard not available"); + } +} + +async function restartServer(serverId) { + addLspLog(serverId, "info", "Restart requested by user"); + toast("Restarting server..."); + + try { + const clientState = getClientState(serverId); + if (clientState) { + await clientState.dispose(); + } + + const { stopManagedServer } = await import("cm/lsp/serverLauncher"); + stopManagedServer(serverId); + + window.editorManager?.restartLsp?.(); + + addLspLog(serverId, "info", "Server restarted successfully"); + toast("Server restarted"); + } catch (err) { + addLspLog(serverId, "error", `Restart failed: ${err.message}`); + toast("Restart failed"); + } +} + +async function stopServer(serverId) { + addLspLog(serverId, "info", "Stop requested by user"); + toast("Stopping..."); + + try { + const clientState = getClientState(serverId); + if (clientState) { + await clientState.dispose(); + } + + const { stopManagedServer } = await import("cm/lsp/serverLauncher"); + stopManagedServer(serverId); + + addLspLog(serverId, "info", "Server stopped"); + toast("Server stopped"); + } catch (err) { + addLspLog(serverId, "error", `Stop failed: ${err.message}`); + toast("Failed to stop"); + } +} + +async function startAllServers() { + toast("Starting LSP servers..."); + try { + window.editorManager?.restartLsp?.(); + toast("Servers started"); + } catch (err) { + toast("Failed to start servers"); + } +} + +async function restartAllServers() { + const activeClients = getActiveClients(); + if (!activeClients.length) { + await startAllServers(); + return; + } + + const count = activeClients.length; + toast(`Restarting ${count} LSP server${count > 1 ? "s" : ""}...`); + + try { + await lspClientManager.dispose(); + window.editorManager?.restartLsp?.(); + toast("All servers restarted"); + } catch (err) { + toast("Failed to restart servers"); + } +} + +async function stopAllServers() { + const activeClients = getActiveClients(); + if (!activeClients.length) { + toast("No LSP servers are currently running"); + return; + } + + const count = activeClients.length; + + try { + await lspClientManager.dispose(); + toast(`Stopped ${count} LSP server${count > 1 ? "s" : ""}`); + } catch (err) { + toast("Failed to stop servers"); + } +} + +function showLspInfoDialog() { + if (dialogInstance) { + dialogInstance.hide(); + return; + } + + const relevantServers = getServersForCurrentFile(); + const currentLanguage = getCurrentFileLanguage(); + + let currentView = "list"; + let selectedServer = null; + + const $mask = ; + const $dialog = ( +
    +
    + + Language Servers +
    +
    +
    + ); + + const $body = $dialog.querySelector(".lsp-dialog-body"); + + function renderList() { + $body.innerHTML = ""; + + if (relevantServers.length === 0) { + $body.appendChild( +
    + +

    + No language servers for{" "} + {currentLanguage || "this file"} +

    +
    , + ); + return; + } + + const $list =
      ; + + const runningServers = relevantServers.filter( + (s) => getServerStatus(s.id) !== "stopped", + ); + const hasRunning = runningServers.length > 0; + + const $actions = ( +
      + + {hasRunning && ( + + )} +
      + ); + $body.appendChild($actions); + + for (const server of relevantServers) { + const status = getServerStatus(server.id); + const statusColor = getStatusColor(status); + const logs = getLspLogs(server.id); + const errorCount = logs.filter((l) => l.level === "error").length; + + const $item = ( +
    • { + selectedServer = server; + currentView = "details"; + renderDetails(); + }} + > + +
      + {server.label} + {status} +
      + {errorCount > 0 && ( + {errorCount} + )} + +
    • + ); + $list.appendChild($item); + } + + $body.appendChild($list); + } + + function renderDetails() { + if (!selectedServer) return; + $body.innerHTML = ""; + + const server = selectedServer; + const status = getServerStatus(server.id); + const clientState = getClientState(server.id); + const isRunning = status !== "stopped"; + + const capabilities = []; + const hasCapabilities = clientState?.client?.serverCapabilities; + if (hasCapabilities) { + const caps = clientState.client.serverCapabilities; + if (caps.completionProvider) capabilities.push("Completion"); + if (caps.hoverProvider) capabilities.push("Hover"); + if (caps.definitionProvider) capabilities.push("Go to Definition"); + if (caps.referencesProvider) capabilities.push("Find References"); + if (caps.renameProvider) capabilities.push("Rename"); + if (caps.documentFormattingProvider) capabilities.push("Format"); + if (caps.signatureHelpProvider) capabilities.push("Signature Help"); + if (caps.inlayHintProvider) capabilities.push("Inlay Hints"); + if (caps.codeActionProvider) capabilities.push("Code Actions"); + if (caps.diagnosticProvider) capabilities.push("Diagnostics"); + } + if (isRunning && capabilities.length === 0 && hasCapabilities) { + capabilities.push("Diagnostics"); + } + + const logs = getLspLogs(server.id); + + const $details = ( +
      +
      + +
      + + {server.label} +
      +
      + + {isRunning && ( + + )} +
      +
      + + {isRunning && ( +
      +
      Capabilities
      +
      + {capabilities.length > 0 + ? capabilities.map((cap) => ( + {cap} + )) + : !hasCapabilities && ( + Initializing... + )} +
      +
      + )} + +
      +
      Supported
      +
      + {server.languages.map((lang) => ( + .{lang} + ))} +
      +
      + + {isRunning && ( +
      +
      Project
      +
      + {clientState?.rootUri || "(workspace folders mode)"} +
      +
      + )} + + {isRunning && ( +
      +
      Resources
      +
      +
      + Memory + + — + +
      +
      + Uptime + + — + +
      +
      + PID + + — + +
      +
      +
      + )} +
      + ); + + $body.appendChild($details); + + // Create simple collapsible logs section + const $logsSection = ( +
      +
      { + const section = e.currentTarget.closest(".lsp-logs-section"); + if (section) { + section.classList.toggle("collapsed"); + if (!section.classList.contains("collapsed")) { + const container = section.querySelector(".lsp-logs-container"); + if (container) container.scrollTop = container.scrollHeight; + } + } + }} + > +
      + + LSP Logs + {logs.length > 0 && ( + ({logs.length}) + )} +
      +
      + + +
      +
      +
      + {logs.length === 0 ? ( +
      No logs yet
      + ) : ( + logs.slice(-50).map((log) => { + const time = log.timestamp.toLocaleTimeString("en-US", { + hour12: false, + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + }); + return ( +
      + {time} + {log.message} +
      + ); + }) + )} +
      +
      + ); + + $body.appendChild($logsSection); + + // Fetch and update stats asynchronously + if (isRunning) { + getServerStats(server.id).then((stats) => { + if (!stats) return; + const $mem = document.getElementById(`lsp-mem-${server.id}`); + const $uptime = document.getElementById(`lsp-uptime-${server.id}`); + const $pid = document.getElementById(`lsp-pid-${server.id}`); + if ($mem) $mem.textContent = stats.memoryFormatted; + if ($uptime) $uptime.textContent = stats.uptimeFormatted; + if ($pid) $pid.textContent = stats.pid ? String(stats.pid) : "—"; + }); + } + } + + function hide() { + $dialog.classList.add("hide"); + restoreTheme(); + actionStack.remove("lsp-info-dialog"); + setTimeout(() => { + $dialog.remove(); + $mask.remove(); + dialogInstance = null; + }, 200); + } + + dialogInstance = { hide, element: $dialog }; + + actionStack.push({ + id: "lsp-info-dialog", + action: hide, + }); + + restoreTheme(true); + document.body.appendChild($dialog); + document.body.appendChild($mask); + + if (currentView === "list") { + renderList(); + } +} + +function hasConnectedServers() { + const relevantServers = getServersForCurrentFile(); + return relevantServers.length > 0; +} + +export { addLspLog, getLspLogs, hasConnectedServers, showLspInfoDialog }; +export default showLspInfoDialog; diff --git a/src/components/lspInfoDialog/styles.scss b/src/components/lspInfoDialog/styles.scss new file mode 100644 index 000000000..be11bbfef --- /dev/null +++ b/src/components/lspInfoDialog/styles.scss @@ -0,0 +1,457 @@ +:root { + --lsp-status-active: #22c55e; + --lsp-status-connecting: #f59e0b; + --lsp-status-stopped: #6b7280; +} + +.lsp-info-dialog { + max-width: 360px; + min-width: 300px; + + .title { + display: flex; + align-items: center; + text-transform: none; + font-weight: 500; + } +} + +.lsp-dialog-body { + overflow-y: auto; + max-height: 65vh; + + &::-webkit-scrollbar { + width: 4px; + } + + &::-webkit-scrollbar-track { + background: transparent; + } + + &::-webkit-scrollbar-thumb { + background: var(--scrollbar-color); + border-radius: 2px; + } +} + +.lsp-empty-state { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 48px 24px; + color: var(--popup-text-color); + text-align: center; + + .icon { + font-size: 2.5rem; + margin-bottom: 16px; + opacity: 0.3; + } + + p { + font-size: 0.9rem; + margin: 0; + opacity: 0.6; + + strong { + opacity: 1; + } + } +} + +.lsp-list-actions { + display: flex; + gap: 8px; + padding: 8px 12px; + border-bottom: 1px solid var(--border-color); +} + +.lsp-action-btn { + display: flex; + align-items: center; + gap: 6px; + flex: 1; + justify-content: center; + padding: 8px 12px; + background-color: var(--box-shadow-color); + border: none; + color: var(--popup-text-color); + cursor: pointer; + border-radius: 6px; + font-size: 0.75rem; + font-weight: 500; + transition: all 0.12s ease; + + .icon { + font-size: 0.9rem; + } + + &:hover { + background-color: var(--active-icon-color); + } + + &.danger { + color: var(--danger-color); + + &:hover { + background-color: color-mix(in srgb, var(--danger-color) 15%, transparent); + } + } +} + +.lsp-server-list { + list-style: none; + padding: 8px; + margin: 0; +} + +.lsp-server-item { + display: flex; + align-items: center; + gap: 12px; + padding: 14px 12px; + border-radius: 6px; + cursor: pointer; + transition: background-color 0.12s ease; + color: var(--popup-text-color); + + &:hover { + background-color: var(--box-shadow-color); + } + + &:active { + background-color: var(--active-icon-color); + } + + &:not(:last-child) { + border-bottom: 1px solid var(--border-color); + } +} + +.lsp-arrow { + font-size: 1.3rem; + opacity: 0.35; + margin-left: auto; +} + +.lsp-status-dot { + width: 8px; + height: 8px; + border-radius: 50%; + flex-shrink: 0; +} + +.lsp-server-info { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; + gap: 2px; +} + +.lsp-server-name { + font-size: 0.95rem; + font-weight: 500; + color: var(--popup-text-color); +} + +.lsp-server-status { + font-size: 0.72rem; + color: var(--popup-text-color); + opacity: 0.5; + text-transform: capitalize; +} + +.lsp-error-badge { + display: flex; + align-items: center; + justify-content: center; + min-width: 18px; + height: 18px; + padding: 0 5px; + background-color: var(--danger-color); + color: var(--danger-text-color); + font-size: 0.65rem; + font-weight: 600; + border-radius: 9px; +} + +.lsp-details { + display: flex; + flex-direction: column; +} + +.lsp-details-header { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 12px; + border-bottom: 1px solid var(--border-color); +} + +.lsp-header-actions { + display: flex; + gap: 4px; + margin-left: auto; +} + +.lsp-icon-btn { + display: flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + background: transparent; + border: none; + color: var(--popup-text-color); + cursor: pointer; + border-radius: 6px; + padding: 0; + transition: all 0.12s ease; + opacity: 0.7; + + &:hover { + background-color: var(--box-shadow-color); + opacity: 1; + } + + &:active { + background-color: var(--active-icon-color); + } + + .icon { + font-size: 1.1rem; + } + + &.small { + width: 26px; + height: 26px; + + .icon { + font-size: 0.95rem; + } + } + + &.danger { + color: var(--danger-color); + + &:hover { + background-color: color-mix(in srgb, var(--danger-color) 15%, transparent); + } + } +} + +.lsp-details-title { + display: flex; + align-items: center; + gap: 10px; + font-size: 0.95rem; + font-weight: 500; + color: var(--popup-text-color); +} + +.lsp-section { + padding: 10px 14px; + + &:last-child { + border-bottom: none; + } +} + +.lsp-section-label { + font-size: 0.65rem; + font-weight: 600; + color: var(--popup-text-color); + opacity: 0.5; + text-transform: uppercase; + letter-spacing: 0.5px; + margin-bottom: 8px; +} + +.lsp-chip-container { + display: flex; + flex-wrap: wrap; + gap: 5px; +} + +.lsp-chip { + display: inline-flex; + align-items: center; + padding: 4px 10px; + background: var(--box-shadow-color); + color: var(--popup-text-color); + border-radius: 4px; + font-size: 0.7rem; + font-weight: 500; + + &.ext { + font-family: monospace; + font-weight: 600; + background: color-mix(in srgb, var(--active-color) 15%, transparent); + color: var(--active-color); + } +} + +.lsp-project-path { + font-size: 0.75rem; + font-family: monospace; + color: var(--popup-text-color); + opacity: 0.75; + word-break: break-all; + padding: 8px 10px; + background-color: var(--box-shadow-color); + border-radius: 6px; + line-height: 1.3; +} + +.lsp-logs-section { + margin: 8px 14px 12px; + + &.collapsed { + .lsp-logs-container { + display: none; + } + + .lsp-expand-icon { + transform: rotate(-90deg); + } + + .lsp-clear-btn { + display: none; + } + } +} + +.lsp-logs-header { + display: flex; + align-items: center; + justify-content: space-between; + cursor: pointer; + padding: 6px 8px; + margin: 0 -8px; +} + +.lsp-logs-title { + display: flex; + align-items: center; + gap: 4px; + font-size: 0.75rem; + font-weight: 500; + color: var(--popup-text-color); + opacity: 0.7; +} + +.lsp-expand-icon { + font-size: 1.1rem; + transition: transform 0.15s ease; +} + +.lsp-log-count { + font-size: 0.65rem; + opacity: 0.5; + margin-left: 2px; +} + +.lsp-logs-actions { + display: flex; + gap: 2px; +} + +.lsp-logs-container { + max-height: 160px; + overflow-y: auto; + background-color: var(--box-shadow-color); + border-radius: 6px; + font-family: monospace; + font-size: 0.65rem; + margin-top: 4px; + + &::-webkit-scrollbar { + width: 3px; + } + + &::-webkit-scrollbar-track { + background: transparent; + } + + &::-webkit-scrollbar-thumb { + background: var(--scrollbar-color); + border-radius: 2px; + } +} + +.lsp-logs-empty { + padding: 14px; + text-align: center; + color: var(--popup-text-color); + opacity: 0.4; + font-size: 0.7rem; + font-family: inherit; +} + +.lsp-log { + display: flex; + gap: 6px; + padding: 1px 8px; + line-height: 1.3; + + &:first-child { + padding-top: 4px; + } + + &:last-child { + padding-bottom: 4px; + } + + &.error .lsp-log-text { + color: var(--danger-color); + } + + &.warn .lsp-log-text { + color: var(--error-text-color); + } + + &.stderr .lsp-log-text { + color: var(--error-text-color); + } +} + +.lsp-log-time { + flex-shrink: 0; + color: var(--popup-text-color); + opacity: 0.35; + font-size: 0.6rem; +} + +.lsp-log-text { + flex: 1; + color: var(--popup-text-color); + opacity: 0.85; + word-break: break-word; +} + +.lsp-stats-container { + display: flex; + gap: 16px; +} + +.lsp-stat { + display: flex; + align-items: baseline; + gap: 6px; +} + +.lsp-stat-label { + font-size: 0.65rem; + font-weight: 500; + color: var(--popup-text-color); + opacity: 0.75; +} + +.lsp-stat-value { + font-size: 0.8rem; + font-weight: 600; + color: var(--popup-text-color); + font-family: monospace; +} \ No newline at end of file diff --git a/src/components/lspStatusBar/index.js b/src/components/lspStatusBar/index.js new file mode 100644 index 000000000..c8f2a6003 --- /dev/null +++ b/src/components/lspStatusBar/index.js @@ -0,0 +1,353 @@ +import "./style.scss"; + +/**@type {HTMLElement | null} */ +let $statusBar = null; + +/**@type {number | null} */ +let hideTimeout = null; + +/** + * @typedef {Object} ProgressItem + * @property {string} title - Task title + * @property {string} [message] - Current message + * @property {number} [percentage] - Progress percentage (0-100) + */ + +/**@type {Map} */ +const activeProgress = new Map(); + +/**@type {string | null} */ +let currentServerId = null; + +/**@type {string | null} */ +let currentServerLabel = null; + +/** + * @typedef {Object} LspStatusOptions + * @property {string} message - The status message to display + * @property {string} [icon] - Optional icon class name + * @property {'info' | 'success' | 'warning' | 'error'} [type='info'] - Status type + * @property {number | false} [duration=0] - Duration in ms, 0 for default (5000ms), false for persistent + * @property {boolean} [showProgress=false] - Whether to show a progress indicator + * @property {number} [progress] - Progress percentage (0-100) + * @property {string} [title] - Optional title for the status + * @property {string} [id] - Unique identifier for progress tracking + */ + +/** + * Ensure the status bar exists + * @returns {HTMLElement} + */ +function ensureStatusBar() { + if ($statusBar && document.body.contains($statusBar)) { + return $statusBar; + } + + $statusBar = ( +
      +
      + +
      + + +
      +
      + +
      +
      + +
      + ); + + // Find the quicktools footer to insert before it + const $footer = document.getElementById("quick-tools"); + if ($footer && $footer.parentNode) { + $footer.parentNode.insertBefore($statusBar, $footer); + } else { + // Fallback: append to app + const $app = document.getElementById("app") || document.body; + $app.appendChild($statusBar); + } + + return $statusBar; +} + +/** + * Build aggregated message from all active progress items + * @returns {{ message: string, avgProgress: number | null, taskCount: number }} + */ +function buildAggregatedStatus() { + const items = Array.from(activeProgress.values()); + const taskCount = items.length; + + if (taskCount === 0) { + return { message: "", avgProgress: null, taskCount: 0 }; + } + + // Calculate average progress for items that have percentage + const itemsWithProgress = items.filter( + (item) => typeof item.percentage === "number", + ); + const avgProgress = + itemsWithProgress.length > 0 + ? Math.round( + itemsWithProgress.reduce( + (sum, item) => sum + (item.percentage || 0), + 0, + ) / itemsWithProgress.length, + ) + : null; + + // Build message + if (taskCount === 1) { + const item = items[0]; + const parts = []; + if (item.message) { + parts.push(item.message); + } else if (item.title) { + parts.push(item.title); + } + return { message: parts.join(" "), avgProgress, taskCount }; + } + + // Multiple tasks - show count and maybe the most recent message + const latestWithMessage = items.filter((item) => item.message).pop(); + const message = latestWithMessage + ? `${taskCount} tasks: ${latestWithMessage.message}` + : `${taskCount} tasks running`; + + return { message, avgProgress, taskCount }; +} + +/** + * Update the status bar display + */ +function updateStatusBarDisplay() { + const bar = $statusBar; + if (!bar) return; + + const { message, avgProgress, taskCount } = buildAggregatedStatus(); + + if (taskCount === 0) { + hideStatusBar(); + return; + } + + const $title = bar.querySelector(".lsp-status-title"); + const $message = bar.querySelector(".lsp-status-message"); + const $progressText = bar.querySelector(".lsp-status-progress-text"); + const $progressContainer = bar.querySelector(".lsp-status-progress"); + const $icon = bar.querySelector(".lsp-status-icon"); + + if ($title) $title.textContent = currentServerLabel || ""; + if ($message) $message.textContent = message; + + if (avgProgress !== null && $progressText && $progressContainer) { + $progressText.textContent = `${avgProgress}%`; + $progressContainer.style.display = ""; + } else if ($progressContainer) { + $progressContainer.style.display = "none"; + } + + // Show spinning icon while progress is active + if ($icon) { + $icon.className = "lsp-status-icon icon autorenew"; + } + + bar.className = "lsp-status info"; + bar.classList.remove("hiding"); +} + +/** + * Hide the status bar + */ +function hideStatusBar() { + if (hideTimeout) { + clearTimeout(hideTimeout); + hideTimeout = null; + } + + if ($statusBar) { + $statusBar.classList.add("hiding"); + setTimeout(() => { + if ($statusBar) { + $statusBar.remove(); + $statusBar = null; + } + }, 300); + } +} + +/** + * Show LSP status notification + * @param {LspStatusOptions} options - Status options + * @returns {string | undefined} The status ID for later updates/removal + */ +export function showLspStatus(options) { + const { + message, + icon = "autorenew", + type = "info", + duration = 0, + showProgress = false, + progress, + title, + id, + } = options; + + // Clear any existing hide timeout + if (hideTimeout) { + clearTimeout(hideTimeout); + hideTimeout = null; + } + + // If this is a progress item (has id), track it + if (id && id.includes("-progress-")) { + // Extract server info from id (format: serverId-progress-token) + const serverMatch = id.match(/^(.+?)-progress-/); + if (serverMatch) { + currentServerId = serverMatch[1]; + currentServerLabel = title || currentServerId; + } + + activeProgress.set(id, { + title: title || "", + message: message || "", + percentage: progress, + }); + + ensureStatusBar(); + updateStatusBarDisplay(); + return id; + } + + // For non-progress messages (errors, warnings, etc.) + const bar = ensureStatusBar(); + + const $title = bar.querySelector(".lsp-status-title"); + const $message = bar.querySelector(".lsp-status-message"); + const $progressText = bar.querySelector(".lsp-status-progress-text"); + const $progressContainer = bar.querySelector(".lsp-status-progress"); + const $icon = bar.querySelector(".lsp-status-icon"); + + if ($title) $title.textContent = title || ""; + if ($message) $message.textContent = message; + + const hasProgress = showProgress && typeof progress === "number"; + if (hasProgress && $progressText && $progressContainer) { + $progressText.textContent = `${Math.round(progress)}%`; + $progressContainer.style.display = ""; + } else if ($progressContainer) { + $progressContainer.style.display = "none"; + } + + if ($icon) { + $icon.className = `lsp-status-icon icon ${icon}`; + } + + bar.className = `lsp-status ${type}`; + bar.classList.remove("hiding"); + + // Auto-hide after duration unless duration is false + if (duration !== false) { + const ms = duration || 5000; + hideTimeout = window.setTimeout(() => { + // Only hide if no progress is active + if (activeProgress.size === 0) { + hideStatusBar(); + } + }, ms); + } + + return id; +} + +/** + * Hide a specific progress item by ID + * @param {string} id - The progress ID to hide + */ +export function hideStatus(id) { + if (activeProgress.has(id)) { + activeProgress.delete(id); + + if (activeProgress.size === 0) { + // All progress complete - hide after a brief delay + hideTimeout = window.setTimeout(() => { + hideStatusBar(); + }, 500); + } else { + updateStatusBarDisplay(); + } + } +} + +/** + * Hide the LSP status bar (legacy support - hides all) + */ +export function hideLspStatus() { + activeProgress.clear(); + hideStatusBar(); +} + +/** + * Update a progress item + * @param {Partial & { id?: string }} options - Options to update + * @returns {string | null} The status ID + */ +export function updateLspStatus(options) { + const { id, message, progress } = options; + + if (!id || !activeProgress.has(id)) { + return null; + } + + const item = activeProgress.get(id); + if (item) { + if (message !== undefined) item.message = message; + if (progress !== undefined) item.percentage = progress; + activeProgress.set(id, item); + updateStatusBarDisplay(); + } + + return id; +} + +/** + * Check if status bar is currently visible + * @returns {boolean} + */ +export function isLspStatusVisible() { + return $statusBar !== null && document.body.contains($statusBar); +} + +/** + * Get count of active progress items + * @returns {number} + */ +export function getActiveStatusCount() { + return activeProgress.size; +} + +/** + * Check if a specific progress item exists + * @param {string} id - The progress ID to check + * @returns {boolean} + */ +export function hasStatus(id) { + return activeProgress.has(id); +} + +export default { + show: showLspStatus, + hide: hideLspStatus, + hideById: hideStatus, + update: updateLspStatus, + isVisible: isLspStatusVisible, + getActiveCount: getActiveStatusCount, + has: hasStatus, +}; diff --git a/src/components/lspStatusBar/style.scss b/src/components/lspStatusBar/style.scss new file mode 100644 index 000000000..ac0a78e63 --- /dev/null +++ b/src/components/lspStatusBar/style.scss @@ -0,0 +1,198 @@ +@use "../../styles/mixins.scss"; + +#lsp-status-bar { + position: fixed; + bottom: 50px; + left: 0; + right: 0; + margin: 0 auto; + max-width: 95vw; + width: fit-content; + min-width: 200px; + padding: 8px 12px; + padding-right: 36px; + background-color: var(--secondary-color); + color: var(--secondary-text-color); + border-radius: 6px; + box-shadow: 0 2px 12px var(--box-shadow-color); + border: 1px solid var(--border-color); + z-index: 97; + animation: lspStatusSlideUp 0.3s ease-out; + transition: all 0.3s ease; + box-sizing: border-box; + + &.hiding { + animation: lspStatusSlideDown 0.3s ease-out forwards; + } + + .lsp-status-content { + display: flex; + align-items: center; + gap: 10px; + } + + .lsp-status-icon { + width: 20px; + height: 20px; + font-size: 1rem; + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + + &.autorenew { + animation: lspSpinSlow 2s linear infinite; + } + } + + .lsp-status-text { + display: flex; + flex-direction: column; + gap: 2px; + min-width: 0; + flex: 1; + } + + .lsp-status-title { + font-size: 0.75rem; + font-weight: 600; + color: var(--primary-text-color); + text-transform: uppercase; + letter-spacing: 0.5px; + opacity: 0.8; + } + + .lsp-status-message { + font-size: 0.85rem; + font-weight: 400; + color: var(--secondary-text-color); + line-height: 1.3; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 60vw; + } + + .lsp-status-progress { + display: flex; + align-items: center; + gap: 8px; + margin-left: auto; + flex-shrink: 0; + } + + .lsp-status-progress-text { + font-size: 0.8rem; + font-weight: 500; + color: var(--active-color); + min-width: 36px; + text-align: right; + } + + .lsp-status-close { + position: absolute; + top: 50%; + right: 6px; + transform: translateY(-50%); + width: 24px; + height: 24px; + font-size: 0.9rem; + display: flex; + align-items: center; + justify-content: center; + background: transparent; + border: none; + color: var(--secondary-text-color); + cursor: pointer; + border-radius: 4px; + transition: all 0.2s ease; + padding: 0; + + &:hover, + &:active { + background-color: rgba(0, 0, 0, 0.1); + color: var(--primary-text-color); + } + } + + // Status type colors + &.info { + .lsp-status-icon { + color: var(--active-color); + } + } + + &.success { + .lsp-status-icon { + color: #48c158; + } + + .lsp-status-progress-text { + color: #48c158; + } + } + + &.warning { + .lsp-status-icon { + color: #f59e0b; + } + } + + &.error { + .lsp-status-icon { + color: var(--error-text-color); + } + } +} + +// Adjust position when quicktools has different heights +wc-page[footer-height="1"] #lsp-status-bar { + bottom: 50px; +} + +wc-page[footer-height="2"] #lsp-status-bar { + bottom: 90px; +} + +wc-page[footer-height="3"] #lsp-status-bar { + bottom: 130px; +} + +// When quicktools is hidden +wc-page:not([footer-height]) #lsp-status-bar { + bottom: 10px; +} + +@keyframes lspStatusSlideUp { + from { + transform: translateY(100%); + opacity: 0; + } + + to { + transform: translateY(0); + opacity: 1; + } +} + +@keyframes lspStatusSlideDown { + from { + transform: translateY(0); + opacity: 1; + } + + to { + transform: translateY(100%); + opacity: 0; + } +} + +@keyframes lspSpinSlow { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(360deg); + } +} \ No newline at end of file diff --git a/src/components/referencesPanel/index.js b/src/components/referencesPanel/index.js new file mode 100644 index 000000000..4e301fbd2 --- /dev/null +++ b/src/components/referencesPanel/index.js @@ -0,0 +1,336 @@ +import "./styles.scss"; +import actionStack from "lib/actionStack"; +import { openReferencesTab } from "./referencesTab"; +import { + buildFlatList, + clearHighlightCache, + createReferenceItem, + getReferencesStats, + navigateToReference, + sanitize, +} from "./utils"; + +let currentPanel = null; + +function createReferencesPanel() { + const state = { + visible: false, + expanded: false, + loading: true, + symbolName: "", + references: [], + collapsedFiles: new Set(), + flatItems: [], + }; + + const $mask = ; + const $panel =
      ; + const $dragHandle =
      ; + const $title =
      ; + const $subtitle = ; + const $content =
      ; + const $refList =
      ; + + const $openTabBtn = ( + + ); + + const $closeBtn = ( + + ); + + const $header = ( +
      +
      + {$title} + {$subtitle} +
      +
      + {$openTabBtn} + {$closeBtn} +
      +
      + ); + + $panel.append($dragHandle, $header, $content); + $mask.onclick = hide; + + let startY = 0; + let currentY = 0; + let isDragging = false; + + $dragHandle.ontouchstart = onDragStart; + $dragHandle.onmousedown = onDragStart; + + function onDragStart(e) { + isDragging = true; + startY = e.touches ? e.touches[0].clientY : e.clientY; + currentY = startY; + $panel.style.transition = "none"; + + document.addEventListener("touchmove", onDragMove, { passive: false }); + document.addEventListener("mousemove", onDragMove); + document.addEventListener("touchend", onDragEnd); + document.addEventListener("mouseup", onDragEnd); + } + + function onDragMove(e) { + if (!isDragging) return; + e.preventDefault(); + currentY = e.touches ? e.touches[0].clientY : e.clientY; + const deltaY = currentY - startY; + + if (deltaY > 0) { + $panel.style.transform = `translateY(${deltaY}px)`; + } else if (!state.expanded) { + const expansion = Math.min(Math.abs(deltaY), 100); + $panel.style.maxHeight = `${60 + (expansion / 100) * 25}vh`; + } + } + + function onDragEnd() { + isDragging = false; + document.removeEventListener("touchmove", onDragMove); + document.removeEventListener("mousemove", onDragMove); + document.removeEventListener("touchend", onDragEnd); + document.removeEventListener("mouseup", onDragEnd); + + $panel.style.transition = ""; + const deltaY = currentY - startY; + + if (deltaY > 100) { + hide(); + } else if (deltaY < -50 && !state.expanded) { + state.expanded = true; + $panel.classList.add("expanded"); + $panel.style.transform = ""; + $panel.style.maxHeight = ""; + } else { + $panel.style.transform = ""; + $panel.style.maxHeight = ""; + } + } + + function setTitle(symbolName) { + $title.innerHTML = ""; + $title.append( + , + References to , + {sanitize(symbolName)}, + ); + } + + function setSubtitle(text) { + $subtitle.textContent = text; + } + + function openInTab() { + const refs = state.references; + const sym = state.symbolName; + hide(); + openReferencesTab({ + symbolName: sym, + references: refs, + }); + } + + function toggleFile(uri) { + if (state.collapsedFiles.has(uri)) { + state.collapsedFiles.delete(uri); + } else { + state.collapsedFiles.add(uri); + } + renderReferencesList(); + } + + function renderLoading() { + $content.innerHTML = ""; + $content.append( +
      +
      + Finding references... +
      , + ); + } + + function renderEmpty() { + $content.innerHTML = ""; + $content.append( +
      + + No references found +
      , + ); + } + + function renderReferencesList() { + $refList.innerHTML = ""; + + const visibleItems = state.flatItems.filter((item) => { + if (item.type === "file-header") return true; + return !state.collapsedFiles.has(item.uri); + }); + + const fragment = document.createDocumentFragment(); + + for (const item of visibleItems) { + const $el = createReferenceItem(item, { + collapsedFiles: state.collapsedFiles, + onToggleFile: toggleFile, + onNavigate: (ref) => { + hide(); + navigateToReference(ref); + }, + }); + fragment.appendChild($el); + } + + $refList.appendChild(fragment); + $content.innerHTML = ""; + $content.appendChild($refList); + } + + async function renderReferences() { + $content.innerHTML = ""; + $content.append( +
      +
      + Highlighting code... +
      , + ); + + const stats = getReferencesStats(state.references); + setSubtitle(stats.text); + + state.flatItems = await buildFlatList(state.references, state.symbolName); + + renderReferencesList(); + } + + function show(options = {}) { + if (currentPanel && currentPanel !== panelInstance) { + currentPanel.hide(); + } + currentPanel = panelInstance; + + state.symbolName = options.symbolName || ""; + state.references = []; + state.loading = true; + state.expanded = false; + state.collapsedFiles.clear(); + state.flatItems = []; + + clearHighlightCache(); + + setTitle(state.symbolName); + setSubtitle("Searching..."); + renderLoading(); + + document.body.append($mask, $panel); + + requestAnimationFrame(() => { + $mask.classList.add("visible"); + $panel.classList.add("visible"); + $panel.classList.remove("expanded"); + }); + + state.visible = true; + + actionStack.push({ + id: "references-panel", + action: hide, + }); + } + + function hide() { + if (!state.visible) return; + state.visible = false; + + $mask.classList.remove("visible"); + $panel.classList.remove("visible"); + + actionStack.remove("references-panel"); + + setTimeout(() => { + $mask.remove(); + $panel.remove(); + }, 250); + + if (currentPanel === panelInstance) { + currentPanel = null; + } + } + + function setReferences(references) { + state.loading = false; + state.references = references || []; + + if (state.references.length === 0) { + setSubtitle("No references found"); + renderEmpty(); + } else { + renderReferences(); + } + } + + function setError(message) { + state.loading = false; + setSubtitle("Error"); + $content.innerHTML = ""; + $content.append( +
      + + {sanitize(message)} +
      , + ); + } + + const panelInstance = { + show, + hide, + setReferences, + setError, + get visible() { + return state.visible; + }, + }; + + return panelInstance; +} + +let panelSingleton = null; + +function getPanel() { + if (!panelSingleton) { + panelSingleton = createReferencesPanel(); + } + return panelSingleton; +} + +export function showReferencesPanel(options) { + const panel = getPanel(); + panel.show(options); + return panel; +} + +export function hideReferencesPanel() { + const panel = getPanel(); + panel.hide(); +} + +export { openReferencesTab }; + +export default { + show: showReferencesPanel, + hide: hideReferencesPanel, + getPanel, + openReferencesTab, +}; diff --git a/src/components/referencesPanel/referencesTab.js b/src/components/referencesPanel/referencesTab.js new file mode 100644 index 000000000..457254452 --- /dev/null +++ b/src/components/referencesPanel/referencesTab.js @@ -0,0 +1,149 @@ +import EditorFile from "lib/editorFile"; +import { + buildFlatList, + clearHighlightCache, + createReferenceItem, + getReferencesStats, + navigateToReference, + sanitize, +} from "./utils"; + +export function createReferencesTab(options = {}) { + const { + symbolName = "", + references = [], + flatItems: prebuiltItems = null, + } = options; + const collapsedFiles = new Set(); + let flatItems = prebuiltItems || []; + let isInitialized = false; + + const $container =
      ; + const $listContainer =
      ; + const $refList =
      ; + + const stats = getReferencesStats(references); + + const $header = ( +
      +
      + + + References to {sanitize(symbolName)} + + {stats.text} +
      +
      + ); + + const $loadingState = ( +
      +
      + Highlighting code... +
      + ); + + $container.append($header, $listContainer); + + function getVisibleItems() { + return flatItems.filter((item) => { + if (item.type === "file-header") return true; + return !collapsedFiles.has(item.uri); + }); + } + + function toggleFile(uri) { + if (collapsedFiles.has(uri)) { + collapsedFiles.delete(uri); + } else { + collapsedFiles.add(uri); + } + renderList(); + } + + function renderList() { + $refList.innerHTML = ""; + + const visibleItems = getVisibleItems(); + const fragment = document.createDocumentFragment(); + + for (const item of visibleItems) { + const $el = createReferenceItem(item, { + collapsedFiles, + onToggleFile: toggleFile, + onNavigate: navigateToReference, + }); + fragment.appendChild($el); + } + + $refList.appendChild(fragment); + } + + async function init() { + if (isInitialized) return; + isInitialized = true; + + if (!prebuiltItems || prebuiltItems.length === 0) { + $listContainer.appendChild($loadingState); + flatItems = await buildFlatList(references, symbolName); + $loadingState.remove(); + } + + renderList(); + $listContainer.appendChild($refList); + } + + function destroy() { + $refList.innerHTML = ""; + } + + return { + container: $container, + init, + destroy, + get symbolName() { + return symbolName; + }, + get referenceCount() { + return references.length; + }, + }; +} + +export async function openReferencesTab(options = {}) { + const { symbolName = "", references = [] } = options; + + const tabName = `Refs: ${symbolName}`; + const existingFile = editorManager.getFile(tabName, "filename"); + if (existingFile) { + existingFile.makeActive(); + return existingFile; + } + + clearHighlightCache(); + const flatItems = await buildFlatList(references, symbolName); + const stats = getReferencesStats(references); + + const tabView = createReferencesTab({ symbolName, references, flatItems }); + + const file = new EditorFile(tabName, { + type: "terminal", + content: tabView.container, + tabIcon: "icon linkinsert_link", + render: true, + }); + + file.setCustomTitle(() => stats.text); + tabView.init(); + + file.on("close", () => { + tabView.destroy(); + }); + + return file; +} + +export default { + createReferencesTab, + openReferencesTab, +}; diff --git a/src/components/referencesPanel/styles.scss b/src/components/referencesPanel/styles.scss new file mode 100644 index 000000000..b2c8a124b --- /dev/null +++ b/src/components/referencesPanel/styles.scss @@ -0,0 +1,380 @@ +@use "../../styles/mixins.scss"; + +.references-panel-mask { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.4); + z-index: 100; + opacity: 0; + transition: opacity 200ms ease-out; + pointer-events: none; + + &.visible { + opacity: 1; + pointer-events: auto; + } +} + +.references-panel { + position: fixed; + left: 0; + right: 0; + bottom: 0; + z-index: 101; + background-color: var(--popup-background-color); + border-top-left-radius: 12px; + border-top-right-radius: 12px; + box-shadow: 0 -4px 20px var(--box-shadow-color); + transform: translateY(100%); + transition: transform 250ms ease-out, max-height 200ms ease-out; + display: flex; + flex-direction: column; + max-height: 60vh; + overflow: hidden; + + &.visible { + transform: translateY(0); + } + + &.expanded { + max-height: 85vh; + } + + .drag-handle { + display: flex; + justify-content: center; + align-items: center; + padding: 8px 0 4px 0; + cursor: grab; + flex-shrink: 0; + + &::after { + content: ""; + width: 36px; + height: 4px; + background-color: var(--border-color); + border-radius: 2px; + } + + &:active { + cursor: grabbing; + } + } + + .panel-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 8px 12px 12px 16px; + border-bottom: 1px solid var(--border-color); + min-height: 44px; + flex-shrink: 0; + + .header-content { + display: flex; + flex-direction: column; + gap: 2px; + flex: 1; + min-width: 0; + + .header-title { + display: flex; + align-items: center; + gap: 8px; + font-size: 1rem; + font-weight: 600; + color: var(--primary-text-color); + + .icon { + font-size: 1.1em; + opacity: 0.7; + } + + .symbol-name { + font-family: monospace; + background-color: var(--secondary-color); + padding: 2px 8px; + border-radius: 4px; + max-width: 160px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + } + + .header-subtitle { + font-size: 0.85rem; + color: var(--secondary-text-color); + opacity: 0.8; + } + } + + .header-actions { + display: flex; + gap: 4px; + flex-shrink: 0; + } + + .action-btn { + width: 36px; + height: 36px; + display: flex; + align-items: center; + justify-content: center; + border: none; + background: transparent; + color: var(--secondary-text-color); + border-radius: 50%; + cursor: pointer; + + &:active { + background-color: var(--active-icon-color); + } + + .icon { + font-size: 1.2em; + } + + &.open-tab-btn { + color: var(--active-color); + } + } + } + + .panel-content { + flex: 1; + overflow-y: auto; + overflow-x: hidden; + -webkit-overflow-scrolling: touch; + overscroll-behavior: contain; + + &::-webkit-scrollbar { + width: var(--scrollbar-width, 4px); + } + + &::-webkit-scrollbar-track { + background: transparent; + } + + &::-webkit-scrollbar-thumb { + background: var(--scrollbar-color, rgba(0, 0, 0, 0.333)); + border-radius: calc(var(--scrollbar-width, 4px) / 2); + } + } + + .loading-state { + display: flex; + align-items: center; + justify-content: center; + padding: 32px 16px; + color: var(--secondary-text-color); + gap: 12px; + + .loader { + @include mixins.circular-loader(24px); + } + } + + .empty-state { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 32px 16px; + color: var(--secondary-text-color); + text-align: center; + + .icon { + font-size: 2rem; + margin-bottom: 8px; + opacity: 0.5; + } + } +} + +.ref-file-header, +.ref-item { + box-sizing: border-box; + display: flex; + align-items: center; + will-change: transform; +} + +.ref-file-header { + gap: 8px; + padding: 0 16px; + cursor: pointer; + user-select: none; + background-color: color-mix(in srgb, var(--secondary-color) 50%, var(--primary-color)); + + &:active { + background-color: var(--active-icon-color); + } + + .chevron { + font-size: 1rem; + color: var(--secondary-text-color); + transition: transform 150ms ease; + width: 18px; + text-align: center; + flex-shrink: 0; + } + + &.collapsed .chevron { + transform: rotate(-90deg); + } + + .file-icon { + font-size: 1rem; + flex-shrink: 0; + } + + .file-name { + flex: 1; + font-size: 0.9rem; + font-weight: 500; + color: var(--primary-text-color); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + min-width: 0; + } + + .ref-count { + font-size: 0.75rem; + color: var(--secondary-text-color); + background-color: var(--popup-background-color); + padding: 2px 8px; + border-radius: 10px; + flex-shrink: 0; + } +} + +.ref-item { + gap: 10px; + padding: 0 16px 0 36px; + cursor: pointer; + + &:active { + background-color: var(--active-icon-color); + } + + .line-number { + font-size: 0.75rem; + color: var(--secondary-text-color); + min-width: 32px; + text-align: right; + font-family: monospace; + flex-shrink: 0; + opacity: 0.7; + } + + .ref-preview { + flex: 1; + font-size: 0.85rem; + font-family: monospace; + color: var(--primary-text-color); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + line-height: 1.4; + min-width: 0; + direction: rtl; + text-align: left; + + span { + direction: ltr; + unicode-bidi: bidi-override; + } + + .symbol-match { + background-color: color-mix(in srgb, var(--active-color) 30%, transparent); + border-radius: 2px; + padding: 0 2px; + } + } +} + +.references-tab-container { + display: flex; + flex-direction: column; + height: 100%; + background-color: var(--primary-color); + color: var(--primary-text-color); + + .references-tab-header { + padding: 16px; + border-bottom: 1px solid var(--border-color); + background-color: var(--secondary-color); + flex-shrink: 0; + + .header-info { + display: flex; + align-items: center; + gap: 10px; + flex-wrap: wrap; + + .icon { + font-size: 1.2em; + opacity: 0.7; + } + + .header-title { + font-size: 1rem; + font-weight: 600; + color: var(--primary-text-color); + + code { + font-family: monospace; + background-color: var(--popup-background-color); + padding: 2px 8px; + border-radius: 4px; + margin-left: 4px; + } + } + + .header-stats { + font-size: 0.85rem; + color: var(--secondary-text-color); + margin-left: auto; + } + } + } + + .references-list-container { + flex: 1; + overflow-y: auto; + overflow-x: hidden; + -webkit-overflow-scrolling: touch; + overscroll-behavior: contain; + + &::-webkit-scrollbar { + width: var(--scrollbar-width, 4px); + } + + &::-webkit-scrollbar-track { + background: transparent; + } + + &::-webkit-scrollbar-thumb { + background: var(--scrollbar-color, rgba(0, 0, 0, 0.333)); + border-radius: calc(var(--scrollbar-width, 4px) / 2); + } + + .loading-state { + display: flex; + align-items: center; + justify-content: center; + padding: 32px 16px; + color: var(--secondary-text-color); + gap: 12px; + + .loader { + @include mixins.circular-loader(24px); + } + } + } +} \ No newline at end of file diff --git a/src/components/referencesPanel/utils.js b/src/components/referencesPanel/utils.js new file mode 100644 index 000000000..828cd0d37 --- /dev/null +++ b/src/components/referencesPanel/utils.js @@ -0,0 +1,145 @@ +import { EditorView } from "@codemirror/view"; +import Sidebar from "components/sidebar"; +import DOMPurify from "dompurify"; +import openFile from "lib/openFile"; +import { + clearHighlightCache, + highlightLine, + sanitize, +} from "utils/codeHighlight"; +import helpers from "utils/helpers"; + +export { clearHighlightCache, sanitize }; + +export function getFilename(uri) { + if (!uri) return ""; + try { + const decoded = decodeURIComponent(uri); + const parts = decoded.split("/").filter(Boolean); + return parts.pop() || ""; + } catch { + const parts = uri.split("/").filter(Boolean); + return parts.pop() || ""; + } +} + +export function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} + +export function groupReferencesByFile(references) { + const grouped = {}; + for (const ref of references) { + if (!grouped[ref.uri]) { + grouped[ref.uri] = []; + } + grouped[ref.uri].push(ref); + } + return grouped; +} + +export async function buildFlatList(references, symbolName) { + const grouped = groupReferencesByFile(references); + + const items = []; + for (const [uri, fileRefs] of Object.entries(grouped)) { + fileRefs.sort((a, b) => a.range.start.line - b.range.start.line); + + items.push({ + type: "file-header", + uri, + fileName: getFilename(uri), + count: fileRefs.length, + }); + + for (const ref of fileRefs) { + const highlightedText = await highlightLine( + ref.lineText || "", + uri, + symbolName, + ); + + items.push({ + type: "reference", + uri, + ref, + line: ref.range.start.line + 1, + lineText: ref.lineText || "", + highlightedText, + symbol: symbolName, + }); + } + } + return items; +} + +export function createReferenceItem(item, options = {}) { + const { collapsedFiles, onToggleFile, onNavigate } = options; + + if (item.type === "file-header") { + const isCollapsed = collapsedFiles?.has(item.uri); + const iconClass = helpers.getIconForFile(item.fileName); + + const $el = ( +
      onToggleFile?.(item.uri)} + > + + + {sanitize(item.fileName)} + {item.count} +
      + ); + + return $el; + } + + const $el = ( +
      onNavigate?.(item.ref)}> + {item.line} + +
      + ); + + $el.get(".ref-preview").innerHTML = DOMPurify.sanitize(item.highlightedText); + + return $el; +} + +export async function navigateToReference(ref) { + Sidebar.hide(); + + try { + await openFile(ref.uri, { render: true }); + const { editor } = editorManager; + if (!editor) return; + + const doc = editor.state.doc; + const startLine = doc.line(ref.range.start.line + 1); + const endLine = doc.line(ref.range.end.line + 1); + const from = Math.min( + startLine.from + ref.range.start.character, + startLine.to, + ); + const to = Math.min(endLine.from + ref.range.end.character, endLine.to); + + editor.dispatch({ + selection: { anchor: from, head: to }, + effects: EditorView.scrollIntoView(from, { y: "center" }), + }); + editor.focus(); + } catch (error) { + console.error("Failed to navigate to reference:", error); + } +} + +export function getReferencesStats(references) { + const fileCount = new Set(references.map((r) => r.uri)).size; + const refCount = references.length; + return { + fileCount, + refCount, + text: `${refCount} reference${refCount !== 1 ? "s" : ""} in ${fileCount} file${fileCount !== 1 ? "s" : ""}`, + }; +} diff --git a/src/components/searchbar/index.js b/src/components/searchbar/index.js index a0b195358..1ace29954 100644 --- a/src/components/searchbar/index.js +++ b/src/components/searchbar/index.js @@ -49,8 +49,6 @@ function searchBar($list, setHide, onhideCb, searchFunction) { function hide() { actionStack.remove("searchbar"); - - if (!$list.parentElement) return; if (typeof onhideCb === "function") onhideCb(); $list.content = children; @@ -70,6 +68,12 @@ function searchBar($list, setHide, onhideCb, searchFunction) { */ async function searchNow() { const val = $searchInput.value.toLowerCase(); + + if (!val) { + $list.content = children; + return; + } + let result; if (searchFunction) { @@ -89,7 +93,7 @@ function searchBar($list, setHide, onhideCb, searchFunction) { } $list.textContent = ""; - $list.append(...result); + $list.append(...buildSearchContent(result, val)); } /** @@ -103,6 +107,87 @@ function searchBar($list, setHide, onhideCb, searchFunction) { return text.match(val, "i"); }); } + + /** + * Keep grouped settings search results in section cards instead of flattening them. + * @param {HTMLElement[]} result + * @param {string} val + * @returns {HTMLElement[]} + */ + function buildSearchContent(result, val) { + if (!val || !result.length) return result; + + const groupedSections = []; + const sectionIndexByLabel = new Map(); + let hasGroups = false; + + result.forEach(($item) => { + const label = $item.dataset.searchGroup; + if (!label) { + groupedSections.push({ + items: [$item], + type: "ungrouped", + }); + return; + } + + hasGroups = true; + const existingSectionIndex = sectionIndexByLabel.get(label); + if (existingSectionIndex !== undefined) { + groupedSections[existingSectionIndex].items.push($item); + return; + } + + sectionIndexByLabel.set(label, groupedSections.length); + groupedSections.push({ + items: [$item], + label, + type: "group", + }); + }); + + if (!hasGroups) return result.map(cloneSearchItem); + + const countLabel = `${result.length} ${ + result.length === 1 + ? strings["search result label singular"] + : strings["search result label plural"] + }`; + const content = [ +
      {countLabel}
      , + ]; + + groupedSections.forEach((section) => { + if (section.type === "ungrouped") { + content.push(...section.items.map(cloneSearchItem)); + return; + } + + content.push( +
      +
      {section.label}
      +
      + {section.items.map(cloneSearchItem)} +
      +
      , + ); + }); + + return content; + } + + /** + * Render search results without moving the original list items out of their groups. + * @param {HTMLElement} $item + * @returns {HTMLElement} + */ + function cloneSearchItem($item) { + const $clone = $item.cloneNode(true); + $clone.addEventListener("click", () => { + $item.click(); + }); + return $clone; + } } export default searchBar; diff --git a/src/components/settingsPage.js b/src/components/settingsPage.js index 9134597d0..5048fb5a4 100644 --- a/src/components/settingsPage.js +++ b/src/components/settingsPage.js @@ -1,10 +1,11 @@ -import alert from "dialogs/alert"; +import "./settingsPage.scss"; import colorPicker from "dialogs/color"; import prompt from "dialogs/prompt"; import select from "dialogs/select"; import Ref from "html-tag-js/ref"; import actionStack from "lib/actionStack"; import appSettings from "lib/settings"; +import { hideAd } from "lib/startAd"; import FileBrowser from "pages/fileBrowser"; import { isValidColor } from "utils/color/regex"; import helpers from "utils/helpers"; @@ -24,6 +25,13 @@ import searchBar from "./searchbar"; /** * @typedef {Object} SettingsPageOptions * @property {boolean} [preserveOrder] - If true, items are listed in the order provided instead of alphabetical + * @property {string} [pageClassName] - Extra classes to apply to the page element + * @property {string} [listClassName] - Extra classes to apply to the list element + * @property {string} [defaultSearchGroup] - Default search result group label for this page + * @property {boolean} [infoAsDescription] - Override subtitle behavior; defaults to true when valueInTail is enabled + * @property {boolean} [valueInTail] - Render item.value as a trailing control/value instead of subtitle + * @property {boolean} [groupByDefault] - Wrap uncategorized settings in a grouped section shell + * @property {"top"|"bottom"} [notePosition] - Render note before or after the settings list */ /** @@ -45,29 +53,38 @@ export default function settingsPage( let hideSearchBar = () => {}; const $page = Page(title); $page.id = "settings"; + + if (options.pageClassName) { + $page.classList.add(...options.pageClassName.split(" ").filter(Boolean)); + } + /**@type {HTMLDivElement} */ const $list =
      ; - /**@type {ListItem} */ - let note; - settings = settings.filter((setting) => { - if ("note" in setting) { - note = setting.note; - return false; - } + if (options.listClassName) { + $list.classList.add(...options.listClassName.split(" ").filter(Boolean)); + } - if (!setting.info) { - Object.defineProperty(setting, "info", { - get() { - return strings[`info-${this.key.toLocaleLowerCase()}`]; - }, - }); - } + const normalized = normalizeSettings(settings); + settings = normalized.settings; - return true; + /** DISCLAIMER: do not assign hideSearchBar directly because it can change */ + $page.ondisconnect = () => hideSearchBar(); + $page.onhide = () => { + hideAd(); + actionStack.remove(title); + }; + + const state = listItems($list, settings, callback, { + defaultSearchGroup: title, + ...options, }); + let children = [...state.children]; + $page.body = $list; + + const searchableItems = state.searchItems; - if (type === "united" || (type === "separate" && settings.length > 5)) { + if (shouldEnableSearch(type, settings.length)) { const $search = ; $search.onclick = () => searchBar( @@ -75,52 +92,24 @@ export default function settingsPage( (hide) => { hideSearchBar = hide; }, - type === "united" - ? () => { - Object.values(appSettings.uiSettings).forEach((page) => { - page.restoreList(); - }); - } - : null, - type === "united" - ? (key) => { - const $items = []; - Object.values(appSettings.uiSettings).forEach((page) => { - $items.push(...page.search(key)); - }); - return $items; - } - : null, + type === "united" ? restoreAllSettingsPages : null, + createSearchHandler(type, state.searchItems), ); $page.header.append($search); } - /** DISCLAIMER: do not assign hideSearchBar directly because it can change */ - $page.ondisconnect = () => hideSearchBar(); - $page.onhide = () => { - helpers.hideAd(); - actionStack.remove(title); - }; - - listItems($list, settings, callback, options); - $page.body = $list; + if (normalized.note) { + const $note = createNote(normalized.note); - /**@type {HTMLElement[]} */ - const children = [...$list.children]; - - if (note) { - $page.append( -
      -
      - - {strings.info} -
      -

      -
      , - ); + if (options.notePosition === "top") { + children.unshift($note); + } else { + children.push($note); + } } + $list.content = children; $page.append(
      ); return { @@ -156,7 +145,7 @@ export default function settingsPage( * @param {string} key */ search(key) { - return children.filter((child) => { + return searchableItems.filter((child) => { const text = child.textContent.toLowerCase(); return text.match(key, "i"); }); @@ -186,7 +175,10 @@ export default function settingsPage( * @property {string} [info] * @property {string} [value] * @property {(value:string)=>string} [valueText] + * @property {string} [category] + * @property {string} [searchGroup] * @property {boolean} [checkbox] + * @property {boolean} [chevron] * @property {string} [prompt] * @property {string} [promptType] * @property {import('dialogs/prompt').PromptOptions} [promptOptions] @@ -200,7 +192,11 @@ export default function settingsPage( * @param {SettingsPageOptions} [options={}] */ function listItems($list, items, callback, options = {}) { - const $items = []; + const renderedItems = []; + const $searchItems = []; + const useInfoAsDescription = + options.infoAsDescription ?? Boolean(options.valueInTail); + const itemByKey = new Map(items.map((item) => [item.key, item])); // sort settings by text before rendering (unless preserveOrder is true) if (!options.preserveOrder) { @@ -210,63 +206,20 @@ function listItems($list, items, callback, options = {}) { }); } items.forEach((item) => { - const $setting = Ref(); - const $settingName = Ref(); - /**@type {HTMLDivElement} */ - const $item = ( -
      - -
      -
      - {item.text?.capitalize?.(0) ?? item.text} -
      -
      -
      - ); - - let $checkbox, $valueText; - - if (item.info) { - $settingName.append( - { - alert(strings.info, item.info); - }} - >, - ); - } - - if (item.checkbox !== undefined || typeof item.value === "boolean") { - $checkbox = Checkbox("", item.checkbox || item.value); - $item.appendChild($checkbox); - $item.style.paddingRight = "10px"; - } else if (item.value !== undefined) { - $valueText = ; - setValueText($valueText, item.value, item.valueText?.bind(item)); - $setting.append($valueText); - setColor($item, item.value); - } - - if (Number.isInteger(item.index)) { - $items.splice(item.index, 0, $item); - } else { - $items.push($item); - } - + const $item = createListItemElement(item, options, useInfoAsDescription); + insertRenderedItem(renderedItems, item, $item); $item.addEventListener("click", onclick); + $searchItems.push($item); }); - $list.content = $items; + const topLevelChildren = buildListContent(renderedItems, options); + + $list.content = topLevelChildren; + + return { + children: topLevelChildren, + searchItems: $searchItems, + }; /** * Click handler for $list @@ -274,58 +227,450 @@ function listItems($list, items, callback, options = {}) { * @param {MouseEvent} e */ async function onclick(e) { - const $target = e.target; - const { key } = e.target.dataset; + const $target = e.currentTarget; + const { key } = $target.dataset; - const item = items.find((item) => item.key === key); + const item = itemByKey.get(key); if (!item) return; + const result = await resolveItemInteraction(item, $target); + if (result.shouldCallCallback === false) return; + if (!result.shouldUpdateValue) + return callback.call($target, key, item.value); - const { - select: options, - prompt: promptText, - color: selectColor, - checkbox, - file, - folder, - link, - } = item; - const { text, value, valueText } = item; - const { promptType, promptOptions } = item; - - const $valueText = $target.get(".value"); - const $checkbox = $target.get(".input-checkbox"); - let res; - - try { - if (options) { - res = await select(text, options, { - default: value, - }); - } else if (checkbox !== undefined) { - $checkbox.toggle(); - res = $checkbox.checked; - } else if (promptText) { - res = await prompt(promptText, value, promptType, promptOptions); - if (res === null) return; - } else if (file || folder) { - const mode = file ? "file" : "folder"; - const { url } = await FileBrowser(mode); - res = url; - } else if (selectColor) { - res = await colorPicker(value); - } else if (link) { - system.openInBrowser(link); - return; + item.value = result.value; + updateItemValueDisplay($target, item, options, useInfoAsDescription); + + callback.call($target, key, item.value); + } +} + +function normalizeSettings(settings) { + /** @type {string | undefined} */ + let note; + const normalizedSettings = settings.filter((setting) => { + if ("note" in setting) { + note = setting.note; + return false; + } + + return true; + }); + + return { + note, + settings: normalizedSettings, + }; +} + +function shouldEnableSearch(type, settingsCount) { + return type === "united" || (type === "separate" && settingsCount > 5); +} + +function restoreAllSettingsPages() { + Object.values(appSettings.uiSettings).forEach((page) => { + page.restoreList(); + }); +} + +function createSearchHandler(type, searchItems) { + return (key) => { + if (type === "united") { + const $items = []; + Object.values(appSettings.uiSettings).forEach((page) => { + $items.push(...page.search(key)); + }); + return $items; + } + + return searchItems.filter((item) => { + const text = item.textContent.toLowerCase(); + return text.match(key, "i"); + }); + }; +} + +function createNote(note) { + return ( +
      +
      + + {strings.info} +
      +

      +
      + ); +} + +function createListItemElement(item, options, useInfoAsDescription) { + const $setting = Ref(); + const $tail = Ref(); + const isCheckboxItem = isBooleanSetting(item); + const state = getItemDisplayState(item, useInfoAsDescription); + /**@type {HTMLDivElement} */ + const $item = ( +
      + +
      +
      {item.text?.capitalize?.(0) ?? item.text}
      +
      +
      +
      + ); + const searchGroup = + item.searchGroup || item.category || options.defaultSearchGroup; + + if (searchGroup) { + $item.dataset.searchGroup = searchGroup; + } + + if (isCheckboxItem) { + const $checkbox = Checkbox("", item.checkbox || item.value); + $tail.el.appendChild($checkbox); + } + + if (state.hasSubtitle) { + const $valueText = createSubtitleElement(item, state); + $setting.append($valueText); + $item.classList.add("has-subtitle"); + if (!state.showInfoAsSubtitle) { + setColor($item, item.value); + } + } else { + $item.classList.add("compact"); + } + + if (shouldShowTrailingValue(item, options)) { + $item.classList.add("has-tail-value"); + if (item.select) { + $item.classList.add("has-tail-select"); + } + $tail.el.append(createTrailingValueDisplay(item)); + } + + if (shouldShowTailChevron(item)) { + $tail.el.append( + , + ); + } + + if (!$tail.el.children.length) { + $tail.el.remove(); + } + + return $item; +} + +function isBooleanSetting(item) { + return item.checkbox !== undefined || typeof item.value === "boolean"; +} + +function getItemDisplayState(item, useInfoAsDescription) { + const isCheckboxItem = isBooleanSetting(item); + const subtitle = isCheckboxItem + ? item.info + : getSubtitleText(item, useInfoAsDescription); + const showInfoAsSubtitle = + isCheckboxItem || + useInfoAsDescription || + (item.value === undefined && item.info); + + return { + subtitle, + showInfoAsSubtitle, + hasSubtitle: subtitle !== undefined && subtitle !== null && subtitle !== "", + }; +} + +function createSubtitleElement(item, state) { + const $valueText = ; + setValueText( + $valueText, + state.subtitle, + state.showInfoAsSubtitle ? null : item.valueText?.bind(item), + ); + + if (state.showInfoAsSubtitle) { + $valueText.classList.add("setting-info"); + } + + return $valueText; +} + +function shouldShowTrailingValue(item, options) { + return ( + options.valueInTail && + item.value !== undefined && + item.checkbox === undefined && + typeof item.value !== "boolean" + ); +} + +function createTrailingValueDisplay(item) { + const $trailingValueText = ( + + ); + setValueText($trailingValueText, item.value, item.valueText?.bind(item)); + + return ( +
      + {$trailingValueText} + {item.select ? ( + + ) : null} +
      + ); +} + +function shouldShowTailChevron(item) { + return ( + item.chevron || + (!item.select && + Boolean(item.prompt || item.file || item.folder || item.link)) + ); +} + +function insertRenderedItem(renderedItems, item, $item) { + if (Number.isInteger(item.index)) { + renderedItems.splice(item.index, 0, { item, $item }); + return; + } + + renderedItems.push({ item, $item }); +} + +function buildListContent(renderedItems, options) { + const $content = []; + /** @type {HTMLElement | null} */ + let $currentSectionCard = null; + let currentCategory = null; + + renderedItems.forEach(({ item, $item }) => { + const category = + item.category?.trim() || (options.groupByDefault ? "__default__" : ""); + + if (!category) { + currentCategory = null; + $currentSectionCard = null; + $content.push($item); + return; + } + + if (currentCategory !== category || !$currentSectionCard) { + currentCategory = category; + const section = createSectionElements(category); + $currentSectionCard = section.$card; + $content.push(section.$section); + } + + $currentSectionCard.append($item); + }); + + return $content.length ? $content : renderedItems.map(({ $item }) => $item); +} + +function createSectionElements(category) { + const shouldShowLabel = category !== "__default__"; + const $label = shouldShowLabel ? ( +
      {category}
      + ) : null; + const $card =
      ; + return { + $card, + $section: ( +
      + {$label} + {$card} +
      + ), + }; +} + +async function resolveItemInteraction(item, $target) { + const { + select: selectOptions, + prompt: promptText, + color: selectColor, + checkbox, + file, + folder, + link, + text, + value, + promptType, + promptOptions, + } = item; + + try { + if (selectOptions) { + const selectedValue = await select(text, selectOptions, { + default: value, + }); + + return { + shouldUpdateValue: selectedValue !== undefined, + value: selectedValue, + }; + } + + if (checkbox !== undefined) { + const $checkbox = $target.get(".input-checkbox"); + $checkbox.toggle(); + return { + shouldUpdateValue: true, + value: $checkbox.checked, + }; + } + + if (promptText) { + const promptedValue = await prompt( + promptText, + value, + promptType, + promptOptions, + ); + if (promptedValue === null) { + return { + shouldUpdateValue: false, + shouldCallCallback: false, + }; } - } catch (error) { - window.log("error", error); + + return { + shouldUpdateValue: true, + value: promptedValue, + }; } - item.value = res; - setValueText($valueText, res, valueText?.bind(item)); - setColor($target, res); - callback.call($target, key, item.value); + if (file || folder) { + const mode = file ? "file" : "folder"; + const { url } = await FileBrowser(mode); + return { + shouldUpdateValue: true, + value: url, + }; + } + + if (selectColor) { + const color = await colorPicker(value); + return { + shouldUpdateValue: true, + value: color, + }; + } + + if (link) { + system.openInBrowser(link); + return { + shouldUpdateValue: false, + shouldCallCallback: false, + }; + } + } catch (error) { + window.log("error", error); } + + return { + shouldUpdateValue: false, + shouldCallCallback: true, + }; +} + +function updateItemValueDisplay($target, item, options, useInfoAsDescription) { + if (options.valueInTail) { + syncTrailingValueDisplay($target, item, options); + } else { + syncInlineValueDisplay($target, item, useInfoAsDescription); + } + + setColor($target, item.value); +} + +function syncTrailingValueDisplay($target, item, options) { + const shouldRenderTrailingValue = shouldShowTrailingValue(item, options); + let $tail = $target.get(".setting-tail"); + let $valueDisplay = $target.get(".setting-value-display"); + + if (!shouldRenderTrailingValue) { + $valueDisplay?.remove(); + $target.classList.remove("has-tail-value", "has-tail-select"); + if ($tail && !$tail.children.length) { + $tail.remove(); + } + return; + } + + if (!$tail) { + $tail =
      ; + $target.append($tail); + } + + if (!$valueDisplay) { + $valueDisplay = createTrailingValueDisplay(item); + const $chevron = $tail.get(".settings-chevron"); + if ($chevron) { + $tail.insertBefore($valueDisplay, $chevron); + } else { + $tail.append($valueDisplay); + } + } + + const $trailingValueText = $valueDisplay.get(".setting-trailing-value"); + setValueText($trailingValueText, item.value, item.valueText?.bind(item)); + $target.classList.add("has-tail-value"); + $target.classList.toggle("has-tail-select", Boolean(item.select)); +} + +/** + * Keeps the inline subtitle/value block in sync when a setting value changes. + * @param {HTMLElement} $target + * @param {ListItem} item + * @param {boolean} useInfoAsDescription + */ +function syncInlineValueDisplay($target, item, useInfoAsDescription) { + const state = getItemDisplayState(item, useInfoAsDescription); + let $valueText = $target.get(".value"); + const $container = $target.get(".container"); + + if (!$container) return; + + if (!state.hasSubtitle) { + $valueText?.remove(); + $target.classList.remove("has-subtitle"); + $target.classList.add("compact"); + return; + } + + if (!$valueText) { + $valueText = ; + $container.append($valueText); + } + + $valueText.classList.toggle("setting-info", state.showInfoAsSubtitle); + setValueText( + $valueText, + state.subtitle, + state.showInfoAsSubtitle ? null : item.valueText?.bind(item), + ); + $target.classList.add("has-subtitle"); + $target.classList.remove("compact"); +} + +function getSubtitleText(item, useInfoAsDescription) { + if (useInfoAsDescription) { + return item.info; + } + + return item.value ?? item.info; } /** @@ -357,10 +702,13 @@ function setValueText($valueText, value, valueText) { } if (typeof value === "string") { - if (value.match("\n")) [value] = value.split("\n"); + const shouldPreserveFullText = $valueText.classList.contains("value"); + if (!shouldPreserveFullText) { + if (value.includes("\n")) [value] = value.split("\n"); - if (value.length > 47) { - value = value.slice(0, 47) + "..."; + if (value.length > 47) { + value = value.slice(0, 47) + "..."; + } } } diff --git a/src/components/settingsPage.scss b/src/components/settingsPage.scss new file mode 100644 index 000000000..aba4f617f --- /dev/null +++ b/src/components/settingsPage.scss @@ -0,0 +1,807 @@ +@mixin settings-page-shell($list-selector) { + #{$list-selector} { + display: flex; + flex-direction: column; + gap: 1.2rem; + width: 100%; + max-width: 48rem; + margin: 0 auto; + padding: 0.5rem 0 5.5rem; + box-sizing: border-box; + background: var(--secondary-color); + } + + .settings-section { + display: flex; + flex-direction: column; + gap: 0; + width: 100%; + } + + .settings-search-summary { + padding: 0.2rem 1rem; + font-size: 0.84rem; + font-weight: 600; + line-height: 1.35; + color: var(--secondary-text-color); + color: color-mix(in srgb, var(--secondary-text-color), transparent 18%); + } + + .settings-section-label { + padding: 0.5rem 1rem 0.45rem; + font-size: 0.84rem; + font-weight: 600; + line-height: 1.3; + color: color-mix(in srgb, var(--active-color), transparent 18%); + } + + .settings-section-card { + width: 100%; + overflow: hidden; + box-sizing: border-box; + } +} + +@mixin settings-icon-reset { + .icon { + &:active, + &.active { + transform: none; + background-color: transparent !important; + } + } +} + +wc-page.main-settings-page { + background: var(--secondary-color); + @include settings-page-shell(".main-settings-list"); + + .main-settings-list > .list-item, + .settings-section-card > .list-item { + display: flex; + width: 100%; + min-height: 64px; + margin: 0; + padding: 0.75rem 1rem; + box-sizing: border-box; + align-items: center; + gap: 0.85rem; + background: transparent; + cursor: pointer; + + &.no-leading-icon { + gap: 0; + } + + &:not(:last-of-type) { + border-bottom: 1px solid var(--border-color); + border-bottom: 1px solid color-mix(in srgb, var(--border-color), transparent 20%); + } + + &:focus, + &:active { + background: var(--popup-background-color); + background: color-mix(in srgb, var(--secondary-color), var(--popup-text-color) 4%); + } + + > .icon.no-icon { + width: 0; + min-width: 0; + height: 0; + margin: 0; + } + + > .icon:first-child:not(.no-icon) { + display: flex; + align-items: center; + justify-content: center; + width: 1.6rem; + min-width: 1.6rem; + height: 1.6rem; + font-size: 1.3rem; + color: var(--secondary-text-color); + color: color-mix(in srgb, var(--secondary-text-color), transparent 18%); + } + + > .container { + flex: 1; + display: flex; + flex-direction: column; + min-width: 0; + overflow: visible; + gap: 0.2rem; + + > .text { + display: block; + flex: none; + min-width: 0; + font-size: 1rem; + line-height: 1.3; + font-weight: 600; + color: var(--popup-text-color); + } + + > .value { + flex: none; + font-size: 0.82rem; + line-height: 1.35; + opacity: 1; + color: var(--secondary-text-color); + color: color-mix(in srgb, var(--secondary-text-color), transparent 30%); + text-transform: none; + white-space: normal; + overflow: visible; + overflow-wrap: anywhere; + } + } + + &.compact { + min-height: 56px; + } + } + + .main-settings-list .settings-chevron { + display: flex; + align-items: center; + justify-content: center; + width: 1.2rem; + min-width: 1.2rem; + height: 1.2rem; + margin-left: 0.35rem; + font-size: 1.1rem; + color: var(--secondary-text-color); + color: color-mix(in srgb, var(--secondary-text-color), transparent 40%); + } + + .settings-search-section .list-item { + > .container { + padding-right: 0.35rem; + gap: 0.18rem; + } + + > .setting-tail { + display: flex; + align-items: center; + justify-content: flex-end; + flex-shrink: 0; + min-height: 1.65rem; + gap: 0.32rem; + margin-left: 0.9rem; + align-self: center; + } + + &.has-subtitle > .container { + gap: 0.24rem; + padding-top: 0.14rem; + padding-right: 0.6rem; + } + + &.has-subtitle.has-tail-select > .container { + padding-right: 0.95rem; + } + + &.compact > .container { + align-self: center; + justify-content: center; + gap: 0; + padding-top: 0; + } + + &.compact > .setting-tail { + align-self: center; + } + } + + .settings-search-section .setting-value-display { + display: inline-flex; + align-items: center; + gap: 0.15rem; + min-height: auto; + padding: 0; + border: none; + border-radius: 0; + background: transparent; + color: var(--secondary-text-color); + color: color-mix(in srgb, var(--secondary-text-color), transparent 18%); + box-sizing: border-box; + + &.is-select { + min-width: clamp(6.75rem, 30vw, 8.5rem); + max-width: min(45vw, 11.5rem); + min-height: 2.35rem; + padding: 0 0.8rem 0 0.95rem; + gap: 0.55rem; + justify-content: space-between; + border: 1px solid var(--border-color); + border: 1px solid color-mix(in srgb, var(--border-color), transparent 12%); + border-radius: 0.56rem; + background: color-mix( + in srgb, + var(--secondary-color), + var(--popup-background-color) 42% + ); + box-shadow: + inset 0 0 0 1px color-mix(in srgb, var(--border-color), transparent 44%), + 0 1px 2px rgba(0, 0, 0, 0.12); + } + } + + .settings-search-section .setting-trailing-value { + font-size: 0.88rem; + line-height: 1.2; + color: inherit; + text-transform: none; + white-space: nowrap; + + &.is-select { + flex: 1; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + font-size: 0.94rem; + font-weight: 500; + letter-spacing: -0.01em; + color: color-mix(in srgb, var(--popup-text-color), transparent 14%); + } + } + + .settings-search-section .setting-value-icon, + .settings-search-section .settings-chevron, + .main-settings-list .settings-chevron { + display: flex; + align-items: center; + justify-content: center; + color: var(--secondary-text-color); + color: color-mix(in srgb, var(--secondary-text-color), transparent 40%); + } + + .settings-search-section .setting-value-icon { + width: 1rem; + min-width: 1rem; + height: 1rem; + font-size: 1rem; + + .setting-value-display.is-select & { + width: 0.95rem; + min-width: 0.95rem; + height: 0.95rem; + font-size: 1rem; + color: color-mix(in srgb, var(--secondary-text-color), transparent 22%); + } + } + + .settings-search-section .settings-chevron, + .main-settings-list .settings-chevron { + width: 1.2rem; + min-width: 1.2rem; + height: 1.2rem; + margin-left: 0.1rem; + font-size: 1.1rem; + line-height: 1; + } + + .settings-search-section .input-checkbox { + display: inline-flex; + align-items: center; + justify-content: flex-end; + line-height: 0; + + span:last-child { + display: none; + } + + .box { + width: 2.8rem !important; + height: 1.65rem !important; + margin: 0; + border: 1px solid var(--border-color); + border: 1px solid color-mix(in srgb, var(--border-color), transparent 6%); + border-radius: 999px; + background: var(--popup-background-color); + background: color-mix( + in srgb, + var(--secondary-color), + var(--popup-background-color) 30% + ); + transition: + background-color 160ms ease, + border-color 160ms ease, + box-shadow 180ms ease; + + &::after { + width: 1.25rem; + height: 1.25rem; + margin: 0.14rem; + border-radius: 999px; + background: var(--popup-text-color); + background: color-mix( + in srgb, + var(--popup-text-color), + var(--popup-background-color) 18% + ); + opacity: 1; + box-shadow: + 0 0 0 1px color-mix(in srgb, var(--border-color), transparent 34%), + 0 1px 3px rgba(0, 0, 0, 0.22); + transition: + transform 180ms cubic-bezier(0.2, 0.9, 0.3, 1), + background-color 160ms ease, + box-shadow 180ms ease; + } + } + + input:checked + .box { + background: var(--button-background-color); + border-color: color-mix(in srgb, var(--button-background-color), transparent 10%); + box-shadow: inset 0 0 0 1px + color-mix(in srgb, var(--button-background-color), transparent 12%); + } + + input:checked + .box::after { + transform: translateX(1.12rem); + background: var(--button-text-color); + opacity: 1; + box-shadow: 0 2px 8px color-mix(in srgb, var(--button-background-color), transparent 55%); + } + + input:not(:checked) + .box::after { + opacity: 1; + } + } + + .settings-search-section + .list-item.has-tail-select:focus + .setting-value-display.is-select, + .settings-search-section + .list-item.has-tail-select:active + .setting-value-display.is-select { + border-color: color-mix(in srgb, var(--active-color), transparent 48%); + background: color-mix( + in srgb, + var(--popup-background-color), + var(--active-color) 9% + ); + } + + @media screen and (min-width: 768px) { + .main-settings-list { + padding-left: 0.5rem; + padding-right: 0.5rem; + } + } + + @media screen and (max-width: 480px) { + .settings-search-section .setting-trailing-value { + max-width: 7rem; + overflow: hidden; + text-overflow: ellipsis; + } + + .settings-search-section .setting-value-display.is-select { + min-width: 6.25rem; + max-width: 9rem; + padding-left: 0.85rem; + padding-right: 0.7rem; + } + } + + @include settings-icon-reset; +} + +wc-page.detail-settings-page { + background: var(--secondary-color); + @include settings-page-shell(".detail-settings-list"); + + .detail-settings-list > .list-item, + .settings-section-card > .list-item { + display: flex; + width: 100%; + margin: 0; + padding: 0.75rem 1rem; + min-height: 3.2rem; + box-sizing: border-box; + align-items: center; + gap: 0.85rem; + background: transparent; + cursor: pointer; + transition: background-color 140ms ease; + + &.compact { + align-items: center; + } + + &.no-leading-icon { + gap: 0; + } + + &:not(:last-of-type) { + border-bottom: 1px solid var(--border-color); + border-bottom: 1px solid color-mix(in srgb, var(--border-color), transparent 20%); + } + + &:focus, + &:active { + background: var(--popup-background-color); + background: color-mix(in srgb, var(--secondary-color), var(--popup-text-color) 4%); + } + + > .icon.no-icon { + width: 0; + min-width: 0; + height: 0; + margin: 0; + } + + > .icon:first-child:not(.no-icon) { + display: flex; + align-items: center; + justify-content: center; + width: 1.4rem; + min-width: 1.4rem; + height: 1.4rem; + font-size: 1.15rem; + color: var(--secondary-text-color); + color: color-mix(in srgb, var(--secondary-text-color), transparent 18%); + } + + > .container { + flex: 1; + display: flex; + flex-direction: column; + min-width: 0; + overflow: visible; + gap: 0.18rem; + padding-right: 0.35rem; + + > .text { + display: flex; + align-items: center; + flex: none; + min-width: 0; + font-size: 1rem; + line-height: 1.2; + font-weight: 600; + color: var(--popup-text-color); + } + + > .value { + flex: none; + font-size: 0.82rem; + line-height: 1.35; + opacity: 1; + color: var(--secondary-text-color); + color: color-mix(in srgb, var(--secondary-text-color), transparent 30%); + text-transform: none; + white-space: normal; + overflow: visible; + overflow-wrap: anywhere; + } + } + + > .setting-tail { + display: flex; + align-items: center; + justify-content: flex-end; + flex-shrink: 0; + min-height: 1.65rem; + gap: 0.32rem; + margin-left: 0.9rem; + align-self: center; + } + } + + .detail-settings-list > .list-item.has-subtitle > .container, + .settings-section-card > .list-item.has-subtitle > .container { + gap: 0.24rem; + padding-top: 0.14rem; + padding-right: 0.6rem; + } + + .detail-settings-list > .list-item.has-subtitle.has-tail-select > .container, + .settings-section-card > .list-item.has-subtitle.has-tail-select > .container { + padding-right: 0.95rem; + } + + .detail-settings-list > .list-item.compact > .container, + .settings-section-card > .list-item.compact > .container { + align-self: center; + justify-content: center; + gap: 0; + padding-top: 0; + } + + .detail-settings-list > .list-item.compact > .setting-tail, + .settings-section-card > .list-item.compact > .setting-tail { + align-self: center; + } + + .setting-value-display { + display: inline-flex; + align-items: center; + gap: 0.15rem; + min-height: auto; + padding: 0; + border: none; + border-radius: 0; + background: transparent; + color: var(--secondary-text-color); + color: color-mix(in srgb, var(--secondary-text-color), transparent 18%); + box-sizing: border-box; + + &.is-select { + min-width: clamp(6.75rem, 30vw, 8.5rem); + max-width: min(45vw, 11.5rem); + min-height: 2.35rem; + padding: 0 0.8rem 0 0.95rem; + gap: 0.55rem; + justify-content: space-between; + border: 1px solid var(--border-color); + border: 1px solid color-mix(in srgb, var(--border-color), transparent 12%); + border-radius: 0.56rem; + background: color-mix( + in srgb, + var(--secondary-color), + var(--popup-background-color) 42% + ); + box-shadow: + inset 0 0 0 1px color-mix(in srgb, var(--border-color), transparent 44%), + 0 1px 2px rgba(0, 0, 0, 0.12); + } + } + + .setting-trailing-value { + font-size: 0.88rem; + line-height: 1.2; + color: inherit; + text-transform: none; + white-space: nowrap; + + &.is-select { + flex: 1; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + font-size: 0.94rem; + font-weight: 500; + letter-spacing: -0.01em; + color: color-mix(in srgb, var(--popup-text-color), transparent 14%); + } + } + + .setting-value-icon, + .settings-chevron { + display: flex; + align-items: center; + justify-content: center; + color: var(--secondary-text-color); + color: color-mix(in srgb, var(--secondary-text-color), transparent 40%); + } + + .setting-value-icon { + width: 1rem; + min-width: 1rem; + height: 1rem; + font-size: 1rem; + + .setting-value-display.is-select & { + width: 0.95rem; + min-width: 0.95rem; + height: 0.95rem; + font-size: 1rem; + color: color-mix(in srgb, var(--secondary-text-color), transparent 22%); + } + } + + .settings-chevron { + width: 1.2rem; + min-width: 1.2rem; + height: 1.2rem; + margin-left: 0.1rem; + font-size: 1.1rem; + line-height: 1; + } + + .input-checkbox { + display: inline-flex; + align-items: center; + justify-content: flex-end; + line-height: 0; + + span:last-child { + display: none; + } + + .box { + width: 2.8rem !important; + height: 1.65rem !important; + margin: 0; + border: 1px solid var(--border-color); + border: 1px solid color-mix(in srgb, var(--border-color), transparent 6%); + border-radius: 999px; + background: var(--popup-background-color); + background: color-mix( + in srgb, + var(--secondary-color), + var(--popup-background-color) 30% + ); + transition: + background-color 160ms ease, + border-color 160ms ease, + box-shadow 180ms ease; + + &::after { + width: 1.25rem; + height: 1.25rem; + margin: 0.14rem; + border-radius: 999px; + background: var(--popup-text-color); + background: color-mix( + in srgb, + var(--popup-text-color), + var(--popup-background-color) 18% + ); + opacity: 1; + box-shadow: + 0 0 0 1px var(--border-color), + 0 1px 3px rgba(0, 0, 0, 0.22); + box-shadow: + 0 0 0 1px color-mix(in srgb, var(--border-color), transparent 34%), + 0 1px 3px rgba(0, 0, 0, 0.22); + transition: + transform 180ms cubic-bezier(0.2, 0.9, 0.3, 1), + background-color 160ms ease, + box-shadow 180ms ease; + } + } + + input:checked + .box { + background: var(--button-background-color); + border-color: var(--button-background-color); + border-color: color-mix(in srgb, var(--button-background-color), transparent 10%); + box-shadow: inset 0 0 0 1px var(--button-background-color); + box-shadow: inset 0 0 0 1px + color-mix(in srgb, var(--button-background-color), transparent 12%); + } + + input:checked + .box::after { + transform: translateX(1.12rem); + background: var(--button-text-color); + opacity: 1; + box-shadow: 0 2px 8px var(--button-background-color); + box-shadow: 0 2px 8px color-mix(in srgb, var(--button-background-color), transparent 55%); + } + + input:not(:checked) + .box::after { + opacity: 1; + } + } + + .note { + display: flex; + align-items: flex-start; + gap: 0.6rem; + width: auto; + box-sizing: border-box; + margin: 0.25rem 0.75rem; + padding: 0.9rem 1rem; + border: 1px solid var(--active-color); + border: 1px solid color-mix(in srgb, var(--active-color), transparent 60%); + border-radius: 10px; + background: var(--popup-background-color); + background: color-mix(in srgb, var(--popup-background-color), var(--active-color) 8%); + + .note-title { + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + height: auto; + padding: 0; + background: transparent; + text-transform: none; + + > .icon { + display: inline-flex; + align-items: center; + justify-content: center; + width: 1.15rem; + min-width: 1.15rem; + height: 1.15rem; + background: transparent; + color: var(--active-color); + color: color-mix(in srgb, var(--active-color), transparent 10%); + font-size: 1.1rem; + margin-top: 0.12rem; + } + + > span:last-child { + display: none; + } + } + + p { + margin: 0; + padding: 0; + font-size: 0.84rem; + line-height: 1.55; + color: var(--secondary-text-color); + color: color-mix(in srgb, var(--secondary-text-color), transparent 8%); + } + } + + @media screen and (max-width: 480px) { + .setting-trailing-value { + max-width: 7rem; + overflow: hidden; + text-overflow: ellipsis; + } + + .setting-value-display.is-select { + min-width: 6.25rem; + max-width: 9rem; + padding-left: 0.85rem; + padding-right: 0.7rem; + } + } + + .detail-settings-list > .list-item.has-tail-select:focus .setting-value-display.is-select, + .detail-settings-list > .list-item.has-tail-select:active .setting-value-display.is-select, + .settings-section-card + > .list-item.has-tail-select:focus + .setting-value-display.is-select, + .settings-section-card + > .list-item.has-tail-select:active + .setting-value-display.is-select { + border-color: color-mix(in srgb, var(--active-color), transparent 48%); + background: color-mix( + in srgb, + var(--popup-background-color), + var(--active-color) 9% + ); + } + + @include settings-icon-reset; +} + +wc-page.detail-settings-page.formatter-settings-page { + .detail-settings-list > .list-item, + .settings-section-card > .list-item { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + + &.compact { + min-height: 3.5rem; + padding-top: 0.18rem; + padding-bottom: 0.18rem; + } + + &.has-subtitle { + min-height: 4.5rem; + padding-top: 0.74rem; + padding-bottom: 0.74rem; + } + + > .icon:first-child:not(.no-icon) { + width: 1.1rem; + min-width: 1.1rem; + height: 1.1rem; + margin-right: 0.7rem; + font-size: 1rem; + } + + > .container { + gap: 0.2rem; + } + + > .container > .value { + -webkit-line-clamp: unset; + } + } + + .detail-settings-list > .list-item.compact > .container, + .settings-section-card > .list-item.compact > .container, + .detail-settings-list > .list-item.compact > .setting-tail, + .settings-section-card > .list-item.compact > .setting-tail { + align-self: center; + } +} diff --git a/src/components/sidebar/index.js b/src/components/sidebar/index.js index a331697d4..0b606960f 100644 --- a/src/components/sidebar/index.js +++ b/src/components/sidebar/index.js @@ -259,7 +259,8 @@ function create($container, $toggler) { root.style.removeProperty("margin-left"); root.style.removeProperty("width"); $el.remove(); - editorManager.editor.resize(true); + // TODO : Codemirror + //editorManager.editor.resize(true); } } diff --git a/src/components/sidebar/style.scss b/src/components/sidebar/style.scss index 9f5d53b0a..87d84afa6 100644 --- a/src/components/sidebar/style.scss +++ b/src/components/sidebar/style.scss @@ -288,6 +288,7 @@ body.no-animation { input { color: rgb(255, 255, 255); color: var(--primary-text-color); + border: solid 1px var(--border-color); border: solid 1px color-mix(in srgb, var(--border-color) 70%, transparent); border-radius: 8px; height: 30px; @@ -300,6 +301,7 @@ body.no-animation { &:focus { border-color: var(--border-color) !important; + background: var(--secondary-color); background: color-mix(in srgb, var(--secondary-color) 10%, transparent); box-shadow: 0 0 0 2px var(---box-shadow-color); } @@ -365,6 +367,7 @@ body.no-animation { .badge { display: inline-flex; align-items: center; + background-color: var(--popup-background-color); background-color: color-mix(in srgb, var(--error-text-color) 20%, transparent); @@ -379,6 +382,7 @@ body.no-animation { .user-menu-email { font-size: 12px; + color: var(--popup-text-color); color: color-mix(in srgb, var(--popup-text-color) 70%, transparent); } } @@ -400,4 +404,4 @@ body.no-animation { background-color: var(--border-color); margin: 4px 0; } -} \ No newline at end of file +} diff --git a/src/components/symbolsPanel/index.js b/src/components/symbolsPanel/index.js new file mode 100644 index 000000000..5265f09b3 --- /dev/null +++ b/src/components/symbolsPanel/index.js @@ -0,0 +1,476 @@ +import "./styles.scss"; +import { fetchDocumentSymbols, navigateToSymbol } from "cm/lsp"; +import actionStack from "lib/actionStack"; + +let currentPanel = null; + +const SYMBOL_KIND_ABBREV = { + 1: "Fi", + 2: "Mo", + 3: "Ns", + 4: "Pk", + 5: "C", + 6: "M", + 7: "P", + 8: "F", + 9: "Co", + 10: "E", + 11: "I", + 12: "fn", + 13: "V", + 14: "c", + 15: "S", + 16: "#", + 17: "B", + 18: "[]", + 19: "{}", + 20: "K", + 21: "∅", + 22: "Em", + 23: "St", + 24: "Ev", + 25: "Op", + 26: "T", +}; + +function sanitize(str) { + if (!str) return ""; + return str + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); +} + +function flattenSymbolsForDisplay(symbols, depth = 0) { + const result = []; + for (const sym of symbols) { + result.push({ + ...sym, + depth, + id: `${sym.selectionRange.startLine}-${sym.selectionRange.startCharacter}-${sym.name}`, + }); + if (sym.children && sym.children.length > 0) { + result.push(...flattenSymbolsForDisplay(sym.children, depth + 1)); + } + } + return result; +} + +function createSymbolsPanel() { + const state = { + visible: false, + expanded: false, + loading: true, + symbols: [], + flatSymbols: [], + filteredSymbols: [], + searchQuery: "", + editorView: null, + }; + + const $mask = ; + const $panel =
      ; + const $dragHandle =
      ; + const $title =
      ; + const $subtitle = ; + const $searchInput = ( + + ); + const $content =
      ; + const $symbolsList =
      ; + + const $closeBtn = ( + + ); + + const $header = ( +
      +
      + {$title} + {$subtitle} +
      +
      {$closeBtn}
      +
      + ); + + const $search =
      {$searchInput}
      ; + + $panel.append($dragHandle, $header, $search, $content); + $mask.onclick = hide; + + let startY = 0; + let currentY = 0; + let isDragging = false; + + $dragHandle.ontouchstart = onDragStart; + $dragHandle.onmousedown = onDragStart; + + function onDragStart(e) { + isDragging = true; + startY = e.touches ? e.touches[0].clientY : e.clientY; + currentY = startY; + $panel.style.transition = "none"; + + document.addEventListener("touchmove", onDragMove, { passive: false }); + document.addEventListener("mousemove", onDragMove); + document.addEventListener("touchend", onDragEnd); + document.addEventListener("mouseup", onDragEnd); + } + + function onDragMove(e) { + if (!isDragging) return; + e.preventDefault(); + currentY = e.touches ? e.touches[0].clientY : e.clientY; + const deltaY = currentY - startY; + + if (deltaY > 0) { + $panel.style.transform = `translateY(${deltaY}px)`; + } else if (!state.expanded) { + const expansion = Math.min(Math.abs(deltaY), 100); + $panel.style.maxHeight = `${60 + (expansion / 100) * 25}vh`; + } + } + + function onDragEnd() { + isDragging = false; + document.removeEventListener("touchmove", onDragMove); + document.removeEventListener("mousemove", onDragMove); + document.removeEventListener("touchend", onDragEnd); + document.removeEventListener("mouseup", onDragEnd); + + $panel.style.transition = ""; + const deltaY = currentY - startY; + + if (deltaY > 100) { + hide(); + } else if (deltaY < -50 && !state.expanded) { + state.expanded = true; + $panel.classList.add("expanded"); + $panel.style.transform = ""; + $panel.style.maxHeight = ""; + } else { + $panel.style.transform = ""; + $panel.style.maxHeight = ""; + } + } + + function setTitle(text) { + $title.innerHTML = ""; + $title.append( + , + {sanitize(text)}, + ); + } + + function setSubtitle(text) { + $subtitle.textContent = text; + } + + function onSearchInput(e) { + state.searchQuery = e.target.value.trim(); + filterSymbols(); + } + + function clearSearch() { + $searchInput.value = ""; + state.searchQuery = ""; + } + + function filterSymbols() { + const query = state.searchQuery.toLowerCase(); + + if (!query) { + state.filteredSymbols = state.flatSymbols; + } else { + state.filteredSymbols = state.flatSymbols.filter((sym) => { + const nameMatch = sym.name.toLowerCase().includes(query); + const kindMatch = sym.kindName.toLowerCase().includes(query); + const detailMatch = sym.detail?.toLowerCase().includes(query); + return nameMatch || kindMatch || detailMatch; + }); + } + + updateList(); + } + + function updateList() { + setSubtitle(getSubtitle()); + renderSymbolsList(); + } + + function getSubtitle() { + const total = state.flatSymbols.length; + const filtered = state.filteredSymbols.length; + + if (total === 0) return "No symbols"; + if (filtered === total) return `${total} symbol${total !== 1 ? "s" : ""}`; + return `${filtered} of ${total} symbols`; + } + + function renderLoading() { + $content.innerHTML = ""; + $content.append( +
      +
      + Loading symbols... +
      , + ); + } + + function renderEmpty() { + const message = state.searchQuery + ? "No matching symbols" + : "No symbols found"; + $content.innerHTML = ""; + $content.append( +
      + + {message} +
      , + ); + } + + function renderNotSupported() { + $content.innerHTML = ""; + $content.append( +
      + + Language server does not support document symbols +
      , + ); + } + + function highlightMatch(text, query) { + if (!query) return sanitize(text); + + const lowerText = text.toLowerCase(); + const lowerQuery = query.toLowerCase(); + const index = lowerText.indexOf(lowerQuery); + + if (index === -1) return sanitize(text); + + const before = sanitize(text.slice(0, index)); + const match = sanitize(text.slice(index, index + query.length)); + const after = sanitize(text.slice(index + query.length)); + + return `${before}${match}${after}`; + } + + function createSymbolItem(symbol) { + const kindName = symbol.kindName || "Unknown"; + const kindClass = `kind-${kindName.toLowerCase().replace(/\s+/g, "")}`; + const abbrev = SYMBOL_KIND_ABBREV[symbol.kind] || "?"; + const indent = (symbol.depth || 0) * 16; + const startLine = symbol.selectionRange?.startLine ?? 0; + + const $item = ( +
      onSymbolClick(symbol)}> + + {abbrev} + + + {symbol.detail && ( + {sanitize(symbol.detail)} + )} + + :{startLine + 1} +
      + ); + + $item.get(".symbol-name").innerHTML = highlightMatch( + symbol.name, + state.searchQuery, + ); + + return $item; + } + + function renderSymbolsList() { + $symbolsList.innerHTML = ""; + + if (state.filteredSymbols.length === 0) { + renderEmpty(); + return; + } + + $content.innerHTML = ""; + const fragment = document.createDocumentFragment(); + + for (const symbol of state.filteredSymbols) { + fragment.appendChild(createSymbolItem(symbol)); + } + + $symbolsList.appendChild(fragment); + $content.appendChild($symbolsList); + } + + function onSymbolClick(symbol) { + if (!state.editorView) return; + hide(); + navigateToSymbol(state.editorView, symbol); + } + + async function loadSymbols() { + if (!state.editorView) { + renderNotSupported(); + return; + } + + renderLoading(); + + try { + const symbols = await fetchDocumentSymbols(state.editorView); + + if (symbols === null) { + state.loading = false; + setSubtitle("Not supported"); + renderNotSupported(); + return; + } + + state.loading = false; + state.symbols = symbols; + state.flatSymbols = flattenSymbolsForDisplay(symbols); + state.filteredSymbols = state.flatSymbols; + + if (state.flatSymbols.length === 0) { + setSubtitle("No symbols"); + renderEmpty(); + } else { + setSubtitle(getSubtitle()); + renderSymbolsList(); + } + } catch (error) { + console.error("Failed to load symbols:", error); + state.loading = false; + setSubtitle("Error"); + $content.innerHTML = ""; + $content.append( +
      + + {sanitize(error.message || "Failed to load symbols")} +
      , + ); + } + } + + function show(options = {}) { + if (currentPanel && currentPanel !== panelInstance) { + currentPanel.hide(); + } + currentPanel = panelInstance; + + state.editorView = options.view || null; + state.symbols = []; + state.flatSymbols = []; + state.filteredSymbols = []; + state.searchQuery = ""; + state.loading = true; + state.expanded = false; + + clearSearch(); + setTitle("Document Outline"); + setSubtitle("Loading..."); + renderLoading(); + + document.body.append($mask, $panel); + + requestAnimationFrame(() => { + $mask.classList.add("visible"); + $panel.classList.add("visible"); + $panel.classList.remove("expanded"); + }); + + state.visible = true; + + actionStack.push({ + id: "symbols-panel", + action: hide, + }); + + loadSymbols(); + } + + function hide() { + if (!state.visible) return; + state.visible = false; + + $mask.classList.remove("visible"); + $panel.classList.remove("visible"); + + actionStack.remove("symbols-panel"); + + setTimeout(() => { + $mask.remove(); + $panel.remove(); + }, 250); + + if (currentPanel === panelInstance) { + currentPanel = null; + } + + if (state.editorView) { + state.editorView.focus(); + } + } + + const panelInstance = { + show, + hide, + get visible() { + return state.visible; + }, + }; + + return panelInstance; +} + +let panelSingleton = null; + +function getPanel() { + if (!panelSingleton) { + panelSingleton = createSymbolsPanel(); + } + return panelSingleton; +} + +export function showSymbolsPanel(options) { + const panel = getPanel(); + panel.show(options); + return panel; +} + +export function hideSymbolsPanel() { + const panel = getPanel(); + panel.hide(); +} + +export async function showDocumentSymbols(view) { + if (!view) { + const em = globalThis.editorManager; + view = em?.editor; + } + + if (!view) { + const toast = globalThis.toast; + toast?.("No editor available"); + return false; + } + + showSymbolsPanel({ view }); + return true; +} + +export default { + show: showSymbolsPanel, + hide: hideSymbolsPanel, + showDocumentSymbols, + getPanel, +}; diff --git a/src/components/symbolsPanel/styles.scss b/src/components/symbolsPanel/styles.scss new file mode 100644 index 000000000..e08b42c7d --- /dev/null +++ b/src/components/symbolsPanel/styles.scss @@ -0,0 +1,409 @@ +@use "../../styles/mixins.scss"; + +.symbols-panel-mask { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.4); + z-index: 100; + opacity: 0; + transition: opacity 200ms ease-out; + pointer-events: none; + + &.visible { + opacity: 1; + pointer-events: auto; + } +} + +.symbols-panel { + position: fixed; + left: 0; + right: 0; + bottom: 0; + z-index: 101; + background-color: var(--popup-background-color); + border-top-left-radius: 12px; + border-top-right-radius: 12px; + box-shadow: 0 -4px 20px var(--box-shadow-color); + transform: translateY(100%); + transition: transform 250ms ease-out, max-height 200ms ease-out; + display: flex; + flex-direction: column; + max-height: 60vh; + overflow: hidden; + + &.visible { + transform: translateY(0); + } + + &.expanded { + max-height: 85vh; + } + + .drag-handle { + display: flex; + justify-content: center; + align-items: center; + padding: 8px 0 4px 0; + cursor: grab; + flex-shrink: 0; + + &::after { + content: ""; + width: 36px; + height: 4px; + background-color: var(--border-color); + border-radius: 2px; + } + + &:active { + cursor: grabbing; + } + } + + .panel-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 8px 12px 12px 16px; + border-bottom: 1px solid var(--border-color); + min-height: 44px; + flex-shrink: 0; + + .header-content { + display: flex; + flex-direction: column; + gap: 2px; + flex: 1; + min-width: 0; + + .header-title { + display: flex; + align-items: center; + gap: 8px; + font-size: 1rem; + font-weight: 600; + color: var(--primary-text-color); + + .icon { + font-size: 1.1em; + opacity: 0.7; + } + } + + .header-subtitle { + font-size: 0.85rem; + color: var(--secondary-text-color); + opacity: 0.8; + } + } + + .header-actions { + display: flex; + gap: 4px; + flex-shrink: 0; + } + + .action-btn { + width: 36px; + height: 36px; + display: flex; + align-items: center; + justify-content: center; + border: none; + background: transparent; + color: var(--secondary-text-color); + border-radius: 50%; + cursor: pointer; + + &:active { + background-color: var(--active-icon-color); + } + + .icon { + font-size: 1.2em; + } + } + } + + .panel-search { + padding: 8px 16px; + border-bottom: 1px solid var(--border-color); + flex-shrink: 0; + + input { + width: 100%; + background-color: var(--secondary-color); + border: 1px solid var(--border-color); + border-radius: 8px; + padding: 10px 12px; + font-size: 0.9rem; + color: var(--primary-text-color); + outline: none; + + &::placeholder { + color: var(--secondary-text-color); + opacity: 0.7; + } + + &:focus { + border-color: var(--active-color); + } + } + } + + .panel-content { + flex: 1; + overflow-y: auto; + overflow-x: hidden; + -webkit-overflow-scrolling: touch; + overscroll-behavior: contain; + + &::-webkit-scrollbar { + width: var(--scrollbar-width, 4px); + } + + &::-webkit-scrollbar-track { + background: transparent; + } + + &::-webkit-scrollbar-thumb { + background: var(--scrollbar-color, rgba(0, 0, 0, 0.333)); + border-radius: calc(var(--scrollbar-width, 4px) / 2); + } + } + + .loading-state { + display: flex; + align-items: center; + justify-content: center; + padding: 32px 16px; + color: var(--secondary-text-color); + gap: 12px; + + .loader { + @include mixins.circular-loader(24px); + } + } + + .empty-state { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 32px 16px; + color: var(--secondary-text-color); + text-align: center; + + .icon { + font-size: 2rem; + margin-bottom: 8px; + opacity: 0.5; + } + } +} + +.symbol-item { + box-sizing: border-box; + display: flex; + align-items: center; + gap: 10px; + padding: 0 16px; + height: 44px; + cursor: pointer; + user-select: none; + will-change: transform; + + &:active { + background-color: var(--active-icon-color); + } + + .symbol-indent { + flex-shrink: 0; + } + + .symbol-icon { + width: 24px; + height: 24px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 4px; + flex-shrink: 0; + font-size: 0.8rem; + font-weight: 600; + text-transform: uppercase; + + &.kind-file { + background-color: rgba(158, 158, 158, 0.2); + color: #9e9e9e; + } + + &.kind-module { + background-color: rgba(255, 152, 0, 0.2); + color: #ff9800; + } + + &.kind-namespace { + background-color: rgba(255, 152, 0, 0.2); + color: #ff9800; + } + + &.kind-package { + background-color: rgba(121, 85, 72, 0.2); + color: #795548; + } + + &.kind-class { + background-color: rgba(255, 193, 7, 0.2); + color: #ffc107; + } + + &.kind-method { + background-color: rgba(156, 39, 176, 0.2); + color: #9c27b0; + } + + &.kind-property { + background-color: rgba(0, 150, 136, 0.2); + color: #009688; + } + + &.kind-field { + background-color: rgba(0, 150, 136, 0.2); + color: #009688; + } + + &.kind-constructor { + background-color: rgba(156, 39, 176, 0.2); + color: #9c27b0; + } + + &.kind-enum { + background-color: rgba(255, 152, 0, 0.2); + color: #ff9800; + } + + &.kind-interface { + background-color: rgba(0, 188, 212, 0.2); + color: #00bcd4; + } + + &.kind-function { + background-color: rgba(103, 58, 183, 0.2); + color: #673ab7; + } + + &.kind-variable { + background-color: rgba(33, 150, 243, 0.2); + color: #2196f3; + } + + &.kind-constant { + background-color: rgba(33, 150, 243, 0.2); + color: #2196f3; + } + + &.kind-string { + background-color: rgba(76, 175, 80, 0.2); + color: #4caf50; + } + + &.kind-number { + background-color: rgba(139, 195, 74, 0.2); + color: #8bc34a; + } + + &.kind-boolean { + background-color: rgba(33, 150, 243, 0.2); + color: #2196f3; + } + + &.kind-array { + background-color: rgba(255, 87, 34, 0.2); + color: #ff5722; + } + + &.kind-object { + background-color: rgba(96, 125, 139, 0.2); + color: #607d8b; + } + + &.kind-key { + background-color: rgba(233, 30, 99, 0.2); + color: #e91e63; + } + + &.kind-null { + background-color: rgba(158, 158, 158, 0.2); + color: #9e9e9e; + } + + &.kind-enummember { + background-color: rgba(255, 152, 0, 0.2); + color: #ff9800; + } + + &.kind-struct { + background-color: rgba(96, 125, 139, 0.2); + color: #607d8b; + } + + &.kind-event { + background-color: rgba(255, 235, 59, 0.2); + color: #fdd835; + } + + &.kind-operator { + background-color: rgba(158, 158, 158, 0.2); + color: #9e9e9e; + } + + &.kind-typeparameter { + background-color: rgba(0, 188, 212, 0.2); + color: #00bcd4; + } + } + + .symbol-info { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; + + .symbol-name { + font-size: 0.9rem; + font-weight: 500; + color: var(--primary-text-color); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + + .symbol-match { + background-color: color-mix(in srgb, var(--active-color) 30%, transparent); + border-radius: 2px; + padding: 0 2px; + } + } + + .symbol-detail { + font-size: 0.75rem; + color: var(--secondary-text-color); + opacity: 0.8; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + } + + .symbol-line { + font-size: 0.75rem; + color: var(--secondary-text-color); + font-family: monospace; + flex-shrink: 0; + opacity: 0.7; + } +} \ No newline at end of file diff --git a/src/components/terminal/index.js b/src/components/terminal/index.js index ef2372fa1..847cc8209 100644 --- a/src/components/terminal/index.js +++ b/src/components/terminal/index.js @@ -8,10 +8,10 @@ import TerminalManager from "./terminalManager"; import TerminalThemeManager from "./terminalThemeManager"; export { + DEFAULT_TERMINAL_SETTINGS, TerminalComponent, TerminalManager, TerminalThemeManager, - DEFAULT_TERMINAL_SETTINGS, }; export default { diff --git a/src/components/terminal/terminal.js b/src/components/terminal/terminal.js index 39ede08c1..6a043c85b 100644 --- a/src/components/terminal/terminal.js +++ b/src/components/terminal/terminal.js @@ -11,10 +11,14 @@ import { Unicode11Addon } from "@xterm/addon-unicode11"; import { WebLinksAddon } from "@xterm/addon-web-links"; import { WebglAddon } from "@xterm/addon-webgl"; import { Terminal as Xterm } from "@xterm/xterm"; +import { + executeCommand, + getResolvedKeyBindings, + getResolvedKeyBindingsVersion, +} from "cm/commandRegistry"; import toast from "components/toast"; import confirm from "dialogs/confirm"; import fonts from "lib/fonts"; -import keyBindings from "lib/keyBindings"; import appSettings from "lib/settings"; import LigaturesAddon from "./ligatures"; import { getTerminalSettings } from "./terminalDefaults"; @@ -61,6 +65,8 @@ export default class TerminalComponent { this.isConnected = false; this.serverMode = options.serverMode !== false; // Default true this.touchSelection = null; + this.parsedAppKeybindings = []; + this.parsedAppKeybindingsVersion = -1; this.init(); } @@ -335,9 +341,14 @@ export default class TerminalComponent { * Parse app keybindings into a format usable by the keyboard handler */ parseAppKeybindings() { + const version = getResolvedKeyBindingsVersion(); + if (this.parsedAppKeybindingsVersion === version) { + return this.parsedAppKeybindings; + } + const parsedBindings = []; - Object.values(keyBindings).forEach((binding) => { + Object.entries(getResolvedKeyBindings()).forEach(([name, binding]) => { if (!binding.key) return; // Skip editor-only keybindings in terminal @@ -347,8 +358,11 @@ export default class TerminalComponent { const keys = binding.key.split("|"); keys.forEach((keyCombo) => { - const parts = keyCombo.split("-"); + const parts = keyCombo.endsWith("-") + ? [...keyCombo.slice(0, -1).split("-").filter(Boolean), "-"] + : keyCombo.split("-"); const parsed = { + name, ctrl: false, shift: false, alt: false, @@ -368,7 +382,7 @@ export default class TerminalComponent { parsed.meta = true; } else { // This is the actual key - parsed.key = part; + parsed.key = part.toLowerCase(); } }); @@ -378,7 +392,10 @@ export default class TerminalComponent { }); }); - return parsedBindings; + this.parsedAppKeybindings = parsedBindings; + this.parsedAppKeybindingsVersion = version; + + return this.parsedAppKeybindings; } /** @@ -401,62 +418,54 @@ export default class TerminalComponent { return false; } - // Check for Ctrl+= or Ctrl++ (increase font size) - if (event.ctrlKey && (event.key === "+" || event.key === "=")) { + // Keep terminal font zoom local. Shift variants are handled by app keybindings below. + if ( + event.ctrlKey && + !event.shiftKey && + !event.altKey && + !event.metaKey && + (event.key === "+" || event.key === "=") + ) { event.preventDefault(); this.increaseFontSize(); return false; } - // Check for Ctrl+- (decrease font size) - if (event.ctrlKey && event.key === "-") { + if ( + event.ctrlKey && + !event.shiftKey && + !event.altKey && + !event.metaKey && + event.key === "-" + ) { event.preventDefault(); this.decreaseFontSize(); return false; } - // Only intercept specific app-wide keybindings, let terminal handle the rest if (event.ctrlKey || event.altKey || event.metaKey) { - // Skip modifier-only keys if (["Control", "Alt", "Meta", "Shift"].includes(event.key)) { return true; } - // Get parsed app keybindings const appKeybindings = this.parseAppKeybindings(); - - // Check if this is an app-specific keybinding - const isAppKeybinding = appKeybindings.some( + const eventKey = event.key === "_" ? "-" : event.key.toLowerCase(); + const binding = appKeybindings.find( (binding) => binding.ctrl === event.ctrlKey && binding.shift === event.shiftKey && binding.alt === event.altKey && binding.meta === event.metaKey && - binding.key === event.key, + binding.key === eventKey, ); - if (isAppKeybinding) { - const appEvent = new KeyboardEvent("keydown", { - key: event.key, - ctrlKey: event.ctrlKey, - shiftKey: event.shiftKey, - altKey: event.altKey, - metaKey: event.metaKey, - bubbles: true, - cancelable: true, - }); - - // Dispatch to document so it gets picked up by the app's keyboard handler - document.dispatchEvent(appEvent); - - // Return false to prevent terminal from processing this key + if (binding && executeCommand(binding.name)) { return false; } - - // For all other modifier combinations, let the terminal handle them - return true; } + if (event.ctrlKey || event.altKey || event.metaKey) return true; + // Return true to allow normal processing for other keys return true; }); @@ -657,47 +666,97 @@ export default class TerminalComponent { const wsUrl = `ws://localhost:${this.options.port}/terminals/${pid}`; - this.websocket = new WebSocket(wsUrl); + await new Promise((resolve, reject) => { + const websocket = new WebSocket(wsUrl); + const CONNECT_TIMEOUT = 5000; + let settled = false; + let hasOpened = false; - this.websocket.onopen = () => { - this.isConnected = true; - this.onConnect?.(); + this.websocket = websocket; - // Load attach addon after connection - this.attachAddon = new AttachAddon(this.websocket); - this.terminal.loadAddon(this.attachAddon); - this.terminal.unicode.activeVersion = "11"; + const rejectInitialConnect = (message, error) => { + if (settled || hasOpened) return; + settled = true; + this.isConnected = false; + try { + websocket.close(); + } catch {} + reject(error || new Error(message)); + }; - // Focus terminal and ensure it's ready - this.terminal.focus(); - this.fit(); - }; + const connectionTimeout = setTimeout(() => { + rejectInitialConnect( + `Timed out while connecting to terminal session ${pid}`, + ); + }, CONNECT_TIMEOUT); + + websocket.onopen = () => { + clearTimeout(connectionTimeout); + hasOpened = true; + this.isConnected = true; + this.onConnect?.(); + + // Load attach addon after connection + this.attachAddon = new AttachAddon(websocket); + this.terminal.loadAddon(this.attachAddon); + this.terminal.unicode.activeVersion = "11"; + + // Focus terminal and ensure it's ready + this.terminal.focus(); + this.fit(); + + if (!settled) { + settled = true; + resolve(); + } + }; - this.websocket.onmessage = (event) => { - // Handle text messages (exit events) - if (typeof event.data === "string") { - try { - const message = JSON.parse(event.data); - if (message.type === "exit") { - this.onProcessExit?.(message.data); - return; + websocket.onmessage = (event) => { + // Handle text messages (exit events) + if (typeof event.data === "string") { + try { + const message = JSON.parse(event.data); + if (message.type === "exit") { + this.onProcessExit?.(message.data); + return; + } + } catch (error) { + // Not a JSON message, let attachAddon handle it } - } catch (error) { - // Not a JSON message, let attachAddon handle it } - } - // For binary data or non-exit text messages, let attachAddon handle them - }; + // For binary data or non-exit text messages, let attachAddon handle them + }; - this.websocket.onclose = (event) => { - this.isConnected = false; - this.onDisconnect?.(); - }; + websocket.onclose = (event) => { + clearTimeout(connectionTimeout); + this.isConnected = false; + + if (!hasOpened) { + const code = event?.code ? ` (code ${event.code})` : ""; + const reason = event?.reason ? `: ${event.reason}` : ""; + rejectInitialConnect( + `Terminal session ${pid} is unavailable${code}${reason}`, + ); + return; + } - this.websocket.onerror = (error) => { - console.error("WebSocket error:", error); - this.onError?.(error); - }; + this.onDisconnect?.(); + }; + + websocket.onerror = (error) => { + if (!hasOpened) { + clearTimeout(connectionTimeout); + rejectInitialConnect( + `Failed to connect to terminal session ${pid}`, + new Error(`Failed to connect to terminal session ${pid}`), + ); + return; + } + + console.error("WebSocket error:", error); + this.onError?.(error); + }; + }); } /** diff --git a/src/components/terminal/terminalManager.js b/src/components/terminal/terminalManager.js index 87b71d64f..f9d845b21 100644 --- a/src/components/terminal/terminalManager.js +++ b/src/components/terminal/terminalManager.js @@ -5,6 +5,7 @@ import EditorFile from "lib/editorFile"; import TerminalComponent from "./terminal"; +import TerminalTouchSelection from "./terminalTouchSelection"; import "@xterm/xterm/css/xterm.css"; import quickTools from "components/quickTools"; import toast from "components/toast"; @@ -23,31 +24,142 @@ class TerminalManager { this.terminalCounter = 0; } - async getPersistedSessions() { + extractTerminalNumber(name) { + if (!name) return null; + const match = String(name).match(/^Terminal\s+(\d+)(?:\b| - )/i); + if (!match) return null; + const number = Number.parseInt(match[1], 10); + return Number.isInteger(number) && number > 0 ? number : null; + } + + getNextAvailableTerminalNumber() { + const usedNumbers = new Set(); + + for (const terminal of this.terminals.values()) { + const number = terminal?.terminalNumber; + if (Number.isInteger(number) && number > 0) { + usedNumbers.add(number); + } + } + + let nextNumber = 1; + while (usedNumbers.has(nextNumber)) { + nextNumber++; + } + + return nextNumber; + } + + normalizePersistedSessions(stored) { + if (!Array.isArray(stored)) { + return { + sessions: [], + changed: stored != null, + }; + } + + const sessions = []; + const uniqueSessions = []; + const seenPids = new Set(); + let changed = false; + + for (const entry of stored) { + if (!entry) { + changed = true; + continue; + } + + if (typeof entry === "string") { + sessions.push({ + pid: entry, + name: `Terminal ${entry}`, + pinned: false, + }); + changed = true; + continue; + } + + if (typeof entry !== "object" || !entry.pid) { + changed = true; + continue; + } + + const pid = String(entry.pid); + const name = + typeof entry.name === "string" && entry.name.trim() + ? entry.name.trim() + : `Terminal ${pid}`; + const pinned = entry.pinned === true; + + if (entry.pid !== pid || entry.name !== name || entry.pinned !== pinned) { + changed = true; + } + + sessions.push({ pid, name, pinned }); + } + + for (const session of sessions) { + const pid = String(session.pid); + if (seenPids.has(pid)) { + changed = true; + continue; + } + seenPids.add(pid); + uniqueSessions.push({ + pid, + name: + typeof session.name === "string" && session.name.trim() + ? session.name.trim() + : `Terminal ${pid}`, + pinned: session.pinned === true, + }); + } + + if (uniqueSessions.length !== stored.length) { + changed = true; + } + + return { + sessions: uniqueSessions, + changed, + }; + } + + readPersistedSessions() { try { - const stored = helpers.parseJSON( - localStorage.getItem(TERMINAL_SESSION_STORAGE_KEY), + return this.normalizePersistedSessions( + helpers.parseJSON(localStorage.getItem(TERMINAL_SESSION_STORAGE_KEY)), ); - if (!Array.isArray(stored)) return []; + } catch (error) { + console.error("Failed to read persisted terminal sessions:", error); + return { + sessions: [], + changed: false, + }; + } + } + + async getPersistedSessions() { + try { + const { sessions, changed } = this.readPersistedSessions(); + if (!sessions.length) { + if (changed) { + this.savePersistedSessions([]); + } + return []; + } + if (!(await Terminal.isAxsRunning())) { + // Once the backend is gone, previously persisted PIDs are invalid. + this.savePersistedSessions([]); return []; } - return stored - .map((entry) => { - if (!entry) return null; - if (typeof entry === "string") { - return { pid: entry, name: `Terminal ${entry}` }; - } - if (typeof entry === "object" && entry.pid) { - const pid = String(entry.pid); - return { - pid, - name: entry.name || `Terminal ${pid}`, - }; - } - return null; - }) - .filter(Boolean); + + if (changed) { + this.savePersistedSessions(sessions); + } + + return sessions; } catch (error) { console.error("Failed to read persisted terminal sessions:", error); return []; @@ -65,17 +177,18 @@ class TerminalManager { } } - async persistTerminalSession(pid, name) { + async persistTerminalSession(pid, name, pinned = false) { if (!pid) return; const pidStr = String(pid); - const sessions = await this.getPersistedSessions(); + const { sessions } = this.readPersistedSessions(); const existingIndex = sessions.findIndex( (session) => session.pid === pidStr, ); const sessionData = { pid: pidStr, name: name || `Terminal ${pidStr}`, + pinned: pinned === true, }; if (existingIndex >= 0) { @@ -94,7 +207,7 @@ class TerminalManager { if (!pid) return; const pidStr = String(pid); - const sessions = await this.getPersistedSessions(); + const { sessions } = this.readPersistedSessions(); const nextSessions = sessions.filter((session) => session.pid !== pidStr); if (nextSessions.length !== sessions.length) { @@ -119,6 +232,7 @@ class TerminalManager { const instance = await this.createServerTerminal({ pid: session.pid, name: session.name, + pinned: session.pinned === true, reconnecting: true, render: false, }); @@ -129,17 +243,17 @@ class TerminalManager { error, ); failedSessions.push(session.name || session.pid); - this.removePersistedSession(session.pid); + await this.removePersistedSession(session.pid); } } - // Show alert for failed sessions (don't await to not block UI) + // Stale session entries are expected after force-closes; keep startup quiet. if (failedSessions.length > 0) { const message = failedSessions.length === 1 - ? `Failed to restore terminal: ${failedSessions[0]}` - : `Failed to restore ${failedSessions.length} terminals: ${failedSessions.join(", ")}`; - alert(strings["error"], message); + ? `Skipped unavailable terminal: ${failedSessions[0]}` + : `Skipped ${failedSessions.length} unavailable terminals`; + toast(message); } if (activeFileId && manager?.getFile) { @@ -157,12 +271,22 @@ class TerminalManager { */ async createTerminal(options = {}) { try { - const { render, serverMode, ...terminalOptions } = options; + const { render, serverMode, reconnecting, pinned, ...terminalOptions } = + options; const shouldRender = render !== false; const isServerMode = serverMode !== false; + const isReconnecting = reconnecting === true; const terminalId = `terminal_${++this.terminalCounter}`; - const terminalName = options.name || `Terminal ${this.terminalCounter}`; + const providedName = + typeof options.name === "string" ? options.name.trim() : ""; + const terminalNumber = providedName + ? this.extractTerminalNumber(providedName) + : this.getNextAvailableTerminalNumber(); + const terminalName = providedName || `Terminal ${terminalNumber}`; + const titlePrefix = terminalNumber + ? `Terminal ${terminalNumber}` + : terminalName; // Check if terminal is installed before proceeding if (isServerMode) { @@ -198,7 +322,8 @@ class TerminalManager { const terminalFile = new EditorFile(terminalName, { type: "terminal", content: terminalContainer, - tabIcon: "licons terminal", + tabIcon: "icon square-terminal", + pinned, render: shouldRender, }); @@ -227,11 +352,13 @@ class TerminalManager { terminalFile, terminalComponent, uniqueId, + titlePrefix, ); const instance = { id: uniqueId, name: terminalName, + terminalNumber, component: terminalComponent, file: terminalFile, container: terminalContainer, @@ -243,6 +370,7 @@ class TerminalManager { await this.persistTerminalSession( terminalComponent.pid, terminalName, + terminalFile.pinned, ); } resolve(instance); @@ -262,17 +390,19 @@ class TerminalManager { try { // Force remove the tab without confirmation terminalFile._skipTerminalCloseConfirm = true; - terminalFile.remove(true); + terminalFile.remove(true, { ignorePinned: true }); } catch (removeError) { console.error("Error removing terminal tab:", removeError); } // Show alert for terminal creation failure - const errorMessage = error?.message || "Unknown error"; - alert( - strings["error"], - `Failed to create terminal: ${errorMessage}`, - ); + if (!isReconnecting) { + const errorMessage = error?.message || "Unknown error"; + alert( + strings["error"], + `Failed to create terminal: ${errorMessage}`, + ); + } reject(error); } @@ -429,7 +559,12 @@ class TerminalManager { * @param {TerminalComponent} terminalComponent - Terminal component * @param {string} terminalId - Terminal ID */ - async setupTerminalHandlers(terminalFile, terminalComponent, terminalId) { + async setupTerminalHandlers( + terminalFile, + terminalComponent, + terminalId, + titlePrefix = terminalId, + ) { const textarea = terminalComponent.terminal?.textarea; if (textarea) { const onFocus = () => { @@ -486,10 +621,22 @@ class TerminalManager { terminalFile.onclose = () => { this.closeTerminal(terminalId); }; + terminalFile.onpinstatechange = (pinned) => { + if (!terminalComponent.serverMode || !terminalComponent.pid) return; + void this.persistTerminalSession( + terminalComponent.pid, + terminalFile.filename, + pinned, + ); + }; terminalFile._skipTerminalCloseConfirm = false; const originalRemove = terminalFile.remove.bind(terminalFile); - terminalFile.remove = async (force = false) => { + terminalFile.remove = async (force = false, options = {}) => { + if (terminalFile.pinned && !options?.ignorePinned) { + return originalRemove(force, options); + } + if ( !terminalFile._skipTerminalCloseConfirm && this.shouldConfirmTerminalClose() @@ -500,7 +647,7 @@ class TerminalManager { } terminalFile._skipTerminalCloseConfirm = false; - return originalRemove(force); + return originalRemove(force, options); }; // Enhanced resize handling with debouncing @@ -582,14 +729,15 @@ class TerminalManager { terminalComponent.onTitleChange = async (title) => { if (title) { - // Format terminal title as "Terminal ! - title" - const formattedTitle = `Terminal ${this.terminalCounter} - ${title}`; + // Keep the tab prefix stable for this terminal instance. + const formattedTitle = `${titlePrefix} - ${title}`; terminalFile.filename = formattedTitle; if (terminalComponent.serverMode && terminalComponent.pid) { await this.persistTerminalSession( terminalComponent.pid, formattedTitle, + terminalFile.pinned, ); } @@ -617,7 +765,7 @@ class TerminalManager { this.closeTerminal(terminalId); terminalFile._skipTerminalCloseConfirm = true; - terminalFile.remove(true); + terminalFile.remove(true, { ignorePinned: true }); toast(message); }; @@ -696,7 +844,7 @@ class TerminalManager { if (removeTab && terminal.file) { try { terminal.file._skipTerminalCloseConfirm = true; - terminal.file.remove(true); + terminal.file.remove(true, { ignorePinned: true }); } catch (removeError) { console.error("Error removing terminal tab:", removeError); } @@ -729,6 +877,32 @@ class TerminalManager { return this.terminals; } + /** + * Register a touch-selection "More" menu option. + * @param {object} option + * @returns {string|null} + */ + addTouchSelectionMoreOption(option) { + return TerminalTouchSelection.addMoreOption(option); + } + + /** + * Remove a touch-selection "More" menu option. + * @param {string} id + * @returns {boolean} + */ + removeTouchSelectionMoreOption(id) { + return TerminalTouchSelection.removeMoreOption(id); + } + + /** + * List touch-selection "More" menu options. + * @returns {Array} + */ + getTouchSelectionMoreOptions() { + return TerminalTouchSelection.getMoreOptions(); + } + /** * Write to a specific terminal * @param {string} terminalId - Terminal ID diff --git a/src/components/terminal/terminalTouchSelection.js b/src/components/terminal/terminalTouchSelection.js index 648e494aa..a75789a5b 100644 --- a/src/components/terminal/terminalTouchSelection.js +++ b/src/components/terminal/terminalTouchSelection.js @@ -1,10 +1,139 @@ /** * Touch Selection for Terminal */ +import select from "dialogs/select"; import "./terminalTouchSelection.css"; +const DEFAULT_MORE_OPTION_ID = "__acode_terminal_select_all__"; +const terminalMoreOptions = new Map(); +let terminalMoreOptionCounter = 0; + +function ensureDefaultMoreOption() { + if (terminalMoreOptions.has(DEFAULT_MORE_OPTION_ID)) return; + + terminalMoreOptions.set(DEFAULT_MORE_OPTION_ID, { + id: DEFAULT_MORE_OPTION_ID, + label: () => strings["select all"] || "Select all", + icon: "text_format", + action: ({ touchSelection }) => touchSelection.selectAllText(), + }); +} + +function normalizeMoreOption(option) { + if (!option || typeof option !== "object" || Array.isArray(option)) { + console.warn( + "[TerminalTouchSelection] addMoreOption expects an option object.", + ); + return null; + } + + const id = + option.id != null && option.id !== "" + ? String(option.id) + : `terminal_more_option_${++terminalMoreOptionCounter}`; + const label = option.label ?? option.text ?? option.title; + const action = option.action || option.onselect || option.onclick; + + if (!label) { + console.warn( + `[TerminalTouchSelection] More option '${id}' must provide a label/text/title.`, + ); + return null; + } + + if (typeof action !== "function") { + console.warn( + `[TerminalTouchSelection] More option '${id}' must provide an action function.`, + ); + return null; + } + + return { + id, + label, + icon: option.icon || null, + enabled: option.enabled, + action, + }; +} + +function resolveMoreOptionLabel(option, context) { + try { + const value = + typeof option.label === "function" ? option.label(context) : option.label; + return value == null ? "" : String(value); + } catch (error) { + console.warn( + `[TerminalTouchSelection] Failed to resolve label for option '${option.id}'.`, + error, + ); + return ""; + } +} + +function isMoreOptionEnabled(option, context) { + try { + if (typeof option.enabled === "function") { + return option.enabled(context) !== false; + } + if (option.enabled === undefined) return true; + return option.enabled !== false; + } catch (error) { + console.warn( + `[TerminalTouchSelection] Failed to resolve enabled state for option '${option.id}'.`, + error, + ); + return true; + } +} + export default class TerminalTouchSelection { + /** + * Register an option for the "More" menu in touch selection. + * @param {{ + * id?: string, + * label?: string|function(object):string, + * text?: string, + * title?: string, + * icon?: string, + * enabled?: boolean|function(object):boolean, + * action?: function(object):void|Promise, + * onselect?: function(object):void|Promise, + * onclick?: function(object):void|Promise + * }} option + * @returns {string|null} + */ + static addMoreOption(option) { + ensureDefaultMoreOption(); + const normalized = normalizeMoreOption(option); + if (!normalized) return null; + terminalMoreOptions.set(normalized.id, normalized); + return normalized.id; + } + + /** + * Remove a registered "More" menu option by id. + * @param {string} id + * @returns {boolean} + */ + static removeMoreOption(id) { + ensureDefaultMoreOption(); + if (id == null || id === "") return false; + return terminalMoreOptions.delete(String(id)); + } + + /** + * List all registered "More" menu options. + * @returns {Array} + */ + static getMoreOptions() { + ensureDefaultMoreOption(); + return [...terminalMoreOptions.values()].map((option) => ({ ...option })); + } + constructor(terminal, container, options = {}) { + ensureDefaultMoreOption(); + this.terminal = terminal; this.container = container; this.options = { @@ -30,6 +159,8 @@ export default class TerminalTouchSelection { this.initialTouchPos = { x: 0, y: 0 }; this.tapHoldTimeout = null; this.dragHandle = null; + this.isSelectionTouchActive = false; + this.pendingSelectionClearTouch = null; // Zoom tracking this.pinchStartDistance = 0; @@ -59,6 +190,12 @@ export default class TerminalTouchSelection { this.selectionProtected = false; this.protectionTimeout = null; + // Scroll tracking + this.scrollElement = null; + this.isTerminalScrolling = false; + this.scrollEndTimeout = null; + this.scrollEndDelay = 100; + this.init(); } @@ -88,15 +225,15 @@ export default class TerminalTouchSelection { createHandles() { this.startHandle = this.createHandle("start"); this.startHandle.style.cssText += ` - transform: rotate(180deg) translateX(87%); border-radius: 50% 50% 50% 0; `; + this.setHandleOrientation(this.startHandle, "start"); this.endHandle = this.createHandle("end"); this.endHandle.style.cssText += ` - transform: rotate(90deg) translateY(-13%); border-radius: 50% 50% 50% 0; `; + this.setHandleOrientation(this.endHandle, "end"); this.selectionOverlay.appendChild(this.startHandle); this.selectionOverlay.appendChild(this.endHandle); @@ -189,15 +326,6 @@ export default class TerminalTouchSelection { this.boundHandlers.selectionChange = this.onSelectionChange.bind(this); this.terminal.onSelectionChange(this.boundHandlers.selectionChange); - // Click outside to clear selection - only within terminal area - this.boundHandlers.terminalAreaTouchStart = - this.onTerminalAreaTouchStart.bind(this); - this.terminal.element.addEventListener( - "touchstart", - this.boundHandlers.terminalAreaTouchStart, - { passive: false }, - ); - // Orientation change this.boundHandlers.orientationChange = this.onOrientationChange.bind(this); window.addEventListener( @@ -208,7 +336,10 @@ export default class TerminalTouchSelection { // Terminal scroll listener this.boundHandlers.terminalScroll = this.onTerminalScroll.bind(this); - this.terminal.element.addEventListener( + this.scrollElement = + this.terminal.element.querySelector(".xterm-viewport") || + this.terminal.element; + this.scrollElement.addEventListener( "scroll", this.boundHandlers.terminalScroll, { passive: true }, @@ -237,6 +368,14 @@ export default class TerminalTouchSelection { // If already selecting, don't start new selection if (this.isSelecting) { + this.isSelectionTouchActive = false; + this.pendingSelectionClearTouch = { + x: touch.clientX, + y: touch.clientY, + moved: false, + }; + // Hide menu while user scrolls or repositions, then restore on touch end. + this.hideContextMenu(true); return; } @@ -251,6 +390,8 @@ export default class TerminalTouchSelection { } // Start tap-hold timer + this.pendingSelectionClearTouch = null; + this.isSelectionTouchActive = false; this.tapHoldTimeout = setTimeout(() => { if (!this.isSelecting && !this.isPinching) { this.startSelection(touch); @@ -275,6 +416,18 @@ export default class TerminalTouchSelection { const deltaX = Math.abs(touch.clientX - this.touchStartPos.x); const deltaY = Math.abs(touch.clientY - this.touchStartPos.y); const horizontalDelta = touch.clientX - this.touchStartPos.x; + const clearTouch = this.pendingSelectionClearTouch; + + if (clearTouch) { + const clearDeltaX = Math.abs(touch.clientX - clearTouch.x); + const clearDeltaY = Math.abs(touch.clientY - clearTouch.y); + if ( + clearDeltaX > this.options.moveThreshold || + clearDeltaY > this.options.moveThreshold + ) { + clearTouch.moved = true; + } + } // Check if this looks like a back gesture (started near edge and moving horizontally inward) if ( @@ -301,7 +454,11 @@ export default class TerminalTouchSelection { } // If we're selecting, extend selection - if (this.isSelecting && !this.isHandleDragging) { + if ( + this.isSelecting && + !this.isHandleDragging && + this.isSelectionTouchActive + ) { event.preventDefault(); this.extendSelection(touch); } @@ -320,8 +477,25 @@ export default class TerminalTouchSelection { this.tapHoldTimeout = null; } + const shouldClearSelectionByTap = + this.isSelecting && + !this.isHandleDragging && + this.pendingSelectionClearTouch && + !this.pendingSelectionClearTouch.moved && + !this.isTerminalScrolling && + !this.selectionProtected; + + this.pendingSelectionClearTouch = null; + this.isSelectionTouchActive = false; + + if (shouldClearSelectionByTap) { + this.clearSelection(); + return; + } + // If we were selecting and not dragging handles, finalize selection if (this.isSelecting && !this.isHandleDragging) { + if (this.isTerminalScrolling) return; this.finalizeSelection(); } else if (!this.isSelecting) { // Only focus terminal on touch end if not selecting and terminal was already focused @@ -365,6 +539,8 @@ export default class TerminalTouchSelection { this.isHandleDragging = true; this.dragHandle = handleType; + this.isSelectionTouchActive = false; + this.pendingSelectionClearTouch = null; // Store the initial touch position for delta calculations const touch = event.touches[0]; @@ -452,9 +628,6 @@ export default class TerminalTouchSelection { event.preventDefault(); event.stopPropagation(); - // Store the current drag handle before clearing - const currentDragHandle = this.dragHandle; - this.isHandleDragging = false; this.dragHandle = null; @@ -481,43 +654,6 @@ export default class TerminalTouchSelection { } } - onTerminalAreaTouchStart(event) { - // Clear selection if touching terminal area while selecting, except on handles or context menu - if (this.isSelecting) { - // Don't clear selection if it's protected (during keyboard events) - if (this.selectionProtected) { - return; - } - - // Don't interfere with context menu at all - if (this.contextMenu && this.contextMenu.style.display === "flex") { - // Context menu is visible, check if touching it - const rect = this.contextMenu.getBoundingClientRect(); - const touchX = event.touches[0].clientX; - const touchY = event.touches[0].clientY; - - if ( - touchX >= rect.left && - touchX <= rect.right && - touchY >= rect.top && - touchY <= rect.bottom - ) { - // Touching context menu area, don't clear selection - return; - } - } - - const isHandleTouch = - this.startHandle.contains(event.target) || - this.endHandle.contains(event.target); - - // Only clear if touching within terminal but not on handles - if (!isHandleTouch && this.terminal.element.contains(event.target)) { - this.clearSelection(); - } - } - } - onOrientationChange() { // Update cell dimensions and handle positions after orientation change setTimeout(() => { @@ -529,13 +665,28 @@ export default class TerminalTouchSelection { } onTerminalScroll() { - // Update handle positions when terminal is scrolled - if (this.isSelecting) { - this.updateHandlePositions(); - // Hide context menu if it's open during scroll - if (this.contextMenu && this.contextMenu.style.display === "flex") { - this.hideContextMenu(); - } + if (!this.isSelecting || this.isHandleDragging) return; + + this.isTerminalScrolling = true; + this.hideHandles(); + this.hideContextMenu(true); + + if (this.scrollEndTimeout) { + clearTimeout(this.scrollEndTimeout); + } + this.scrollEndTimeout = setTimeout(() => { + this.onTerminalScrollEnd(); + }, this.scrollEndDelay); + } + + onTerminalScrollEnd() { + this.scrollEndTimeout = null; + this.isTerminalScrolling = false; + if (!this.isSelecting || this.isHandleDragging) return; + + this.updateHandlePositions(); + if (this.contextMenuShouldStayVisible && this.options.showContextMenu) { + this.showContextMenu(); } } @@ -565,7 +716,7 @@ export default class TerminalTouchSelection { this.updateHandlePositions(); // Temporarily hide context menu during resize but keep selection if (this.contextMenu && this.contextMenu.style.display === "flex") { - this.hideContextMenu(); + this.hideContextMenu(true); } // Re-show context menu after resize if selection is still active setTimeout(() => { @@ -596,6 +747,8 @@ export default class TerminalTouchSelection { }, 1000); this.isSelecting = true; + this.isSelectionTouchActive = true; + this.pendingSelectionClearTouch = null; // Try to auto-select word at touch position const wordBounds = this.getWordBoundsAt(coords); @@ -713,6 +866,44 @@ export default class TerminalTouchSelection { this.endHandle.style.display = "none"; } + getHandleBaseTransform(orientation) { + if (orientation === "start") { + return "rotate(180deg) translateX(87%)"; + } + return "rotate(90deg) translateY(-13%)"; + } + + setHandleOrientation(handle, orientation) { + if (!handle) return; + + const baseTransform = this.getHandleBaseTransform(orientation); + const hasScale = /\bscale\(/.test(handle.style.transform || ""); + handle.dataset.orientation = orientation; + handle.style.transform = hasScale + ? `${baseTransform} scale(1.2)` + : baseTransform; + } + + updateHandleOrientationForViewportEdges() { + const overlayRect = this.selectionOverlay.getBoundingClientRect(); + + if (this.startHandle.style.display !== "none") { + this.setHandleOrientation(this.startHandle, "start"); + const startRect = this.startHandle.getBoundingClientRect(); + if (startRect.left < overlayRect.left) { + this.setHandleOrientation(this.startHandle, "end"); + } + } + + if (this.endHandle.style.display !== "none") { + this.setHandleOrientation(this.endHandle, "end"); + const endRect = this.endHandle.getBoundingClientRect(); + if (endRect.right > overlayRect.right) { + this.setHandleOrientation(this.endHandle, "start"); + } + } + } + updateHandlePositions() { if (!this.selectionStart || !this.selectionEnd) return; @@ -749,6 +940,8 @@ export default class TerminalTouchSelection { } else { this.endHandle.style.display = "none"; } + + this.updateHandleOrientationForViewportEdges(); } showContextMenu() { @@ -759,17 +952,27 @@ export default class TerminalTouchSelection { // Mark that context menu should stay visible this.contextMenuShouldStayVisible = true; - // Position context menu - center it on selection with viewport bounds checking - const startPos = this.terminalCoordsToPixels(this.selectionStart); - const endPos = this.terminalCoordsToPixels(this.selectionEnd); + // Position context menu - center it on selection (or fallback to center). + const startPos = this.selectionStart + ? this.terminalCoordsToPixels(this.selectionStart) + : null; + const endPos = this.selectionEnd + ? this.terminalCoordsToPixels(this.selectionEnd) + : null; + + const menuWidth = this.contextMenu.offsetWidth || 200; + const menuHeight = this.contextMenu.offsetHeight || 50; + const containerRect = this.container.getBoundingClientRect(); + + let menuX; + let menuY; if (startPos || endPos) { - // Use whichever position is available, or center between them - let centerX, baseY; + let centerX; + let baseY; if (startPos && endPos) { centerX = (startPos.x + endPos.x) / 2; - // Position below the lower of the two positions baseY = Math.max(startPos.y, endPos.y); } else if (startPos) { centerX = startPos.x; @@ -779,36 +982,32 @@ export default class TerminalTouchSelection { baseY = endPos.y; } - const menuWidth = this.contextMenu.offsetWidth || 200; - const menuHeight = this.contextMenu.offsetHeight || 50; + menuX = centerX - menuWidth / 2; + menuY = baseY + this.cellDimensions.height + 40; - const containerRect = this.container.getBoundingClientRect(); - - // Calculate initial position - let menuX = centerX - menuWidth / 2; - let menuY = baseY + this.cellDimensions.height + 40; - - // Ensure menu stays within terminal bounds horizontally - const minX = 10; // padding from left edge - const maxX = containerRect.width - menuWidth - 10; // padding from right edge - menuX = Math.max(minX, Math.min(menuX, maxX)); - - // Ensure menu stays within terminal bounds vertically - const maxY = containerRect.height - menuHeight - 10; // padding from bottom + // If menu would overflow below, prefer placing it above selection. + const maxY = containerRect.height - menuHeight - 10; if (menuY > maxY) { - // If menu would go below terminal, position it above the selection const topY = startPos && endPos ? Math.min(startPos.y, endPos.y) : baseY; menuY = topY - menuHeight - 10; } + } else { + menuX = (containerRect.width - menuWidth) / 2; + menuY = containerRect.height - menuHeight - 20; + } - // Final bounds check - menuY = Math.max(10, Math.min(menuY, maxY)); + const minX = 10; + const maxX = containerRect.width - menuWidth - 10; + menuX = Math.max(minX, Math.min(menuX, maxX)); - this.contextMenu.style.left = `${menuX}px`; - this.contextMenu.style.top = `${menuY}px`; - this.contextMenu.style.display = "flex"; - } + const minY = 10; + const maxY = containerRect.height - menuHeight - 10; + menuY = Math.max(minY, Math.min(menuY, maxY)); + + this.contextMenu.style.left = `${menuX}px`; + this.contextMenu.style.top = `${menuY}px`; + this.contextMenu.style.display = "flex"; } createContextMenu() { @@ -819,7 +1018,10 @@ export default class TerminalTouchSelection { const menuItems = [ { label: strings["copy"], action: this.copySelection.bind(this) }, { label: strings["paste"], action: this.pasteFromClipboard.bind(this) }, - { label: "More...", action: this.showMoreOptions.bind(this) }, + { + label: `${strings["more"] || "More"}...`, + action: this.showMoreOptions.bind(this), + }, ]; menuItems.forEach((item) => { @@ -873,9 +1075,9 @@ export default class TerminalTouchSelection { this.selectionOverlay.appendChild(this.contextMenu); } - hideContextMenu() { + hideContextMenu(force = false) { // Only hide if explicitly requested or if context menu should not stay visible - if (this.contextMenu && !this.contextMenuShouldStayVisible) { + if (this.contextMenu && (force || !this.contextMenuShouldStayVisible)) { this.contextMenu.style.display = "none"; } } @@ -908,10 +1110,96 @@ export default class TerminalTouchSelection { } } + selectAllText() { + if (!this.terminal?.selectAll) return; + this.terminal.selectAll(); + this.currentSelection = this.terminal.getSelection(); + this.isSelecting = !!this.currentSelection; + this.selectionStart = null; + this.selectionEnd = null; + this.hideHandles(); + + if (this.options.showContextMenu && this.currentSelection) { + this.showContextMenu(); + } + } + + getMoreOptionsContext() { + return { + terminal: this.terminal, + touchSelection: this, + selection: this.currentSelection || this.terminal.getSelection(), + clearSelection: () => this.forceClearSelection(), + copySelection: () => this.copySelection(), + pasteFromClipboard: () => this.pasteFromClipboard(), + selectAll: () => this.selectAllText(), + }; + } + + getResolvedMoreOptions() { + ensureDefaultMoreOption(); + const context = this.getMoreOptionsContext(); + + return [...terminalMoreOptions.values()] + .map((option) => { + const label = resolveMoreOptionLabel(option, context); + if (!label) return null; + + return { + ...option, + label, + disabled: !isMoreOptionEnabled(option, context), + }; + }) + .filter(Boolean); + } + + async executeMoreOption(option) { + if (!option || typeof option.action !== "function" || option.disabled) { + if (this.isSelecting && this.options.showContextMenu) { + this.showContextMenu(); + } + return; + } + + try { + await option.action(this.getMoreOptionsContext()); + } catch (error) { + console.error( + `[TerminalTouchSelection] Failed to execute more option '${option.id}'.`, + error, + ); + window.toast?.("Failed to execute action."); + } finally { + if (this.isSelecting && this.options.showContextMenu) { + this.showContextMenu(); + } + } + } + showMoreOptions() { - // Implement additional options if needed - window.toast("More options are not implemented yet."); - this.forceClearSelection(); + const moreOptions = this.getResolvedMoreOptions(); + if (!moreOptions.length) return; + + const items = moreOptions.map((option) => ({ + value: option.id, + text: option.label, + icon: option.icon, + disabled: option.disabled, + })); + + this.hideContextMenu(true); + + select(strings["more"] || "More", items, true) + .then((selectedId) => { + const option = moreOptions.find((entry) => entry.id === selectedId); + return this.executeMoreOption(option); + }) + .catch(() => { + if (this.isSelecting && this.options.showContextMenu) { + this.showContextMenu(); + } + }); } clearSelection() { @@ -930,6 +1218,9 @@ export default class TerminalTouchSelection { this.selectionEnd = null; this.currentSelection = null; this.dragHandle = null; + this.pendingSelectionClearTouch = null; + this.isSelectionTouchActive = false; + this.isTerminalScrolling = false; this.terminal.clearSelection(); this.hideHandles(); @@ -939,6 +1230,10 @@ export default class TerminalTouchSelection { clearTimeout(this.tapHoldTimeout); this.tapHoldTimeout = null; } + if (this.scrollEndTimeout) { + clearTimeout(this.scrollEndTimeout); + this.scrollEndTimeout = null; + } // Clear protection timeout if (this.protectionTimeout) { @@ -963,7 +1258,6 @@ export default class TerminalTouchSelection { forceClearSelection() { // Temporarily disable protection to force clear - const wasProtected = this.selectionProtected; this.selectionProtected = false; this.clearSelection(); // Don't restore protection state since we're clearing @@ -1225,20 +1519,24 @@ export default class TerminalTouchSelection { this.boundHandlers.handleTouchEnd, ); - this.terminal.element.removeEventListener( - "touchstart", - this.boundHandlers.terminalAreaTouchStart, - ); - this.terminal.element.removeEventListener( - "scroll", - this.boundHandlers.terminalScroll, - ); + if (this.scrollElement) { + this.scrollElement.removeEventListener( + "scroll", + this.boundHandlers.terminalScroll, + ); + this.scrollElement = null; + } window.removeEventListener( "orientationchange", this.boundHandlers.orientationChange, ); window.removeEventListener("resize", this.boundHandlers.orientationChange); + if (this.scrollEndTimeout) { + clearTimeout(this.scrollEndTimeout); + this.scrollEndTimeout = null; + } + // Remove selection change listener if (this.terminal.onSelectionChange) { this.terminal.onSelectionChange(null); diff --git a/src/components/tile/style.scss b/src/components/tile/style.scss index 9ccf79bb3..85fc74d2d 100644 --- a/src/components/tile/style.scss +++ b/src/components/tile/style.scss @@ -36,6 +36,15 @@ header { font-size: 0.8em; z-index: 9999; + .file, + .icon { + height: 24px; + width: 24px; + font-size: 1em; + background-size: 22px; + flex-shrink: 0; + } + .file { padding: 0 !important; } @@ -98,4 +107,4 @@ header { transform: scale(0.95) translateZ(0); } } -} \ No newline at end of file +} diff --git a/src/components/toast/index.js b/src/components/toast/index.js index 18f40b85a..17eccf0d0 100644 --- a/src/components/toast/index.js +++ b/src/components/toast/index.js @@ -19,12 +19,14 @@ export default function toast(message, duration = 0, bgColor, color) { style={{ backgroundColor: bgColor, color }} > {message} - {duration === false - ? - : ""} + {duration === false ? ( + + ) : ( + "" + )} ); diff --git a/src/dialogs/prompt.js b/src/dialogs/prompt.js index 9c24a6288..4a0c988fa 100644 --- a/src/dialogs/prompt.js +++ b/src/dialogs/prompt.js @@ -27,12 +27,11 @@ export default function prompt( type = "text", options = {}, ) { - const commands = editorManager.editor.commands; - const originalExec = commands.exec; + // CodeMirror doesn't use commands.exec like ACE, so we store a reference to the editor + // to potentially disable keymaps if needed in the future + const editor = editorManager.editor; const { capitalize = true } = options; - commands.exec = () => {}; // Disable all shortcuts - return new Promise((resolve) => { const inputType = type === "textarea" ? "textarea" : "input"; type = type === "filename" ? "text" : type; @@ -161,7 +160,7 @@ export default function prompt( } function hide() { - commands.exec = originalExec; + // CodeMirror keymaps are handled differently - no need to restore commands.exec actionStack.remove("prompt"); system.setInputType(appSettings.value.keyboardMode); hidePrompt(); diff --git a/src/dialogs/select.js b/src/dialogs/select.js index 764dee865..9503e3de5 100644 --- a/src/dialogs/select.js +++ b/src/dialogs/select.js @@ -48,9 +48,9 @@ function select(title, items, options = {}) { const $list = tag("ul", { className: `scroll${!textTransform ? " no-text-transform" : ""}`, }); - const $titleSpan = title - ? {title} - : null; + const $titleSpan = title ? ( + {title} + ) : null; const $select = (
      {$titleSpan ? [$titleSpan, $list] : $list} diff --git a/src/handlers/editorFileTab.js b/src/handlers/editorFileTab.js index 2e199cba2..0b26d1059 100644 --- a/src/handlers/editorFileTab.js +++ b/src/handlers/editorFileTab.js @@ -208,14 +208,15 @@ function releaseDrag(e) { } else if ( $target.tagName === "INPUT" || $target.tagName === "TEXTAREA" || - $target.classList.contains("ace_text-input") || - $target.closest(".ace_editor") + $target.isContentEditable || + $target.closest(".cm-editor") ) { - // If released on an input area or ace editor + // If released on an input area or CodeMirror editor const filePath = editorManager.activeFile.uri; if (filePath) { - if ($target.closest(".ace_editor")) { - editorManager.editor.insert(filePath); + if ($target.closest(".cm-editor")) { + const view = editorManager.editor; + view.dispatch(view.state.replaceSelection(filePath)); } else { $target.value += filePath; } @@ -282,6 +283,7 @@ function getClientPos(e) { * @param {HTMLElement} $parent */ function updateFileList($parent) { + const pinnedCount = editorManager.files.filter((file) => file.pinned).length; const children = [...$parent.children]; const newFileList = []; for (let el of children) { @@ -294,6 +296,25 @@ function updateFileList($parent) { } editorManager.files = newFileList; + + const draggedFile = newFileList.find((file) => file.tab === $tab); + if (draggedFile) { + const draggedIndex = newFileList.indexOf(draggedFile); + let nextPinnedState; + + if (!draggedFile.pinned && draggedIndex < pinnedCount) { + nextPinnedState = true; + } else if (draggedFile.pinned && draggedIndex >= pinnedCount) { + nextPinnedState = false; + } + + if (nextPinnedState !== undefined) { + draggedFile.setPinnedState(nextPinnedState, { reorder: false }); + if (typeof editorManager.normalizePinnedTabOrder === "function") { + editorManager.normalizePinnedTabOrder(editorManager.files); + } + } + } } /** diff --git a/src/handlers/keyboard.js b/src/handlers/keyboard.js index 62567f8fe..4af827385 100644 --- a/src/handlers/keyboard.js +++ b/src/handlers/keyboard.js @@ -56,7 +56,7 @@ export default function keyboardHandler(e) { const $target = e.target; const { key, ctrlKey, shiftKey, altKey, metaKey } = e; - if ($target instanceof HTMLTextAreaElement) { + if (shouldIgnoreEditorShortcutTarget($target)) { keydownState.esc = key === "Escape"; return; } @@ -64,6 +64,13 @@ export default function keyboardHandler(e) { if (!ctrlKey && !shiftKey && !altKey && !metaKey) return; if (["Control", "Alt", "Meta", "Shift"].includes(key)) return; + const target = editorManager?.editor?.contentDOM; + if (!target) return; + + // Physical keyboard events already reaching CodeMirror should not be + // re-dispatched from the document listener. + if ($target === target || (target.contains?.($target) ?? false)) return; + const event = KeyboardEvent("keydown", { key, ctrlKey, @@ -71,8 +78,25 @@ export default function keyboardHandler(e) { altKey, metaKey, }); - const editor = editorManager.editor.textInput.getElement(); - editor.dispatchEvent(event); + target?.dispatchEvent?.(event); +} + +/** + * Returns true when a keyboard event target should keep the shortcut local + * instead of forwarding it into the editor. + * @param {EventTarget | null} target + * @returns {boolean} + */ +function shouldIgnoreEditorShortcutTarget(target) { + if (!(target instanceof Element)) return false; + + return ( + target instanceof HTMLInputElement || + target instanceof HTMLTextAreaElement || + target instanceof HTMLSelectElement || + target.isContentEditable || + !!target.closest(".prompt, #palette") + ); } document.addEventListener("admob.banner.size", async (event) => { diff --git a/src/handlers/quickTools.js b/src/handlers/quickTools.js index 534a6ce41..20948cc6f 100644 --- a/src/handlers/quickTools.js +++ b/src/handlers/quickTools.js @@ -1,3 +1,13 @@ +import { + findNext as cmFindNext, + findPrevious as cmFindPrevious, + replaceAll as cmReplaceAll, + replaceNext as cmReplaceNext, + getSearchQuery, + SearchQuery, + setSearchQuery, +} from "@codemirror/search"; +import { executeCommand } from "cm/commandRegistry"; import quickTools from "components/quickTools"; import actionStack from "lib/actionStack"; import searchHistory from "lib/searchHistory"; @@ -22,6 +32,88 @@ const events = { meta: [], }; +function getRefValue(ref) { + if (!ref) return ""; + const direct = ref.value; + if (typeof direct === "string") return direct; + if (typeof direct === "number") return String(direct); + if (ref.el) { + const elValue = ref.el.value; + if (typeof elValue === "string") return elValue; + if (typeof elValue === "number") return String(elValue); + } + return ""; +} + +function setRefValue(ref, value) { + if (!ref) return; + const normalized = typeof value === "string" ? value : String(value ?? ""); + if (ref.el) ref.el.value = normalized; + ref.value = normalized; +} + +function applySearchQuery(editor, searchValue, replaceValue) { + if (!editor) return null; + const options = appSettings?.value?.search ?? {}; + const queryConfig = { + search: String(searchValue ?? ""), + caseSensitive: !!options.caseSensitive, + regexp: !!options.regExp, + wholeWord: !!options.wholeWord, + }; + if (replaceValue !== undefined) { + queryConfig.replace = String(replaceValue ?? ""); + } + const query = new SearchQuery(queryConfig); + editor.dispatch({ effects: setSearchQuery.of(query) }); + return query; +} + +function clearSearchQuery(editor) { + if (!editor) return; + editor.dispatch({ + effects: setSearchQuery.of(new SearchQuery({ search: "" })), + }); +} + +function getSelectedText(editor) { + if (!editor) return ""; + if (typeof editor.getSelectedText === "function") { + try { + return editor.getSelectedText() ?? ""; + } catch (_) { + // fall back to CodeMirror state + } + } + try { + const { state } = editor; + if (!state) return ""; + const { from, to } = state.selection.main ?? {}; + if (typeof from !== "number" || typeof to !== "number") return ""; + if (from === to) return ""; + return state.sliceDoc(from, to); + } catch (_) { + return ""; + } +} + +function selectionMatchesQuery(editor, query) { + try { + if (!editor || !query || !query.valid || !query.search) return false; + const range = editor.state?.selection?.main; + if (!range || range.from === range.to) return false; + const cursor = query.getCursor(editor.state.doc, range.from, range.to); + cursor.next(); + return ( + !cursor.done && + cursor.value.from === range.from && + cursor.value.to === range.to + ); + } catch (_) { + return false; + } +} + /** * @typedef { 'shift' | 'alt' | 'ctrl' | 'meta' } QuickToolsEvent * @typedef {(value: boolean)=>void} QuickToolsEventListener @@ -33,14 +125,19 @@ quickTools.$input.addEventListener("input", (e) => { if (!key || key.length > 1) return; const keyCombination = getKeys({ key }); - if (keyCombination.shiftKey && !keyCombination.ctrlKey) { + if ( + keyCombination.shiftKey && + !keyCombination.ctrlKey && + !keyCombination.altKey && + !keyCombination.metaKey + ) { resetKeys(); - editorManager.editor.insert(shiftKeyMapping(key)); + insertText(shiftKeyMapping(key)); return; } const event = KeyboardEvent("keydown", keyCombination); - input = input || editorManager.editor.textInput.getElement(); + input = input || editorManager.editor.contentDOM; resetKeys(); input.dispatchEvent(event); @@ -62,8 +159,8 @@ quickTools.$input.addEventListener("keydown", (e) => { if (input && input !== quickTools.$input) { input.dispatchEvent(event); } else { - // Otherwise fallback to editor input - editorManager.editor.textInput.getElement().dispatchEvent(event); + // Otherwise fallback to editor view content + editorManager.editor.contentDOM.dispatchEvent(event); } }); @@ -96,7 +193,7 @@ function setupHistoryNavigation() { const newValue = searchHistory.navigateSearchUp($searchInput.el.value); $searchInput.el.value = newValue; // Trigger search - if (newValue) find(0, false); + find(0, false); } else if (e.key === "ArrowDown") { e.preventDefault(); const newValue = searchHistory.navigateSearchDown( @@ -104,7 +201,7 @@ function setupHistoryNavigation() { ); $searchInput.el.value = newValue; // Trigger search - if (newValue) find(0, false); + find(0, false); } else if (e.key === "Enter" || e.key === "Escape") { // Reset navigation on enter or escape searchHistory.resetSearchNavigation(); @@ -204,12 +301,14 @@ export default function actions(action, value) { switch (action) { case "insert": - editor.insert(value); - return true; + return insertText(value); - case "command": - editor.execCommand(value); - return true; + case "command": { + const commandName = + typeof value === "string" ? value : String(value ?? ""); + if (!commandName) return false; + return executeCommand(commandName, editor); + } case "key": { value = Number.parseInt(value, 10); @@ -260,14 +359,36 @@ export default function actions(action, value) { if ($replaceInput.value) { searchHistory.addToHistory($replaceInput.value); } - editor.replace($replaceInput.value || ""); + if (editor) { + const replaceValue = getRefValue($replaceInput); + const query = applySearchQuery( + editor, + getRefValue(quickTools.$searchInput), + replaceValue, + ); + if (query && query.search && query.valid) { + cmReplaceNext(editor); + } + updateSearchState(); + } return true; case "search-replace-all": if ($replaceInput.value) { searchHistory.addToHistory($replaceInput.value); } - editor.replaceAll($replaceInput.value || ""); + if (editor) { + const replaceValue = getRefValue($replaceInput); + const query = applySearchQuery( + editor, + getRefValue(quickTools.$searchInput), + replaceValue, + ); + if (query && query.search && query.valid) { + cmReplaceAll(editor); + } + } + updateSearchState(); return true; default: @@ -276,6 +397,12 @@ export default function actions(action, value) { } function setInput() { + const terminalInput = getActiveTerminalInput(); + if (terminalInput) { + input = terminalInput; + return; + } + const { activeElement } = document; if ( !activeElement || @@ -293,7 +420,7 @@ function toggleSearch() { const $searchInput = quickTools.$searchInput.el; const $toggler = quickTools.$toggler; const { editor } = editorManager; - const selectedText = editor.getSelectedText(); + const selectedText = getSelectedText(editor); if (!$footer.contains($searchRow1)) { const { className } = quickTools.$toggler; @@ -302,16 +429,18 @@ function toggleSearch() { $toggler.className = "floating icon clearclose"; $footer.content = [$searchRow1, $searchRow2]; - $searchInput.value = selectedText || ""; + setRefValue($searchInput, selectedText || ""); - $searchInput.oninput = function (e) { - if (this.value) find(0, false); + $searchInput.oninput = function () { + find(0, false); }; $searchInput.onsearch = function () { if (this.value) { searchHistory.addToHistory(this.value); find(1, false); + } else { + find(0, false); } }; @@ -331,9 +460,9 @@ function toggleSearch() { }, }); } else { - const inputValue = $searchInput?.value || ""; + const inputValue = getRefValue($searchInput); if (inputValue !== selectedText) { - $searchInput.value = selectedText; + setRefValue($searchInput, selectedText || ""); find(0, false); return; } @@ -342,7 +471,6 @@ function toggleSearch() { } $searchInput.focus(); - editor.resize(true); } function toggle() { @@ -381,7 +509,6 @@ function setHeight(height = 1, save = true) { if (save) { appSettings.update({ quickTools: height }, false); } - editor.resize(true); if (!height) { $row1.remove(); @@ -425,7 +552,7 @@ function removeSearch() { // Reset history navigation when search is closed searchHistory.resetAllNavigation(); - const { activeFile } = editorManager; + const { activeFile, editor } = editorManager; // Check if current tab is a terminal if ( @@ -437,6 +564,7 @@ function removeSearch() { activeFile.terminalComponent.searchAddon?.clearActiveDecoration(); return; } + clearSearchQuery(editor); focusEditor(); } @@ -457,12 +585,24 @@ function find(skip, backward) { ) { activeFile.terminalComponent.search($searchInput.value, skip, backward); } else { - // Use ACE editor search for regular files - editorManager.editor.find($searchInput.value, { - skipCurrent: skip, - ...appSettings.value.search, - backwards: backward, - }); + const editor = editorManager.editor; + const searchValue = getRefValue($searchInput); + const query = applySearchQuery(editor, searchValue); + if (!query || !query.search || !query.valid) { + updateSearchState(); + return; + } + + const normalizedSkip = Number(skip) || 0; + if (normalizedSkip === 0 && selectionMatchesQuery(editor, query)) { + updateSearchState(); + return; + } + const steps = Math.max(1, normalizedSkip); + const runCommand = backward ? cmFindPrevious : cmFindNext; + for (let i = 0; i < steps; ++i) { + if (!runCommand(editor)) break; + } } updateSearchState(); @@ -470,7 +610,7 @@ function find(skip, backward) { function updateSearchState() { const MAX_COUNT = 999; - const { activeFile } = editorManager; + const { activeFile, editor } = editorManager; const { $searchPos, $searchTotal } = quickTools; // Check if current tab is a terminal @@ -482,30 +622,31 @@ function updateSearchState() { $searchPos.textContent = "?"; return; } + const query = editor ? getSearchQuery(editor.state) : null; + if (!query || !query.search || !query.valid) { + $searchTotal.textContent = "0"; + $searchPos.textContent = "0"; + return; + } - // Use ACE editor search state for regular files - const { editor } = editorManager; - let regex = editor.$search.$options.re; - let all = 0; + const cursor = query.getCursor(editor.state.doc); + let total = 0; let before = 0; - if (regex) { - const value = editor.getValue(); - const offset = editor.session.doc.positionToIndex(editor.selection.anchor); - let last = (regex.lastIndex = 0); - let m; - while ((m = regex.exec(value))) { - all++; - last = m.index; - if (last <= offset) before++; - if (all > MAX_COUNT) break; - if (!m[0]) { - regex.lastIndex = last += 1; - if (last >= value.length) break; - } + let limited = false; + const cursorPos = editor.state.selection.main.head; + for (cursor.next(); !cursor.done; cursor.next()) { + total++; + if (cursorPos >= cursor.value.from) { + before = Math.min(total, MAX_COUNT); + } + if (total === MAX_COUNT) { + cursor.next(); + limited = !cursor.done; + break; } } - $searchTotal.textContent = all > MAX_COUNT ? "999+" : all; - $searchPos.textContent = before; + $searchTotal.textContent = limited ? "999+" : String(total); + $searchPos.textContent = String(before); } /** @@ -535,7 +676,16 @@ function getFooterHeight() { function focusEditor() { const { editor, activeFile } = editorManager; - if (activeFile.focused) { + if (!activeFile?.focused) { + return; + } + + if (activeFile.type === "terminal" && activeFile.terminalComponent) { + activeFile.terminalComponent.focus(); + return; + } + + if (editor) { editor.focus(); } } @@ -549,7 +699,7 @@ function resetKeys() { events.ctrl.forEach((cb) => cb(false)); state.meta = false; events.meta.forEach((cb) => cb(false)); - input.focus(); + input?.focus?.(); } /** @@ -569,6 +719,41 @@ export function getKeys(key = {}) { }; } +function getActiveTerminalComponent() { + const { activeFile } = editorManager; + if (activeFile?.type !== "terminal") return null; + return activeFile.terminalComponent || null; +} + +function getActiveTerminalInput() { + return getActiveTerminalComponent()?.terminal?.textarea || null; +} + +function insertText(value) { + const text = String(value ?? ""); + if (!text) return false; + + const terminalComponent = getActiveTerminalComponent(); + if (terminalComponent?.terminal) { + if (typeof terminalComponent.terminal.paste === "function") { + terminalComponent.terminal.paste(text); + terminalComponent.focus(); + return true; + } + + if (terminalComponent.serverMode && terminalComponent.isConnected) { + terminalComponent.write(text); + terminalComponent.focus(); + return true; + } + + return false; + } + + const { editor } = editorManager; + return editor ? editor.insert(text) : false; +} + function shiftKeyMapping(char) { switch (char) { case "1": diff --git a/src/handlers/quickToolsInit.js b/src/handlers/quickToolsInit.js index b07b7232c..5c803b7ee 100644 --- a/src/handlers/quickToolsInit.js +++ b/src/handlers/quickToolsInit.js @@ -81,12 +81,6 @@ export default function init() { $footer.removeAttribute("data-unsaved"); }); - editorManager.editor.on("focus", () => { - if (key.shift || key.ctrl || key.alt || key.meta) { - quickTools.$input.focus(); - } - }); - root.append($footer, $toggler); document.body.append($input); if ( diff --git a/src/index.d.ts b/src/index.d.ts index fef316150..e5f3190ce 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -32,3 +32,69 @@ interface String { */ hash(): string; } + +type ExecutorCallback = ( + type: "stdout" | "stderr" | "exit", + data: string, +) => void; + +interface Executor { + execute: (command: string, alpine: boolean) => Promise; + start: ( + command: string, + callback: ExecutorCallback, + alpine: boolean, + ) => Promise; + write: (uuid: string, input: string) => Promise; + stop: (uuid: string) => Promise; + isRunning: (uuid: string) => Promise; + /** Move the executor service to the foreground (shows notification) */ + moveToForeground: () => Promise; + /** Move the executor service to the background (hides notification) */ + moveToBackground: () => Promise; + /** Stop the executor service completely */ + stopService: () => Promise; + /** + * Background executor + */ + BackgroundExecutor: Executor; +} + +declare const Executor: Executor | undefined; + +interface Window { + Executor?: Executor; + editorManager?: EditorManager; +} + +interface EditorManager { + editor?: import("@codemirror/view").EditorView; + isCodeMirror?: boolean; + activeFile?: AcodeFile; + getLspMetadata?: (file: AcodeFile) => LspFileMetadata | null; +} + +interface LspFileMetadata { + uri: string; + languageId?: string; + languageName?: string; + view?: import("@codemirror/view").EditorView; + file?: AcodeFile; + rootUri?: string; +} + +/** + * Acode file object + */ +interface AcodeFile { + uri?: string; + name?: string; + session?: unknown; + cacheFile?: string; + [key: string]: unknown; +} + +// Extend globalThis with Executor +declare global { + var Executor: Executor | undefined; +} diff --git a/src/lang/ar-ye.json b/src/lang/ar-ye.json index a80f5f051..badff67b7 100644 --- a/src/lang/ar-ye.json +++ b/src/lang/ar-ye.json @@ -498,5 +498,232 @@ "developer mode": "وضع المطور", "info-developermode": "تمكين أدوات المطور (Eruda) لتصحيح الإضافات ومعاينة حالة التطبيق. سيتم تفعيل المستكشف عند بدء التشغيل.", "developer mode enabled": "تم تفعيل وضع المطور. استخدم لوحة الأوامر لتبديل المستكشف (Ctrl+Shift+I).", - "developer mode disabled": "تم تعطيل وضع المطور" + "developer mode disabled": "تم تعطيل وضع المطور", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/be-by.json b/src/lang/be-by.json index 7ea2d2d32..c70f7c03c 100644 --- a/src/lang/be-by.json +++ b/src/lang/be-by.json @@ -500,5 +500,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/bn-bd.json b/src/lang/bn-bd.json index e05261894..b4f677755 100644 --- a/src/lang/bn-bd.json +++ b/src/lang/bn-bd.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/cs-cz.json b/src/lang/cs-cz.json index 0aa7b1d78..c2459c344 100644 --- a/src/lang/cs-cz.json +++ b/src/lang/cs-cz.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/de-de.json b/src/lang/de-de.json index 3945caeb6..de439f5a5 100644 --- a/src/lang/de-de.json +++ b/src/lang/de-de.json @@ -499,5 +499,232 @@ "info-developermode": "Aktivieren Sie die Entwicklertools (Eruda) zum Debuggen von Plugins und Überprüfen des App-Status. Der Inspektor wird beim Start der App initialisiert.", "developer mode enabled": "Entwicklermodus aktiviert. Verwenden Sie die Befehlspalette, um den Inspektor umzuschalten (Strg+Umschalt+I).", "developer mode disabled": "Entwicklermodus deaktiviert", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/en-us.json b/src/lang/en-us.json index 0ab87fb66..431fcfa97 100644 --- a/src/lang/en-us.json +++ b/src/lang/en-us.json @@ -88,6 +88,7 @@ "tab size": "Tab size", "text wrap": "Text wrap / Word wrap", "theme": "Theme", + "ui zoom": "UI zoom", "unable to delete file": "unable to delete file", "unable to open file": "Sorry, unable to open file", "unable to open folder": "Sorry, unable to open folder", @@ -130,6 +131,7 @@ "invalid backup file": "Invalid backup file", "add path": "Add path", "live autocompletion": "Live autocompletion", + "auto close tags": "Auto close tags", "file properties": "File properties", "path": "Path", "type": "Type", @@ -489,7 +491,6 @@ "issues found": "Issues found", "error details": "Error details", "active tools": "Active tools", - "available tools": "Available tools", "recent": "Recent Files", "command palette": "Open Command Palette", "change theme": "Change Theme", @@ -499,5 +500,231 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "available tools": "Available tools", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-custom-server-removed": "Custom server removed", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-ui-zoom": "Scale text across the Acode interface.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others" } diff --git a/src/lang/es-sv.json b/src/lang/es-sv.json index e0b62a02b..0e2fd34be 100644 --- a/src/lang/es-sv.json +++ b/src/lang/es-sv.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/fr-fr.json b/src/lang/fr-fr.json index 02bf39948..eaca49f5d 100644 --- a/src/lang/fr-fr.json +++ b/src/lang/fr-fr.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/he-il.json b/src/lang/he-il.json index 912766a64..1d3d487e9 100644 --- a/src/lang/he-il.json +++ b/src/lang/he-il.json @@ -500,5 +500,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/hi-in.json b/src/lang/hi-in.json index cd9c34a80..c15d7ea3a 100644 --- a/src/lang/hi-in.json +++ b/src/lang/hi-in.json @@ -500,5 +500,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/hu-hu.json b/src/lang/hu-hu.json index 8186a82c8..7613823d7 100644 --- a/src/lang/hu-hu.json +++ b/src/lang/hu-hu.json @@ -499,5 +499,232 @@ "info-developermode": "Engedélyezze a fejlesztői eszközöket (Eruda) a bővítmények hibakereséséhez és az alkalmazás állapotának megfigyeléséhez. A megfigyelő az alkalmazás indításakor előkészítődik.", "developer mode enabled": "Fejlesztői mód engedélyezve. A parancspaletta használatával kapcsolhatja be/ki a megfigyelőt (Ctrl+Shift+I).", "developer mode disabled": "Fejlesztői mód letiltva", - "copy relative path": "Relatív elérési útvonal másolása" + "copy relative path": "Relatív elérési útvonal másolása", + "shortcut request sent": "Parancsikon-kérelem megnyitva. A befejezéshez koppintson a hozzáadás gombra.", + "add to home screen": "Hozzáadás a kezdőképernyőhöz", + "pin shortcuts not supported": "Ez az eszköz nem támogatja a kezdőképernyő-parancsikonokat.", + "save file before home shortcut": "A kezdőképernyőhöz való hozzáadás előtt mentse el a fájlt.", + "terminal_required_message_for_lsp": "A Terminál nincs telepítve. Először telepítse a Terminált, hogy használni tudja az LSP-kiszolgálókat.", + "shift click selection": "Shift + koppintás/kattintás a kiválasztáshoz", + "earn ad-free time": "Reklámmentesség szerzése egy kis időre", + "indent guides": "Behúzási segédvonalak", + "language servers": "Nyelvi kiszolgálók", + "lint gutter": "Szintaxisellenőrzési margó megjelenítése", + "rainbow brackets": "Szivárványszínű zárójelek", + "lsp-add-custom-server": "Egyéni kiszolgáló hozzáadása", + "lsp-binary-args": "Bináris argumentumok (JSON-tömb)", + "lsp-binary-command": "Bináris parancs", + "lsp-binary-path-optional": "Bináris útvonal (nem kötelező)", + "lsp-check-command-optional": "Ellenőrző parancs (nem kötelező felülbírálás)", + "lsp-checking-installation-status": "Telepítési állapot ellenőrzése…", + "lsp-configured": "Beállítva", + "lsp-custom-server-added": "Egyéni kiszolgáló hozzáadva", + "lsp-default": "Alapértelmezett", + "lsp-details-line": "Részletek: {details}", + "lsp-edit-initialization-options": "Előkészítési beállítások szerkesztése", + "lsp-empty": "Üres", + "lsp-enabled": "Engedélyezve", + "lsp-error-add-server-failed": "Nem sikerült hozzáadni a kiszolgálót", + "lsp-error-args-must-be-array": "Az argumentumoknak JSON-tömbnek kell lenniük", + "lsp-error-binary-command-required": "A bináris parancs megadása kötelező", + "lsp-error-language-id-required": "Legalább egy nyelvazonosító szükséges", + "lsp-error-package-required": "Legalább egy csomag szükséges", + "lsp-error-server-id-required": "Kiszolgálóazonosító szükséges", + "lsp-feature-completion": "Kódkiegészítés", + "lsp-feature-completion-info": "Automatikus kiegészítési javaslatok engedélyezése a kiszolgálótól.", + "lsp-feature-diagnostics": "Diagnosztika", + "lsp-feature-diagnostics-info": "Hibák és figyelmeztetések megjelenítése a nyelvi kiszolgálótól.", + "lsp-feature-formatting": "Formázás", + "lsp-feature-formatting-info": "Kódformázás engedélyezése a nyelvi kiszolgálótól.", + "lsp-feature-hover": "Felugró információk", + "lsp-feature-hover-info": "Típusinformációk és dokumentáció megjelenítése rámutatáskor.", + "lsp-feature-inlay-hints": "Beágyazott tippek", + "lsp-feature-inlay-hints-info": "Beágyazott típustippek megjelenítése a szerkesztőben.", + "lsp-feature-signature": "Szignatúra-súgó", + "lsp-feature-signature-info": "Függvényparaméter-tippek megjelenítése gépelés közben.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Előkészítési beállítások", + "lsp-initialization-options-json": "Előkészítési beállítások (JSON)", + "lsp-initialization-options-updated": "Előkészítési beállítások frissítve", + "lsp-install-command": "Telepítési parancs", + "lsp-install-command-unavailable": "Nem érhető el a telepítési parancs", + "lsp-install-info-check-failed": "Az Acode nem tudta ellenőrizni a telepítési állapotot.", + "lsp-install-info-missing": "A nyelvi kiszolgáló nincs telepítve a terminálkörnyezetben.", + "lsp-install-info-ready": "A nyelvi kiszolgáló telepítve van és készen áll.", + "lsp-install-info-unknown": "A telepítési állapot automatikus ellenőrzése nem lehetséges.", + "lsp-install-info-version-available": "A {version} verzió elérhető.", + "lsp-install-method-apk": "APK-csomag", + "lsp-install-method-cargo": "Cargo-crate", + "lsp-install-method-manual": "Kézi bináris", + "lsp-install-method-npm": "npm-csomag", + "lsp-install-method-pip": "pip-csomag", + "lsp-install-method-shell": "Egyéni parancsértelmező", + "lsp-install-method-title": "Telepítési mód", + "lsp-install-repair": "Telepítés / javítás", + "lsp-installation-status": "Telepítési állapot", + "lsp-installed": "Telepítve", + "lsp-invalid-timeout": "Érvénytelen időtúllépési érték", + "lsp-language-ids": "Nyelvazonosítók (vesszővel elválasztva)", + "lsp-packages-prompt": "{method}-csomagok (vesszővel elválasztva)", + "lsp-remove-installed-files": "Eltávolítja a(z) {server} telepített fájljait?", + "lsp-server-disabled-toast": "Kiszolgáló letiltva", + "lsp-server-enabled-toast": "Kiszolgáló engedélyezve", + "lsp-server-id": "Kiszolgálóazonosító", + "lsp-server-label": "Kiszolgálócímke", + "lsp-server-not-found": "Nem található a kiszolgáló", + "lsp-server-uninstalled": "Kiszolgáló eltávolítva", + "lsp-startup-timeout": "Indítási időtúllépés", + "lsp-startup-timeout-ms": "Indítási időtúllépés (ezredmásodperc)", + "lsp-startup-timeout-set": "Indítási időtúllépés beállítva: {timeout} ms", + "lsp-state-disabled": "letiltva", + "lsp-state-enabled": "engedélyezve", + "lsp-status-check-failed": "Nem sikerült az ellenőrzés", + "lsp-status-installed": "Telepítve", + "lsp-status-installed-version": "Telepítve ({version})", + "lsp-status-line": "Állapot: {status}", + "lsp-status-not-installed": "Nincs telepítve", + "lsp-status-unknown": "Ismeretlen", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Nem érhető el az eltávolítási parancs", + "lsp-uninstall-server": "Kiszolgáló eltávolítása", + "lsp-update-command-optional": "Frissítési parancs (nem kötelező)", + "lsp-update-command-unavailable": "Nem érhető el a frissítési parancs", + "lsp-update-server": "Kiszolgáló frissítése", + "lsp-version-line": "Verzió: {version}", + "lsp-view-initialization-options": "Előkészítési beállítások megtekintése", + "settings-category-about-acode": "Az Acode névjegye", + "settings-category-advanced": "Speciális", + "settings-category-assistance": "Segítségnyújtás", + "settings-category-core": "Alapvető beállítások", + "settings-category-cursor": "Kurzor", + "settings-category-cursor-selection": "Kurzor és kijelölés", + "settings-category-custom-servers": "Egyéni kiszolgálók", + "settings-category-customization-tools": "Testreszabás és eszközök", + "settings-category-display": "Megjelenítés", + "settings-category-editing": "Szerkesztés", + "settings-category-features": "Funkciók", + "settings-category-files-sessions": "Fájlok és munkamenetek", + "settings-category-fonts": "Betűtípusok", + "settings-category-general": "Általános", + "settings-category-guides-indicators": "Segédvonalak és jelzők", + "settings-category-installation": "Telepítés", + "settings-category-interface": "Felület", + "settings-category-maintenance": "Karbantartás", + "settings-category-permissions": "Engedélyek", + "settings-category-preview": "Előnézet", + "settings-category-scrolling": "Görgetés", + "settings-category-server": "Kiszolgáló", + "settings-category-servers": "Kiszolgálók", + "settings-category-session": "Munkamenet", + "settings-category-support-acode": "Az Acode támogatása", + "settings-category-text-layout": "Szöveg és elrendezés", + "settings-info-app-animation": "Alkalmazáson belüli átmeneti animációk vezérlése.", + "settings-info-app-check-files": "Szerkesztők frissítése, ha a fájlok az Acode-on kívül módosulnak.", + "settings-info-app-clean-install-state": "Az első lépések és a beállítási folyamatok által használt tárolt telepítési állapot törlése.", + "settings-info-app-confirm-on-exit": "Megerősítés kérése az alkalmazás bezárása előtt.", + "settings-info-app-console": "Válassza ki, melyik hibakereső konzol-integrációt használja az Acode.", + "settings-info-app-default-file-encoding": "Alapértelmezett kódolás fájlok megnyitásakor vagy létrehozásakor.", + "settings-info-app-exclude-folders": "Mappák és minták kihagyása kereséskor vagy beolvasáskor.", + "settings-info-app-floating-button": "A lebegő gyorsművelet-gomb megjelenítése.", + "settings-info-app-font-manager": "Alkalmazás-betűtípusok telepítése, kezelése vagy eltávolítása.", + "settings-info-app-fullscreen": "Rendszerszintű állapotsor elrejtése az Acode használatakor.", + "settings-info-app-keybindings": "A billentyűparancs-fájl szerkesztése vagy a gyorsbillentyűk alaphelyzetbe állítása.", + "settings-info-app-keyboard-mode": "Válassza ki, hogyan viselkedjen a szoftveres billentyűzet szerkesztéskor.", + "settings-info-app-language": "Válassza ki az alkalmazás nyelvét és a lefordított feliratokat.", + "settings-info-app-open-file-list-position": "Válassza ki, hol jelenjen meg az aktív fájlok listája.", + "settings-info-app-quick-tools-settings": "Gyorseszköz-parancsikonok átrendezése és testreszabása.", + "settings-info-app-quick-tools-trigger-mode": "Válassza ki, hogyan nyíljanak meg a gyorseszközök érintésre.", + "settings-info-app-remember-files": "Legutóbb megnyitott fájlok újbóli megnyitása.", + "settings-info-app-remember-folders": "Az előző munkamenet mappáinak újbóli megnyitása.", + "settings-info-app-retry-remote-fs": "Távoli fájlműveletek megismétlése sikertelen átvitel után.", + "settings-info-app-side-buttons": "További műveletgombok megjelenítése a szerkesztő mellett.", + "settings-info-app-sponsor-sidebar": "Támogatói bejegyzés megjelenítése az oldalsávban.", + "settings-info-app-touch-move-threshold": "Legkisebb elmozdulás az érintéses húzás érzékeléséhez.", + "settings-info-app-vibrate-on-tap": "Haptikus visszajelzés engedélyezése érintésekhez és vezérlőkhöz.", + "settings-info-editor-autosave": "Módosítások automatikus mentése egy bizonyos késleltetés után.", + "settings-info-editor-color-preview": "Színértékek beágyazott előnézete a szerkesztőben.", + "settings-info-editor-fade-fold-widgets": "Kódblokk-összecsukó jelölők elhalványítása, amíg nincs rájuk szükség.", + "settings-info-editor-font-family": "Válassza ki a szerkesztőben használt betűtípust.", + "settings-info-editor-font-size": "Szerkesztő szövegméretének beállítása.", + "settings-info-editor-format-on-save": "Formázó futtatása minden alkalommal, amikor egy fájlt mentenek.", + "settings-info-editor-hard-wrap": "Valódi soremelések beszúrása a tisztán vizuális tördelés helyett.", + "settings-info-editor-indent-guides": "Behúzási segédvonalak megjelenítése.", + "settings-info-editor-line-height": "Sorok közötti függőleges távolság beállítása.", + "settings-info-editor-line-numbers": "Sorok számának megjelenítése a margón.", + "settings-info-editor-lint-gutter": "Diagnosztikai és szintaxisellenőrző jelölők megjelenítése a margón.", + "settings-info-editor-live-autocomplete": "Javaslatok megjelenítése gépelés közben.", + "settings-info-editor-rainbow-brackets": "Összetartozó zárójelek színezése a beágyazási mélység alapján.", + "settings-info-editor-relative-line-numbers": "Távolság megjelenítése a jelenlegi sortól.", + "settings-info-editor-rtl-text": "Jobbról balra haladó viselkedés váltása soronként.", + "settings-info-editor-scroll-settings": "Görgetősáv méretének, sebességének és az ujjmozdulatok viselkedésének beállítása.", + "settings-info-editor-shift-click-selection": "Kijelölés kiterjesztése a Shift + érintés vagy kattintás használatával.", + "settings-info-editor-show-spaces": "Látható szóközjelölők megjelenítése.", + "settings-info-editor-soft-tab": "Szóközök beszúrása tabulátorkarakterek helyett.", + "settings-info-editor-tab-size": "Állítsa be, hány szóközt használjon egy tabulátorlépés.", + "settings-info-editor-teardrop-size": "Kurzorfogantyú méretének beállítása az érintéses szerkesztéshez.", + "settings-info-editor-text-wrap": "Hosszú sorok tördelése a szerkesztőben.", + "settings-info-lsp-add-custom-server": "Egyéni nyelvi kiszolgáló regisztrálása telepítési, frissítési és indítási parancsokkal.", + "settings-info-lsp-edit-init-options": "Előkészítési beállítások szerkesztése JSON-formátumban.", + "settings-info-lsp-install-server": "Ezen nyelvi kiszolgáló telepítése vagy javítása.", + "settings-info-lsp-server-enabled": "Ezen nyelvi kiszolgáló engedélyezése vagy letiltása.", + "settings-info-lsp-startup-timeout": "Állítsa be, hogy az Acode mennyi ideig várjon a kiszolgáló elindulására.", + "settings-info-lsp-uninstall-server": "A kiszolgálóhoz tartozó telepített csomagok vagy binárisok eltávolítása.", + "settings-info-lsp-update-server": "Ezen nyelvi kiszolgáló frissítése, ha elérhető frissítési folyamat.", + "settings-info-lsp-view-init-options": "Érvényes előkészítési beállítások megtekintése JSON-formátumban.", + "settings-info-main-ad-rewards": "Reklámok megtekintése az ideiglenes reklámmentes hozzáférés feloldásához.", + "settings-info-main-app-settings": "Nyelv, alkalmazás viselkedése és gyorselérési eszközök.", + "settings-info-main-backup-restore": "Beállítások exportálása biztonsági mentésbe vagy azok későbbi visszaállítása.", + "settings-info-main-changelog": "Legutóbbi frissítések és kiadási megjegyzések megtekintése.", + "settings-info-main-edit-settings": "Nyers settings.json fájl közvetlen szerkesztése.", + "settings-info-main-editor-settings": "Betűtípusok, tabulátorok, javaslatok és a szerkesztő megjelenítése.", + "settings-info-main-formatter": "Válasszon formázót minden támogatott nyelvhez.", + "settings-info-main-lsp-settings": "Nyelvi kiszolgálók és szerkesztő-intelligencia konfigurálása.", + "settings-info-main-plugins": "Telepített bővítmények és elérhető műveleteik kezelése.", + "settings-info-main-preview-settings": "Előnézeti mód, kiszolgálóportok és a böngésző viselkedése.", + "settings-info-main-rateapp": "Az Acode értékelése a Google Play áruházban.", + "settings-info-main-remove-ads": "Teljesen reklámmentes hozzáférés feloldása.", + "settings-info-main-reset": "Az Acode visszaállítása az alapértelmezett konfigurációra.", + "settings-info-main-sponsors": "Az Acode folyamatos fejlesztésének támogatása.", + "settings-info-main-terminal-settings": "Terminál-téma, betűtípus, kurzor és munkamenet viselkedése.", + "settings-info-main-theme": "Alkalmazás-téma, kontraszt és egyéni színek.", + "settings-info-preview-disable-cache": "A tartalom mindig töltődjön be újra az alkalmazáson belüli böngészőben.", + "settings-info-preview-host": "Az előnézeti webcím megnyitásakor használt gépnév.", + "settings-info-preview-mode": "Válassza ki, hol nyíljon meg az előnézet az indításkor.", + "settings-info-preview-preview-port": "Az élő előnézeti kiszolgáló által használt port.", + "settings-info-preview-server-port": "Az alkalmazás belső kiszolgálója által használt port.", + "settings-info-preview-show-console-toggler": "A konzol gombjának megjelenítése az előnézetben.", + "settings-info-preview-use-current-file": "A jelenlegi fájl előnyben részesítése az előnézet indításakor.", + "settings-info-terminal-convert-eol": "Sorvégek átalakítása a terminálkimenet beillesztésekor vagy megjelenítésekor.", + "settings-note-formatter-settings": "Rendeljen formázót minden nyelvhez. További lehetőségek feloldásához telepítsen formázó bővítményeket.", + "settings-note-lsp-settings": "A nyelvi kiszolgálók automatikus kiegészítést, diagnosztikát, felugró részleteket és egyebeket nyújtanak. Itt telepíthet, frissíthet vagy definiálhat egyéni kiszolgálókat. A felügyelt telepítők a terminál/proot környezetben futnak.", + "search result label singular": "találat", + "search result label plural": "találat", + "pin tab": "Lap rögzítése", + "unpin tab": "Lap rögzítésének megszüntetése", + "pinned tab": "Rögzített lap", + "unpin tab before closing": "Lap rögzítésének megszüntetése bezárás előtt.", + "app font": "Alkalmazás betűtípusa", + "settings-info-app-font-family": "Válassza ki az alkalmazás egész felületén használandó betűtípust.", + "lsp-transport-method-stdio": "STDIO (bináris parancs futtatása)", + "lsp-transport-method-websocket": "WebSocket (kapcsolódás ws/wss webcímhez)", + "lsp-websocket-url": "WebSocket webcím", + "lsp-websocket-server-managed-externally": "Ezt a kiszolgálót külsőleg kezelik WebSocketen keresztül.", + "lsp-error-websocket-url-invalid": "A WebSocket webcímnek ws:// vagy wss:// előtaggal kell kezdődnie", + "lsp-error-websocket-url-required": "A WebSocket webcím megadása kötelező", + "lsp-remove-custom-server": "Egyéni kiszolgáló eltávolítása", + "lsp-remove-custom-server-confirm": "Eltávolítja a(z) {server} egyéni nyelvi kiszolgálót?", + "lsp-custom-server-removed": "Egyéni kiszolgáló eltávolítva", + "settings-info-lsp-remove-custom-server": "Eltávolítja ezt az egyéni nyelvi kiszolgálót az Acode alkalmazásból.", + "unsaved selected tabs warning": "Néhány kiválasztott lap nincs mentve. Válassza ki a további teendőket.", + "save selected tabs": "Kiválasztott lapok mentése", + "close selected tabs": "Kiválasztott lapok bezárása", + "save selected tabs warning": "Biztosan menti és bezárja a kiválasztott lapokat?", + "close selected tabs warning": "Biztosan bezárja a kiválasztott lapokat? A nem mentett módosítások elvesznek, és ez a művelet nem vonható vissza.", + "close tabs to right": "Jobbra lévő lapok bezárása", + "close tabs to left": "Balra lévő lapok bezárása", + "close other tabs": "Többi lap bezárása", + "auto close tags": "Címkék automatikus lezárása", + "settings-info-editor-auto-close-tags": "HTML, XML, Vue, Angular és PHP-sablonfájlokban a záró címkék automatikus beillesztése.", + "ui zoom": "Felhasználói felület nagyítása", + "settings-info-app-ui-zoom": "Szövegek méretezése az Acode teljes felületén." } diff --git a/src/lang/id-id.json b/src/lang/id-id.json index ea6e9c224..ff86cb1c7 100644 --- a/src/lang/id-id.json +++ b/src/lang/id-id.json @@ -38,7 +38,7 @@ "file renamed": "Berkas berganti nama", "file saved": "Berkas disimpan", "folder added": "Folder ditambahkan", - "folder already added": "Folder sudab ditambahkan", + "folder already added": "Folder sudah ditambahkan", "font size": "Ukuran Font", "goto": "Pergi ke baris", "icons definition": "Definisi ikon", @@ -217,7 +217,7 @@ "install": "Pasang", "installing": "Memasang...", "plugins": "Plugin", - "recently used": "Baru - baru ini digunakan", + "recently used": "Baru-baru ini digunakan", "update": "Perbarui", "uninstall": "Copot pemasangan", "download acode pro": "Unduh Acode pro", @@ -500,5 +500,232 @@ "info-developermode": "Aktifkan alat pengembang (Eruda) untuk men-debug plugin dan memeriksa status aplikasi. Inspektor akan diinisialisasi saat aplikasi dimulai.", "developer mode enabled": "Mode pengembang diaktifkan. Gunakan palet perintah untuk mengaktifkan/menonaktifkan inspektor (Ctrl+Shift+I).", "developer mode disabled": "Mode pengembang dinonaktifkan", - "copy relative path": "Copy Relative Path" + "copy relative path": "Salin jalur relatif", + "shortcut request sent": "Permintaan pintasan dibuka. Tekan Tambah untuk menyelesaikan.", + "add to home screen": "Tambah ke layar beranda", + "pin shortcuts not supported": "Pintasan layar beranda tidak didukung di perangkat ini.", + "save file before home shortcut": "Simpan berkas sebelum menambahkannya ke layar beranda.", + "terminal_required_message_for_lsp": "Terminal tidak terpasang. Mohon pasang Terminal terlebih dahulu untuk menggunakan server LSP.", + "shift click selection": "Pemilihan Shift + tekan/klik", + "earn ad-free time": "Ambil waktu bebas iklan", + "indent guides": "Panduan indentasi", + "language servers": "Server bahasa", + "lint gutter": "Tampilkan gutter lint", + "rainbow brackets": "Kurung pelangi", + "lsp-add-custom-server": "Tambah server kostum", + "lsp-binary-args": "Argumen binari (senarai JSON)", + "lsp-binary-command": "Perintah binari", + "lsp-binary-path-optional": "Jalur binari (opsional)", + "lsp-check-command-optional": "Perintah periksa (opsional timpa)", + "lsp-checking-installation-status": "Memeriksa status pemasangan...", + "lsp-configured": "Dikonfigurasi", + "lsp-custom-server-added": "Server kostum ditambahkan", + "lsp-default": "Bawaan", + "lsp-details-line": "Detail: {details}", + "lsp-edit-initialization-options": "Edit opsi inisiasi", + "lsp-empty": "Kosong", + "lsp-enabled": "Diaktifkan", + "lsp-error-add-server-failed": "Gagal menambahkan server", + "lsp-error-args-must-be-array": "Argumen harus berupa sebuah senarai JSON", + "lsp-error-binary-command-required": "Perintah binari diperlukan", + "lsp-error-language-id-required": "Setidaknya satu ID bahasa diperlukan", + "lsp-error-package-required": "Setidaknya satu paket diperlukan", + "lsp-error-server-id-required": "ID server diperlukan", + "lsp-feature-completion": "Penyelesaian kode", + "lsp-feature-completion-info": "Aktifkan saran penyelesaian otomatis dari server.", + "lsp-feature-diagnostics": "Diagnostik", + "lsp-feature-diagnostics-info": "Tampilkan kesalahan dan peringatan dari server bahasa.", + "lsp-feature-formatting": "Pemformatan", + "lsp-feature-formatting-info": "Aktifkan pemformatan kode dari server.", + "lsp-feature-hover": "Informasi saat kursor diarahkan", + "lsp-feature-hover-info": "Tampilkan informasi tipe dan dokumentasi saat kursor diarahkan ke atasnya.", + "lsp-feature-inlay-hints": "Petunjuk sisipan", + "lsp-feature-inlay-hints-info": "Tampilkan petunjuk pengetikan sebaris di editor.", + "lsp-feature-signature": "Bantuan parameter fungsi", + "lsp-feature-signature-info": "Tampilkan petunjuk parameter fungsi saat mengetik.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Opsi inisiasi", + "lsp-initialization-options-json": "Opsi inisiasi (JSON)", + "lsp-initialization-options-updated": "Opsi inisiasi diperbarui", + "lsp-install-command": "Perintah pasang", + "lsp-install-command-unavailable": "Perintah pasang tidak tersedia", + "lsp-install-info-check-failed": "Acode tidak dapat memverifikasi status pemasangan.", + "lsp-install-info-missing": "Server bahasa tidak terpasang di dalam lingkungan terminal.", + "lsp-install-info-ready": "Server bahasa terpasang dan siap.", + "lsp-install-info-unknown": "Status pemasangan tidak dapat diperiksa secara otomatis.", + "lsp-install-info-version-available": "Versi {version} tersedia.", + "lsp-install-method-apk": "Paket APK", + "lsp-install-method-cargo": "Crate Cargo", + "lsp-install-method-manual": "Binari manual", + "lsp-install-method-npm": "Paket npm", + "lsp-install-method-pip": "Paket pip", + "lsp-install-method-shell": "Shell kostum", + "lsp-install-method-title": "Metode pasang", + "lsp-install-repair": "Pasang / perbaiki", + "lsp-installation-status": "Status pemasangan", + "lsp-installed": "Terpasang", + "lsp-invalid-timeout": "Nilai timeout tidak valid", + "lsp-language-ids": "ID bahasa (dipisah koma)", + "lsp-packages-prompt": "{method} paket (dipisah koma)", + "lsp-remove-installed-files": "Hapus berkas terpasang dari {server}?", + "lsp-server-disabled-toast": "Server dinonaktifkan", + "lsp-server-enabled-toast": "Server diaktifkan", + "lsp-server-id": "ID server", + "lsp-server-label": "Label server", + "lsp-server-not-found": "Server tidak ditemukan", + "lsp-server-uninstalled": "Server dicopot pemasangannya", + "lsp-startup-timeout": "Batas waktu mulai", + "lsp-startup-timeout-ms": "Batas waktu mulai (milidetik)", + "lsp-startup-timeout-set": "Batas waktu mulai diatur ke {timeout} ms", + "lsp-state-disabled": "dinonaktifkan", + "lsp-state-enabled": "diaktifkan", + "lsp-status-check-failed": "Pemeriksaan gagal", + "lsp-status-installed": "Terpasang", + "lsp-status-installed-version": "Terpasang ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Tidak terpasang", + "lsp-status-unknown": "Tidak diketahui", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Perintah copot pemasangan tidak tersedia", + "lsp-uninstall-server": "Copot pemasangan server", + "lsp-update-command-optional": "Perintah perbarui (opsional)", + "lsp-update-command-unavailable": "Perintah perbarui tidak tersedia", + "lsp-update-server": "Perbarui server", + "lsp-version-line": "Versi: {version}", + "lsp-view-initialization-options": "Lihat opsi inisiasi", + "settings-category-about-acode": "Tentang Acode", + "settings-category-advanced": "Lanjutan", + "settings-category-assistance": "Asisten", + "settings-category-core": "Pengaturan inti", + "settings-category-cursor": "Kursor", + "settings-category-cursor-selection": "Kursor & pemilihan", + "settings-category-custom-servers": "Kostum server", + "settings-category-customization-tools": "Kostumisasi & alat", + "settings-category-display": "Tampilan", + "settings-category-editing": "Mengedit", + "settings-category-features": "Fitur", + "settings-category-files-sessions": "Berkas & sesi", + "settings-category-fonts": "Huruf", + "settings-category-general": "Umum", + "settings-category-guides-indicators": "Panduan & indikator", + "settings-category-installation": "Pemasangan", + "settings-category-interface": "Antarmuka", + "settings-category-maintenance": "Pemeliharaan", + "settings-category-permissions": "Izin", + "settings-category-preview": "Pratinjau", + "settings-category-scrolling": "Pengguliran", + "settings-category-server": "Server", + "settings-category-servers": "Server", + "settings-category-session": "Sesi", + "settings-category-support-acode": "Dukung Acode", + "settings-category-text-layout": "Teks & tampilan", + "settings-info-app-animation": "Kendalikan animasi transisi di seluruh aplikasi.", + "settings-info-app-check-files": "Segarkan ulang editor ketika berkas berubah di luar Acode.", + "settings-info-app-clean-install-state": "Hapus status instalasi yang tersimpan yang digunakan oleh alur orientasi dan pengaturan.", + "settings-info-app-confirm-on-exit": "Tanyakan sebelum menutup aplikasi.", + "settings-info-app-console": "Pilih mana integrasi konsol debug yang Acode gunakan.", + "settings-info-app-default-file-encoding": "Enkoding bawaan ketika membuka atau membuat berkas.", + "settings-info-app-exclude-folders": "Lewati folder dan pola ketika mencari atau memindai.", + "settings-info-app-floating-button": "Tampilkan tombol aksi cepat yang melayang.", + "settings-info-app-font-manager": "Pasang, kelola, atau menghapus huruf aplikasi.", + "settings-info-app-fullscreen": "Sembunyikan bar status sistem ketika menggunakan Acode.", + "settings-info-app-keybindings": "Edit berkas binding kunci atau atur ulang pintasan.", + "settings-info-app-keyboard-mode": "Pilih bagaimana papan ketik perangkat lunak berperilaku ketika mengedit.", + "settings-info-app-language": "Pilih bahasa aplikasi dan label yang diterjemahkan.", + "settings-info-app-open-file-list-position": "Pilih dimana daftar berkas aktif muncul.", + "settings-info-app-quick-tools-settings": "Urutkan ulang dan kostumisaikan pintasan alat cepat.", + "settings-info-app-quick-tools-trigger-mode": "Pilih bagaimana alat cepat terbuka saat ditekan atau disentuh.", + "settings-info-app-remember-files": "Buka ulang berkas yang dibuka terakhir kali.", + "settings-info-app-remember-folders": "Buka ulang folder dari sesi sebelumnya.", + "settings-info-app-retry-remote-fs": "Ulangi lagi operasi berkas jarak jauh setelah transfer gagal.", + "settings-info-app-side-buttons": "Tampilkan tombol aksi ekstra di samping editor.", + "settings-info-app-sponsor-sidebar": "Tampilkan entri sponsor di bar samping.", + "settings-info-app-touch-move-threshold": "Pergerakan minimum sebelum penyeretan sentuh terdeteksi.", + "settings-info-app-vibrate-on-tap": "Aktifkan umpan balik getar untuk tekan dan kendali.", + "settings-info-editor-autosave": "Simpan perubahan secara otomatis setelah jeda.", + "settings-info-editor-color-preview": "Pratinjau nilai warna langsung di dalam editor.", + "settings-info-editor-fade-fold-widgets": "Redupkan penanda lipatan hingga dibutuhkan.", + "settings-info-editor-font-family": "Pilih tipe huruf yang digunakan di dalam editor.", + "settings-info-editor-font-size": "Atur ukuran teks di editor.", + "settings-info-editor-format-on-save": "Jalankan pemformat ketika sebuah berkas tersimpan.", + "settings-info-editor-hard-wrap": "Masukkan pemotong baris asli daripada hanya membungkusnya secara visual.", + "settings-info-editor-indent-guides": "Tampilkan baris panduan indentasi.", + "settings-info-editor-line-height": "Atur jarak vertikal diantara baris.", + "settings-info-editor-line-numbers": "Tampilkan nomor baris di dalam gutter.", + "settings-info-editor-lint-gutter": "Tampilkan alat diagnostik dan penanda lint di gutter.", + "settings-info-editor-live-autocomplete": "Tampilkan saran ketika anda mengetik.", + "settings-info-editor-rainbow-brackets": "Warna menyamakan kurung dari kedalaman bersarang.", + "settings-info-editor-relative-line-numbers": "Tampilkan jarak dari baris saat ini.", + "settings-info-editor-rtl-text": "Ganti perilaku kanan-ke-kiri setiap baris.", + "settings-info-editor-scroll-settings": "Atur ukuran bar gulir, kecepatan, dan perilaku gestur.", + "settings-info-editor-shift-click-selection": "Perluas pemilihan dengan Shift + tekan atau klik.", + "settings-info-editor-show-spaces": "Tampilkan penanda spasi yang terlihat.", + "settings-info-editor-soft-tab": "Masukkan spasi daripada karakter tab.", + "settings-info-editor-tab-size": "Atur seberapa banyak spasi setiap langkah tab digunakan.", + "settings-info-editor-teardrop-size": "Atur ukuran penangan kursor untuk pengeditan sentuh.", + "settings-info-editor-text-wrap": "Bungkus baris panjang di dalam editor.", + "settings-info-lsp-add-custom-server": "Daftarkan server bahasa kostum dengan perintah pasang, perbarui, dan luncur.", + "settings-info-lsp-edit-init-options": "Edit opsi inisiasi sebagai JSON.", + "settings-info-lsp-install-server": "Pasang atau perbaiki server bahasa ini.", + "settings-info-lsp-server-enabled": "Aktifkan atau nonaktifkan server bahasa ini.", + "settings-info-lsp-startup-timeout": "Atur seberapa lama Acode menunggu untuk server memulai.", + "settings-info-lsp-uninstall-server": "Hapus paket terpasang atau binari dari server ini.", + "settings-info-lsp-update-server": "Perbarui server bahasa ini jika alur pembaruan tersedia.", + "settings-info-lsp-view-init-options": "Lihat opsi inisiasi efektif sebagai JSON.", + "settings-info-main-ad-rewards": "Tonton iklan untuk membuka akses bebas iklan sementara.", + "settings-info-main-app-settings": "Bahasa, perilaku aplikasi, dan alat akses cepat.", + "settings-info-main-backup-restore": "Ekspor pengaturan ke pencadangan atau atur ulang mereka nanti.", + "settings-info-main-changelog": "Lihat perbaruan saat ini dan catatan rilis.", + "settings-info-main-edit-settings": "Edit berkas mentah settings.json secara langsung.", + "settings-info-main-editor-settings": "Huruf, tab, saran, dan tampilan editor.", + "settings-info-main-formatter": "Pilih pemformat untuk setiap bahasa yang didukung.", + "settings-info-main-lsp-settings": "Konfigurasi server bahasa dan kecerdasan editor.", + "settings-info-main-plugins": "Kelola plugin terpasang dan aksi yang tersedia.", + "settings-info-main-preview-settings": "Mode pratinjau, port server, dan perilaku peramban.", + "settings-info-main-rateapp": "Nilai Acode di Google Play.", + "settings-info-main-remove-ads": "Buka akses permanen bebas iklan.", + "settings-info-main-reset": "Atur ulang Acode ke konfigurasi bawaannya.", + "settings-info-main-sponsors": "Mendukung pengembangan Acode yang berkelanjutan.", + "settings-info-main-terminal-settings": "Tema Terminal, huruf, kursor, dan perilaku sesi.", + "settings-info-main-theme": "Tema aplikasi, kontras, dan warna kostum.", + "settings-info-preview-disable-cache": "Selalu muat ulang konten di dalam peramban-dalam-aplikasi.", + "settings-info-preview-host": "Nama host yang digunakan ketika membuka URL pratinjau.", + "settings-info-preview-mode": "Pilih dimana pratinjau dibuka ketika anda meluncurkannya.", + "settings-info-preview-preview-port": "Port yang digunakan oleh server pratinjau langsung.", + "settings-info-preview-server-port": "Port yang digunakan oleh server internal aplikasi.", + "settings-info-preview-show-console-toggler": "Tampilkan tombol konsol di dalam pratinjau.", + "settings-info-preview-use-current-file": "Utamakan berkas saat ini ketika memulai pratinjau.", + "settings-info-terminal-convert-eol": "Konversikan akhiran baris saat menempelkan atau menampilkan output terminal.", + "settings-note-formatter-settings": "Tetapkan pemformat untuk setiap bahasa. Pasang plugin pemformat untuk membuka lebih banyak opsi.", + "settings-note-lsp-settings": "Server bahasa menambahkan fitur pelengkapan otomatis, diagnostik, detail saat kursor diarahkan ke teks, dan banyak lagi. Anda dapat memasang, memperbarui, atau menentukan server khusus di sini. Penginstal terkelola berjalan di dalam lingkungan terminal/proot.", + "search result label singular": "hasil", + "search result label plural": "hasil", + "pin tab": "Sematkan tab", + "unpin tab": "Lepas sematan tab", + "pinned tab": "Tab yang tersematkan", + "unpin tab before closing": "Lepas sematan tab sebelum menutupnya.", + "app font": "Huruf Aplikasi", + "settings-info-app-font-family": "Pilih huruf yang digunakan di seluruh antarmuka aplikasi.", + "lsp-transport-method-stdio": "STDIO (luncurkan perintah binari)", + "lsp-transport-method-websocket": "WebSocket (hubungkan ke sebuah URL ws/wss)", + "lsp-websocket-url": "URL WebSocket", + "lsp-websocket-server-managed-externally": "Server ini dikelola secara eksternal lewat WebSocket.", + "lsp-error-websocket-url-invalid": "URL WebSocket harus berawalan ws:// atau wss://", + "lsp-error-websocket-url-required": "URL WebSocket diperlukan", + "lsp-remove-custom-server": "Hapus server kostum", + "lsp-remove-custom-server-confirm": "Hapus server bahasa kostum {server}?", + "lsp-custom-server-removed": "Server kostum dihapus", + "settings-info-lsp-remove-custom-server": "Hapus server bahasa kostum ini dari Acode.", + "unsaved selected tabs warning": "Beberapa tab terpilih tidak disimpan. Pilih apa yang harus dilakukan.", + "save selected tabs": "Simpan tab terpilih", + "close selected tabs": "Tutup tab terpilih", + "save selected tabs warning": "Apakah Anda yakin ingin menyimpan dan menutup tab terpilih?", + "close selected tabs warning": "Apakah Anda yakin ingin menutup tab terpilih? Anda akan kehilangan perubahan yang belum disimpan dan aksi ini tidak dapat dibatalkan.", + "close tabs to right": "Tutup Kanan", + "close tabs to left": "Tutup Kiri", + "close other tabs": "Tutup Lainnya", + "auto close tags": "Penutup tag otomatis", + "settings-info-editor-auto-close-tags": "Menyisipkan tag penutup di berkas HTML, XML, Vue, Angular, dan templat PHP secara otomatis.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/ir-fa.json b/src/lang/ir-fa.json index 413639ee0..50d85ef67 100644 --- a/src/lang/ir-fa.json +++ b/src/lang/ir-fa.json @@ -500,5 +500,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/it-it.json b/src/lang/it-it.json index f1f0d9625..114125dc0 100644 --- a/src/lang/it-it.json +++ b/src/lang/it-it.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/ja-jp.json b/src/lang/ja-jp.json index 3a06009ed..9dc2d5ec1 100644 --- a/src/lang/ja-jp.json +++ b/src/lang/ja-jp.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/ko-kr.json b/src/lang/ko-kr.json index a4224715c..848b645e1 100644 --- a/src/lang/ko-kr.json +++ b/src/lang/ko-kr.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/ml-in.json b/src/lang/ml-in.json index 9c6528838..fd7d4dfe7 100644 --- a/src/lang/ml-in.json +++ b/src/lang/ml-in.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/mm-unicode.json b/src/lang/mm-unicode.json index f2eb1d0d8..b0f5b21ea 100644 --- a/src/lang/mm-unicode.json +++ b/src/lang/mm-unicode.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/mm-zawgyi.json b/src/lang/mm-zawgyi.json index 5e620371b..e6bb03fb0 100644 --- a/src/lang/mm-zawgyi.json +++ b/src/lang/mm-zawgyi.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/pl-pl.json b/src/lang/pl-pl.json index c639ed2a5..847f07f1b 100644 --- a/src/lang/pl-pl.json +++ b/src/lang/pl-pl.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/pt-br.json b/src/lang/pt-br.json index 08b17dc49..eae43272a 100644 --- a/src/lang/pt-br.json +++ b/src/lang/pt-br.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/pu-in.json b/src/lang/pu-in.json index 01f733e9f..506523cf6 100644 --- a/src/lang/pu-in.json +++ b/src/lang/pu-in.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/ru-ru.json b/src/lang/ru-ru.json index fd8e7f0d9..3eb467537 100644 --- a/src/lang/ru-ru.json +++ b/src/lang/ru-ru.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/tl-ph.json b/src/lang/tl-ph.json index 4d171b072..bc33bf689 100644 --- a/src/lang/tl-ph.json +++ b/src/lang/tl-ph.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/tr-tr.json b/src/lang/tr-tr.json index 5f1a94021..161260ac2 100644 --- a/src/lang/tr-tr.json +++ b/src/lang/tr-tr.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/uk-ua.json b/src/lang/uk-ua.json index a77333871..02bd215b2 100644 --- a/src/lang/uk-ua.json +++ b/src/lang/uk-ua.json @@ -251,17 +251,17 @@ "passphrase": "Passphrase", "connecting...": "Підключення...", "type filename": "Type filename", - "unable to load files": "Unable to load files", + "unable to load files": "Неможливо завантажити файли", "preview port": "Порт попереднього перегляду", "find file": "Знайти файл", "system": "System", "please select a formatter": "Please select a formatter", - "case sensitive": "Case sensitive", - "regular expression": "Regular expression", - "whole word": "Whole word", + "case sensitive": "Чутливість до регістру", + "regular expression": "Регулярний вираз", + "whole word": "Ціле слово", "edit with": "Редагувати за допомогою", "open with": "Відкрити за допомогою", - "no app found to handle this file": "No app found to handle this file", + "no app found to handle this file": "Не знайдено програми для роботи з цим файлом", "restore default settings": "Відновити стандартні налаштування", "server port": "Порт сервера", "preview settings": "Налаштування попереднього перегляду", @@ -269,43 +269,43 @@ "backup/restore note": "Буде створено резервну копію лише ваших налаштувань, індивідуальної теми та комбінацій клавіш. Резервна копія ваших FTP/SFTP не буде створена.", "host": "Хост", "retry ftp/sftp when fail": "Retry ftp/sftp when fail", - "more": "More", + "more": "Більше", "thank you :)": "Дякую :)", "purchase pending": "purchase pending", - "cancelled": "cancelled", - "local": "Local", - "remote": "Remote", - "show console toggler": "Show console toggler", - "binary file": "This file contains binary data, do you want to open it?", - "relative line numbers": "Relative line numbers", + "cancelled": "скасовано", + "local": "Локальний", + "remote": "Віддалений", + "show console toggler": "Показати перемикач консолі", + "binary file": "Цей файл містить бінарні дані, чи хочете ви його відкрити?", + "relative line numbers": "Відносні номери рядків", "elastic tabstops": "Еластичні табулятори", - "line based rtl switching": "Line based RTL switching", + "line based rtl switching": "Комутація RTL на основі ліній", "hard wrap": "Hard wrap", - "spellcheck": "Spellcheck", + "spellcheck": "Перевірка орфографії", "wrap method": "Wrap Method", "use textarea for ime": "Use textarea for IME", "invalid plugin": "Недійсний плагін", "type command": "Type command", "plugin": "Плагін", - "quicktools trigger mode": "Quicktools trigger mode", + "quicktools trigger mode": "Режим запуску Quicktools", "print margin": "Print margin", "touch move threshold": "Touch move threshold", "info-retryremotefsafterfail": "Retry FTP/SFTP connection when fails", - "info-fullscreen": "Hide title bar in home screen.", - "info-checkfiles": "Check file changes when app is in background.", + "info-fullscreen": "Приховати рядок заголовка на головному екрані.", + "info-checkfiles": "Перевіряти зміни файлів, коли програма працює у фоновому режимі.", "info-console": "Choose JavaScript console. Legacy is default console, eruda is a third party console.", "info-keyboardmode": "Keyboard mode for text input, no suggestions will hide suggestions and auto correct. If no suggestions does not work, try to change value to no suggestions aggressive.", - "info-rememberfiles": "Remember opened files when app is closed.", - "info-rememberfolders": "Remember opened folders when app is closed.", - "info-floatingbutton": "Show or hide quick tools floating button.", - "info-openfilelistpos": "Where to show active files list.", - "info-touchmovethreshold": "If your device touch sensitivity is too high, you can increase this value to prevent accidental touch move.", - "info-scroll-settings": "This settings contain scroll settings including text wrap.", - "info-animation": "If the app feels laggy, disable animation.", - "info-quicktoolstriggermode": "If button in quick tools is not working, try to change this value.", + "info-rememberfiles": "Запам'ятовувати відкриті файли після закриття програми.", + "info-rememberfolders": "Запам'ятовувати відкриті папки після закриття програми.", + "info-floatingbutton": "Показати або приховати плаваючу кнопку швидких інструментів.", + "info-openfilelistpos": "Де відображати список активних файлів.", + "info-touchmovethreshold": "Якщо чутливість сенсорного екрану вашого пристрою занадто висока, ви можете збільшити це значення, щоб запобігти випадковому переміщенню.", + "info-scroll-settings": "Ці налаштування містять налаштування прокрутки, включаючи обтікання тексту.", + "info-animation": "Якщо програма працює повільно, вимкніть анімацію.", + "info-quicktoolstriggermode": "Якщо кнопка в швидких інструментах не працює, спробуйте змінити це значення.", "info-checkForAppUpdates": "Автоматично перевіряти наявність оновлень для додатка.", "info-quickTools": "Показати або приховати швидкі інструменти.", - "info-showHiddenFiles": "Show hidden files and folders. (Start with .)", + "info-showHiddenFiles": "Показувати приховані файли та папки. (Починати з .)", "info-all_file_access": "Увімкнути доступ до /sdcard та /storage у терміналі.", "info-fontSize": "The font size used to render text.", "info-fontFamily": "The font family used to render text.", @@ -321,8 +321,8 @@ "info-fontLigatures": "Whether font ligatures are enabled in the terminal.", "info-confirmTabClose": "Ask for confirmation before closing terminal tabs.", "info-backup": "Creates a backup of the terminal installation.", - "info-restore": "Restores a backup of the terminal installation.", - "info-uninstall": "Uninstalls the terminal installation.", + "info-restore": "Відновлює резервну копію інсталяції терміналу.", + "info-uninstall": "Видаляє інсталяцію терміналу.", "owned": "Власний", "api_error": "Сервер API не працює, спробуйте пізніше.", "installed": "Встановлено", @@ -342,10 +342,10 @@ "bottom": "Bottom", "save all": "Зберегти все", "close all": "Закрити все", - "unsaved files warning": "Some files are not saved. Click 'ok' select what to do or press 'cancel' to go back.", - "save all warning": "Are you sure you want to save all files and close? This action cannot be reversed.", + "unsaved files warning": "Деякі файли не збережені. Натисніть «ОК», виберіть, що робити, або натисніть «Скасувати», щоб повернутися назад.", + "save all warning": "Ви впевнені, що хочете зберегти всі файли і закрити? Цю дію неможливо скасувати.", "save all changes warning": "Ви впевнені, що хочете зберегти всі файли?", - "close all warning": "Are you sure you want to close all files? You will lose the unsaved changes and this action cannot be reversed.", + "close all warning": "Ви впевнені, що хочете закрити всі файли? Ви втратите незбережені зміни, і цю дію неможливо скасувати.", "refresh": "Оновити", "shortcut buttons": "Кнопки швидкого доступу", "no result": "Немає результатів", @@ -371,7 +371,7 @@ "quicktools:copyline-up": "Copy line up", "quicktools:copyline-down": "Copy line down", "quicktools:semicolon": "Insert semicolon", - "quicktools:quotation": "Insert quotation", + "quicktools:quotation": "Вставити лапки", "quicktools:and": "Insert and symbol", "quicktools:bar": "Insert bar symbol", "quicktools:equal": "Вставити знак рівності", @@ -380,8 +380,8 @@ "quicktools:alt-key": "Клавіша Alt", "quicktools:meta-key": "Клавіша Windows/Meta", "info-quicktoolssettings": "Налаштуйте кнопки швидкого доступу та клавіші клавіатури в контейнері Quicktools під редактором, щоб покращити свій досвід кодування.", - "info-excludefolders": "Use the pattern **/node_modules/** to ignore all files from the node_modules folder. This will exclude the files from being listed and will also prevent them from being included in file searches.", - "missed files": "Scanned {count} files after search started and will not be included in search.", + "info-excludefolders": "Використовуйте шаблон **/node_modules/**, щоб проігнорувати всі файли з папки node_modules. Це виключить файли зі списку та запобіжить їх включенню в пошук файлів.", + "missed files": "Після початку пошуку було проскановано {count} файлів, які не будуть включені в пошук.", "remove": "Видалити", "quicktools:command-palette": "Палітра команд", "default file encoding": "Кодування файлу за замовчуванням", @@ -410,7 +410,7 @@ "notifications": "Повідомлення", "no_unread_notifications": "Немає непрочитаних повідомлень", "should_use_current_file_for_preview": "Слід використовувати Поточний файл для попереднього перегляду замість стандартного (index.html)", - "fade fold widgets": "Fade Fold Widgets", + "fade fold widgets": "Віджети згортання з ефектом зникання", "quicktools:home-key": "Клавіша Home", "quicktools:end-key": "Клавіша End", "quicktools:pageup-key": "Клавіша PageUp", @@ -471,7 +471,7 @@ "restoring plugins": "Відновлення плагінів", "restoring settings": "Відновлення налаштувань", "legacy backup warning": "Це старий формат резервного копіювання. Деякі функції можуть бути обмежені.", - "checksum mismatch": "Checksum mismatch - backup file may have been modified or corrupted.", + "checksum mismatch": "Невідповідність контрольної суми — файл резервної копії, можливо, було змінено або пошкоджено.", "plugin not found": "Плагін не знайдено в реєстрі", "paid plugin skipped": "Paid plugin - purchase not found", "source not found": "Source file no longer exists", @@ -484,7 +484,7 @@ "backup checksum mismatch": "Невідповідність контрольної суми — файл резервної копії, можливо, було змінено або пошкоджено. Дійте обережно.", "backup checksum verify failed": "Не вдалося перевірити контрольну суму", "backup invalid settings": "Недійсний формат налаштувань", - "backup invalid keybindings": "Invalid keyBindings format", + "backup invalid keybindings": "Неправильний формат keyBindings", "backup invalid plugins": "Неправильний формат installedPlugins", "issues found": "Знайдені проблеми", "error details": "Деталі помилки", @@ -499,5 +499,232 @@ "info-developermode": "Увімкнути інструменти розробника (Eruda) для налагодження плагінів та перевірки стану програми. Інспектор буде ініціалізовано під час запуску програми.", "developer mode enabled": "Режим розробника ввімкнено. Використовуйте палітру команд для перемикання інспектора (Ctrl+Shift+I).", "developer mode disabled": "Режим розробника вимкнено", - "copy relative path": "Копіювати відносний шлях" + "copy relative path": "Копіювати відносний шлях", + "shortcut request sent": "Запит на створення ярлика відкрито. Натисніть «Додати», щоб завершити.", + "add to home screen": "Додати на головний екран", + "pin shortcuts not supported": "Ярлики на головному екрані не підтримуються на цьому пристрої.", + "save file before home shortcut": "Збережіть файл, перш ніж додавати його на головний екран.", + "terminal_required_message_for_lsp": "Термінал не встановлено. Будь ласка, спочатку встановіть Термінал, щоб використовувати сервери LSP.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Діагностика", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Команда встановлення", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Сервер не знайдено", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "вимкнено", + "lsp-state-enabled": "увімкнено", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Встановлено", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Невідомо", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Версія: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "Про Acode", + "settings-category-advanced": "Розширений", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Запитати перед закриттям програми.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Приховати рядок стану системи під час використання Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Виберіть мову програми та перекладені мітки.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Запускати форматувальник щоразу, коли файл зберігається.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Шрифти, вкладки, підказки та відображення редактора.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Налаштуйте мовні сервери та інтелектуальні функції редактора.", + "settings-info-main-plugins": "Керуйте встановленими плагінами та доступними для них діями.", + "settings-info-main-preview-settings": "Режим попереднього перегляду, порти сервера та поведінка браузера.", + "settings-info-main-rateapp": "Оцініть Acode в Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Тема терміналу, шрифт, курсор та поведінка сеансу.", + "settings-info-main-theme": "Тема додатка, контрастність та власні кольори.", + "settings-info-preview-disable-cache": "Завжди перезавантажуйте вміст у вбудованому браузері програми.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Порт, який використовується сервером попереднього перегляду.", + "settings-info-preview-server-port": "Порт, що використовується внутрішнім сервером додатків.", + "settings-info-preview-show-console-toggler": "Показувати кнопку консолі в попередньому перегляді.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Призначте форматувальник для кожної мови. Встановіть плагіни форматувальників, щоб розблокувати більше опцій.", + "settings-note-lsp-settings": "Мовні сервери додають автозаповнення, діагностику, деталі при наведенні курсора тощо. Тут ви можете встановлювати, оновлювати або визначати власні сервери. Керовані інсталятори працюють у середовищі терміналу/proot.", + "search result label singular": "результат", + "search result label plural": "результати", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/uz-uz.json b/src/lang/uz-uz.json index 368dcd120..a21eac915 100644 --- a/src/lang/uz-uz.json +++ b/src/lang/uz-uz.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/vi-vn.json b/src/lang/vi-vn.json index fa5e73e8e..8f61d169e 100644 --- a/src/lang/vi-vn.json +++ b/src/lang/vi-vn.json @@ -500,5 +500,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/zh-cn.json b/src/lang/zh-cn.json index 0ba9eb8b6..cb4cfa9e0 100644 --- a/src/lang/zh-cn.json +++ b/src/lang/zh-cn.json @@ -499,5 +499,232 @@ "info-developermode": "启用开发者工具 (Eruda),用于调试插件和检查应用状态。检查器将在应用启动时初始化。", "developer mode enabled": "开发者模式已启用。使用命令面板切换检查器 (Ctrl+Shift+I)。", "developer mode disabled": "开发者模式已禁用", - "copy relative path": "复制相对路径" + "copy relative path": "复制相对路径", + "shortcut request sent": "快捷方式请求已发送。点击“添加”完成操作。", + "add to home screen": "添加到主屏幕", + "pin shortcuts not supported": "此设备不支持主屏幕快捷方式。", + "save file before home shortcut": "请先保存文件,再添加到主屏幕。", + "terminal_required_message_for_lsp": "未安装终端。请先安装终端以使用 LSP 服务器。", + "shift click selection": "Shift + 点击选择", + "earn ad-free time": "获取免广告时间", + "indent guides": "缩进指示线", + "language servers": "语言服务器", + "lint gutter": "显示 Lint 标记栏", + "rainbow brackets": "彩虹括号", + "lsp-add-custom-server": "添加自定义服务器", + "lsp-binary-args": "可执行参数(JSON 数组)", + "lsp-binary-command": "可执行命令", + "lsp-binary-path-optional": "可执行路径(可选)", + "lsp-check-command-optional": "检查命令(可选覆盖)", + "lsp-checking-installation-status": "正在检查安装状态…", + "lsp-configured": "已配置", + "lsp-custom-server-added": "已添加自定义服务器", + "lsp-default": "默认", + "lsp-details-line": "详情:{details}", + "lsp-edit-initialization-options": "编辑初始化选项", + "lsp-empty": "空", + "lsp-enabled": "已启用", + "lsp-error-add-server-failed": "添加服务器失败", + "lsp-error-args-must-be-array": "参数必须是 JSON 数组", + "lsp-error-binary-command-required": "必须填写可执行命令", + "lsp-error-language-id-required": "至少需要一个语言 ID", + "lsp-error-package-required": "至少需要一个包", + "lsp-error-server-id-required": "必须填写服务器 ID", + "lsp-feature-completion": "代码补全", + "lsp-feature-completion-info": "启用来自服务器的自动补全建议。", + "lsp-feature-diagnostics": "诊断", + "lsp-feature-diagnostics-info": "显示语言服务器返回的错误和警告。", + "lsp-feature-formatting": "格式化", + "lsp-feature-formatting-info": "启用语言服务器提供的代码格式化。", + "lsp-feature-hover": "悬停信息", + "lsp-feature-hover-info": "悬停时显示类型信息和文档。", + "lsp-feature-inlay-hints": "内联提示", + "lsp-feature-inlay-hints-info": "在编辑器中显示类型提示。", + "lsp-feature-signature": "函数签名提示", + "lsp-feature-signature-info": "输入时显示函数参数提示。", + "lsp-feature-state-toast": "{feature} 已{state}", + "lsp-initialization-options": "初始化选项", + "lsp-initialization-options-json": "初始化选项(JSON)", + "lsp-initialization-options-updated": "初始化选项已更新", + "lsp-install-command": "安装命令", + "lsp-install-command-unavailable": "安装命令不可用", + "lsp-install-info-check-failed": "无法验证安装状态。", + "lsp-install-info-missing": "语言服务器未安装在终端环境中。", + "lsp-install-info-ready": "语言服务器已安装并可用。", + "lsp-install-info-unknown": "无法自动检查安装状态。", + "lsp-install-info-version-available": "可用版本:{version}", + "lsp-install-method-apk": "APK 包", + "lsp-install-method-cargo": "Cargo 包", + "lsp-install-method-manual": "手动二进制", + "lsp-install-method-npm": "npm 包", + "lsp-install-method-pip": "pip 包", + "lsp-install-method-shell": "自定义 Shell", + "lsp-install-method-title": "安装方式", + "lsp-install-repair": "安装 / 修复", + "lsp-installation-status": "安装状态", + "lsp-installed": "已安装", + "lsp-invalid-timeout": "无效的超时值", + "lsp-language-ids": "语言 ID(逗号分隔)", + "lsp-packages-prompt": "{method} 包(逗号分隔)", + "lsp-remove-installed-files": "移除 {server} 的已安装文件?", + "lsp-server-disabled-toast": "服务器已禁用", + "lsp-server-enabled-toast": "服务器已启用", + "lsp-server-id": "服务器 ID", + "lsp-server-label": "服务器标签", + "lsp-server-not-found": "未找到服务器", + "lsp-server-uninstalled": "服务器已卸载", + "lsp-startup-timeout": "启动超时", + "lsp-startup-timeout-ms": "启动超时(毫秒)", + "lsp-startup-timeout-set": "启动超时已设置为 {timeout} ms", + "lsp-state-disabled": "禁用", + "lsp-state-enabled": "启用", + "lsp-status-check-failed": "检查失败", + "lsp-status-installed": "已安装", + "lsp-status-installed-version": "已安装({version})", + "lsp-status-line": "状态:{status}", + "lsp-status-not-installed": "未安装", + "lsp-status-unknown": "未知", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "卸载命令不可用", + "lsp-uninstall-server": "卸载服务器", + "lsp-update-command-optional": "更新命令(可选)", + "lsp-update-command-unavailable": "更新命令不可用", + "lsp-update-server": "更新服务器", + "lsp-version-line": "版本:{version}", + "lsp-view-initialization-options": "查看初始化选项", + "settings-category-about-acode": "关于 Acode", + "settings-category-advanced": "高级", + "settings-category-assistance": "辅助", + "settings-category-core": "核心设置", + "settings-category-cursor": "光标", + "settings-category-cursor-selection": "光标与选区", + "settings-category-custom-servers": "自定义服务器", + "settings-category-customization-tools": "自定义与工具", + "settings-category-display": "显示", + "settings-category-editing": "编辑", + "settings-category-features": "功能", + "settings-category-files-sessions": "文件与会话", + "settings-category-fonts": "字体", + "settings-category-general": "通用", + "settings-category-guides-indicators": "指示线与标记", + "settings-category-installation": "安装", + "settings-category-interface": "界面", + "settings-category-maintenance": "维护", + "settings-category-permissions": "权限", + "settings-category-preview": "预览", + "settings-category-scrolling": "滚动", + "settings-category-server": "服务器", + "settings-category-servers": "服务器", + "settings-category-session": "会话", + "settings-category-support-acode": "支持 Acode", + "settings-category-text-layout": "文本与布局", + "settings-info-app-animation": "控制应用内的过渡动画。", + "settings-info-app-check-files": "当文件在外部被修改时刷新编辑器。", + "settings-info-app-clean-install-state": "清除安装流程使用的存储状态。", + "settings-info-app-confirm-on-exit": "退出应用前进行确认。", + "settings-info-app-console": "选择 Acode 使用的调试控制台集成方式。", + "settings-info-app-default-file-encoding": "打开或创建文件时的默认编码。", + "settings-info-app-exclude-folders": "搜索或扫描时跳过指定文件夹或模式。", + "settings-info-app-floating-button": "显示悬浮快捷按钮。", + "settings-info-app-font-manager": "安装、管理或移除应用字体。", + "settings-info-app-fullscreen": "编辑时隐藏系统状态栏。", + "settings-info-app-keybindings": "编辑快捷键文件或重置快捷键。", + "settings-info-app-keyboard-mode": "选择软件键盘的编辑行为。", + "settings-info-app-language": "选择应用语言和翻译标签。", + "settings-info-app-open-file-list-position": "选择活动文件列表的位置。", + "settings-info-app-quick-tools-settings": "自定义和排序快捷工具。", + "settings-info-app-quick-tools-trigger-mode": "选择快捷工具的触发方式。", + "settings-info-app-remember-files": "重新打开上次编辑的文件。", + "settings-info-app-remember-folders": "重新打开上次使用的文件夹。", + "settings-info-app-retry-remote-fs": "远程文件传输失败后自动重试。", + "settings-info-app-side-buttons": "在编辑器旁显示额外操作按钮。", + "settings-info-app-sponsor-sidebar": "在侧边栏显示赞助入口。", + "settings-info-app-touch-move-threshold": "触摸拖动的最小移动距离。", + "settings-info-app-vibrate-on-tap": "启用触控震动反馈。", + "settings-info-editor-autosave": "延迟后自动保存更改。", + "settings-info-editor-color-preview": "在编辑器中预览颜色值。", + "settings-info-editor-fade-fold-widgets": "折叠标记在非活动时变暗。", + "settings-info-editor-font-family": "选择编辑器字体。", + "settings-info-editor-font-size": "设置编辑器字体大小。", + "settings-info-editor-format-on-save": "保存文件时自动格式化。", + "settings-info-editor-hard-wrap": "插入真实换行,而不仅是视觉换行。", + "settings-info-editor-indent-guides": "显示缩进指示线。", + "settings-info-editor-line-height": "调整行间距。", + "settings-info-editor-line-numbers": "在边栏显示行号。", + "settings-info-editor-lint-gutter": "在边栏显示诊断和 Lint 标记。", + "settings-info-editor-live-autocomplete": "输入时显示自动补全建议。", + "settings-info-editor-rainbow-brackets": "按嵌套深度为括号着色。", + "settings-info-editor-relative-line-numbers": "显示相对行号。", + "settings-info-editor-rtl-text": "按行切换从右到左文本行为。", + "settings-info-editor-scroll-settings": "调整滚动条大小、速度和手势行为。", + "settings-info-editor-shift-click-selection": "使用 Shift + 点击扩展选区。", + "settings-info-editor-show-spaces": "显示空白字符标记。", + "settings-info-editor-soft-tab": "使用空格代替 Tab 字符。", + "settings-info-editor-tab-size": "设置 Tab 等效空格数。", + "settings-info-editor-teardrop-size": "设置触控编辑的光标拖动手柄大小。", + "settings-info-editor-text-wrap": "在编辑器中自动换行长行。", + "settings-info-lsp-add-custom-server": "注册自定义语言服务器,包括安装、更新和启动命令。", + "settings-info-lsp-edit-init-options": "以 JSON 形式编辑初始化选项。", + "settings-info-lsp-install-server": "安装或修复此语言服务器。", + "settings-info-lsp-server-enabled": "启用或禁用此语言服务器。", + "settings-info-lsp-startup-timeout": "设置语言服务器启动等待时间。", + "settings-info-lsp-uninstall-server": "移除此服务器的已安装包或二进制文件。", + "settings-info-lsp-update-server": "如果可用,更新此语言服务器。", + "settings-info-lsp-view-init-options": "以 JSON 查看有效的初始化选项。", + "settings-info-main-ad-rewards": "观看广告以解锁临时免广告。", + "settings-info-main-app-settings": "语言、应用行为和快捷工具。", + "settings-info-main-backup-restore": "导出或恢复设置备份。", + "settings-info-main-changelog": "查看最近更新和发布说明。", + "settings-info-main-edit-settings": "直接编辑 settings.json。", + "settings-info-main-editor-settings": "字体、Tab、建议和编辑器显示。", + "settings-info-main-formatter": "为每种语言选择格式化器。", + "settings-info-main-lsp-settings": "配置语言服务器和智能编辑功能。", + "settings-info-main-plugins": "管理已安装插件及其操作。", + "settings-info-main-preview-settings": "预览模式、端口和浏览器行为。", + "settings-info-main-rateapp": "在 Google Play 上评价 Acode。", + "settings-info-main-remove-ads": "解锁永久免广告。", + "settings-info-main-reset": "将 Acode 重置为默认配置。", + "settings-info-main-sponsors": "支持 Acode 的持续开发。", + "settings-info-main-terminal-settings": "终端主题、字体、光标和会话行为。", + "settings-info-main-theme": "应用主题、对比度和自定义颜色。", + "settings-info-preview-disable-cache": "在预览中始终重新加载内容。", + "settings-info-preview-host": "打开预览 URL 时使用的主机名。", + "settings-info-preview-mode": "选择预览的打开方式。", + "settings-info-preview-preview-port": "实时预览服务器使用的端口。", + "settings-info-preview-server-port": "内部应用服务器使用的端口。", + "settings-info-preview-show-console-toggler": "在预览中显示控制台按钮。", + "settings-info-preview-use-current-file": "启动预览时优先使用当前文件。", + "settings-info-terminal-convert-eol": "粘贴或渲染终端输出时转换行结尾。", + "settings-note-formatter-settings": "为每种语言分配格式化器。安装格式化插件可解锁更多选项。", + "settings-note-lsp-settings": "语言服务器提供补全、诊断、悬停等功能。你可以在此安装、更新或定义自定义服务器。托管安装程序在终端/proot 环境中运行。", + "search result label singular": "条结果", + "search result label plural": "条结果", + "pin tab": "固定标签页", + "unpin tab": "取消固定标签页", + "pinned tab": "已固定的标签页", + "unpin tab before closing": "关闭前请先取消固定该标签页。", + "app font": "应用字体", + "settings-info-app-font-family": "选择在应用界面中使用的字体。", + "lsp-transport-method-stdio": "STDIO(启动可执行命令)", + "lsp-transport-method-websocket": "WebSocket(连接到 ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "该服务器通过 WebSocket 在外部管理。", + "lsp-error-websocket-url-invalid": "WebSocket URL 必须以 ws:// 或 wss:// 开头", + "lsp-error-websocket-url-required": "必须提供 WebSocket URL", + "lsp-remove-custom-server": "移除自定义服务器", + "lsp-remove-custom-server-confirm": "确定要移除自定义语言服务器 {server} 吗?", + "lsp-custom-server-removed": "自定义服务器已移除", + "settings-info-lsp-remove-custom-server": "从 Acode 中移除此自定义语言服务器。", + "unsaved selected tabs warning": "部分选中的标签页尚未保存,请选择要执行的操作。", + "save selected tabs": "保存选中的标签页", + "close selected tabs": "关闭选中的标签页", + "save selected tabs warning": "确定要保存并关闭选中的标签页吗?", + "close selected tabs warning": "确定要关闭选中的标签页吗?未保存的更改将丢失且无法恢复。", + "close tabs to right": "关闭右侧标签页", + "close tabs to left": "关闭左侧标签页", + "close other tabs": "关闭其他标签页", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/zh-hant.json b/src/lang/zh-hant.json index 0892ea120..e546ab526 100644 --- a/src/lang/zh-hant.json +++ b/src/lang/zh-hant.json @@ -499,5 +499,232 @@ "info-developermode": "啟用開發者工具 (Eruda),用於調試插件和檢查應用狀態。檢查器將在應用啟動時初始化。", "developer mode enabled": "開發者模式已啟用。使用命令面板切換檢查器 (Ctrl+Shift+I)。", "developer mode disabled": "開發者模式已禁用", - "copy relative path": "複製相對路徑" + "copy relative path": "複製相對路徑", + "shortcut request sent": "快捷方式請求已發送。點擊「添加」完成操作。", + "add to home screen": "添加到主屏幕", + "pin shortcuts not supported": "此設備不支持主屏幕快捷方式。", + "save file before home shortcut": "請先保存文件,再添加到主屏幕。", + "terminal_required_message_for_lsp": "未安裝終端。請先安裝終端以使用 LSP 服務器。", + "shift click selection": "Shift + 點擊選擇", + "earn ad-free time": "獲取免廣告時間", + "indent guides": "縮進指示線", + "language servers": "語言服務器", + "lint gutter": "顯示 Lint 標記欄", + "rainbow brackets": "彩虹括號", + "lsp-add-custom-server": "添加自定義服務器", + "lsp-binary-args": "可執行參數(JSON 數組)", + "lsp-binary-command": "可執行命令", + "lsp-binary-path-optional": "可執行路徑(可選)", + "lsp-check-command-optional": "檢查命令(可選覆蓋)", + "lsp-checking-installation-status": "正在檢查安裝狀態…", + "lsp-configured": "已配置", + "lsp-custom-server-added": "已添加自定義服務器", + "lsp-default": "默認", + "lsp-details-line": "詳情:{details}", + "lsp-edit-initialization-options": "編輯初始化選項", + "lsp-empty": "空", + "lsp-enabled": "已啟用", + "lsp-error-add-server-failed": "添加服務器失敗", + "lsp-error-args-must-be-array": "參數必須是 JSON 數組", + "lsp-error-binary-command-required": "必須填寫可執行命令", + "lsp-error-language-id-required": "至少需要一個語言 ID", + "lsp-error-package-required": "至少需要一個包", + "lsp-error-server-id-required": "必須填寫服務器 ID", + "lsp-feature-completion": "代碼補全", + "lsp-feature-completion-info": "啟用來自服務器的自動補全建議。", + "lsp-feature-diagnostics": "診斷", + "lsp-feature-diagnostics-info": "顯示語言服務器返回的錯誤和警告。", + "lsp-feature-formatting": "格式化", + "lsp-feature-formatting-info": "啟用語言服務器提供的代碼格式化。", + "lsp-feature-hover": "懸停信息", + "lsp-feature-hover-info": "懸停時顯示類型信息和文檔。", + "lsp-feature-inlay-hints": "內聯提示", + "lsp-feature-inlay-hints-info": "在編輯器中顯示類型提示。", + "lsp-feature-signature": "函數簽名提示", + "lsp-feature-signature-info": "輸入時顯示函數參數提示。", + "lsp-feature-state-toast": "{feature} 已{state}", + "lsp-initialization-options": "初始化選項", + "lsp-initialization-options-json": "初始化選項(JSON)", + "lsp-initialization-options-updated": "初始化選項已更新", + "lsp-install-command": "安裝命令", + "lsp-install-command-unavailable": "安裝命令不可用", + "lsp-install-info-check-failed": "無法驗證安裝狀態。", + "lsp-install-info-missing": "語言服務器未安裝在終端環境中。", + "lsp-install-info-ready": "語言服務器已安裝並可用。", + "lsp-install-info-unknown": "無法自動檢查安裝狀態。", + "lsp-install-info-version-available": "可用版本:{version}", + "lsp-install-method-apk": "APK 包", + "lsp-install-method-cargo": "Cargo 包", + "lsp-install-method-manual": "手動二進制", + "lsp-install-method-npm": "npm 包", + "lsp-install-method-pip": "pip 包", + "lsp-install-method-shell": "自定義 Shell", + "lsp-install-method-title": "安裝方式", + "lsp-install-repair": "安裝 / 修復", + "lsp-installation-status": "安裝狀態", + "lsp-installed": "已安裝", + "lsp-invalid-timeout": "無效的超時值", + "lsp-language-ids": "語言 ID(逗號分隔)", + "lsp-packages-prompt": "{method} 包(逗號分隔)", + "lsp-remove-installed-files": "移除 {server} 的已安裝文件?", + "lsp-server-disabled-toast": "服務器已禁用", + "lsp-server-enabled-toast": "服務器已啟用", + "lsp-server-id": "服務器 ID", + "lsp-server-label": "服務器標籤", + "lsp-server-not-found": "未找到服務器", + "lsp-server-uninstalled": "服務器已卸載", + "lsp-startup-timeout": "啟動超時", + "lsp-startup-timeout-ms": "啟動超時(毫秒)", + "lsp-startup-timeout-set": "啟動超時已設置為 {timeout} ms", + "lsp-state-disabled": "禁用", + "lsp-state-enabled": "啟用", + "lsp-status-check-failed": "檢查失敗", + "lsp-status-installed": "已安裝", + "lsp-status-installed-version": "已安裝({version})", + "lsp-status-line": "狀態:{status}", + "lsp-status-not-installed": "未安裝", + "lsp-status-unknown": "未知", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "卸載命令不可用", + "lsp-uninstall-server": "卸載服務器", + "lsp-update-command-optional": "更新命令(可選)", + "lsp-update-command-unavailable": "更新命令不可用", + "lsp-update-server": "更新服務器", + "lsp-version-line": "版本:{version}", + "lsp-view-initialization-options": "查看初始化選項", + "settings-category-about-acode": "關於 Acode", + "settings-category-advanced": "高級", + "settings-category-assistance": "輔助", + "settings-category-core": "核心設置", + "settings-category-cursor": "光標", + "settings-category-cursor-selection": "光標與選區", + "settings-category-custom-servers": "自定義服務器", + "settings-category-customization-tools": "自定義與工具", + "settings-category-display": "顯示", + "settings-category-editing": "編輯", + "settings-category-features": "功能", + "settings-category-files-sessions": "文件與會話", + "settings-category-fonts": "字體", + "settings-category-general": "通用", + "settings-category-guides-indicators": "指示線與標記", + "settings-category-installation": "安裝", + "settings-category-interface": "界面", + "settings-category-maintenance": "維護", + "settings-category-permissions": "權限", + "settings-category-preview": "預覽", + "settings-category-scrolling": "滾動", + "settings-category-server": "服務器", + "settings-category-servers": "服務器", + "settings-category-session": "會話", + "settings-category-support-acode": "支持 Acode", + "settings-category-text-layout": "文本與佈局", + "settings-info-app-animation": "控制應用內的過渡動畫。", + "settings-info-app-check-files": "當文件在外部被修改時刷新編輯器。", + "settings-info-app-clean-install-state": "清除安裝流程使用的存儲狀態。", + "settings-info-app-confirm-on-exit": "退出應用前進行確認。", + "settings-info-app-console": "選擇 Acode 使用的調試控制台集成方式。", + "settings-info-app-default-file-encoding": "打開或創建文件時的默認編碼。", + "settings-info-app-exclude-folders": "搜索或掃描時跳過指定文件夾或模式。", + "settings-info-app-floating-button": "顯示懸浮快捷按鈕。", + "settings-info-app-font-manager": "安裝、管理或移除應用字體。", + "settings-info-app-fullscreen": "編輯時隱藏系統狀態欄。", + "settings-info-app-keybindings": "編輯快捷鍵文件或重置快捷鍵。", + "settings-info-app-keyboard-mode": "選擇軟件鍵盤的編輯行為。", + "settings-info-app-language": "選擇應用語言和翻譯標籤。", + "settings-info-app-open-file-list-position": "選擇活動文件列表的位置。", + "settings-info-app-quick-tools-settings": "自定義和排序快捷工具。", + "settings-info-app-quick-tools-trigger-mode": "選擇快捷工具的觸發方式。", + "settings-info-app-remember-files": "重新打開上次編輯的文件。", + "settings-info-app-remember-folders": "重新打開上次使用的文件夾。", + "settings-info-app-retry-remote-fs": "遠程文件傳輸失敗後自動重試。", + "settings-info-app-side-buttons": "在編輯器旁顯示額外操作按鈕。", + "settings-info-app-sponsor-sidebar": "在側邊欄顯示贊助入口。", + "settings-info-app-touch-move-threshold": "觸摸拖動的最小移動距離。", + "settings-info-app-vibrate-on-tap": "啟用觸控震動反饋。", + "settings-info-editor-autosave": "延遲後自動保存更改。", + "settings-info-editor-color-preview": "在編輯器中預覽顏色值。", + "settings-info-editor-fade-fold-widgets": "折疊標記在非活動時變暗。", + "settings-info-editor-font-family": "選擇編輯器字體。", + "settings-info-editor-font-size": "設置編輯器字體大小。", + "settings-info-editor-format-on-save": "保存文件時自動格式化。", + "settings-info-editor-hard-wrap": "插入真實換行,而不僅是視覺換行。", + "settings-info-editor-indent-guides": "顯示縮進指示線。", + "settings-info-editor-line-height": "調整行間距。", + "settings-info-editor-line-numbers": "在邊欄顯示行號。", + "settings-info-editor-lint-gutter": "在邊欄顯示診斷和 Lint 標記。", + "settings-info-editor-live-autocomplete": "輸入時顯示自動補全建議。", + "settings-info-editor-rainbow-brackets": "按嵌套深度為括號著色。", + "settings-info-editor-relative-line-numbers": "顯示相對行號。", + "settings-info-editor-rtl-text": "按行切換從右到左文本行為。", + "settings-info-editor-scroll-settings": "調整滾動條大小、速度和手勢行為。", + "settings-info-editor-shift-click-selection": "使用 Shift + 點擊擴展選區。", + "settings-info-editor-show-spaces": "顯示空白字符標記。", + "settings-info-editor-soft-tab": "使用空格代替 Tab 字符。", + "settings-info-editor-tab-size": "設置 Tab 等效空格數。", + "settings-info-editor-teardrop-size": "設置觸控編輯的光標拖動手柄大小。", + "settings-info-editor-text-wrap": "在編輯器中自動換行長行。", + "settings-info-lsp-add-custom-server": "註冊自定義語言服務器,包括安裝、更新和啟動命令。", + "settings-info-lsp-edit-init-options": "以 JSON 形式編輯初始化選項。", + "settings-info-lsp-install-server": "安裝或修復此語言服務器。", + "settings-info-lsp-server-enabled": "啟用或禁用此語言服務器。", + "settings-info-lsp-startup-timeout": "設置語言服務器啟動等待時間。", + "settings-info-lsp-uninstall-server": "移除此服務器的已安裝包或二進制文件。", + "settings-info-lsp-update-server": "如果可用,更新此語言服務器。", + "settings-info-lsp-view-init-options": "以 JSON 查看有效的初始化選項。", + "settings-info-main-ad-rewards": "觀看廣告以解鎖臨時免廣告。", + "settings-info-main-app-settings": "語言、應用行為和快捷工具。", + "settings-info-main-backup-restore": "導出或恢復設置備份。", + "settings-info-main-changelog": "查看最近更新和發布說明。", + "settings-info-main-edit-settings": "直接編輯 settings.json。", + "settings-info-main-editor-settings": "字體、Tab、建議和編輯器顯示。", + "settings-info-main-formatter": "為每種語言選擇格式化器。", + "settings-info-main-lsp-settings": "配置語言服務器和智能編輯功能。", + "settings-info-main-plugins": "管理已安裝插件及其操作。", + "settings-info-main-preview-settings": "預覽模式、端口和瀏覽器行為。", + "settings-info-main-rateapp": "在 Google Play 上評價 Acode。", + "settings-info-main-remove-ads": "解鎖永久免廣告。", + "settings-info-main-reset": "將 Acode 重置為默認配置。", + "settings-info-main-sponsors": "支持 Acode 的持續開發。", + "settings-info-main-terminal-settings": "終端主題、字體、光標和會話行為。", + "settings-info-main-theme": "應用主題、對比度和自定義顏色。", + "settings-info-preview-disable-cache": "在預覽中始終重新加載內容。", + "settings-info-preview-host": "打開預覽 URL 時使用的主機名。", + "settings-info-preview-mode": "選擇預覽的打開方式。", + "settings-info-preview-preview-port": "實時預覽服務器使用的端口。", + "settings-info-preview-server-port": "內部應用服務器使用的端口。", + "settings-info-preview-show-console-toggler": "在預覽中顯示控制台按鈕。", + "settings-info-preview-use-current-file": "啟動預覽時優先使用當前文件。", + "settings-info-terminal-convert-eol": "粘貼或渲染終端輸出時轉換行結尾。", + "settings-note-formatter-settings": "為每種語言分配格式化器。安裝格式化插件可解鎖更多選項。", + "settings-note-lsp-settings": "語言服務器提供補全、診斷、懸停等功能。你可以在此安裝、更新或定義自定義服務器。託管安裝程序在終端/proot 環境中運行。", + "search result label singular": "條結果", + "search result label plural": "條結果", + "pin tab": "固定標籤頁", + "unpin tab": "取消固定標籤頁", + "pinned tab": "已固定的標籤頁", + "unpin tab before closing": "關閉前請先取消固定該標籤頁。", + "app font": "應用字體", + "settings-info-app-font-family": "選擇在應用介面中使用的字體。", + "lsp-transport-method-stdio": "STDIO(啟動可執行命令)", + "lsp-transport-method-websocket": "WebSocket(連接到 ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "此伺服器透過 WebSocket 在外部管理。", + "lsp-error-websocket-url-invalid": "WebSocket URL 必須以 ws:// 或 wss:// 開頭", + "lsp-error-websocket-url-required": "必須提供 WebSocket URL", + "lsp-remove-custom-server": "移除自訂伺服器", + "lsp-remove-custom-server-confirm": "確定要移除自訂語言伺服器 {server} 嗎?", + "lsp-custom-server-removed": "自訂伺服器已移除", + "settings-info-lsp-remove-custom-server": "從 Acode 中移除此自訂語言伺服器。", + "unsaved selected tabs warning": "部分選取的標籤頁尚未保存,請選擇要執行的操作。", + "save selected tabs": "保存選取的標籤頁", + "close selected tabs": "關閉選取的標籤頁", + "save selected tabs warning": "確定要保存並關閉選取的標籤頁嗎?", + "close selected tabs warning": "確定要關閉選取的標籤頁嗎?未保存的變更將會遺失且無法恢復。", + "close tabs to right": "關閉右側標籤頁", + "close tabs to left": "關閉左側標籤頁", + "close other tabs": "關閉其他標籤頁", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lang/zh-tw.json b/src/lang/zh-tw.json index d04d49366..14171dbd5 100644 --- a/src/lang/zh-tw.json +++ b/src/lang/zh-tw.json @@ -499,5 +499,232 @@ "info-developermode": "Enable developer tools (Eruda) for debugging plugins and inspecting app state. Inspector will be initialized on app start.", "developer mode enabled": "Developer mode enabled. Use command palette to toggle inspector (Ctrl+Shift+I).", "developer mode disabled": "Developer mode disabled", - "copy relative path": "Copy Relative Path" + "copy relative path": "Copy Relative Path", + "shortcut request sent": "Shortcut request opened. Tap Add to finish.", + "add to home screen": "Add to home screen", + "pin shortcuts not supported": "Home screen shortcuts are not supported on this device.", + "save file before home shortcut": "Save the file before adding it to the home screen.", + "terminal_required_message_for_lsp": "Terminal not installed. Please install Terminal first to use LSP servers.", + "shift click selection": "Shift + tap/click selection", + "earn ad-free time": "Earn ad-free time", + "indent guides": "Indent guides", + "language servers": "Language servers", + "lint gutter": "Show lint gutter", + "rainbow brackets": "Rainbow brackets", + "lsp-add-custom-server": "Add custom server", + "lsp-binary-args": "Binary args (JSON array)", + "lsp-binary-command": "Binary command", + "lsp-binary-path-optional": "Binary path (optional)", + "lsp-check-command-optional": "Check command (optional override)", + "lsp-checking-installation-status": "Checking installation status...", + "lsp-configured": "Configured", + "lsp-custom-server-added": "Custom server added", + "lsp-default": "Default", + "lsp-details-line": "Details: {details}", + "lsp-edit-initialization-options": "Edit initialization options", + "lsp-empty": "Empty", + "lsp-enabled": "Enabled", + "lsp-error-add-server-failed": "Failed to add server", + "lsp-error-args-must-be-array": "Arguments must be a JSON array", + "lsp-error-binary-command-required": "Binary command is required", + "lsp-error-language-id-required": "At least one language ID is required", + "lsp-error-package-required": "At least one package is required", + "lsp-error-server-id-required": "Server ID is required", + "lsp-feature-completion": "Code completion", + "lsp-feature-completion-info": "Enable autocomplete suggestions from the server.", + "lsp-feature-diagnostics": "Diagnostics", + "lsp-feature-diagnostics-info": "Show errors and warnings from the language server.", + "lsp-feature-formatting": "Formatting", + "lsp-feature-formatting-info": "Enable code formatting from the language server.", + "lsp-feature-hover": "Hover information", + "lsp-feature-hover-info": "Show type information and documentation on hover.", + "lsp-feature-inlay-hints": "Inlay hints", + "lsp-feature-inlay-hints-info": "Show inline type hints in the editor.", + "lsp-feature-signature": "Signature help", + "lsp-feature-signature-info": "Show function parameter hints while typing.", + "lsp-feature-state-toast": "{feature} {state}", + "lsp-initialization-options": "Initialization options", + "lsp-initialization-options-json": "Initialization options (JSON)", + "lsp-initialization-options-updated": "Initialization options updated", + "lsp-install-command": "Install command", + "lsp-install-command-unavailable": "Install command not available", + "lsp-install-info-check-failed": "Acode could not verify the installation status.", + "lsp-install-info-missing": "Language server is not installed in the terminal environment.", + "lsp-install-info-ready": "Language server is installed and ready.", + "lsp-install-info-unknown": "Installation status could not be checked automatically.", + "lsp-install-info-version-available": "Version {version} is available.", + "lsp-install-method-apk": "APK package", + "lsp-install-method-cargo": "Cargo crate", + "lsp-install-method-manual": "Manual binary", + "lsp-install-method-npm": "npm package", + "lsp-install-method-pip": "pip package", + "lsp-install-method-shell": "Custom shell", + "lsp-install-method-title": "Install method", + "lsp-install-repair": "Install / repair", + "lsp-installation-status": "Installation status", + "lsp-installed": "Installed", + "lsp-invalid-timeout": "Invalid timeout value", + "lsp-language-ids": "Language IDs (comma separated)", + "lsp-packages-prompt": "{method} packages (comma separated)", + "lsp-remove-installed-files": "Remove installed files for {server}?", + "lsp-server-disabled-toast": "Server disabled", + "lsp-server-enabled-toast": "Server enabled", + "lsp-server-id": "Server ID", + "lsp-server-label": "Server label", + "lsp-server-not-found": "Server not found", + "lsp-server-uninstalled": "Server uninstalled", + "lsp-startup-timeout": "Startup timeout", + "lsp-startup-timeout-ms": "Startup timeout (milliseconds)", + "lsp-startup-timeout-set": "Startup timeout set to {timeout} ms", + "lsp-state-disabled": "disabled", + "lsp-state-enabled": "enabled", + "lsp-status-check-failed": "Check failed", + "lsp-status-installed": "Installed", + "lsp-status-installed-version": "Installed ({version})", + "lsp-status-line": "Status: {status}", + "lsp-status-not-installed": "Not installed", + "lsp-status-unknown": "Unknown", + "lsp-timeout-ms": "{timeout} ms", + "lsp-uninstall-command-unavailable": "Uninstall command not available", + "lsp-uninstall-server": "Uninstall server", + "lsp-update-command-optional": "Update command (optional)", + "lsp-update-command-unavailable": "Update command not available", + "lsp-update-server": "Update server", + "lsp-version-line": "Version: {version}", + "lsp-view-initialization-options": "View initialization options", + "settings-category-about-acode": "About Acode", + "settings-category-advanced": "Advanced", + "settings-category-assistance": "Assistance", + "settings-category-core": "Core settings", + "settings-category-cursor": "Cursor", + "settings-category-cursor-selection": "Cursor & selection", + "settings-category-custom-servers": "Custom servers", + "settings-category-customization-tools": "Customization & tools", + "settings-category-display": "Display", + "settings-category-editing": "Editing", + "settings-category-features": "Features", + "settings-category-files-sessions": "Files & sessions", + "settings-category-fonts": "Fonts", + "settings-category-general": "General", + "settings-category-guides-indicators": "Guides & indicators", + "settings-category-installation": "Installation", + "settings-category-interface": "Interface", + "settings-category-maintenance": "Maintenance", + "settings-category-permissions": "Permissions", + "settings-category-preview": "Preview", + "settings-category-scrolling": "Scrolling", + "settings-category-server": "Server", + "settings-category-servers": "Servers", + "settings-category-session": "Session", + "settings-category-support-acode": "Support Acode", + "settings-category-text-layout": "Text & layout", + "settings-info-app-animation": "Control transition animations across the app.", + "settings-info-app-check-files": "Refresh editors when files change outside Acode.", + "settings-info-app-clean-install-state": "Clear stored install state used by onboarding and setup flows.", + "settings-info-app-confirm-on-exit": "Ask before closing the app.", + "settings-info-app-console": "Choose which debug console integration Acode uses.", + "settings-info-app-default-file-encoding": "Default encoding when opening or creating files.", + "settings-info-app-exclude-folders": "Skip folders and patterns while searching or scanning.", + "settings-info-app-floating-button": "Show the floating quick actions button.", + "settings-info-app-font-manager": "Install, manage, or remove app fonts.", + "settings-info-app-fullscreen": "Hide the system status bar while using Acode.", + "settings-info-app-keybindings": "Edit the key bindings file or reset shortcuts.", + "settings-info-app-keyboard-mode": "Choose how the software keyboard behaves while editing.", + "settings-info-app-language": "Choose the app language and translated labels.", + "settings-info-app-open-file-list-position": "Choose where the active files list appears.", + "settings-info-app-quick-tools-settings": "Reorder and customize quick tool shortcuts.", + "settings-info-app-quick-tools-trigger-mode": "Choose how quick tools open on tap or touch.", + "settings-info-app-remember-files": "Reopen the files that were open last time.", + "settings-info-app-remember-folders": "Reopen folders from the previous session.", + "settings-info-app-retry-remote-fs": "Retry remote file operations after a failed transfer.", + "settings-info-app-side-buttons": "Show extra action buttons beside the editor.", + "settings-info-app-sponsor-sidebar": "Show the sponsor entry in the sidebar.", + "settings-info-app-touch-move-threshold": "Minimum movement before a touch drag is detected.", + "settings-info-app-vibrate-on-tap": "Enable haptic feedback for taps and controls.", + "settings-info-editor-autosave": "Save changes automatically after a delay.", + "settings-info-editor-color-preview": "Preview color values inline in the editor.", + "settings-info-editor-fade-fold-widgets": "Dim fold markers until they are needed.", + "settings-info-editor-font-family": "Choose the typeface used in the editor.", + "settings-info-editor-font-size": "Set the editor text size.", + "settings-info-editor-format-on-save": "Run the formatter whenever a file is saved.", + "settings-info-editor-hard-wrap": "Insert real line breaks instead of only wrapping visually.", + "settings-info-editor-indent-guides": "Show indentation guide lines.", + "settings-info-editor-line-height": "Adjust vertical spacing between lines.", + "settings-info-editor-line-numbers": "Show line numbers in the gutter.", + "settings-info-editor-lint-gutter": "Show diagnostics and lint markers in the gutter.", + "settings-info-editor-live-autocomplete": "Show suggestions while you type.", + "settings-info-editor-rainbow-brackets": "Color matching brackets by nesting depth.", + "settings-info-editor-relative-line-numbers": "Show distance from the current line.", + "settings-info-editor-rtl-text": "Switch right-to-left behavior per line.", + "settings-info-editor-scroll-settings": "Adjust scrollbar size, speed, and gesture behavior.", + "settings-info-editor-shift-click-selection": "Extend selection with Shift + tap or click.", + "settings-info-editor-show-spaces": "Display visible whitespace markers.", + "settings-info-editor-soft-tab": "Insert spaces instead of tab characters.", + "settings-info-editor-tab-size": "Set how many spaces each tab step uses.", + "settings-info-editor-teardrop-size": "Set the cursor handle size for touch editing.", + "settings-info-editor-text-wrap": "Wrap long lines inside the editor.", + "settings-info-lsp-add-custom-server": "Register a custom language server with install, update, and launch commands.", + "settings-info-lsp-edit-init-options": "Edit initialization options as JSON.", + "settings-info-lsp-install-server": "Install or repair this language server.", + "settings-info-lsp-server-enabled": "Enable or disable this language server.", + "settings-info-lsp-startup-timeout": "Set how long Acode waits for the server to start.", + "settings-info-lsp-uninstall-server": "Remove installed packages or binaries for this server.", + "settings-info-lsp-update-server": "Update this language server if an update flow is available.", + "settings-info-lsp-view-init-options": "View the effective initialization options as JSON.", + "settings-info-main-ad-rewards": "Watch ads to unlock temporary ad-free access.", + "settings-info-main-app-settings": "Language, app behavior, and quick access tools.", + "settings-info-main-backup-restore": "Export settings to a backup or restore them later.", + "settings-info-main-changelog": "See recent updates and release notes.", + "settings-info-main-edit-settings": "Edit the raw settings.json file directly.", + "settings-info-main-editor-settings": "Fonts, tabs, suggestions, and editor display.", + "settings-info-main-formatter": "Choose a formatter for each supported language.", + "settings-info-main-lsp-settings": "Configure language servers and editor intelligence.", + "settings-info-main-plugins": "Manage installed plugins and their available actions.", + "settings-info-main-preview-settings": "Preview mode, server ports, and browser behavior.", + "settings-info-main-rateapp": "Rate Acode on Google Play.", + "settings-info-main-remove-ads": "Unlock permanent ad-free access.", + "settings-info-main-reset": "Reset Acode to its default configuration.", + "settings-info-main-sponsors": "Support ongoing Acode development.", + "settings-info-main-terminal-settings": "Terminal theme, font, cursor, and session behavior.", + "settings-info-main-theme": "App theme, contrast, and custom colors.", + "settings-info-preview-disable-cache": "Always reload content in the in-app browser.", + "settings-info-preview-host": "Hostname used when opening the preview URL.", + "settings-info-preview-mode": "Choose where preview opens when you launch it.", + "settings-info-preview-preview-port": "Port used by the live preview server.", + "settings-info-preview-server-port": "Port used by the internal app server.", + "settings-info-preview-show-console-toggler": "Show the console button in preview.", + "settings-info-preview-use-current-file": "Prefer the current file when starting preview.", + "settings-info-terminal-convert-eol": "Convert line endings when pasting or rendering terminal output.", + "settings-note-formatter-settings": "Assign a formatter to each language. Install formatter plugins to unlock more options.", + "settings-note-lsp-settings": "Language servers add autocomplete, diagnostics, hover details, and more. You can install, update, or define custom servers here. Managed installers run inside the terminal/proot environment.", + "search result label singular": "result", + "search result label plural": "results", + "pin tab": "Pin tab", + "unpin tab": "Unpin tab", + "pinned tab": "Pinned tab", + "unpin tab before closing": "Unpin the tab before closing it.", + "app font": "App font", + "settings-info-app-font-family": "Choose the font used across the app interface.", + "lsp-transport-method-stdio": "STDIO (launch a binary command)", + "lsp-transport-method-websocket": "WebSocket (connect to a ws/wss URL)", + "lsp-websocket-url": "WebSocket URL", + "lsp-websocket-server-managed-externally": "This server is managed externally over WebSocket.", + "lsp-error-websocket-url-invalid": "WebSocket URL must start with ws:// or wss://", + "lsp-error-websocket-url-required": "WebSocket URL is required", + "lsp-remove-custom-server": "Remove custom server", + "lsp-remove-custom-server-confirm": "Remove custom language server {server}?", + "lsp-custom-server-removed": "Custom server removed", + "settings-info-lsp-remove-custom-server": "Remove this custom language server from Acode.", + "unsaved selected tabs warning": "Some selected tabs are not saved. Choose what to do.", + "save selected tabs": "Save selected tabs", + "close selected tabs": "Close selected tabs", + "save selected tabs warning": "Are you sure you want to save and close the selected tabs?", + "close selected tabs warning": "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + "close tabs to right": "Close Right", + "close tabs to left": "Close Left", + "close other tabs": "Close Others", + "auto close tags": "Auto close tags", + "settings-info-editor-auto-close-tags": "Automatically insert closing tags in HTML, XML, Vue, Angular, and PHP template files.", + "ui zoom": "UI zoom", + "settings-info-app-ui-zoom": "Scale text across the Acode interface." } diff --git a/src/lib/acode.js b/src/lib/acode.js index b324a85d3..0845b8d99 100644 --- a/src/lib/acode.js +++ b/src/lib/acode.js @@ -1,7 +1,32 @@ import fsOperation from "fileSystem"; import sidebarApps from "sidebarApps"; +import * as cmAutocomplete from "@codemirror/autocomplete"; +import * as cmCommands from "@codemirror/commands"; +import * as cmLanguage from "@codemirror/language"; +import * as cmLint from "@codemirror/lint"; +import * as cmSearch from "@codemirror/search"; +import * as cmState from "@codemirror/state"; +import * as cmView from "@codemirror/view"; import ajax from "@deadlyjack/ajax"; -import { addMode, removeMode } from "ace/modelist"; +import * as lezerHighlight from "@lezer/highlight"; +import { + getRegisteredCommands as listRegisteredCommands, + refreshCommandKeymap, + registerExternalCommand, + removeExternalCommand, + executeCommand as runCommand, +} from "cm/commandRegistry"; +import { default as lspApi } from "cm/lsp/api"; +import lspClientManager from "cm/lsp/clientManager"; +import { registerLspFormatter } from "cm/lsp/formatter"; +import { + addMode, + getModeForPath, + getModes, + getModesByName, + removeMode, +} from "cm/modelist"; +import cmThemeRegistry from "cm/themes"; import Contextmenu from "components/contextmenu"; import inputhints from "components/inputhints"; import Page from "components/page"; @@ -51,26 +76,12 @@ import KeyboardEvent from "utils/keyboardEvent"; import Url from "utils/Url"; import constants from "./constants"; -const { Fold } = ace.require("ace/edit_session/fold"); -const { Range } = ace.require("ace/range"); - export default class Acode { #modules = {}; #pluginsInit = {}; #pluginUnmount = {}; - #formatter = [ - { - id: "default", - name: "Default", - exts: ["*"], - format: async () => { - const { beautify } = ace.require("ace/ext/beautify"); - const cursorPos = editorManager.editor.getCursorPosition(); - beautify(editorManager.editor.session); - editorManager.editor.gotoLine(cursorPos.row + 1, cursorPos.column); - }, - }, - ]; + // Registered formatter implementations (populated by plugins) + #formatter = []; #pluginWatchers = {}; /** @@ -105,15 +116,162 @@ export default class Acode { apply: () => {}, }; + // CodeMirror editor theme API for plugins + const normalizeThemeSpec = (spec) => { + if (!spec || typeof spec !== "object" || Array.isArray(spec)) { + console.warn( + "[editorThemes] register(spec) expects an object: { id, caption?, dark?, getExtension|extensions|extension|theme, config? }", + ); + return null; + } + + const id = spec.id || spec.name; + if (!id) { + console.warn("[editorThemes] register(spec) requires a valid `id`."); + return null; + } + + const extensionSource = + spec.getExtension || spec.extensions || spec.extension || spec.theme; + if (extensionSource === undefined || extensionSource === null) { + console.warn( + `[editorThemes] register('${id}') requires extensions via getExtension/extensions/extension/theme.`, + ); + return null; + } + + return { + id, + caption: spec.caption || spec.label || id, + isDark: spec.isDark ?? spec.dark ?? false, + getExtension: + typeof extensionSource === "function" + ? extensionSource + : () => extensionSource, + config: spec.config ?? null, + }; + }; + + const createHighlightStyle = (spec) => { + if (!spec) return null; + if (Array.isArray(spec)) return cmLanguage.HighlightStyle.define(spec); + return spec; + }; + + const createTheme = ({ + styles, + dark = false, + highlightStyle, + extensions = [], + } = {}) => { + const ext = []; + + if (styles && typeof styles === "object") { + ext.push(cmView.EditorView.theme(styles, { dark: !!dark })); + } + + const resolvedHighlight = createHighlightStyle(highlightStyle); + if (resolvedHighlight) { + ext.push(cmLanguage.syntaxHighlighting(resolvedHighlight)); + } + + if (Array.isArray(extensions)) { + ext.push(...extensions); + } else if (extensions) { + ext.push(extensions); + } + + return ext; + }; + + const editorThemesModule = { + /** + * Register a CodeMirror theme from plugin code. + * @param {{ + * id: string, + * caption?: string, + * dark?: boolean, + * getExtension?: Function, + * extensions?: unknown, + * config?: object + * }} spec + * `isDark`, `extension`, and `theme` are accepted aliases for compatibility. + * @returns {boolean} + */ + register: (spec) => { + const resolved = normalizeThemeSpec(spec); + if (!resolved) return false; + return cmThemeRegistry.addTheme( + resolved.id, + resolved.caption, + resolved.isDark, + resolved.getExtension, + resolved.config, + ); + }, + unregister: (id) => cmThemeRegistry.removeTheme(id), + list: () => cmThemeRegistry.getThemes(), + apply: (id) => editorManager?.editor?.setTheme?.(id), + get: (id) => cmThemeRegistry.getThemeById(id), + getConfig: (id) => cmThemeRegistry.getThemeConfig(id), + createTheme, + createHighlightStyle, + cm: { + EditorView: cmView.EditorView, + HighlightStyle: cmLanguage.HighlightStyle, + syntaxHighlighting: cmLanguage.syntaxHighlighting, + tags: lezerHighlight.tags, + }, + }; + const sidebarAppsModule = { add: sidebarApps.add, get: sidebarApps.get, remove: sidebarApps.remove, }; + const lspModule = { + ...lspApi, + clientManager: { + setOptions: (options) => lspClientManager.setOptions(options), + getActiveClients: () => lspClientManager.getActiveClients(), + }, + }; + + const getModeByName = (name) => { + const normalized = String(name || "") + .trim() + .toLowerCase(); + if (!normalized) return null; + return getModesByName()[normalized] || null; + }; + + const listModes = () => [...getModes()]; + const listModesByName = () => ({ ...getModesByName() }); + const aceModes = { addMode, removeMode, + getModeForPath: (path) => getModeForPath(String(path || "")), + getModes: () => listModes(), + getModesByName: () => listModesByName(), + getMode: (name) => getModeByName(name), + }; + + // Preferred CodeMirror language registration API for plugins + const editorLanguages = { + // name: string, extensions: string|Array, caption?: string, + // loader?: () => Extension | Promise + register: (name, extensions, caption, loader) => + addMode(name, extensions, caption, loader), + unregister: (name) => removeMode(name), + add: (name, extensions, caption, loader) => + addMode(name, extensions, caption, loader), + remove: (name) => removeMode(name), + list: () => listModes(), + listByName: () => listModesByName(), + get: (name) => getModeByName(name), + getForPath: (path) => getModeForPath(String(path || "")), }; const intent = { @@ -121,6 +279,12 @@ export default class Acode { removeHandler: removeIntentHandler, }; + const terminalTouchSelectionMoreOptions = { + add: (option) => TerminalManager.addTouchSelectionMoreOption(option), + remove: (id) => TerminalManager.removeTouchSelectionMoreOption(id), + list: () => TerminalManager.getTouchSelectionMoreOptions(), + }; + const terminalModule = { create: (options) => TerminalManager.createTerminal(options), createLocal: (options) => TerminalManager.createLocalTerminal(options), @@ -130,6 +294,10 @@ export default class Acode { write: (id, data) => this.#secureTerminalWrite(id, data), clear: (id) => TerminalManager.clearTerminal(id), close: (id) => TerminalManager.closeTerminal(id), + moreOptions: terminalTouchSelectionMoreOptions, + touchSelection: { + moreOptions: terminalTouchSelectionMoreOptions, + }, themes: { register: (name, theme, pluginId) => TerminalThemeManager.registerTheme(name, theme, pluginId), @@ -143,6 +311,17 @@ export default class Acode { }, }; + const codemirrorModule = Object.freeze({ + autocomplete: cmAutocomplete, + commands: cmCommands, + language: cmLanguage, + lezer: lezerHighlight, + lint: cmLint, + search: cmSearch, + state: cmState, + view: cmView, + }); + this.define("Url", Url); this.define("page", Page); this.define("Color", Color); @@ -163,6 +342,9 @@ export default class Acode { this.define("tutorial", tutorial); this.define("aceModes", aceModes); this.define("themes", themesModule); + this.define("editorLanguages", editorLanguages); + this.define("editorThemes", editorThemesModule); + this.define("lsp", lspModule); this.define("settings", appSettings); this.define("sideButton", SideButton); this.define("EditorFile", EditorFile); @@ -182,8 +364,20 @@ export default class Acode { this.define("selectionMenu", selectionMenu); this.define("sidebarApps", sidebarAppsModule); this.define("terminal", terminalModule); + this.define("codemirror", codemirrorModule); + this.define("@codemirror/autocomplete", cmAutocomplete); + this.define("@codemirror/commands", cmCommands); + this.define("@codemirror/language", cmLanguage); + this.define("@codemirror/lint", cmLint); + this.define("@codemirror/search", cmSearch); + this.define("@codemirror/state", cmState); + this.define("@codemirror/view", cmView); + this.define("@lezer/highlight", lezerHighlight); this.define("createKeyboardEvent", KeyboardEvent); this.define("toInternalUrl", helpers.toInternalUri); + this.define("commands", this.#createCommandApi()); + + registerLspFormatter(this); } /** @@ -476,6 +670,14 @@ export default class Acode { id, settings.list, settings.cb, + undefined, + { + preserveOrder: true, + pageClassName: "detail-settings-page", + listClassName: "detail-settings-list", + valueInTail: true, + groupByDefault: true, + }, ); } @@ -504,10 +706,20 @@ export default class Acode { delete appSettings.uiSettings[`plugin-${id}`]; } - registerFormatter(id, extensions, format) { + registerFormatter(id, extensions, format, displayName) { + let exts; + if (Array.isArray(extensions)) { + exts = extensions.filter(Boolean); + if (!exts.length) exts = ["*"]; + } else if (typeof extensions === "string" && extensions) { + exts = [extensions]; + } else { + exts = ["*"]; + } this.#formatter.unshift({ id, - exts: extensions, + name: displayName, + exts: exts, format, }); } @@ -527,28 +739,42 @@ export default class Acode { async format(selectIfNull = true) { const file = editorManager.activeFile; - if (!file?.session) return; - - const name = (file.session.getMode().$id || "").split("/").pop(); - const formatterId = appSettings.value.formatter[name]; + if (!file || file.type !== "editor") return false; + + let resolvedMode = file.currentMode; + if (!resolvedMode) { + try { + resolvedMode = getModeForPath(file.filename)?.name; + } catch (_) { + resolvedMode = null; + } + } + const modeName = resolvedMode || "text"; + const formatterMap = appSettings.value.formatter || {}; + const formatterId = formatterMap[modeName]; const formatter = this.#formatter.find(({ id }) => id === formatterId); if (!formatter) { - if (!selectIfNull) { + if (formatterId) { + delete formatterMap[modeName]; + await appSettings.update(false); + } + + if (selectIfNull) { + formatterSettings(modeName); + this.#afterSelectFormatter(modeName); + } else { toast(strings["please select a formatter"]); - return; } - formatterSettings(name); - this.#afterSelectFormatter(name); - return; + return false; } - const foldsSnapshot = this.#captureFoldState(file.session); - try { await formatter.format(); - } finally { - this.#restoreFoldState(file.session, foldsSnapshot); + return true; + } catch (error) { + helpers.error(error); + return false; } } @@ -567,77 +793,6 @@ export default class Acode { return fsOperation(file); } - #captureFoldState(session) { - if (!session?.getAllFolds) return null; - return this.#serializeFolds(session.getAllFolds()); - } - - #restoreFoldState(session, folds) { - if (!session || !Array.isArray(folds) || !folds.length) return; - - try { - const foldObjects = this.#parseSerializableFolds(folds); - if (!foldObjects.length) return; - session.removeAllFolds?.(); - session.addFolds?.(foldObjects); - } catch (error) { - console.warn("Failed to restore folds after formatting:", error); - } - } - - #serializeFolds(folds) { - if (!Array.isArray(folds) || !folds.length) return null; - - return folds - .map((fold) => { - if (!fold?.range) return null; - const { start, end } = fold.range; - if (!start || !end) return null; - - return { - range: { - start: { row: start.row, column: start.column }, - end: { row: end.row, column: end.column }, - }, - placeholder: fold.placeholder, - ranges: this.#serializeFolds(fold.ranges || []), - }; - }) - .filter(Boolean); - } - - #parseSerializableFolds(folds) { - if (!Array.isArray(folds) || !folds.length) return []; - - return folds - .map((fold) => { - const { range, placeholder, ranges } = fold; - const { start, end } = range || {}; - if (!start || !end) return null; - - try { - const foldInstance = new Fold( - new Range(start.row, start.column, end.row, end.column), - placeholder, - ); - - if (Array.isArray(ranges) && ranges.length) { - const subFolds = this.#parseSerializableFolds(ranges); - if (subFolds.length) { - foldInstance.subFolds = subFolds; - foldInstance.ranges = subFolds; - } - } - - return foldInstance; - } catch (error) { - console.warn("Failed to parse fold:", error); - return null; - } - }) - .filter(Boolean); - } - newEditorFile(filename, options) { new EditorFile(filename, options); } @@ -786,4 +941,62 @@ export default class Acode { unregisterFileHandler(id) { fileTypeHandler.unregisterFileHandler(id); } + + addCommand(descriptor) { + const command = registerExternalCommand(descriptor); + this.#refreshCommandBindings(); + return command; + } + + removeCommand(name) { + if (!name) return; + removeExternalCommand(name); + this.#refreshCommandBindings(); + } + + execCommand(name, view, args) { + if (!name) return false; + const targetView = view || window.editorManager?.editor; + return runCommand(name, targetView, args); + } + + listCommands() { + return listRegisteredCommands(); + } + + #refreshCommandBindings() { + const view = window.editorManager?.editor; + if (view) refreshCommandKeymap(view); + } + + #createCommandApi() { + const commandRegistry = { + add: this.addCommand, + execute: this.execCommand, + remove: this.removeCommand, + list: this.listCommands, + }; + + const addCommand = (descriptor) => { + try { + return this.addCommand(descriptor); + } catch (error) { + console.error("Failed to add command", descriptor?.name); + throw error; + } + }; + + const removeCommand = (name) => { + if (!name) return; + this.removeCommand(name); + }; + + return { + addCommand, + removeCommand, + get registry() { + return commandRegistry; + }, + }; + } } diff --git a/src/lib/actionStack.js b/src/lib/actionStack.js index 03b92e2e8..915898056 100644 --- a/src/lib/actionStack.js +++ b/src/lib/actionStack.js @@ -1,5 +1,6 @@ import confirm from "dialogs/confirm"; import appSettings from "lib/settings"; +import helpers from "utils/helpers"; const stack = []; let mark = null; @@ -93,9 +94,7 @@ export default { } } - if (IS_FREE_VERSION && window.iad?.isLoaded()) { - window.iad.show(); - } + helpers.showInterstitialIfReady(); exitApp(); } diff --git a/src/lib/adRewards.js b/src/lib/adRewards.js new file mode 100644 index 000000000..0907b3a6b --- /dev/null +++ b/src/lib/adRewards.js @@ -0,0 +1,425 @@ +import toast from "components/toast"; +import auth from "./auth"; +import secureAdRewardState from "./secureAdRewardState"; + +const ONE_HOUR = 60 * 60 * 1000; +const MAX_TIMEOUT = 2_147_483_647; +const REWARDED_RESULT_TIMEOUT_MS = 90 * 1000; + +const OFFERS = [ + { + id: "quick", + title: "Quick pass", + description: "Watch 1 rewarded ad and pause ads for 1 hour.", + adsRequired: 1, + durationMs: ONE_HOUR, + accentClass: "is-quick", + }, + { + id: "focus", + title: "Focus block", + description: + "Watch 2 rewarded ads and pause ads for a random 4, 5, or 6 hours.", + adsRequired: 2, + minDurationMs: 4 * ONE_HOUR, + maxDurationMs: 6 * ONE_HOUR, + accentClass: "is-focus", + }, +]; + +let state = getDefaultState(); +let expiryTimer = null; +let activeWatchPromise = null; +const listeners = new Set(); + +function getDefaultState() { + return { + adFreeUntil: 0, + lastExpiredRewardUntil: 0, + isActive: false, + remainingMs: 0, + redemptionsToday: 0, + remainingRedemptions: 3, + maxRedemptionsPerDay: 3, + maxActivePassMs: 10 * ONE_HOUR, + hasPendingExpiryNotice: false, + expiryNoticePendingUntil: 0, + canRedeem: true, + redeemDisabledReason: "", + }; +} + +function formatDuration(durationMs) { + const totalHours = Math.round(durationMs / ONE_HOUR); + if (totalHours < 1) return "less than 1 hour"; + if (totalHours === 1) return "1 hour"; + return `${totalHours} hours`; +} + +function formatDurationRange(minDurationMs, maxDurationMs) { + if (!minDurationMs || !maxDurationMs || minDurationMs === maxDurationMs) { + return formatDuration(minDurationMs || maxDurationMs || 0); + } + + const minHours = Math.round(minDurationMs / ONE_HOUR); + const maxHours = Math.round(maxDurationMs / ONE_HOUR); + return `${minHours}-${maxHours} hours`; +} + +function getRewardedUnitId() { + return window.adRewardedUnitId || ""; +} + +function getExpiryDate() { + return state.adFreeUntil ? new Date(state.adFreeUntil) : null; +} + +function emitChange() { + const snapshot = { + ...state, + expiryDate: getExpiryDate(), + }; + listeners.forEach((listener) => { + try { + listener(snapshot); + } catch (error) { + console.error("Reward state listener failed.", error); + } + }); +} + +function hideActiveBanner() { + if (window.ad?.active) { + window.ad.active = false; + window.ad.hide?.(); + } +} + +function notify(title, message, type = "info") { + toast(message, 4000); + window.acode?.pushNotification?.(title, message, { + icon: type === "success" ? "verified" : "notifications", + type, + }); +} + +function normalizeStatus(status) { + const fallback = getDefaultState(); + if (!status || typeof status !== "object") return fallback; + + const adFreeUntil = Number(status.adFreeUntil) || 0; + const remainingMs = Math.max(0, Number(status.remainingMs) || 0); + + return { + ...fallback, + ...status, + adFreeUntil, + lastExpiredRewardUntil: Number(status.lastExpiredRewardUntil) || 0, + remainingMs, + redemptionsToday: Number(status.redemptionsToday) || 0, + remainingRedemptions: Number(status.remainingRedemptions) || 0, + maxRedemptionsPerDay: + Number(status.maxRedemptionsPerDay) || fallback.maxRedemptionsPerDay, + maxActivePassMs: Number(status.maxActivePassMs) || fallback.maxActivePassMs, + expiryNoticePendingUntil: Number(status.expiryNoticePendingUntil) || 0, + isActive: Boolean(status.isActive && adFreeUntil > Date.now()), + hasPendingExpiryNotice: Boolean(status.hasPendingExpiryNotice), + canRedeem: Boolean(status.canRedeem), + redeemDisabledReason: String(status.redeemDisabledReason || ""), + }; +} + +function clearExpiryTimer() { + if (expiryTimer) { + clearTimeout(expiryTimer); + expiryTimer = null; + } +} + +async function refreshState({ notifyExpiry = false } = {}) { + try { + const nextState = normalizeStatus(await secureAdRewardState.getStatus()); + state = nextState; + emitChange(); + scheduleExpiryCheck(); + + if (notifyExpiry && nextState.hasPendingExpiryNotice) { + notify( + "Ad-free pass ended", + "Your rewarded ad-free time has expired. You can watch another rewarded ad anytime.", + "warning", + ); + } + + return nextState; + } catch (error) { + console.warn("Failed to refresh rewarded ad state.", error); + return state; + } +} + +function scheduleExpiryCheck() { + clearExpiryTimer(); + if (!state.adFreeUntil) return; + + const remainingMs = state.adFreeUntil - Date.now(); + if (remainingMs <= 0) { + void refreshState({ notifyExpiry: true }); + return; + } + + expiryTimer = setTimeout( + () => { + void refreshState({ notifyExpiry: true }); + }, + Math.min(remainingMs, MAX_TIMEOUT), + ); +} + +async function getRewardIdentity() { + try { + const user = await auth.getUserInfo(); + const userId = + user?.id || + user?._id || + user?.github || + user?.username || + device?.uuid || + "guest"; + return String(userId); + } catch (error) { + console.warn("Failed to resolve rewarded ad user identity.", error); + return String(device?.uuid || "guest"); + } +} + +async function createRewardedAd(offer, step, sessionId) { + const rewardedUnitId = getRewardedUnitId(); + if (!rewardedUnitId || !admob?.RewardedAd) { + throw new Error("Rewarded ads are not available in this build."); + } + + const userId = await getRewardIdentity(); + const customData = [ + `session=${sessionId}`, + `offer=${offer.id}`, + `step=${step}`, + `ads=${offer.adsRequired}`, + ].join("&"); + + return new admob.RewardedAd({ + adUnitId: rewardedUnitId, + serverSideVerification: { + userId, + customData, + }, + }); +} + +function waitForRewardedResult(ad) { + return new Promise((resolve, reject) => { + let earned = false; + let settled = false; + const timeoutId = setTimeout(() => { + fail( + new Error("Rewarded ad timed out before completion. Please try again."), + ); + }, REWARDED_RESULT_TIMEOUT_MS); + + const finish = (result) => { + if (settled) return; + settled = true; + clearTimeout(timeoutId); + resolve(result); + }; + + const fail = (error) => { + if (settled) return; + settled = true; + clearTimeout(timeoutId); + reject( + error instanceof Error + ? error + : new Error(error?.message || "Rewarded ad failed."), + ); + }; + + ad.on("reward", () => { + earned = true; + }); + + ad.on("dismiss", () => { + finish({ earned }); + }); + + ad.on("showfail", fail); + ad.on("loadfail", fail); + }); +} + +async function showRewardedStep(offer, step, sessionId) { + const rewardedAd = await createRewardedAd(offer, step, sessionId); + const resultPromise = waitForRewardedResult(rewardedAd); + await rewardedAd.load(); + await rewardedAd.show(); + const result = await resultPromise; + if (!result.earned) { + throw new Error("Reward not earned. The ad was closed before completion."); + } +} + +export default { + async init() { + await refreshState({ notifyExpiry: false }); + }, + onChange(listener) { + listeners.add(listener); + return () => listeners.delete(listener); + }, + async handleResume() { + await refreshState({ notifyExpiry: true }); + }, + getState() { + return { + ...state, + expiryDate: getExpiryDate(), + }; + }, + getOffers() { + return OFFERS.map((offer) => ({ + ...offer, + durationLabel: formatDurationRange( + offer.minDurationMs || offer.durationMs, + offer.maxDurationMs || offer.durationMs, + ), + })); + }, + getRemainingMs() { + return Math.max(0, state.remainingMs || state.adFreeUntil - Date.now()); + }, + getRemainingLabel() { + const remainingMs = this.getRemainingMs(); + if (!remainingMs) return "No active ad-free pass"; + + const minutes = Math.ceil(remainingMs / (60 * 1000)); + if (minutes < 60) { + return `${minutes} minute${minutes === 1 ? "" : "s"} remaining`; + } + + const hours = Math.floor(minutes / 60); + const remMinutes = minutes % 60; + if (!remMinutes) { + return `${hours} hour${hours === 1 ? "" : "s"} remaining`; + } + + return `${hours}h ${remMinutes}m remaining`; + }, + getExpiryLabel() { + const expiryDate = getExpiryDate(); + if (!expiryDate) return "No active pass"; + return expiryDate.toLocaleString(); + }, + isAdFreeActive() { + return Boolean(state.isActive && state.adFreeUntil > Date.now()); + }, + canShowAds() { + return Boolean(window.IS_FREE_VERSION && !this.isAdFreeActive()); + }, + isRewardedSupported() { + return Boolean( + window.IS_FREE_VERSION && admob?.RewardedAd && getRewardedUnitId(), + ); + }, + getRewardedUnavailableReason() { + if (!window.IS_FREE_VERSION) + return "Ads are already disabled on this build."; + if (!admob?.RewardedAd) + return "Rewarded ads are unavailable on this device."; + if (!getRewardedUnitId()) { + return "Rewarded ads are not configured for production yet."; + } + return ""; + }, + canRedeemNow() { + return { + ok: Boolean(state.canRedeem), + reason: state.redeemDisabledReason || "", + }; + }, + isWatchingReward() { + return Boolean(activeWatchPromise); + }, + async watchOffer(offerId, { onStep } = {}) { + if (activeWatchPromise) { + return activeWatchPromise; + } + + const offer = OFFERS.find((item) => item.id === offerId); + if (!offer) { + throw new Error("Reward offer not found."); + } + if (!this.isRewardedSupported()) { + throw new Error(this.getRewardedUnavailableReason()); + } + + await refreshState({ notifyExpiry: false }); + const redemptionStatus = this.canRedeemNow(); + if (!redemptionStatus.ok) { + throw new Error(redemptionStatus.reason); + } + + const sessionId = + typeof crypto?.randomUUID === "function" + ? crypto.randomUUID() + : `${Date.now()}-${Math.random().toString(36).slice(2, 10)}`; + + activeWatchPromise = (async () => { + for (let step = 1; step <= offer.adsRequired; step += 1) { + onStep?.({ + step, + totalSteps: offer.adsRequired, + offer, + }); + await showRewardedStep(offer, step, sessionId); + + if (step < offer.adsRequired) { + toast( + `Reward ${step}/${offer.adsRequired} complete. Loading the next ad...`, + 2500, + ); + } + } + + const redeemedState = normalizeStatus( + await secureAdRewardState.redeem(offer.id), + ); + const grantedDurationMs = + Number(redeemedState.appliedDurationMs) || + Number(redeemedState.grantedDurationMs) || + 0; + + state = redeemedState; + emitChange(); + hideActiveBanner(); + scheduleExpiryCheck(); + + notify( + "Ad-free pass started", + `${formatDuration(grantedDurationMs)} unlocked. Ads will stay hidden until ${new Date(redeemedState.adFreeUntil).toLocaleString()}.`, + "success", + ); + + return { + offer, + expiresAt: redeemedState.adFreeUntil, + grantedDurationMs, + }; + })().finally(() => { + activeWatchPromise = null; + emitChange(); + }); + + emitChange(); + return activeWatchPromise; + }, +}; diff --git a/src/lib/applySettings.js b/src/lib/applySettings.js index a70d85933..8a76c2360 100644 --- a/src/lib/applySettings.js +++ b/src/lib/applySettings.js @@ -23,6 +23,9 @@ export default { }); system.setInputType(appSettings.value.keyboardMode); + appSettings.applyUiZoomSetting(); + // Keep native context menu enabled globally; editor manager scopes disabling to CodeMirror focus. + system.setNativeContextMenuDisabled(false); }, afterRender() { const { value: settings } = appSettings; @@ -31,7 +34,8 @@ export default { } actions("set-height", settings.quickTools); - fonts.setFont(settings.editorFont); + fonts.setAppFont(settings.appFont); + fonts.setEditorFont(settings.editorFont); if (!themes.applied) { themes.apply("dark"); } diff --git a/src/lib/checkFiles.js b/src/lib/checkFiles.js index 3b369d481..e22dcafc6 100644 --- a/src/lib/checkFiles.js +++ b/src/lib/checkFiles.js @@ -20,6 +20,8 @@ export default async function checkFiles() { return; } const files = editorManager.files; + // @ts-check + /** @type {{ editor: import('@codemirror/view').EditorView }} */ const { editor } = editorManager; recursiveFileCheck([...files]); @@ -70,7 +72,7 @@ export default async function checkFiles() { } const text = await fs.readFile(file.encoding); - const loadedText = file.session.getValue(); + const loadedText = file.session.doc.toString(); if (text !== loadedText) { try { @@ -87,7 +89,6 @@ export default async function checkFiles() { file.markChanged = false; file.session.setValue(text); editor.gotoLine(cursorPos.row, cursorPos.column); - editor.renderer.scrollCursorIntoView(cursorPos, 0.5); } catch (error) { // ignore } diff --git a/src/lib/commands.js b/src/lib/commands.js index cad2b8d8c..46714a492 100644 --- a/src/lib/commands.js +++ b/src/lib/commands.js @@ -1,4 +1,5 @@ import fsOperation from "fileSystem"; +import { selectAll } from "@codemirror/commands"; import Sidebar from "components/sidebar"; import { TerminalManager } from "components/terminal"; import color from "dialogs/color"; @@ -34,53 +35,125 @@ import saveState from "./saveState"; import appSettings from "./settings"; import showFileInfo from "./showFileInfo"; +function getTabCloseSelectionOptions() { + return { + unsavedWarning: + strings["unsaved selected tabs warning"] || + "Some selected tabs are not saved. Choose what to do.", + saveLabel: strings["save selected tabs"] || "Save selected tabs", + closeLabel: strings["close selected tabs"] || "Close selected tabs", + saveWarning: + strings["save selected tabs warning"] || + "Are you sure you want to save and close the selected tabs?", + closeWarning: + strings["close selected tabs warning"] || + "Are you sure you want to close the selected tabs? You will lose the unsaved changes and this action cannot be reversed.", + }; +} + +function resolveReferenceFile(referenceFile) { + const { activeFile, getFile } = editorManager; + + if (!referenceFile) return activeFile; + if (typeof referenceFile === "string") { + return getFile(referenceFile, "id") || activeFile; + } + if (referenceFile?.id) { + return getFile(referenceFile.id, "id") || referenceFile; + } + + return referenceFile; +} + +function getTabsRelativeToFile(side, referenceFile) { + const { files } = editorManager; + const file = resolveReferenceFile(referenceFile); + const activeIndex = files.indexOf(file); + + if (activeIndex === -1) return []; + + switch (side) { + case "left": + return files.slice(0, activeIndex); + case "right": + return files.slice(activeIndex + 1); + case "others": + return files.filter((_, index) => index !== activeIndex); + default: + return []; + } +} + +async function closeTabs(files, options = {}) { + const closableFiles = files.filter((file) => file && !file.pinned); + if (!closableFiles.length) return false; + + const { + unsavedWarning = strings["unsaved files warning"], + saveLabel = strings["save all"], + closeLabel = strings["close all"], + saveWarning = strings["save all warning"], + closeWarning = strings["close all warning"], + } = options; + + let save = false; + const unsavedFiles = closableFiles.filter((file) => file.isUnsaved).length; + if (unsavedFiles) { + const confirmation = await confirm(strings["warning"], unsavedWarning); + if (!confirmation) return false; + + const option = await select(strings["select"], [ + ["save", saveLabel], + ["close", closeLabel], + ["cancel", strings["cancel"]], + ]); + if (option === "cancel") return false; + + if (option === "save") { + const doSave = await confirm(strings["warning"], saveWarning); + if (!doSave) return false; + save = true; + } else { + const doClose = await confirm(strings["warning"], closeWarning); + if (!doClose) return false; + } + } + + for (const file of [...closableFiles]) { + if (save) { + await file.save(); + } + + await file.remove(true, { silentPinned: true }); + } + + return true; +} + export default { async "run-tests"() { await runAllTests(); }, async "close-all-tabs"() { - let save = false; - const unsavedFiles = editorManager.files.filter( - (file) => file.isUnsaved, - ).length; - if (unsavedFiles) { - const confirmation = await confirm( - strings["warning"], - strings["unsaved files warning"], - ); - if (!confirmation) return; - const option = await select(strings["select"], [ - ["save", strings["save all"]], - ["close", strings["close all"]], - ["cancel", strings["cancel"]], - ]); - if (option === "cancel") return; - - if (option === "save") { - const doSave = await confirm( - strings["warning"], - strings["save all warning"], - ); - if (!doSave) return; - save = true; - } else { - const doClose = await confirm( - strings["warning"], - strings["close all warning"], - ); - if (!doClose) return; - } - } - - editorManager.files.forEach(async (file) => { - if (save) { - await file.save(); - file.remove(); - return; - } - - file.remove(true); - }); + await closeTabs(editorManager.files); + }, + async "close-tabs-to-left"(referenceFile) { + await closeTabs( + getTabsRelativeToFile("left", referenceFile), + getTabCloseSelectionOptions(), + ); + }, + async "close-tabs-to-right"(referenceFile) { + await closeTabs( + getTabsRelativeToFile("right", referenceFile), + getTabCloseSelectionOptions(), + ); + }, + async "close-other-tabs"(referenceFile) { + await closeTabs( + getTabsRelativeToFile("others", referenceFile), + getTabCloseSelectionOptions(), + ); }, async "save-all-changes"() { const doSave = await confirm( @@ -96,6 +169,9 @@ export default { "close-current-tab"() { editorManager.activeFile.remove(); }, + "toggle-pin-tab"(referenceFile) { + resolveReferenceFile(referenceFile)?.togglePinned?.(); + }, console() { run(true, "inapp"); }, @@ -138,17 +214,17 @@ export default { showFileInfo(url); }, async goto() { - const res = await prompt(strings["enter line number"], "", "number", { + const lastLine = editorManager.editor?.state?.doc?.lines; + const message = lastLine + ? `${strings["enter line number"]} (1..${lastLine})` + : strings["enter line number"]; + const res = await prompt(message, "", "number", { placeholder: "line.column", }); if (!res) return; - - const [line, col] = `${res}`.split("."); - const editor = editorManager.editor; - - editor.focus(); - editor.gotoLine(line, col, true); + const [lineStr, colStr] = String(res).split("."); + editorManager.editor.gotoLine(lineStr, colStr); }, async "new-file"() { let filename = await prompt(strings["enter file name"], "", "filename", { @@ -201,19 +277,19 @@ export default { default: return; } - editorManager.editor.blur(); + editorManager.editor.contentDOM.blur(); }, "open-with"() { editorManager.activeFile.openWith(); }, "open-file"() { - editorManager.editor.blur(); + editorManager.editor.contentDOM.blur(); FileBrowser("file") .then(FileBrowser.openFile) .catch(FileBrowser.openFileError); }, "open-folder"() { - editorManager.editor.blur(); + editorManager.editor.contentDOM.blur(); FileBrowser("folder") .then(FileBrowser.openFolder) .catch(FileBrowser.openFolderError); @@ -251,7 +327,8 @@ export default { this.find(); }, "resize-editor"() { - editorManager.editor.resize(true); + // TODO : Codemirror + //editorManager.editor.resize(true); }, "open-inapp-browser"(url) { browser.open(url); @@ -290,6 +367,60 @@ export default { share() { editorManager.activeFile.share(); }, + async "pin-file-shortcut"() { + const file = editorManager.activeFile; + if (!file?.uri) { + toast(strings["save file before home shortcut"]); + return; + } + + if (typeof system?.pinFileShortcut !== "function") { + toast(strings["pin shortcuts not supported"]); + return; + } + + const { uri, filename } = file; + const label = filename; + const description = filename; + + let id = uri.replace(/[^a-zA-Z0-9]/g, "").toLowerCase(); + if (!id) { + id = helpers.uuid(); + } + if (id.length > 40) { + id = id.slice(-40); + } + id = `file-${id}`; + + const shortcut = { + id, + label, + description, + uri, + }; + + const requestShortcut = new Promise((resolve, reject) => { + system.pinFileShortcut( + shortcut, + () => resolve(true), + (err) => reject(err), + ); + }); + + try { + await requestShortcut; + toast(strings["shortcut request sent"]); + } catch (error) { + if ( + typeof error === "string" && + error.toLowerCase().includes("not supported") + ) { + toast(strings["pin shortcuts not supported"]); + return; + } + helpers.error(error); + } + }, syntax() { changeMode(); }, @@ -315,9 +446,17 @@ export default { async "insert-color"() { const { editor } = editorManager; const range = getColorRange(); - let defaultColor = range ? editor.session.getTextRange(range) : ""; + let defaultColor = ""; - editor.blur(); + if (range) { + try { + defaultColor = editor.state.doc.sliceString(range.from, range.to); + } catch (_) { + defaultColor = ""; + } + } + + editor.contentDOM.blur(); const wasFocused = editorManager.activeFile.focused; const res = await color(defaultColor, () => { if (wasFocused) { @@ -326,7 +465,9 @@ export default { }); if (range) { - editor.session.replace(range, res); + editor.dispatch({ + changes: { from: range.from, to: range.to, insert: res }, + }); return; } editor.insert(res); @@ -342,8 +483,7 @@ export default { }, "select-all"() { const { editor } = editorManager; - editor.execCommand("selectall"); - editor.scrollToRow(Number.POSITIVE_INFINITY); + selectAll(editor); }, async rename(file) { file = file || editorManager.activeFile; @@ -395,8 +535,11 @@ export default { const { editor } = editorManager; const pos = editor.getCursorPosition(); - await acode.format(selectIfNull); - editor.selection.moveCursorToPosition(pos); + const didFormat = await acode.format(selectIfNull); + if (didFormat) { + // Restore cursor position after formatting (pos.row is now 1-based) + editor.gotoLine(pos.row, pos.column); + } }, async eol() { const eol = await select(strings["new line mode"], ["unix", "windows"], { @@ -495,4 +638,8 @@ Additional Info: const devTools = (await import("lib/devTools")).default; devTools.show(); }, + async "lsp-info"() { + const { showLspInfoDialog } = await import("components/lspInfoDialog"); + showLspInfoDialog(); + }, }; diff --git a/src/lib/editorFile.js b/src/lib/editorFile.js index bf44701dc..eddb71cb3 100644 --- a/src/lib/editorFile.js +++ b/src/lib/editorFile.js @@ -1,6 +1,16 @@ import fsOperation from "fileSystem"; +// CodeMirror imports for document state management +import { EditorState, Text } from "@codemirror/state"; +import { + clearSelection, + restoreFolds, + restoreSelection, + setScrollPosition, +} from "cm/editorUtils"; +import { getMode, getModeForPath } from "cm/modelist"; import Sidebar from "components/sidebar"; import tile from "components/tile"; +import toast from "components/toast"; import confirm from "dialogs/confirm"; import DOMPurify from "dompurify"; import startDrag from "handlers/editorFileTab"; @@ -16,8 +26,188 @@ import run from "./run"; import saveFile from "./saveFile"; import appSettings from "./settings"; -const { Fold } = ace.require("ace/edit_session/fold"); -const { Range } = ace.require("ace/range"); +/** + * Creates a Proxy around an EditorState that provides Ace-compatible methods. + * @param {EditorState} state - The raw CodeMirror EditorState + * @param {EditorFile} file - The parent EditorFile instance + * @returns {Proxy} Proxied state with Ace-compatible methods + */ +function createSessionProxy(state, file) { + if (!state) return null; + + /** + * Convert Ace position {row, column} to CodeMirror offset + */ + function positionToOffset(pos, doc) { + if (!pos || !doc) return 0; + try { + const lineNum = Math.max(1, Math.min((pos.row ?? 0) + 1, doc.lines)); + const line = doc.line(lineNum); + const col = Math.max(0, Math.min(pos.column ?? 0, line.length)); + return line.from + col; + } catch (_) { + return 0; + } + } + + /** + * Convert CodeMirror offset to Ace position {row, column} + */ + function offsetToPosition(offset, doc) { + if (!doc) return { row: 0, column: 0 }; + try { + const line = doc.lineAt(offset); + return { row: line.number - 1, column: offset - line.from }; + } catch (_) { + return { row: 0, column: 0 }; + } + } + + return new Proxy(state, { + get(target, prop) { + // Ace-compatible method: getValue() + if (prop === "getValue") { + return () => target.doc.toString(); + } + + // Ace-compatible method: setValue(text) + if (prop === "setValue") { + return (text) => { + const newText = String(text ?? ""); + const { activeFile, editor } = editorManager; + if (activeFile?.id === file.id && editor) { + // Active file: dispatch to live EditorView + editor.dispatch({ + changes: { + from: 0, + to: editor.state.doc.length, + insert: newText, + }, + }); + } else { + // Inactive file: update stored state + file._setRawSession( + target.update({ + changes: { from: 0, to: target.doc.length, insert: newText }, + }).state, + ); + } + }; + } + + // Ace-compatible method: getLine(row) + if (prop === "getLine") { + return (row) => { + try { + return target.doc.line(row + 1).text; + } catch (_) { + return ""; + } + }; + } + + // Ace-compatible method: getLength() + if (prop === "getLength") { + return () => target.doc.lines; + } + + // Ace-compatible method: getTextRange(range) + if (prop === "getTextRange") { + return (range) => { + if (!range) return ""; + try { + const from = positionToOffset(range.start, target.doc); + const to = positionToOffset(range.end, target.doc); + return target.doc.sliceString(from, to); + } catch (_) { + return ""; + } + }; + } + + // Ace-compatible method: insert(position, text) + if (prop === "insert") { + return (position, text) => { + const { activeFile, editor } = editorManager; + const offset = positionToOffset(position, target.doc); + if (activeFile?.id === file.id && editor) { + editor.dispatch({ + changes: { from: offset, insert: String(text ?? "") }, + }); + } else { + file._setRawSession( + target.update({ + changes: { from: offset, insert: String(text ?? "") }, + }).state, + ); + } + }; + } + + // Ace-compatible method: remove(range) + if (prop === "remove") { + return (range) => { + if (!range) return ""; + const from = positionToOffset(range.start, target.doc); + const to = positionToOffset(range.end, target.doc); + const removed = target.doc.sliceString(from, to); + const { activeFile, editor } = editorManager; + if (activeFile?.id === file.id && editor) { + editor.dispatch({ changes: { from, to, insert: "" } }); + } else { + file._setRawSession( + target.update({ changes: { from, to, insert: "" } }).state, + ); + } + return removed; + }; + } + + // Ace-compatible method: replace(range, text) + if (prop === "replace") { + return (range, text) => { + if (!range) return; + const from = positionToOffset(range.start, target.doc); + const to = positionToOffset(range.end, target.doc); + const { activeFile, editor } = editorManager; + if (activeFile?.id === file.id && editor) { + editor.dispatch({ + changes: { from, to, insert: String(text ?? "") }, + }); + } else { + file._setRawSession( + target.update({ + changes: { from, to, insert: String(text ?? "") }, + }).state, + ); + } + }; + } + + // Ace-compatible method: getWordRange(row, column) + if (prop === "getWordRange") { + return (row, column) => { + const offset = positionToOffset({ row, column }, target.doc); + const word = target.wordAt(offset); + if (word) { + return { + start: offsetToPosition(word.from, target.doc), + end: offsetToPosition(word.to, target.doc), + }; + } + return { start: { row, column }, end: { row, column } }; + }; + } + + // Pass through all other properties to the real EditorState + const value = target[prop]; + if (typeof value === "function") { + return value.bind(target); + } + return value; + }, + }); +} /** * @typedef {'run'|'save'|'change'|'focus'|'blur'|'close'|'rename'|'load'|'loadError'|'loadStart'|'loadEnd'|'changeMode'|'changeEncoding'|'changeReadOnly'} FileEvents @@ -38,6 +228,7 @@ const { Range } = ace.require("ace/range"); * @property {number} [scrollLeft] scroll left * @property {number} [scrollTop] scroll top * @property {Array} [folds] folds + * @property {boolean} [pinned] pin the tab to prevent accidental closing */ export default class EditorFile { @@ -93,10 +284,10 @@ export default class EditorFile { */ deletedFile = false; /** - * EditSession of the file - * @type {AceAjax.IEditSession} + * Raw CodeMirror EditorState. Use session getter to access with Ace-compatible methods. + * @type {EditorState} */ - session = null; + #rawSession = null; /** * Encoding of the text e.g. 'gbk' * @type {string} @@ -143,6 +334,11 @@ export default class EditorFile { * @type {boolean} */ #editable = true; + /** + * Prevents the tab from being closed until it is unpinned. + * @type {boolean} + */ + #pinned = false; /** * contains information about cursor position, scroll left, scroll top, folds. */ @@ -189,6 +385,7 @@ export default class EditorFile { onchangemode; onrun; oncanrun; + onpinstatechange; /** * @@ -335,12 +532,15 @@ export default class EditorFile { this.#onFilePosChange(); this.#tab.addEventListener("click", tabOnclick.bind(this)); appSettings.on("update:openFileListPos", this.#onFilePosChange); + this.pinned = !!options?.pinned; addFile(this); editorManager.emit("new-file", this); if (this.#type === "editor") { - this.session = ace.createEditSession(options?.text || ""); + this.#rawSession = EditorState.create({ + doc: options?.text || "", + }); this.setMode(); this.#setupSession(); } @@ -360,6 +560,32 @@ export default class EditorFile { return this.#content; } + /** + * Session with Ace-compatible methods + * Returns a Proxy over the raw EditorState. + * @returns {Proxy} + */ + get session() { + return createSessionProxy(this.#rawSession, this); + } + + /** + * Set the session + * @param {EditorState} value + */ + set session(value) { + this.#rawSession = value; + } + + /** + * Internal method to update the raw session state. + * Used by the Proxy for inactive file updates. + * @param {EditorState} state + */ + _setRawSession(state) { + this.#rawSession = state; + } + /** * File unique id. */ @@ -413,10 +639,10 @@ export default class EditorFile { this.#tab.text = value; this.#name = value; + if (oldExt !== newExt) this.setMode(); + editorManager.onupdate("rename-file"); editorManager.emit("rename-file", this); - - if (oldExt !== newExt) this.setMode(); })(); } @@ -490,7 +716,7 @@ export default class EditorFile { * End of line */ get eol() { - return /\r/.test(this.session.getValue()) ? "windows" : "unix"; + return /\r/.test(this.session.doc.toString()) ? "windows" : "unix"; } /** @@ -500,7 +726,7 @@ export default class EditorFile { set eol(value) { if (this.type !== "editor") return; if (this.eol === value) return; - let text = this.session.getValue(); + let text = this.session.doc.toString(); if (value === "windows") { text = text.replace(/(? { @@ -720,18 +980,29 @@ export default class EditorFile { * Remove and closes the file. * @param {boolean} force if true, will prompt to save the file */ - async remove(force = false) { + async remove(force = false, options = {}) { + const { ignorePinned = false, silentPinned = false } = options || {}; + if ( this.id === constants.DEFAULT_FILE_SESSION && !editorManager.files.length ) - return; + return false; + if (this.pinned && !ignorePinned) { + if (!silentPinned) { + toast( + strings["unpin tab before closing"] || + "Unpin the tab before closing it.", + ); + } + return false; + } if (!force && this.isUnsaved) { const confirmation = await confirm( strings.warning.toUpperCase(), strings["unsaved file"], ); - if (!confirmation) return; + if (!confirmation) return false; } this.#destroy(); @@ -740,18 +1011,20 @@ export default class EditorFile { (file) => file.id !== this.id, ); const { files, activeFile } = editorManager; - if (activeFile.id === this.id) { + const wasActive = activeFile?.id === this.id; + if (wasActive) { editorManager.activeFile = null; } if (!files.length) { Sidebar.hide(); editorManager.activeFile = null; new EditorFile(); - } else { + } else if (wasActive) { files[files.length - 1].makeActive(); } editorManager.onupdate("remove-file"); editorManager.emit("remove-file", this); + return true; } /** @@ -772,13 +1045,37 @@ export default class EditorFile { return this.#save(true); } + setReadOnly(value) { + try { + const { editor, readOnlyCompartment } = editorManager; + if (!editor) return; + if (!readOnlyCompartment) return; + editor.dispatch({ + effects: readOnlyCompartment.reconfigure( + EditorState.readOnly.of(!!value), + ), + }); + } catch (error) { + console.warn( + `Failed to update read-only state for ${this.filename || this.uri}`, + error, + ); + } + + // Sync internal flags and header + this.readOnly = !!value; + this.#editable = !this.readOnly; + if (editorManager.activeFile?.id === this.id) { + editorManager.header.subText = this.#getTitle(); + } + } + /** * Sets syntax highlighting of the file. * @param {string} [mode] */ setMode(mode) { if (this.type !== "editor") return; - const modelist = ace.require("ace/ext/modelist"); const event = createFileEvent(this); this.#emit("changemode", event); if (event.defaultPrevented) return; @@ -788,13 +1085,18 @@ export default class EditorFile { const modes = helpers.parseJSON(localStorage.modeassoc); if (modes?.[ext]) { mode = modes[ext]; - } else { - mode = modelist.getModeForPath(this.filename).mode; } } - // sets ace editor EditSession mode - this.session.setMode(mode); + let modeInfo = mode ? getMode(mode) : null; + if (!modeInfo) { + modeInfo = getModeForPath(this.filename); + } + mode = modeInfo?.name || String(mode || "text").toLowerCase(); + + // Store mode info for later use when creating editor view + this.currentMode = mode; + this.currentLanguageExtension = modeInfo?.getExtension() || null; // sets file icon this.#tab.lead( @@ -827,7 +1129,13 @@ export default class EditorFile { if (this.focused) { editor.focus(); } else { - editor.blur(); + editor.contentDOM.blur(); + // Ensure any native DOM selection is cleared on blur to avoid sticky selection handles + try { + document.getSelection()?.removeAllRanges(); + } catch (error) { + console.warn("Failed to clear native text selection.", error); + } } } else { editorManager.container.style.display = "none"; @@ -837,8 +1145,9 @@ export default class EditorFile { editorManager.container.parentElement.appendChild(this.content); } } + if (activeFile && activeFile.type === "editor") { - activeFile.session.selection.clearSelection(); + clearSelection(editorManager.editor); } } @@ -1064,12 +1373,22 @@ export default class EditorFile { this.#loadOptions = null; - editor.setReadOnly(true); + this.setReadOnly(true); this.loading = true; this.markChanged = false; this.#emit("loadstart", createFileEvent(this)); this.session.setValue(strings["loading..."]); + // Immediately reflect "loading..." in the visible editor if this tab is active + try { + const { activeFile, emit } = editorManager; + if (activeFile?.id === this.id) { + emit("file-loaded", this); + } + } catch (error) { + console.warn("Failed to emit interim file-loaded event.", error); + } + try { const cacheFs = fsOperation(this.cacheFile); const cacheExists = await cacheFs.exists(); @@ -1099,26 +1418,24 @@ export default class EditorFile { const { activeFile, emit } = editorManager; if (activeFile.id === this.id) { - editor.setReadOnly(false); + this.setReadOnly(false); } setTimeout(() => { this.#emit("load", createFileEvent(this)); emit("file-loaded", this); - if (cursorPos) - this.session.selection.moveCursorTo(cursorPos.row, cursorPos.column); - if (scrollTop) this.session.setScrollTop(scrollTop); - if (scrollLeft) this.session.setScrollLeft(scrollLeft); - if (editable !== undefined) this.editable = editable; - - if (Array.isArray(folds)) { - const parsedFolds = EditorFile.#parseFolds(folds); - this.session?.addFolds(parsedFolds); + if (cursorPos) { + restoreSelection(editor, cursorPos); + } + if (scrollTop || scrollLeft) { + setScrollPosition(editor, scrollTop, scrollLeft); } + if (editable !== undefined) this.editable = editable; + restoreFolds(editor, folds); }, 0); } catch (error) { this.#emit("loaderror", createFileEvent(this)); - this.remove(); + this.remove(false, { ignorePinned: true }); toast(`Unable to load: ${this.filename}`); window.log("error", "Unable to load: " + this.filename); window.log("error", error); @@ -1127,55 +1444,18 @@ export default class EditorFile { } } - static #onfold(e) { - editorManager.editor._emit("fold", e); - } - - static #onscrolltop(e) { - editorManager.editor._emit("scrolltop", e); - } - - static #onscrollleft(e) { - editorManager.editor._emit("scrollleft", e); - } - - /** - * Parse folds - * @param {Array} folds - */ - static #parseFolds(folds) { - if (!Array.isArray(folds)) return []; - - const foldDataAr = []; + // TODO: Implement CodeMirror equivalents for folding and scroll events + // static #onfold(e) { + // editorManager.editor._emit("fold", e); + // } - folds.forEach((fold) => { - if (!fold || !fold.range) return; + // static #onscrolltop(e) { + // editorManager.editor._emit("scrolltop", e); + // } - const { range } = fold; - const { start, end } = range; - - if (!start || !end) return; - - try { - const foldData = new Fold( - new Range(start.row, start.column, end.row, end.column), - fold.placeholder, - ); - - if (Array.isArray(fold.ranges) && fold.ranges.length > 0) { - const subFolds = EditorFile.#parseFolds(fold.ranges); - foldData.subFolds = subFolds; - foldData.ranges = subFolds; - } - - foldDataAr.push(foldData); - } catch (error) { - console.warn("Error parsing fold:", error); - } - }); - - return foldDataAr; - } + // static #onscrollleft(e) { + // editorManager.editor._emit("scrollleft", e); + // } #save(as) { const event = createFileEvent(this); @@ -1193,43 +1473,39 @@ export default class EditorFile { } #updateTab() { + if (!this.#tab) return; + if (this.#isUnsaved) { this.tab.classList.add("notice"); } else { this.tab.classList.remove("notice"); } + + this.tab.classList.toggle("pinned", this.#pinned); + this.#tab.tail(this.#createTabTail()); } /** - * Setup Ace EditSession for the file + * Setup CodeMirror EditorState for the file */ #setupSession() { if (this.type !== "editor") return; - const { value: settings } = appSettings; - - this.session.setTabSize(settings.tabSize); - this.session.setUseSoftTabs(settings.softTab); - this.session.setUseWrapMode(settings.textWrap); - this.session.setUseWorker(false); - - this.session.on("changeScrollTop", EditorFile.#onscrolltop); - this.session.on("changeScrollLeft", EditorFile.#onscrollleft); - this.session.on("changeFold", EditorFile.#onfold); - this.session.on("changeAnnotation", () => { - editorManager.editor._emit("changeAnnotation", this); - }); + // CodeMirror configuration will be handled in the EditorView + // Store settings for when the editor view is created + this.editorSettings = { + tabSize: appSettings.value.tabSize, + softTab: appSettings.value.softTab, + textWrap: appSettings.value.textWrap, + }; } #destroy() { this.#emit("close", createFileEvent(this)); appSettings.off("update:openFileListPos", this.#onFilePosChange); if (this.type === "editor") { - this.session?.off("changeScrollTop", EditorFile.#onscrolltop); - this.session?.off("changeScrollLeft", EditorFile.#onscrollleft); - this.session?.off("changeFold", EditorFile.#onfold); this.#removeCache(); - this.session?.destroy(); - delete this.session; + // CodeMirror EditorState doesn't need explicit cleanup + this.session = null; } else if (this.content) { this.content.remove(); } @@ -1242,6 +1518,25 @@ export default class EditorFile { toast(strings["no app found to handle this file"]); } + #createTabTail() { + if (!this.#pinned) { + return tag("span", { + className: "icon cancel", + dataset: { + action: "close-file", + }, + }); + } + + return tag("span", { + className: "icon pin", + title: strings["unpin tab"] || "Unpin tab", + dataset: { + action: "toggle-pin", + }, + }); + } + #getTitle() { // Use custom title function if provided if (this.#customTitleFn) { @@ -1290,6 +1585,10 @@ function tabOnclick(e) { this.remove(); return; } + if (action === "toggle-pin") { + this.togglePinned(); + return; + } this.makeActive(); } diff --git a/src/lib/editorManager.js b/src/lib/editorManager.js index 87ec6aab7..eb9e05152 100644 --- a/src/lib/editorManager.js +++ b/src/lib/editorManager.js @@ -1,13 +1,76 @@ import sidebarApps from "sidebarApps"; -import initColorView, { deactivateColorView } from "ace/colorView"; -import { setCommands, setKeyBindings } from "ace/commands"; -import touchListeners, { scrollAnimationFrame } from "ace/touchHandler"; +import { indentUnit } from "@codemirror/language"; +import { search } from "@codemirror/search"; +import { Compartment, EditorState, Prec, StateEffect } from "@codemirror/state"; +import { oneDark } from "@codemirror/theme-one-dark"; +import { + closeHoverTooltips, + EditorView, + hasHoverTooltips, + highlightActiveLineGutter, + highlightTrailingWhitespace, + highlightWhitespace, + keymap, + lineNumbers, +} from "@codemirror/view"; +import { + abbreviationTracker, + EmmetKnownSyntax, + emmetCompletionSource, + emmetConfig, + expandAbbreviation, + wrapWithAbbreviation, +} from "@emmetio/codemirror6-plugin"; +import createBaseExtensions from "cm/baseExtensions"; +import { + setKeyBindings as applyKeyBindings, + executeCommand, + getCommandKeymapExtension, + getRegisteredCommands, + refreshCommandKeymap, + registerExternalCommand, + removeExternalCommand, +} from "cm/commandRegistry"; +import { handleLineNumberClick } from "cm/lineNumberSelection"; +import lspApi from "cm/lsp/api"; +import lspClientManager from "cm/lsp/clientManager"; +import { + getLspDiagnostics, + LSP_DIAGNOSTICS_EVENT, + lspDiagnosticsClientExtension, + lspDiagnosticsUiExtension, +} from "cm/lsp/diagnostics"; +import { stopManagedServer } from "cm/lsp/serverLauncher"; +import createMainEditorExtensions from "cm/mainEditorExtensions"; +// CodeMirror mode management +import { + getMode, + getModeForPath, + getModes, + getModesByName, + initModes, +} from "cm/modelist"; +import createTouchSelectionMenu from "cm/touchSelectionMenu"; +import "cm/supportedModes"; +import { autocompletion } from "@codemirror/autocomplete"; +import colorView from "cm/colorView"; +import { + getAllFolds, + restoreFolds, + restoreSelection, + setScrollPosition, +} from "cm/editorUtils"; +import indentGuides from "cm/indentGuides"; +import rainbowBrackets, { getRainbowBracketColors } from "cm/rainbowBrackets"; +import { getThemeConfig, getThemeExtensions } from "cm/themes"; import list from "components/collapsableList"; import quickTools from "components/quickTools"; import ScrollBar from "components/scrollbar"; import SideButton, { sideButtonContainer } from "components/sideButton"; import keyboardHandler, { keydownState } from "handlers/keyboard"; import EditorFile from "./editorFile"; +import openFile from "./openFile"; +import { addedFolder } from "./openFolder"; import appSettings from "./settings"; import { getSystemConfiguration, @@ -35,6 +98,51 @@ async function EditorManager($header, $body) { let lastScrollTop = 0; let lastScrollLeft = 0; + // Debounce timers for CodeMirror change handling + let checkTimeout = null; + let autosaveTimeout = null; + let touchSelectionController = null; + let touchSelectionSyncRaf = 0; + let nativeContextMenuDisabled = null; + const recoverableWarningKeys = new Set(); + + function warnRecoverable(message, error, key) { + if (key) { + if (recoverableWarningKeys.has(key)) return; + recoverableWarningKeys.add(key); + } + console.warn(message, error); + } + + function isCoarsePointerDevice() { + if (typeof window !== "undefined") { + try { + if (window.matchMedia?.("(pointer: coarse)").matches) { + return true; + } + } catch (_) { + // Ignore matchMedia capability errors and fall through. + } + } + return ( + typeof navigator !== "undefined" && + Number(navigator.maxTouchPoints || 0) > 0 + ); + } + + const setNativeContextMenuDisabled = (disabled) => { + const value = !!disabled; + if (nativeContextMenuDisabled === value) return; + nativeContextMenuDisabled = value; + const api = globalThis.system?.setNativeContextMenuDisabled; + if (typeof api !== "function") return; + try { + api.call(globalThis.system, value); + } catch (error) { + console.warn("Failed to update native context menu state", error); + } + }; + const { scrollbarSize } = appSettings.value; const events = { "switch-file": [], @@ -54,6 +162,11 @@ async function EditorManager($header, $body) { }, }; const $container =
      ; + // Ensure the container participates well in flex layouts and can constrain the editor + $container.style.flex = "1 1 auto"; + $container.style.minHeight = "0"; // allow child scroller to size correctly + $container.style.height = "100%"; + $container.style.width = "100%"; const problemButton = SideButton({ text: strings.problems, icon: "warningreport_problem", @@ -63,7 +176,1139 @@ async function EditorManager($header, $body) { acode.exec("open", "problems"); }, }); - const editor = ace.edit($container); + + const pointerCursorVisibilityExtension = EditorView.updateListener.of( + (update) => { + if (!update.selectionSet) return; + const pointerTriggered = update.transactions.some( + (tr) => + tr.isUserEvent("pointer") || + tr.isUserEvent("select") || + tr.isUserEvent("select.pointer") || + tr.isUserEvent("touch") || + tr.isUserEvent("select.touch"), + ); + if (!pointerTriggered) return; + requestAnimationFrame(() => { + if (!isCursorVisible()) scrollCursorIntoView({ behavior: "instant" }); + }); + }, + ); + + const isShiftSelectionActive = (event) => { + if (!appSettings.value.shiftClickSelection) return false; + return !!event?.shiftKey || quickTools?.$footer?.dataset?.shift != null; + }; + const shiftClickSelectionExtension = EditorView.domEventHandlers({ + click(event) { + if (!touchSelectionController?.consumePendingShiftSelectionClick(event)) { + return false; + } + event.preventDefault(); + return true; + }, + }); + const touchSelectionUpdateExtension = EditorView.updateListener.of( + (update) => { + if (!touchSelectionController) return; + const pointerTriggered = update.transactions.some( + (tr) => + tr.isUserEvent("pointer") || + tr.isUserEvent("select") || + tr.isUserEvent("select.pointer") || + tr.isUserEvent("touch") || + tr.isUserEvent("select.touch"), + ); + if (update.selectionSet || pointerTriggered) { + cancelAnimationFrame(touchSelectionSyncRaf); + touchSelectionSyncRaf = requestAnimationFrame(() => { + touchSelectionController?.onStateChanged({ + pointerTriggered, + selectionChanged: update.selectionSet, + }); + }); + } + }, + ); + + // Compartment to swap editor theme dynamically + const themeCompartment = new Compartment(); + // Compartments to control indentation, tab width, and font styling dynamically + const indentUnitCompartment = new Compartment(); + const tabSizeCompartment = new Compartment(); + const fontStyleCompartment = new Compartment(); + // Compartment for line wrapping + const wrapCompartment = new Compartment(); + // Compartment for line numbers + const lineNumberCompartment = new Compartment(); + // Compartment for text direction (RTL/LTR) + const rtlCompartment = new Compartment(); + // Compartment for whitespace visualization + const whitespaceCompartment = new Compartment(); + // Compartment for fold gutter theme (fade) + const foldThemeCompartment = new Compartment(); + // Compartment for autocompletion behavior + const completionCompartment = new Compartment(); + // Compartment for rainbow bracket colorizer + const rainbowCompartment = new Compartment(); + // Compartment for indent guides + const indentGuidesCompartment = new Compartment(); + // Compartment for read-only toggling + const readOnlyCompartment = new Compartment(); + // Compartment for language mode (allows async loading/reconfigure) + const languageCompartment = new Compartment(); + // Compartment for LSP extensions so we can swap per file + const lspCompartment = new Compartment(); + const diagnosticsClientExt = lspDiagnosticsClientExtension(); + const buildDiagnosticsUiExt = () => + lspDiagnosticsUiExtension(appSettings?.value?.lintGutter !== false); + let lspRequestToken = 0; + let lastLspUri = null; + const UNTITLED_URI_PREFIX = "untitled://acode/"; + + function getEditorFontFamily() { + const font = appSettings?.value?.editorFont || "Roboto Mono"; + return `${font}, Noto Mono, Monaco, monospace`; + } + + function makeFontTheme() { + const fontSize = appSettings?.value?.fontSize || "12px"; + const lineHeight = appSettings?.value?.lineHeight || 1.6; + const fontFamily = getEditorFontFamily(); + return EditorView.theme({ + "&": { fontSize, lineHeight: String(lineHeight) }, + ".cm-content": { fontFamily }, + ".cm-gutter": { fontFamily }, + ".cm-tooltip, .cm-tooltip *": { fontFamily }, + }); + } + + function makeWrapExtension() { + return appSettings?.value?.textWrap ? EditorView.lineWrapping : []; + } + + function makeLineNumberExtension() { + const { linenumbers = true, relativeLineNumbers = false } = + appSettings?.value || {}; + const lineNumberConfig = { + domEventHandlers: { + click(view, line, event) { + return handleLineNumberClick(view, line, event); + }, + }, + }; + if (!linenumbers) + return EditorView.theme({ + ".cm-gutter": { + display: "none !important", + width: "0px !important", + minWidth: "0px !important", + border: "none !important", + }, + }); + if (!relativeLineNumbers) + return Prec.highest([ + lineNumbers(lineNumberConfig), + highlightActiveLineGutter(), + ]); + return Prec.highest([ + lineNumbers({ + ...lineNumberConfig, + formatNumber: (lineNo, state) => { + try { + const cur = state.doc.lineAt(state.selection.main.head).number; + const diff = Math.abs(lineNo - cur); + return diff === 0 ? String(lineNo) : String(diff); + } catch (_) { + return String(lineNo); + } + }, + }), + highlightActiveLineGutter(), + ]); + } + + function makeIndentExtensions() { + const { softTab = true, tabSize = 2 } = appSettings?.value || {}; + const unit = softTab ? " ".repeat(Math.max(1, Number(tabSize) || 2)) : "\t"; + return { + indentExt: indentUnit.of(unit), + tabSizeExt: EditorState.tabSize.of(Math.max(1, Number(tabSize) || 2)), + }; + } + + function makeRainbowBracketExtension() { + const enabled = appSettings?.value?.rainbowBrackets ?? true; + if (!enabled) return []; + + const themeId = appSettings?.value?.editorTheme || "one_dark"; + return rainbowBrackets({ + colors: getRainbowBracketColors(getThemeConfig(themeId)), + }); + } + + function makeWhitespaceTheme() { + return EditorView.theme({ + ".cm-highlightSpace": { + backgroundImage: + "radial-gradient(circle at 50% 54%, var(--cm-space-marker-color) 0.08em, transparent 0.1em)", + backgroundPosition: "center", + backgroundRepeat: "no-repeat", + opacity: "0.5", + }, + ".cm-highlightTab": { + backgroundSize: "auto 70%", + backgroundPosition: "right 60%", + opacity: "0.65", + }, + ".cm-trailingSpace": { + backgroundColor: "var(--cm-trailing-space-color)", + borderRadius: "2px", + }, + "&": { + "--cm-space-marker-color": "rgba(127, 127, 127, 0.6)", + "--cm-trailing-space-color": "rgba(255, 77, 77, 0.2)", + }, + }); + } + + // Centralised CodeMirror options registry for organized configuration + // Each spec declares related settings keys, its compartment(s), and a builder returning extension(s) + const cmOptionSpecs = [ + { + keys: ["linenumbers", "relativeLineNumbers"], + compartments: [lineNumberCompartment], + build() { + return makeLineNumberExtension(); + }, + }, + { + keys: ["rainbowBrackets"], + compartments: [rainbowCompartment], + build() { + return makeRainbowBracketExtension(); + }, + }, + { + keys: ["indentGuides"], + compartments: [indentGuidesCompartment], + build() { + const enabled = appSettings?.value?.indentGuides ?? false; + if (!enabled) return []; + return indentGuides({ + highlightActiveGuide: true, + hideOnBlankLines: false, + }); + }, + }, + { + keys: ["fontSize", "editorFont", "lineHeight"], + compartments: [fontStyleCompartment], + build() { + return makeFontTheme(); + }, + }, + { + keys: ["textWrap"], + compartments: [wrapCompartment], + build() { + return makeWrapExtension(); + }, + }, + { + keys: ["softTab", "tabSize"], + compartments: [indentUnitCompartment, tabSizeCompartment], + build() { + const { indentExt, tabSizeExt } = makeIndentExtensions(); + return [indentExt, tabSizeExt]; + }, + }, + { + keys: ["rtlText"], + compartments: [rtlCompartment], + build() { + const rtl = !!appSettings?.value?.rtlText; + return EditorView.theme({ + "&": { direction: rtl ? "rtl" : "ltr" }, + }); + }, + }, + { + keys: ["showSpaces"], + compartments: [whitespaceCompartment], + build() { + const show = !!appSettings?.value?.showSpaces; + return show + ? [ + highlightWhitespace(), + highlightTrailingWhitespace(), + makeWhitespaceTheme(), + ] + : []; + }, + }, + { + keys: ["fadeFoldWidgets"], + compartments: [foldThemeCompartment], + build() { + const fade = !!appSettings?.value?.fadeFoldWidgets; + if (!fade) return []; + return EditorView.theme({ + ".cm-gutter.cm-foldGutter .cm-gutterElement": { + opacity: 0, + pointerEvents: "none", + transition: "opacity .12s ease", + }, + ".cm-gutter.cm-foldGutter:hover .cm-gutterElement, .cm-gutter.cm-foldGutter .cm-gutterElement:hover": + { + opacity: 1, + pointerEvents: "auto", + }, + }); + }, + }, + { + keys: ["liveAutoCompletion"], + compartments: [completionCompartment], + build() { + const live = !!appSettings?.value?.liveAutoCompletion; + return autocompletion({ + activateOnTyping: live, + activateOnTypingDelay: isCoarsePointerDevice() ? 220 : 100, + }); + }, + }, + ]; + + function getBaseExtensionsFromOptions() { + /** @type {import("@codemirror/state").Extension[]} */ + const exts = []; + for (const spec of cmOptionSpecs) { + const built = spec.build(); + if (spec.compartments.length === 1) { + exts.push(spec.compartments[0].of(built)); + } else { + const arr = Array.isArray(built) ? built : [built]; + for (let i = 0; i < spec.compartments.length; i++) { + const comp = spec.compartments[i]; + const ext = arr[i]; + if (ext !== undefined) exts.push(comp.of(ext)); + } + } + } + return exts; + } + + function createEmmetExtensionSet({ + syntax, + tracker = {}, + config: emmetOverrides = {}, + } = {}) { + const resolvedSyntax = + syntax === undefined ? EmmetKnownSyntax.html : syntax; + if (!resolvedSyntax) return []; + const trackerExtension = abbreviationTracker({ + syntax: resolvedSyntax, + ...tracker, + }); + const { autocompleteTab = ["markup", "stylesheet"], ...restOverrides } = + emmetOverrides || {}; + const emmetConfigExtension = emmetConfig.of({ + syntax: resolvedSyntax, + autocompleteTab, + ...restOverrides, + }); + return [ + Prec.high(trackerExtension), + wrapWithAbbreviation(), + keymap.of([{ key: "Mod-e", run: expandAbbreviation }]), + emmetConfigExtension, + ]; + } + + function applyOptions(keys) { + const filter = keys ? new Set(keys) : null; + for (const spec of cmOptionSpecs) { + if (filter && !spec.keys.some((k) => filter.has(k))) continue; + const built = spec.build(); + const effects = []; + if (spec.compartments.length === 1) { + effects.push(spec.compartments[0].reconfigure(built)); + } else { + const arr = Array.isArray(built) ? built : [built]; + for (let i = 0; i < spec.compartments.length; i++) { + const comp = spec.compartments[i]; + const ext = arr[i] ?? []; + effects.push(comp.reconfigure(ext)); + } + } + editor.dispatch({ effects }); + } + } + + function buildLspMetadata(file) { + if (!file || file.type !== "editor") return null; + const uri = getFileLspUri(file); + if (!uri) return null; + const languageId = getFileLanguageId(file); + return { + uri, + languageId, + languageName: file.currentMode || file.mode || languageId, + view: editor, + file, + rootUri: resolveRootUriForContext({ uri, file }), + }; + } + + async function configureLspForFile(file) { + const metadata = buildLspMetadata(file); + const token = ++lspRequestToken; + if (!metadata) { + detachActiveLsp(); + editor.dispatch({ effects: lspCompartment.reconfigure([]) }); + return; + } + if (metadata.uri !== lastLspUri) { + detachActiveLsp(); + } + try { + const extensions = + (await lspClientManager.getExtensionsForFile(metadata)) || []; + if (token !== lspRequestToken) return; + if (!extensions.length) { + lastLspUri = null; + editor.dispatch({ effects: lspCompartment.reconfigure([]) }); + return; + } + lastLspUri = metadata.uri; + editor.dispatch({ + effects: lspCompartment.reconfigure(extensions), + }); + } catch (error) { + if (token !== lspRequestToken) return; + console.error("Failed to configure LSP", error); + lastLspUri = null; + editor.dispatch({ effects: lspCompartment.reconfigure([]) }); + } + } + + function detachLspForFile(file) { + if (!file || file.type !== "editor") return; + const uri = getFileLspUri(file); + if (!uri) return; + try { + lspClientManager.detach(uri); + } catch (error) { + console.warn(`Failed to detach LSP client for ${uri}`, error); + } + if (uri === lastLspUri && manager.activeFile?.id === file.id) { + lastLspUri = null; + editor.dispatch({ effects: lspCompartment.reconfigure([]) }); + } + } + + // Plugin already wires CSS completions; attach extras for related syntaxes. + const emmetCompletionSyntaxes = new Set([ + EmmetKnownSyntax.scss, + EmmetKnownSyntax.less, + EmmetKnownSyntax.sass, + EmmetKnownSyntax.sss, + EmmetKnownSyntax.stylus, + EmmetKnownSyntax.postcss, + ]); + + function maybeAttachEmmetCompletions(targetExtensions, syntax) { + if (emmetCompletionSyntaxes.has(syntax)) { + targetExtensions.push( + EditorState.languageData.of(() => [ + { autocomplete: emmetCompletionSource }, + ]), + ); + } + } + + function getFileLspUri(file) { + if (!file) return null; + if (file.uri) return file.uri; + return `${UNTITLED_URI_PREFIX}${file.id}`; + } + + function getFileLanguageId(file) { + if (!file) return "plaintext"; + const mode = file.currentMode || file.mode; + if (mode) { + const modeInfo = getMode(String(mode)); + if (modeInfo?.name) return String(modeInfo.name).toLowerCase(); + return String(mode).toLowerCase(); + } + try { + const guess = getModeForPath(file.filename || file.name || ""); + if (guess?.name) return String(guess.name).toLowerCase(); + } catch (error) { + warnRecoverable( + `Failed to resolve language id for ${file.filename || file.name || "untitled file"}`, + error, + "language-id-resolution", + ); + } + return "plaintext"; + } + + function resolveRootUriForContext(context = {}) { + const uri = context.uri || context.file?.uri; + if (!uri) return null; + for (const folder of addedFolder) { + const base = typeof folder?.url === "string" ? folder.url : ""; + if (!base) continue; + if (uri.startsWith(base)) return base; + } + return uri; + } + + function detachActiveLsp() { + if (!lastLspUri) return; + try { + lspClientManager.detach(lastLspUri, editor); + } catch (error) { + console.warn(`Failed to detach LSP session for ${lastLspUri}`, error); + } + lastLspUri = null; + } + + function applyLspSettings() { + const { lsp } = appSettings.value || {}; + if (!lsp) return; + const overrides = lsp.servers || {}; + for (const [id, config] of Object.entries(overrides)) { + if (!config || typeof config !== "object") continue; + const key = String(id || "") + .trim() + .toLowerCase(); + if (!key) continue; + const existing = lspApi.servers.get(key); + if (existing) { + lspApi.servers.update(key, (current) => { + const next = { ...current }; + if (Array.isArray(config.languages) && config.languages.length) { + next.languages = config.languages.map((lang) => + String(lang).toLowerCase(), + ); + } + if (config.transport && typeof config.transport === "object") { + next.transport = { ...current.transport, ...config.transport }; + delete next.transport.protocols; + } + if (config.clientConfig && typeof config.clientConfig === "object") { + next.clientConfig = { + ...current.clientConfig, + ...config.clientConfig, + }; + } + if ( + config.initializationOptions && + typeof config.initializationOptions === "object" + ) { + next.initializationOptions = { + ...current.initializationOptions, + ...config.initializationOptions, + }; + } + if ( + typeof config.startupTimeout === "number" && + Number.isFinite(config.startupTimeout) && + config.startupTimeout > 0 + ) { + next.startupTimeout = Math.floor(config.startupTimeout); + } + if (config.launcher && typeof config.launcher === "object") { + next.launcher = { ...current.launcher, ...config.launcher }; + } + if (Object.prototype.hasOwnProperty.call(config, "enabled")) { + next.enabled = !!config.enabled; + } + return next; + }); + if (config.enabled === false) { + stopManagedServer(key); + } + } else if ( + Array.isArray(config.languages) && + config.languages.length && + config.transport && + typeof config.transport === "object" + ) { + try { + lspApi.upsert({ + id: key, + label: config.label || key, + languages: config.languages, + transport: config.transport, + clientConfig: config.clientConfig, + initializationOptions: config.initializationOptions, + startupTimeout: config.startupTimeout, + launcher: config.launcher, + enabled: config.enabled !== false, + }); + lspApi.servers.update(key, (current) => { + if (current.transport?.protocols) { + const updated = { ...current }; + updated.transport = { ...current.transport }; + delete updated.transport.protocols; + return updated; + } + return current; + }); + if (config.enabled === false) { + stopManagedServer(key); + } + } catch (error) { + console.warn( + `Failed to register LSP server override for ${key}`, + error, + ); + } + } + } + } + + // Create minimal CodeMirror editor + const editorState = EditorState.create({ + doc: "", + extensions: createMainEditorExtensions({ + // Emmet needs highest precedence so place before default keymaps + emmetExtensions: createEmmetExtensionSet({ + syntax: EmmetKnownSyntax.html, + }), + baseExtensions: createBaseExtensions(), + commandKeymapExtension: getCommandKeymapExtension(), + themeExtension: themeCompartment.of(oneDark), + pointerCursorVisibilityExtension, + shiftClickSelectionExtension, + touchSelectionUpdateExtension, + searchExtension: search(), + // Ensure read-only can be toggled later via compartment + readOnlyExtension: readOnlyCompartment.of(EditorState.readOnly.of(false)), + // Editor options driven by settings via compartments + optionExtensions: getBaseExtensionsFromOptions(), + }), + }); + + const editor = new EditorView({ + state: editorState, + parent: $container, + }); + + await applyKeyBindings(editor); + + editor.execCommand = function (commandName, args) { + if (!commandName) return false; + return executeCommand(String(commandName), editor, args); + }; + + editor.commands = { + addCommand(descriptor) { + const command = registerExternalCommand(descriptor); + refreshCommandKeymap(editor); + return command; + }, + removeCommand(name) { + if (!name) return; + removeExternalCommand(name); + refreshCommandKeymap(editor); + }, + }; + + Object.defineProperty(editor.commands, "commands", { + get() { + const map = {}; + getRegisteredCommands().forEach((cmd) => { + map[cmd.name] = cmd; + }); + return map; + }, + }); + + // Provide editor.session for Ace API compatibility + // Returns the active file's session (Proxy with Ace-like methods) + Object.defineProperty(editor, "session", { + get() { + return manager.activeFile?.session ?? null; + }, + }); + + touchSelectionController = createTouchSelectionMenu(editor, { + container: $container, + getActiveFile: () => manager?.activeFile || null, + isShiftSelectionActive, + }); + + // Provide minimal Ace-like API compatibility used by plugins + /** + * Insert text at the current selection/cursor in the editor + * @param {string} text + * @returns {boolean} success + */ + editor.insert = function (text) { + try { + const { from, to } = editor.state.selection.main; + const insertText = String(text ?? ""); + // Replace current selection and move cursor to end of inserted text + editor.dispatch({ + changes: { from, to, insert: insertText }, + selection: { + anchor: from + insertText.length, + head: from + insertText.length, + }, + }); + return true; + } catch (_) { + return false; + } + }; + + // Set CodeMirror theme by id registered in our registry + editor.setTheme = function (themeId) { + try { + const id = String(themeId || ""); + const ext = getThemeExtensions(id, [oneDark]); + editor.dispatch({ effects: themeCompartment.reconfigure(ext) }); + return true; + } catch (_) { + return false; + } + }; + + /** + * Go to a specific line and column in the editor (CodeMirror implementation) + * Supports multiple input formats: + * - Simple line number: gotoLine(16) or gotoLine(16, 5) + * - Relative offsets: gotoLine("+5") or gotoLine("-3") + * - Percentages: gotoLine("50%") or gotoLine("25%") + * - Line:column format: gotoLine("16:5") + * - Mixed formats: gotoLine("+5:10") or gotoLine("50%:5") + * + * @param {number|string} line - Line number (1-based), or string with special formats + * @param {number} column - Column number (0-based) - only used with numeric line parameter + * @param {boolean} animate - Whether to animate (not used in CodeMirror, for compatibility) + * @returns {boolean} success + */ + editor.gotoLine = function (line, column = 0, animate = false) { + try { + const { state } = editor; + const { doc } = state; + + let targetLine, + targetColumn = column; + + // If line is a string, parse it for special formats + if (typeof line === "string") { + const match = /^([+-])?(\d+)?(:\d+)?(%)?$/.exec(line.trim()); + if (!match) { + console.warn("Invalid gotoLine format:", line); + return false; + } + + const currentLine = doc.lineAt(state.selection.main.head); + const [, sign, lineNum, colonColumn, percent] = match; + + // Parse column if specified in line:column format + if (colonColumn) { + targetColumn = Math.max(0, +colonColumn.slice(1) - 1); // Convert to 0-based + } + + // Parse line number + let parsedLine = lineNum ? +lineNum : currentLine.number; + + if (lineNum && percent) { + // Percentage format: "50%" or "+10%" + let percentage = parsedLine / 100; + if (sign) { + percentage = + percentage * (sign === "-" ? -1 : 1) + + currentLine.number / doc.lines; + } + targetLine = Math.round(doc.lines * percentage); + } else if (lineNum && sign) { + // Relative format: "+5" or "-3" + targetLine = + parsedLine * (sign === "-" ? -1 : 1) + currentLine.number; + } else if (lineNum) { + // Absolute line number + targetLine = parsedLine; + } else { + // No line number specified, stay on current line + targetLine = currentLine.number; + } + } else { + // Simple numeric line parameter + targetLine = line; + } + + // Clamp line number to valid range + const lineNum = Math.max(1, Math.min(targetLine, doc.lines)); + const docLine = doc.line(lineNum); + + // Clamp column to line length + const col = Math.max(0, Math.min(targetColumn, docLine.length)); + const pos = docLine.from + col; + + // Move cursor and scroll into view + editor.dispatch({ + selection: { anchor: pos, head: pos }, + effects: EditorView.scrollIntoView(pos, { y: "center" }), + }); + editor.focus(); + return true; + } catch (error) { + console.error("Error in gotoLine:", error); + return false; + } + }; + + /** + * Get current cursor position) + * @returns {{row: number, column: number}} Cursor position + */ + editor.getCursorPosition = function () { + try { + const head = editor.state.selection.main.head; + const cursor = editor.state.doc.lineAt(head); + const line = cursor.number; + const col = head - cursor.from; + return { row: line, column: col }; + } catch (_) { + return { row: 1, column: 0 }; + } + }; + + /** + * Ace-compatible selection range getter with 0-based rows. + * @returns {{start: {row: number, column: number}, end: {row: number, column: number}}} + */ + editor.getSelectionRange = function () { + try { + const { from, to } = editor.state.selection.main; + const fromLine = editor.state.doc.lineAt(from); + const toLine = editor.state.doc.lineAt(to); + return { + start: { + row: Math.max(0, fromLine.number - 1), + column: from - fromLine.from, + }, + end: { + row: Math.max(0, toLine.number - 1), + column: to - toLine.from, + }, + }; + } catch (_) { + return { start: { row: 0, column: 0 }, end: { row: 0, column: 0 } }; + } + }; + + /** + * Ace-compatible row scrolling helper. + * @param {number} row - 0-based row index, supports Infinity to jump to end. + * @returns {boolean} + */ + editor.scrollToRow = function (row) { + try { + const scroller = editor.scrollDOM; + if (!scroller) return false; + + if (row === Number.POSITIVE_INFINITY) { + scroller.scrollTop = Math.max( + scroller.scrollHeight - scroller.clientHeight, + 0, + ); + return true; + } + + const parsedRow = Number(row); + if (!Number.isFinite(parsedRow)) return false; + const aceRow = Math.max(0, Math.floor(parsedRow)); + const lineNum = Math.min(editor.state.doc.lines, aceRow + 1); + const line = editor.state.doc.line(lineNum); + editor.dispatch({ + effects: EditorView.scrollIntoView(line.from, { y: "start" }), + }); + return true; + } catch (_) { + return false; + } + }; + + /** + * Move cursor to specific position + * @param {{row: number, column: number}} pos - Position to move to + */ + editor.moveCursorToPosition = function (pos) { + try { + const lineNum = Math.max(1, pos.row || 1); + const col = Math.max(0, pos.column || 0); + editor.gotoLine(lineNum, col); + } catch (_) { + // ignore + } + }; + + /** + * Get the entire document value + * @returns {string} Document content + */ + editor.getValue = function () { + try { + return editor.state.doc.toString(); + } catch (_) { + return ""; + } + }; + + /** + * Compatibility object for selection-related methods + */ + editor.selection = { + /** + * Get current selection anchor + * @returns {number} Anchor position + */ + get anchor() { + try { + return editor.state.selection.main.anchor; + } catch (_) { + return 0; + } + }, + + /** + * Get current selection range + * @returns {{start: {row: number, column: number}, end: {row: number, column: number}}} Selection range + */ + getRange: function () { + try { + const { from, to } = editor.state.selection.main; + const fromLine = editor.state.doc.lineAt(from); + const toLine = editor.state.doc.lineAt(to); + return { + start: { + row: fromLine.number, + column: from - fromLine.from, + }, + end: { + row: toLine.number, + column: to - toLine.from, + }, + }; + } catch (_) { + return { start: { row: 1, column: 0 }, end: { row: 1, column: 0 } }; // Default to line 1 + } + }, + + /** + * Get cursor position + * @returns {{row: number, column: number}} Cursor position + */ + getCursor: function () { + return editor.getCursorPosition(); + }, + }; + + /** + * Get selected text or text under cursor (CodeMirror implementation) + * @returns {string} Selected text + */ + editor.getCopyText = function () { + try { + const { from, to } = editor.state.selection.main; + if (from === to) return ""; // No selection + return editor.state.doc.sliceString(from, to); + } catch (_) { + return ""; + } + }; + + editor.setSelection = function (value) { + touchSelectionController?.setSelection(!!value); + }; + + editor.setMenu = function (value) { + touchSelectionController?.setMenu(!!value); + }; + + // Helper: apply a file's content and language to the editor view + function applyFileToEditor(file) { + if (!file || file.type !== "editor") return; + const syntax = getEmmetSyntaxForFile(file); + const baseExtensions = createMainEditorExtensions({ + // Emmet needs to precede default keymaps so tracker Tab wins over indent + emmetExtensions: createEmmetExtensionSet({ syntax }), + baseExtensions: createBaseExtensions(), + commandKeymapExtension: getCommandKeymapExtension(), + // keep compartment in the state to allow dynamic theme changes later + themeExtension: themeCompartment.of(oneDark), + pointerCursorVisibilityExtension, + shiftClickSelectionExtension, + touchSelectionUpdateExtension, + searchExtension: search(), + // Keep dynamic compartments across state swaps + optionExtensions: getBaseExtensionsFromOptions(), + }); + const exts = [...baseExtensions]; + maybeAttachEmmetCompletions(exts, syntax); + try { + const langExtFn = file.currentLanguageExtension; + let initialLang = []; + if (typeof langExtFn === "function") { + let result; + try { + result = langExtFn(); + } catch (_) { + result = []; + } + // If the loader returns a Promise, reconfigure when it resolves + if (result && typeof result.then === "function") { + initialLang = []; + result + .then((ext) => { + try { + editor.dispatch({ + effects: languageCompartment.reconfigure(ext || []), + }); + } catch (error) { + warnRecoverable( + "Failed to apply async language extensions.", + error, + "async-language-reconfigure", + ); + } + }) + .catch(() => { + // ignore load errors; remain in plain text + }); + } else { + initialLang = result || []; + } + } + // Ensure language compartment is present (empty -> plain text) + exts.push(languageCompartment.of(initialLang)); + } catch (e) { + // ignore language extension errors; fallback to plain text + } + + // Color preview plugin when enabled + if (appSettings.value.colorPreview) { + exts.push(colorView(true)); + } + + // Apply read-only state based on file.editable/loading using Compartment + try { + const ro = !file.editable || !!file.loading; + exts.push(readOnlyCompartment.of(EditorState.readOnly.of(ro))); + } catch (e) { + // safe to ignore; editor will remain editable by default + } + + // Keep file.session in sync and handle caching/autosave + exts.push(getDocSyncListener()); + exts.push(lspCompartment.of([])); + + // Preserve previous state for restoring selection/folds after swap + const prevState = file.session || null; + + const doc = prevState ? prevState.doc.toString() : ""; + const state = EditorState.create({ doc, extensions: exts }); + file.session = state; + editor.setState(state); + touchSelectionController?.onSessionChanged(); + // Re-apply selected theme after state replacement + const desiredTheme = appSettings?.value?.editorTheme; + if (desiredTheme) editor.setTheme(desiredTheme); + + // Ensure dynamic compartments reflect current settings + applyOptions(); + + // Restore selection from previous state if available + try { + const sel = prevState?.selection; + if (sel && Array.isArray(sel.ranges)) { + const ranges = sel.ranges.map((r) => ({ from: r.from, to: r.to })); + const mainIndex = sel.mainIndex ?? 0; + restoreSelection(editor, { ranges, mainIndex }); + } + } catch (error) { + warnRecoverable( + "Failed to restore selection from previous session state.", + error, + "restore-selection", + ); + } + + // Restore folds from previous state if available + try { + const folds = prevState ? getAllFolds(prevState) : []; + if (folds && folds.length) { + restoreFolds(editor, folds); + } + } catch (error) { + warnRecoverable( + "Failed to restore folded regions from previous session state.", + error, + "restore-folds", + ); + } + + // Restore last known scroll position if present + if ( + typeof file.lastScrollTop === "number" || + typeof file.lastScrollLeft === "number" + ) { + setScrollPosition(editor, file.lastScrollTop, file.lastScrollLeft); + } + + void configureLspForFile(file); + } + + function getEmmetSyntaxForFile(file) { + const mode = (file?.currentMode || "").toLowerCase(); + const name = (file?.filename || "").toLowerCase(); + const ext = name.includes(".") ? name.split(".").pop() : ""; + if (ext === "tsx" || mode.includes("tsx")) return EmmetKnownSyntax.tsx; + if (ext === "jsx" || mode.includes("jsx")) return EmmetKnownSyntax.jsx; + if (mode.includes("javascript") && (ext === "jsx" || ext === "tsx")) { + return ext === "tsx" ? EmmetKnownSyntax.tsx : EmmetKnownSyntax.jsx; + } + if (ext === "css" || mode.includes("css")) return EmmetKnownSyntax.css; + if (ext === "scss" || mode.includes("scss")) return EmmetKnownSyntax.scss; + if (ext === "sass" || mode.includes("sass")) return EmmetKnownSyntax.sass; + if (ext === "less" || mode.includes("less")) return EmmetKnownSyntax.less; + if (ext === "sss" || mode.includes("sss")) return EmmetKnownSyntax.sss; + if (ext === "styl" || ext === "stylus" || mode.includes("styl")) + return EmmetKnownSyntax.stylus; + if (ext === "postcss" || mode.includes("postcss")) + return EmmetKnownSyntax.postcss; + if (ext === "xml" || mode.includes("xml")) return EmmetKnownSyntax.xml; + if (ext === "xsl" || mode.includes("xsl")) return EmmetKnownSyntax.xsl; + if (ext === "haml" || mode.includes("haml")) return EmmetKnownSyntax.haml; + if ( + ext === "pug" || + ext === "jade" || + mode.includes("pug") || + mode.includes("jade") + ) + return EmmetKnownSyntax.pug; + if (ext === "slim" || mode.includes("slim")) return EmmetKnownSyntax.slim; + if (ext === "vue" || mode.includes("vue")) return EmmetKnownSyntax.vue; + if (ext === "php" || mode.includes("php")) return EmmetKnownSyntax.html; + if ( + ext === "htm" || + ext === "html" || + ext === "xhtml" || + mode.includes("html") + ) + return EmmetKnownSyntax.html; + return null; + } + const $vScrollbar = ScrollBar({ width: scrollbarSize, onscroll: onscrollV, @@ -81,15 +1326,21 @@ async function EditorManager($header, $body) { files: [], onupdate: () => {}, activeFile: null, + isCodeMirror: true, addFile, editor, + readOnlyCompartment, getFile, switchFile, + moveFileByPinnedState, + normalizePinnedTabOrder, + syncOpenFileList, hasUnsavedFiles, getEditorHeight, getEditorWidth, header: $header, container: $container, + getLspMetadata: buildLspMetadata, get isScrolling() { return isScrolling; }, @@ -128,42 +1379,193 @@ async function EditorManager($header, $body) { events.emit(detailedEvent, ...detailedEventArgs); } }, + /** + * Restart LSP for the active file + * Useful after stopping/restarting language servers + */ + restartLsp() { + const activeFile = manager.activeFile; + if (activeFile?.type === "editor") { + void configureLspForFile(activeFile); + } + }, }; - // set mode text - editor.setSession(ace.createEditSession("", "ace/mode/text")); + if (typeof document !== "undefined") { + const globalTarget = + typeof globalThis !== "undefined" ? globalThis : document; + const diagnosticsListenerKey = "__acodeDiagnosticsListener"; + const existing = globalTarget?.[diagnosticsListenerKey]; + if (typeof existing === "function") { + document.removeEventListener(LSP_DIAGNOSTICS_EVENT, existing); + } + let diagnosticsButtonSyncRaf = 0; + const listener = () => { + cancelAnimationFrame(diagnosticsButtonSyncRaf); + diagnosticsButtonSyncRaf = requestAnimationFrame(() => { + diagnosticsButtonSyncRaf = 0; + const active = manager.activeFile; + if (active?.type === "editor") { + active.session = editor.state; + } + toggleProblemButton(); + }); + }; + document.addEventListener(LSP_DIAGNOSTICS_EVENT, listener); + if (globalTarget) { + globalTarget[diagnosticsListenerKey] = listener; + } + } + + lspClientManager.setOptions({ + resolveRoot: resolveRootUriForContext, + onClientIdle: ({ server }) => { + if (server?.id) stopManagedServer(server.id); + }, + displayFile: async (targetUri) => { + if (!targetUri) return null; + // Decode URI components (e.g., %40 -> @) since LSP returns encoded URIs + const decodedUri = decodeURIComponent(targetUri); + const existing = manager.getFile(decodedUri, "uri"); + if (existing?.type === "editor") { + existing.makeActive(); + return editor; + } + try { + await openFile(decodedUri, { render: true }); + const opened = manager.getFile(decodedUri, "uri"); + if (opened?.type === "editor") { + opened.makeActive(); + return editor; + } + } catch (error) { + console.error("[LSP] Failed to open file", decodedUri, error); + } + return null; + }, + openFile: async (targetUri) => { + if (!targetUri) return null; + // Decode URI components (e.g., %40 -> @) + const decodedUri = decodeURIComponent(targetUri); + const existing = manager.getFile(decodedUri, "uri"); + if (existing?.type === "editor") { + existing.makeActive(); + return editor; + } + try { + await openFile(decodedUri, { render: true }); + const opened = manager.getFile(decodedUri, "uri"); + if (opened?.type === "editor") { + opened.makeActive(); + return editor; + } + } catch (error) { + console.error("[LSP] Failed to open file", decodedUri, error); + } + return null; + }, + resolveLanguageId: (uri) => { + if (!uri) return "plaintext"; + try { + const mode = getModeForPath(uri); + if (mode?.name) return String(mode.name).toLowerCase(); + } catch (error) { + warnRecoverable( + `Failed to resolve language id for URI: ${uri}`, + error, + "lsp-language-id-resolution", + ); + } + return "plaintext"; + }, + clientExtensions: [diagnosticsClientExt], + diagnosticsUiExtension: buildDiagnosticsUiExt(), + }); + applyLspSettings(); + $body.append($container); + initModes(); // Initialize CodeMirror modes await setupEditor(); + // Initialize theme from settings or fallback + try { + const desired = appSettings?.value?.editorTheme || "one_dark"; + editor.setTheme(desired); + } catch (error) { + warnRecoverable( + "Failed to apply configured editor theme. Falling back to one_dark.", + error, + "initial-editor-theme", + ); + editor.setTheme("one_dark"); + } + + // Ensure initial options reflect settings + applyOptions(); + $hScrollbar.onshow = $vScrollbar.onshow = updateFloatingButton.bind( {}, false, ); $hScrollbar.onhide = $vScrollbar.onhide = updateFloatingButton.bind({}, true); - appSettings.on("update:textWrap", function (value) { + appSettings.on("update:textWrap", function () { updateMargin(); - for (let file of manager.files) { - file.session.setUseWrapMode(value); - if (!value) file.session.on("changeScrollLeft", onscrollleft); - else file.session.off("changeScrollLeft", onscrollleft); + applyOptions(["textWrap"]); + }); + + function updateEditorIndentationSettings() { + applyOptions(["softTab", "tabSize"]); + } + + function updateEditorStyleFromSettings() { + applyOptions(["fontSize", "editorFont", "lineHeight"]); + } + + function updateEditorWrapFromSettings() { + applyOptions(["textWrap"]); + if (appSettings.value.textWrap) { + $hScrollbar.hide(); } + } + + function updateEditorLineNumbersFromSettings() { + applyOptions(["linenumbers", "relativeLineNumbers"]); + } + + appSettings.on("update:tabSize", function () { + updateEditorIndentationSettings(); + }); + + appSettings.on("update:softTab", function () { + updateEditorIndentationSettings(); }); - appSettings.on("update:tabSize", function (value) { - manager.files.forEach((file) => file.session.setTabSize(value)); + // Show spaces/tabs and trailing whitespace + appSettings.on("update:showSpaces", function () { + applyOptions(["showSpaces"]); }); - appSettings.on("update:softTab", function (value) { - manager.files.forEach((file) => file.session.setUseSoftTabs(value)); + // Font size update for CodeMirror + appSettings.on("update:fontSize", function () { + updateEditorStyleFromSettings(); }); - appSettings.on("update:showSpaces", function (value) { - editor.setOption("showInvisibles", value); + // Font family update for CodeMirror + appSettings.on("update:editorFont", function () { + updateEditorStyleFromSettings(); }); - appSettings.on("update:fontSize", function (value) { - editor.setFontSize(value); + appSettings.on("update:lsp", async function () { + applyLspSettings(); + const active = manager.activeFile; + if (active?.type === "editor") { + void configureLspForFile(active); + } else { + detachActiveLsp(); + editor.dispatch({ effects: lspCompartment.reconfigure([]) }); + await lspClientManager.dispose(); + } }); appSettings.on("update:openFileListPos", function (value) { @@ -171,69 +1573,201 @@ async function EditorManager($header, $body) { $vScrollbar.resize(); }); - appSettings.on("update:showPrintMargin", function (value) { - editorManager.editor.setOption("showPrintMargin", value); - }); + // appSettings.on("update:showPrintMargin", function (value) { + // // manager.editor.setOption("showPrintMargin", value); + // }); appSettings.on("update:scrollbarSize", function (value) { $vScrollbar.size = value; $hScrollbar.size = value; }); - appSettings.on("update:liveAutoCompletion", function (value) { - editor.setOption("enableLiveAutocompletion", value); + // Live autocompletion (activateOnTyping) + appSettings.on("update:liveAutoCompletion", function () { + applyOptions(["liveAutoCompletion"]); }); - appSettings.on("update:linenumbers", function (value) { - updateMargin(true); - editor.resize(true); + appSettings.on("update:autoCloseTags", function () { + const file = manager.activeFile; + if (file?.type === "editor") applyFileToEditor(file); }); - appSettings.on("update:lineHeight", function (value) { - editor.container.style.lineHeight = value; + appSettings.on("update:linenumbers", function () { + updateMargin(true); + updateEditorLineNumbersFromSettings(); }); - appSettings.on("update:relativeLineNumbers", function (value) { - editor.setOption("relativeLineNumbers", value); + // Line height update for CodeMirror + appSettings.on("update:lineHeight", function () { + updateEditorStyleFromSettings(); }); - appSettings.on("update:elasticTabstops", function (value) { - editor.setOption("useElasticTabstops", value); + appSettings.on("update:relativeLineNumbers", function () { + updateEditorLineNumbersFromSettings(); }); - appSettings.on("update:rtlText", function (value) { - editor.setOption("rtlText", value); + appSettings.on("update:editorTheme", function () { + const desiredTheme = appSettings?.value?.editorTheme || "one_dark"; + editor.setTheme(desiredTheme); + applyOptions(["rainbowBrackets"]); }); - appSettings.on("update:hardWrap", function (value) { - editor.setOption("hardWrap", value); + appSettings.on("update:lintGutter", function (value) { + lspClientManager.setOptions({ + diagnosticsUiExtension: lspDiagnosticsUiExtension(value !== false), + }); + const active = manager.activeFile; + if (active?.type === "editor") { + void configureLspForFile(active); + } }); - appSettings.on("update:printMargin", function (value) { - editor.setOption("printMarginColumn", value); + // appSettings.on("update:elasticTabstops", function (_value) { + // // Not applicable in CodeMirror (Ace-era). No-op for now. + // }); + + appSettings.on("update:rtlText", function () { + applyOptions(["rtlText"]); }); - appSettings.on("update:colorPreview", function (value) { - if (value) { - return initColorView(editor, true); - } + // appSettings.on("update:hardWrap", function (_value) { + // // Not applicable in CodeMirror (Ace-era). No-op for now. + // }); + + // appSettings.on("update:printMargin", function (_value) { + // // Not applicable in CodeMirror (Ace-era). No-op for now. + // }); - deactivateColorView(); + appSettings.on("update:colorPreview", function () { + const file = manager.activeFile; + if (file?.type === "editor") applyFileToEditor(file); }); appSettings.on("update:showSideButtons", function () { updateMargin(); updateSideButtonContainer(); + toggleProblemButton(); }); appSettings.on("update:showAnnotations", function () { updateMargin(true); }); - appSettings.on("update:fadeFoldWidgets", function (value) { - editor.setOption("fadeFoldWidgets", value); + appSettings.on("update:fadeFoldWidgets", function () { + applyOptions(["fadeFoldWidgets"]); + }); + + // Toggle rainbow brackets + appSettings.on("update:rainbowBrackets", function () { + applyOptions(["rainbowBrackets"]); + }); + + // Toggle indent guides + appSettings.on("update:indentGuides", function () { + applyOptions(["indentGuides"]); + }); + + // Keep file.session and cache in sync on every edit + function getDocSyncListener() { + return EditorView.updateListener.of((update) => { + const file = manager.activeFile; + if (!file || file.type !== "editor") return; + + // Only run expensive work when the document actually changed + if (!update.docChanged) return; + + // Mirror latest state only on doc changes to avoid clobbering async loads + file.session = update.state; + + // Debounced change handling (unsaved flag, cache, autosave) + if (checkTimeout) clearTimeout(checkTimeout); + if (autosaveTimeout) clearTimeout(autosaveTimeout); + + checkTimeout = setTimeout(async () => { + const changed = await file.isChanged(); + file.isUnsaved = changed; + try { + await file.writeToCache(); + } catch (error) { + warnRecoverable( + `Failed to write cache for ${file.filename || file.uri}`, + error, + `cache-write-${file.id}`, + ); + } + + events.emit("file-content-changed", file); + manager.onupdate("file-changed"); + manager.emit("update", "file-changed"); + toggleProblemButton(); + + const { autosave } = appSettings.value; + if (file.uri && changed && autosave) { + autosaveTimeout = setTimeout(() => { + acode.exec("save", false); + }, autosave); + } + + file.markChanged = true; + }, TIMEOUT_VALUE); + }); + } + + // Register critical listeners + manager.on(["file-loaded"], (file) => { + if (!file) return; + if (manager.activeFile?.id === file.id && file.type === "editor") { + applyFileToEditor(file); + } + }); + + manager.on(["update:read-only"], () => { + const file = manager.activeFile; + if (file?.type !== "editor") return; + try { + const ro = !file.editable || !!file.loading; + editor.dispatch({ + effects: readOnlyCompartment.reconfigure(EditorState.readOnly.of(ro)), + }); + touchSelectionController?.onStateChanged(); + } catch (error) { + warnRecoverable( + "Failed to apply read-only compartment update. Recreating editor state.", + error, + "readonly-reconfigure", + ); + // Fallback: full re-apply + applyFileToEditor(file); + } + }); + + manager.on(["remove-file"], (file) => { + detachLspForFile(file); + toggleProblemButton(); }); + manager.on(["rename-file"], (file) => { + if (file?.type !== "editor") return; + if (manager.activeFile?.id === file.id) { + // Re-apply file to editor to update language/syntax highlighting + applyFileToEditor(file); + void configureLspForFile(file); + } + }); + + // Attach doc-sync listener to the current editor instance + try { + editor.dispatch({ + effects: StateEffect.appendConfig.of(getDocSyncListener()), + }); + } catch (error) { + warnRecoverable( + "Failed to attach document sync listener to editor.", + error, + "doc-sync-listener", + ); + } + return manager; /** @@ -242,9 +1776,52 @@ async function EditorManager($header, $body) { */ function addFile(file) { if (manager.files.includes(file)) return; - manager.files.push(file); - manager.openFileList.append(file.tab); + const insertAt = file.pinned + ? getPinnedInsertIndex() + : manager.files.length; + manager.files.splice(insertAt, 0, file); + syncOpenFileList(); $header.text = file.name; + toggleProblemButton(); + } + + function getPinnedInsertIndex(skipFile = null) { + return manager.files.reduce((count, file) => { + if (file === skipFile) return count; + return count + (file.pinned ? 1 : 0); + }, 0); + } + + function syncOpenFileList() { + const $list = manager.openFileList; + manager.files.forEach((file) => { + $list.append(file.tab); + }); + } + + function moveFileByPinnedState(file) { + if (!manager.files.includes(file)) return; + if (manager.activeFile?.id === file.id) { + file.tab.scrollIntoView(); + } + } + + function normalizePinnedTabOrder(nextFiles = manager.files) { + const pinnedFiles = []; + const regularFiles = []; + + nextFiles.forEach((file) => { + if (file.pinned) { + pinnedFiles.push(file); + return; + } + regularFiles.push(file); + }); + + manager.files = [...pinnedFiles, ...regularFiles]; + syncOpenFileList(); + + return manager.files; } /** @@ -252,8 +1829,6 @@ async function EditorManager($header, $body) { * @returns {Promise} A promise that resolves once the editor is set up. */ async function setupEditor() { - const Emmet = ace.require("ace/ext/emmet"); - const textInput = editor.textInput.getElement(); const settings = appSettings.value; const { leftMargin, textWrap, colorPreview, fontSize, lineHeight } = appSettings.value; @@ -265,170 +1840,154 @@ async function EditorManager($header, $body) { let checkTimeout = null; let autosaveTimeout; let scrollTimeout; + let scrollSyncRaf = 0; + const scroller = editor.scrollDOM; - editor.on("focus", async () => { - const { activeFile } = manager; - activeFile.focused = true; - keyboardHandler.on("keyboardShow", scrollCursorIntoView); + function syncScrollUi() { + scrollSyncRaf = 0; + onscrolltop(); + onscrollleft(); + } - if (isScrolling) return; + function handleEditorScroll() { + if (!scroller) return; + if (!isScrolling) { + isScrolling = true; + if (hasHoverTooltips(editor.state)) { + editor.dispatch({ effects: closeHoverTooltips }); + } + touchSelectionController?.onScrollStart(); + } + if (!scrollSyncRaf) { + scrollSyncRaf = requestAnimationFrame(syncScrollUi); + } + clearTimeout(scrollTimeout); + scrollTimeout = setTimeout(() => { + isScrolling = false; + touchSelectionController?.onScrollEnd(); + }, 100); + } - $hScrollbar.hide(); - $vScrollbar.hide(); + scroller?.addEventListener("scroll", handleEditorScroll, { passive: true }); + syncScrollUi(); + + keyboardHandler.on("keyboardShowStart", () => { + requestAnimationFrame(() => { + scrollCursorIntoView({ behavior: "instant" }); + }); + }); + keyboardHandler.on("keyboardShow", scrollCursorIntoView); + + // Attach native DOM event listeners directly to the editor's contentDOM + const contentDOM = editor.contentDOM; + const isFocused = + contentDOM === document.activeElement || + contentDOM.contains(document.activeElement); + setNativeContextMenuDisabled(isFocused); + + contentDOM.addEventListener("focus", (_event) => { + setNativeContextMenuDisabled(true); + const { activeFile } = manager; + if (activeFile) { + activeFile.focused = true; + } + touchSelectionController?.onStateChanged(); }); - editor.on("blur", async () => { + contentDOM.addEventListener("blur", async (_event) => { + setNativeContextMenuDisabled(false); + touchSelectionController?.setMenu(false); const { hardKeyboardHidden, keyboardHeight } = await getSystemConfiguration(); const blur = () => { const { activeFile } = manager; - activeFile.focused = false; - activeFile.focusedBefore = false; + if (activeFile) { + activeFile.focused = false; + activeFile.focusedBefore = false; + } }; - if ( hardKeyboardHidden === HARDKEYBOARDHIDDEN_NO && keyboardHeight < 100 ) { - // external keyboard + // external keyboard - blur immediately blur(); return; } - + // soft keyboard - wait for keyboard to hide const onKeyboardHide = () => { keyboardHandler.off("keyboardHide", onKeyboardHide); blur(); }; - keyboardHandler.on("keyboardHide", onKeyboardHide); }); - editor.on("change", (e) => { - if (checkTimeout) clearTimeout(checkTimeout); - if (autosaveTimeout) clearTimeout(autosaveTimeout); - - checkTimeout = setTimeout(async () => { - const { activeFile } = manager; - - if (activeFile.markChanged) { - const changed = await activeFile.isChanged(); - activeFile.isUnsaved = changed; - activeFile.writeToCache(); - events.emit("file-content-changed", activeFile); - manager.onupdate("file-changed"); - manager.emit("update", "file-changed"); - - const { autosave } = appSettings.value; - if (activeFile.uri && changed && autosave) { - autosaveTimeout = setTimeout(() => { - acode.exec("save", false); - }, autosave); - } - } - activeFile.markChanged = true; - }, TIMEOUT_VALUE); - }); - - editor.on("changeAnnotation", toggleProblemButton); - - editor.on("scroll", () => { - clearTimeout(scrollTimeout); - isScrolling = true; - scrollTimeout = setTimeout(() => { - isScrolling = false; - }, 100); - }); - - editor.renderer.on("resize", () => { - $vScrollbar.resize($vScrollbar.visible); - $hScrollbar.resize($hScrollbar.visible); - }); - - editor.on("scrolltop", onscrolltop); - editor.on("scrollleft", onscrollleft); - textInput.addEventListener("keydown", (e) => { - if (e.key === "Escape") { - keydownState.esc = { value: true, target: textInput }; + contentDOM.addEventListener("keydown", (event) => { + if (event.key === "Escape") { + keydownState.esc = { value: true, target: contentDOM }; } }); - if (colorPreview) { - initColorView(editor); - } - - touchListeners(editor); - setCommands(editor); - await setKeyBindings(editor); - Emmet.setCore(window.emmet); - editor.setFontSize(fontSize); - editor.setHighlightSelectedWord(true); - editor.container.style.lineHeight = lineHeight; - - ace.require("ace/ext/language_tools"); - editor.setOption("animatedScroll", false); - editor.setOption("tooltipFollowsMouse", false); - editor.setOption("theme", settings.editorTheme); - editor.setOption( - "showGutter", - settings.linenumbers || settings.showAnnotations, - ); - editor.setOption("showLineNumbers", settings.linenumbers); - editor.setOption("enableEmmet", true); - editor.setOption("showInvisibles", settings.showSpaces); - editor.setOption("indentedSoftWrap", false); - editor.setOption("scrollPastEnd", 0.5); - editor.setOption("showPrintMargin", settings.showPrintMargin); - editor.setOption("relativeLineNumbers", settings.relativeLineNumbers); - editor.setOption("useElasticTabstops", settings.elasticTabstops); - editor.setOption("useTextareaForIME", settings.useTextareaForIME); - editor.setOption("rtlText", settings.rtlText); - editor.setOption("hardWrap", settings.hardWrap); - editor.setOption("spellCheck", settings.spellCheck); - editor.setOption("printMarginColumn", settings.printMargin); - editor.setOption("enableBasicAutocompletion", true); - editor.setOption("enableLiveAutocompletion", settings.liveAutoCompletion); - editor.setOption("copyWithEmptySelection", true); - editor.setOption("fadeFoldWidgets", settings.fadeFoldWidgets); - // editor.setOption('enableInlineAutocompletion', settings.inlineAutoCompletion); - updateMargin(true); updateSideButtonContainer(); - editor.renderer.setScrollMargin( - scrollMarginTop, - scrollMarginBottom, - scrollMarginLeft, - scrollMarginRight, - ); + toggleProblemButton(); } /** * Scrolls the cursor into view if it is not currently visible. */ - function scrollCursorIntoView() { - keyboardHandler.off("keyboardShow", scrollCursorIntoView); - if (isCursorVisible()) return; - const { teardropSize } = appSettings.value; - editor.renderer.scrollCursorIntoView(); - editor.renderer.scrollBy(0, teardropSize + 10); - editor._emit("scroll-intoview"); + function scrollCursorIntoView(options = {}) { + const view = editor; + const scroller = view?.scrollDOM; + if (!view || !scroller) return; + + const { behavior = "smooth" } = options; + const { head } = view.state.selection.main; + const caret = safeCoordsAtPos(view, head); + if (!caret) return; + + const scrollerRect = scroller.getBoundingClientRect(); + const relativeTop = caret.top - scrollerRect.top + scroller.scrollTop; + const relativeBottom = caret.bottom - scrollerRect.top + scroller.scrollTop; + const topMargin = 16; + const bottomMargin = 24; + + const scrollTop = scroller.scrollTop; + const visibleTop = scrollTop + topMargin; + const visibleBottom = scrollTop + scroller.clientHeight - bottomMargin; + + if (relativeTop < visibleTop) { + const nextTop = Math.max(relativeTop - topMargin, 0); + scroller.scrollTo({ top: nextTop, behavior }); + } else if (relativeBottom > visibleBottom) { + const delta = relativeBottom - visibleBottom; + scroller.scrollTo({ top: scrollTop + delta, behavior }); + } } /** - * Checks if the cursor is visible within the Ace editor. + * Checks if the cursor is visible within the CodeMirror viewport. * @returns {boolean} - True if the cursor is visible, false otherwise. */ function isCursorVisible() { - const { editor, container } = editorManager; - const { teardropSize } = appSettings.value; - const cursorPos = editor.getCursorPosition(); - const contentTop = container.getBoundingClientRect().top; - const contentBottom = contentTop + container.clientHeight; - const cursorTop = editor.renderer.textToScreenCoordinates( - cursorPos.row, - cursorPos.column, - ).pageY; - const cursorBottom = cursorTop + teardropSize + 10; - return cursorTop >= contentTop && cursorBottom <= contentBottom; + const view = editor; + const scroller = view?.scrollDOM; + if (!view || !scroller) return true; + + const { head } = view.state.selection.main; + const caret = safeCoordsAtPos(view, head); + if (!caret) return true; + + const scrollerRect = scroller.getBoundingClientRect(); + return caret.top >= scrollerRect.top && caret.bottom <= scrollerRect.bottom; + } + + function safeCoordsAtPos(view, pos) { + try { + return view.coordsAtPos(pos); + } catch (_) { + return null; + } } /** @@ -436,14 +1995,16 @@ async function EditorManager($header, $body) { * @param {Number} value */ function onscrollV(value) { + const scroller = editor?.scrollDOM; + if (!scroller) return; + const normalized = clamp01(value); + const maxScroll = Math.max( + scroller.scrollHeight - scroller.clientHeight, + 0, + ); preventScrollbarV = true; - const session = editor.getSession(); - const editorHeight = getEditorHeight(editor); - const scroll = editorHeight * value; - - session.setScrollTop(scroll); - editor._emit("scroll", editor); - cancelAnimationFrame(scrollAnimationFrame); + scroller.scrollTop = normalized * maxScroll; + lastScrollTop = scroller.scrollTop; } /** @@ -451,6 +2012,7 @@ async function EditorManager($header, $body) { */ function onscrollVend() { preventScrollbarV = false; + setVScrollValue(); } /** @@ -458,14 +2020,14 @@ async function EditorManager($header, $body) { * @param {number} value - The scroll value. */ function onscrollH(value) { + if (appSettings.value.textWrap) return; + const scroller = editor?.scrollDOM; + if (!scroller) return; + const normalized = clamp01(value); + const maxScroll = Math.max(scroller.scrollWidth - scroller.clientWidth, 0); preventScrollbarH = true; - const session = editor.getSession(); - const editorWidth = getEditorWidth(editor); - const scroll = editorWidth * value; - - session.setScrollLeft(scroll); - editor._emit("scroll", editor); - cancelAnimationFrame(scrollAnimationFrame); + scroller.scrollLeft = normalized * maxScroll; + lastScrollLeft = scroller.scrollLeft; } /** @@ -473,6 +2035,7 @@ async function EditorManager($header, $body) { */ function onscrollHEnd() { preventScrollbarH = false; + setHScrollValue(); } /** @@ -480,17 +2043,19 @@ async function EditorManager($header, $body) { */ function setHScrollValue() { if (appSettings.value.textWrap || preventScrollbarH) return; - const session = editor.getSession(); - const scrollLeft = session.getScrollLeft(); - + const scroller = editor?.scrollDOM; + if (!scroller) return; + const maxScroll = Math.max(scroller.scrollWidth - scroller.clientWidth, 0); + if (maxScroll <= 0) { + lastScrollLeft = 0; + $hScrollbar.value = 0; + return; + } + const scrollLeft = scroller.scrollLeft; if (scrollLeft === lastScrollLeft) return; - - const editorWidth = getEditorWidth(editor); - const factor = (scrollLeft / editorWidth).toFixed(2); - lastScrollLeft = scrollLeft; - $hScrollbar.value = factor; - editor._emit("scroll", "horizontal"); + const factor = scrollLeft / maxScroll; + $hScrollbar.value = clamp01(factor); } /** @@ -498,6 +2063,19 @@ async function EditorManager($header, $body) { * Updates the horizontal scroll value and renders the horizontal scrollbar. */ function onscrollleft() { + if (appSettings.value.textWrap) { + $hScrollbar.hide(); + return; + } + const scroller = editor?.scrollDOM; + if (!scroller) return; + const maxScroll = Math.max(scroller.scrollWidth - scroller.clientWidth, 0); + if (maxScroll <= 0) { + $hScrollbar.hide(); + lastScrollLeft = 0; + $hScrollbar.value = 0; + return; + } setHScrollValue(); $hScrollbar.render(); } @@ -507,17 +2085,22 @@ async function EditorManager($header, $body) { */ function setVScrollValue() { if (preventScrollbarV) return; - const session = editor.getSession(); - const scrollTop = session.getScrollTop(); - + const scroller = editor?.scrollDOM; + if (!scroller) return; + const maxScroll = Math.max( + scroller.scrollHeight - scroller.clientHeight, + 0, + ); + if (maxScroll <= 0) { + lastScrollTop = 0; + $vScrollbar.value = 0; + return; + } + const scrollTop = scroller.scrollTop; if (scrollTop === lastScrollTop) return; - - const editorHeight = getEditorHeight(editor); - const factor = (scrollTop / editorHeight).toFixed(2); - lastScrollTop = scrollTop; - $vScrollbar.value = factor; - editor._emit("scroll", "vertical"); + const factor = scrollTop / maxScroll; + $vScrollbar.value = clamp01(factor); } /** @@ -525,10 +2108,28 @@ async function EditorManager($header, $body) { * Updates the vertical scroll value and renders the vertical scrollbar. */ function onscrolltop() { + const scroller = editor?.scrollDOM; + if (!scroller) return; + const maxScroll = Math.max( + scroller.scrollHeight - scroller.clientHeight, + 0, + ); + if (maxScroll <= 0) { + $vScrollbar.hide(); + lastScrollTop = 0; + $vScrollbar.value = 0; + return; + } setVScrollValue(); $vScrollbar.render(); } + function clamp01(value) { + if (value <= 0) return 0; + if (value >= 1) return 1; + return value; + } + /** * Updates the floating button visibility based on the provided show parameter. * @param {boolean} [show=false] - Indicates whether to show the floating button. @@ -573,20 +2174,62 @@ async function EditorManager($header, $body) { /** * Toggles the visibility of the problem button based on the presence of annotations in the files. */ + function fileHasProblems(file) { + const state = getDiagnosticStateForFile(file); + if (!state) return false; + + const session = file.session; + if (session && typeof session.getAnnotations === "function") { + try { + const annotations = session.getAnnotations() || []; + if (annotations.length) return true; + } catch (error) { + warnRecoverable( + "Failed to read editor annotations while checking problems.", + error, + "read-annotations", + ); + } + } + + if (typeof state.field !== "function") return false; + try { + const diagnostics = getLspDiagnostics(state); + return diagnostics.length > 0; + } catch (error) { + warnRecoverable( + "Failed to read LSP diagnostics while checking problems.", + error, + "read-lsp-diagnostics", + ); + } + + return false; + } + function toggleProblemButton() { - const fileWithProblems = manager.files.find((file) => { - if (file.type !== "editor") return false; - const annotations = file?.session?.getAnnotations(); - return !!annotations.length; - }); + const { showSideButtons } = appSettings.value; + if (!showSideButtons) { + problemButton.hide(); + return; + } - if (fileWithProblems) { + const hasProblems = manager.files.some((file) => fileHasProblems(file)); + if (hasProblems) { problemButton.show(); } else { problemButton.hide(); } } + function getDiagnosticStateForFile(file) { + if (!file || file.type !== "editor") return null; + if (manager.activeFile?.id === file.id && editor?.state) { + return editor.state; + } + return file.session || null; + } + /** * Updates the side button container based on the value of `showSideButtons` in `appSettings`. * If `showSideButtons` is `false`, the side button container is removed from the DOM. @@ -612,15 +2255,15 @@ async function EditorManager($header, $body) { const bottom = 0; const right = showSideButtons ? 15 : 0; const left = linenumbers ? (showAnnotations ? 0 : -16) : 0; - - editor.renderer.setMargin(top, bottom, left, right); + // TODO + //editor.renderer.setMargin(top, bottom, left, right); if (!updateGutter) return; - editor.setOptions({ - showGutter: linenumbers || showAnnotations, - showLineNumbers: linenumbers, - }); + // editor.setOptions({ + // showGutter: linenumbers || showAnnotations, + // showLineNumbers: linenumbers, + // }); } /** @@ -641,11 +2284,20 @@ async function EditorManager($header, $body) { manager.activeFile.content.style.display = "none"; } + // Persist the previous editor's state before switching away + const prev = manager.activeFile; + if (prev?.type === "editor") { + prev.session = editor.state; + prev.lastScrollTop = editor.scrollDOM?.scrollTop || 0; + prev.lastScrollLeft = editor.scrollDOM?.scrollLeft || 0; + } + manager.activeFile = file; if (file.type === "editor") { - editor.setSession(file.session); - editor.setReadOnly(!file.editable || !!file.loading); + touchSelectionController?.setEnabled(true); + // Apply active file content and language to CodeMirror + applyFileToEditor(file); $container.style.display = "block"; $hScrollbar.hideImmediately(); @@ -656,6 +2308,7 @@ async function EditorManager($header, $body) { setHScrollValue(); } } else { + touchSelectionController?.setEnabled(false); $container.style.display = "none"; if (file.content) { file.content.style.display = "block"; @@ -663,9 +2316,6 @@ async function EditorManager($header, $body) { $container.parentElement.appendChild(file.content); } } - if (manager.activeFile && manager.activeFile.type === "editor") { - manager.activeFile.session.selection.clearSelection(); - } } file.tab.classList.add("active"); @@ -675,6 +2325,8 @@ async function EditorManager($header, $body) { $header.subText = file.headerSubtitle || ""; manager.onupdate("switch-file"); events.emit("switch-file", file); + + toggleProblemButton(); } /** @@ -773,31 +2425,42 @@ async function EditorManager($header, $body) { /** * Gets the height of the editor - * @param {AceAjax.Editor} editor + * @param {object} editor * @returns */ function getEditorHeight(editor) { - const { renderer, session } = editor; - const offset = (renderer.$size.scrollerHeight + renderer.lineHeight) * 0.5; - const editorHeight = - session.getScreenLength() * renderer.lineHeight - offset; - return editorHeight; + try { + const view = editor; + if (!view || !view.scrollDOM) return 0; + + const total = view.scrollDOM.scrollHeight || 0; + const viewport = view.scrollDOM.clientHeight || 0; + return Math.max(total - viewport, 0); + } catch (_) { + return 0; + } } /** * Gets the height of the editor - * @param {AceAjax.Editor} editor + * @param {object} editor * @returns */ function getEditorWidth(editor) { - const { renderer, session } = editor; - const offset = renderer.$size.scrollerWidth - renderer.characterWidth; - const editorWidth = - session.getScreenWidth() * renderer.characterWidth - offset; - if (appSettings.value.textWrap) { - return editorWidth; - } else { - return editorWidth + appSettings.value.leftMargin; + try { + const view = editor; + if (!view || !view.scrollDOM) return 0; + + const total = view.scrollDOM.scrollWidth || 0; + const viewport = view.scrollDOM.clientWidth || 0; + let width = Math.max(total - viewport, 0); + if (!appSettings.value.textWrap) { + const { leftMargin = 0 } = appSettings.value; + width += leftMargin || 0; + } + return width; + } catch (_) { + return 0; } } } diff --git a/src/lib/fonts.js b/src/lib/fonts.js index 0811c59f0..c7f5faa0f 100644 --- a/src/lib/fonts.js +++ b/src/lib/fonts.js @@ -11,6 +11,9 @@ const customFontNames = new Set(); const CUSTOM_FONTS_KEY = "custom_fonts"; const FONT_FACE_STYLE_ID = "font-face-style"; const EDITOR_STYLE_ID = "editor-font-style"; +const APP_STYLE_ID = "app-font-style"; +const DEFAULT_EDITOR_FONT = "Roboto Mono"; +const DEFAULT_APP_FONT_STACK = `"Roboto", sans-serif`; add( "Fira Code", @@ -187,7 +190,11 @@ function has(name) { return fonts.has(name); } -async function setFont(name) { +function isCustom(name) { + return customFontNames.has(name); +} + +async function setEditorFont(name) { loader.showTitleLoader(); try { await loadFont(name); @@ -200,12 +207,35 @@ async function setFont(name) { }`; } catch (error) { toast(`${name} font not found`, "error"); - setFont("Roboto Mono"); + setEditorFont(DEFAULT_EDITOR_FONT); } finally { loader.removeTitleLoader(); } } +async function setAppFont(name) { + const $style = ensureStyleElement(APP_STYLE_ID); + + if (!name) { + $style.textContent = `:root { + --app-font-family: ${DEFAULT_APP_FONT_STACK}; +}`; + return; + } + + try { + await loadFont(name); + $style.textContent = `:root { + --app-font-family: "${name}", ${DEFAULT_APP_FONT_STACK}; +}`; + } catch (error) { + toast(`${name} font not found`, "error"); + $style.textContent = `:root { + --app-font-family: ${DEFAULT_APP_FONT_STACK}; +}`; + } +} + async function downloadFont(name, link) { const FONT_DIR = Url.join(DATA_STORAGE, "fonts"); const FONT_FILE = Url.join(FONT_DIR, name); @@ -268,6 +298,9 @@ export default { getNames, remove, has, - setFont, + isCustom, + setFont: setEditorFont, + setEditorFont, + setAppFont, loadFont, }; diff --git a/src/lib/installPlugin.js b/src/lib/installPlugin.js index f471b5422..5488d9131 100644 --- a/src/lib/installPlugin.js +++ b/src/lib/installPlugin.js @@ -176,36 +176,35 @@ export default async function installPlugin( // Track unsafe absolute entries to skip const ignoredUnsafeEntries = new Set(); - const promises = Object.keys(zip.files).map(async (file) => { + const files = Object.keys(zip.files); + const limit = 2; + + async function processFile(file) { try { - let correctFile = file; - if (/\\/.test(correctFile)) { - correctFile = correctFile.replace(/\\/g, "/"); - } + const entry = zip.files[file]; - // Determine if the zip entry is a directory from JSZip metadata - const isDirEntry = !!zip.files[file].dir || /\/$/.test(correctFile); + let correctFile = file.replace(/\\/g, "/"); + const isDirEntry = entry.dir || correctFile.endsWith("/"); - // If the original path is absolute or otherwise unsafe, skip it and warn later if (isUnsafeAbsolutePath(file)) { ignoredUnsafeEntries.add(file); return; } - // Sanitize path so it cannot escape pluginDir or start with '/' correctFile = sanitizeZipPath(correctFile, isDirEntry); - if (!correctFile) return; // nothing to do + if (!correctFile) return; + const fileUrl = Url.join(pluginDir, correctFile); - // Always ensure directories exist for dir entries + // Handle directory entries if (isDirEntry) { await createFileRecursive(pluginDir, correctFile, true); return; } - // For files, ensure parent directory exists even if state claims it exists + // Ensure parent directory exists const lastSlash = correctFile.lastIndexOf("/"); - if (lastSlash >= 0) { + if (lastSlash !== -1) { const parentRel = correctFile.slice(0, lastSlash + 1); await createFileRecursive(pluginDir, parentRel, true); } @@ -214,23 +213,28 @@ export default async function installPlugin( await createFileRecursive(pluginDir, correctFile, false); } - let data = await zip.files[file].async("ArrayBuffer"); + let data = await entry.async("ArrayBuffer"); if (file === "plugin.json") { data = JSON.stringify(pluginJson); } if (!(await state.isUpdated(correctFile, data))) return; + await fsOperation(fileUrl).writeFile(data); - return; } catch (error) { console.error(`Error processing file ${file}:`, error); } - }); + } - // Wait for all files to be processed - await Promise.allSettled(promises); + // Process in batches + for (let i = 0; i < files.length; i += limit) { + const batch = files.slice(i, i + limit); + await Promise.allSettled(batch.map(processFile)); + // Allow UI thread to breathe + await new Promise((r) => setTimeout(r, 0)); + } // Emit a non-blocking warning if any unsafe entries were skipped if (!isDependency && ignoredUnsafeEntries.size) { const sample = Array.from(ignoredUnsafeEntries).slice(0, 3).join(", "); diff --git a/src/lib/installState.js b/src/lib/installState.js index 0c7de5882..a1f41bff0 100644 --- a/src/lib/installState.js +++ b/src/lib/installState.js @@ -159,6 +159,13 @@ async function checksum(data) { * @returns */ async function checksumText(text) { - const textUint8 = new TextEncoder().encode(text); - return await checksum(textUint8); + return new Promise((resolve, reject) => { + cordova.exec( + (hash) => resolve(hash), + (error) => reject(error), + "System", + "checksumText", + [text], + ); + }); } diff --git a/src/lib/keyBindings.js b/src/lib/keyBindings.js index a658f4581..d351985e8 100644 --- a/src/lib/keyBindings.js +++ b/src/lib/keyBindings.js @@ -1,712 +1,692 @@ -export default { - focusEditor: { +import * as cmCommands from "@codemirror/commands"; +import { + defaultKeymap, + emacsStyleKeymap, + historyKeymap, + indentWithTab, + standardKeymap, +} from "@codemirror/commands"; + +const MODIFIER_ORDER = ["Ctrl", "Alt", "Shift", "Cmd"]; +const KEYMAP_SOURCES = [ + ...standardKeymap, + ...defaultKeymap, + ...historyKeymap, + ...emacsStyleKeymap, + indentWithTab, +]; + +const APP_BINDING_CONFIG = [ + { + name: "focusEditor", description: "Focus editor", key: "Ctrl-1", readOnly: false, }, - copy: { - description: "Copy", - key: "Ctrl-C", - readOnly: true, - editorOnly: true, - }, - cut: { - description: "Cut", - key: "Ctrl-X", - readOnly: false, - editorOnly: true, - }, - paste: { - description: "Paste", - key: "Ctrl-V", - readOnly: false, - editorOnly: true, - }, - findFile: { + { + name: "findFile", description: "Find a file", key: "Ctrl-P", action: "find-file", }, - closeCurrentTab: { + { + name: "closeCurrentTab", description: "Close current tab.", key: "Ctrl-Q", - readOnly: false, action: "close-current-tab", + readOnly: false, }, - closeAllTabs: { + { + name: "closeAllTabs", description: "Close all tabs.", key: "Ctrl-Shift-Q", - readOnly: false, action: "close-all-tabs", + readOnly: false, + }, + { + name: "closeTabsToRight", + description: "Close tabs to the right.", + key: null, + action: "close-tabs-to-right", + readOnly: false, + }, + { + name: "closeTabsToLeft", + description: "Close tabs to the left.", + key: null, + action: "close-tabs-to-left", + readOnly: false, }, - newFile: { + { + name: "closeOtherTabs", + description: "Close other tabs.", + key: null, + action: "close-other-tabs", + readOnly: false, + }, + { + name: "newFile", description: "Create new file", key: "Ctrl-N", - readOnly: true, action: "new-file", + readOnly: true, }, - openFile: { + { + name: "openFile", description: "Open a file", key: "Ctrl-O", - readOnly: true, action: "open-file", + readOnly: true, }, - openFolder: { + { + name: "openFolder", description: "Open a folder", key: "Ctrl-Shift-O", - readOnly: true, action: "open-folder", + readOnly: true, }, - saveFile: { + { + name: "saveFile", description: "Save current file", key: "Ctrl-S", - readOnly: true, action: "save", + readOnly: true, editorOnly: true, }, - saveFileAs: { + { + name: "saveFileAs", description: "Save as current file", key: "Ctrl-Shift-S", - readOnly: true, action: "save-as", + readOnly: true, editorOnly: true, }, - nextFile: { + { + name: "saveAllChanges", + description: "Save all changes", + key: null, + action: "save-all-changes", + readOnly: true, + }, + { + name: "nextFile", description: "Open next file tab", key: "Ctrl-Tab", - readOnly: true, action: "next-file", + readOnly: true, }, - prevFile: { + { + name: "prevFile", description: "Open previous file tab", key: "Ctrl-Shift-Tab", - readOnly: true, action: "prev-file", + readOnly: true, }, - renameFile: { + { + name: "showSettingsMenu", + description: "Show settings menu", + key: "Ctrl-,", + readOnly: false, + }, + { + name: "renameFile", description: "Rename current file", key: "F2", - readOnly: true, action: "rename", + readOnly: true, editorOnly: true, }, - run: { + { + name: "run", description: "Run current file", key: "F5", - readOnly: false, action: "run", - editorOnly: true, - }, - selectWord: { - description: "Select current word", - key: "Ctrl-D", readOnly: false, - action: "select-word", editorOnly: true, }, - autoindent: { + { + name: "openInAppBrowser", + description: "Open in-app browser", key: null, - description: "Auto indentation", - readOnly: false, - }, - showSettingsMenu: { - key: "Ctrl-,", - description: "Show settings menu", - readOnly: false, + readOnly: true, }, - toggleFullscreen: { - key: "F11", + { + name: "toggleFullscreen", description: "Toggle full screen mode", - readOnly: false, + key: "F11", action: "toggle-fullscreen", + readOnly: false, }, - toggleSidebar: { - key: "Ctrl-B", + { + name: "toggleSidebar", description: "Toggle sidebar", - readOnly: true, + key: "Ctrl-B", action: "toggle-sidebar", + readOnly: true, }, - toggleMenu: { + { + name: "toggleMenu", + description: "Toggle menu", key: "F3", - description: "Toggle edit menu", - readOnly: true, action: "toggle-menu", + readOnly: true, }, - toggleEditMenu: { - key: "F4", + { + name: "toggleEditMenu", description: "Toggle edit menu", - readOnly: true, + key: "F4", action: "toggle-editmenu", + readOnly: true, }, - goToNextError: { - key: "Alt-E", - description: "Go to next error", - readOnly: false, - editorOnly: true, - }, - goToPreviousError: { - key: "Alt-Shift-E", - description: "Go to previous error", - readOnly: false, - editorOnly: true, - }, - selectall: { + { + name: "selectall", description: "Select all", key: "Ctrl-A", readOnly: true, editorOnly: true, }, - centerselection: { - description: "Center selection", - key: null, - readOnly: false, - }, - gotoline: { - description: "Go to line...", + { + name: "gotoline", + description: "Go to line", key: "Ctrl-G", readOnly: true, editorOnly: true, }, - fold: { - description: "Fold", - key: "Alt-L|Ctrl-F1", - readOnly: false, - editorOnly: true, - }, - unfold: { - description: "Unfold", - key: "Alt-Shift-L|Ctrl-Shift-F1", - readOnly: false, - editorOnly: true, - }, - toggleFoldWidget: { - key: null, - readOnly: false, - editorOnly: true, - }, - toggleParentFoldWidget: { - key: "Alt-F2", - readOnly: false, - editorOnly: true, - }, - foldall: { - description: "Fold all", - key: null, - readOnly: false, - editorOnly: true, - }, - foldOther: { - description: "Fold other", - key: "Alt-0", - readOnly: false, - editorOnly: true, - }, - unfoldall: { - description: "Unfold all", - key: "Alt-Shift-0", - readOnly: false, - editorOnly: true, - }, - findnext: { - description: "Find next", - key: "Ctrl-K", - readOnly: false, - }, - findprevious: { - description: "Find previous", - key: "Ctrl-Shift-X", - readOnly: false, - }, - selectOrFindNext: { - description: "Select or find next", - key: "Alt-K", - readOnly: false, - }, - selectOrFindPrevious: { - description: "Select or find previous", - key: "Alt-Shift-K", - readOnly: false, - }, - find: { + { + name: "find", description: "Find", key: "Ctrl-F", readOnly: true, editorOnly: true, }, - overwrite: { - description: "Overwrite", - key: "Insert", - readOnly: true, - }, - selecttostart: { - description: "Select to start", - key: "Ctrl-Shift-Home", + { + name: "copy", + description: "Copy", + key: "Ctrl-C", readOnly: true, editorOnly: true, }, - gotostart: { - description: "Go to start", - key: "Ctrl-Home", - readOnly: true, + { + name: "cut", + description: "Cut", + key: "Ctrl-X", + readOnly: false, editorOnly: true, }, - selectup: { - description: "Select up", - key: "Shift-Up", - readOnly: true, + { + name: "paste", + description: "Paste", + key: "Ctrl-V", + readOnly: false, editorOnly: true, }, - golineup: { - description: "Go line up", - key: "Up", + { + name: "problems", + description: "Show problems", + key: null, readOnly: true, editorOnly: true, }, - selecttoend: { - description: "Select to end", - key: "Ctrl-Shift-End", - readOnly: true, + { + name: "replace", + description: "Replace", + key: "Ctrl-R", + readOnly: false, editorOnly: true, }, - gotoend: { - description: "Go to end", - key: "Ctrl-End", + { + name: "openCommandPalette", + description: "Open command palette", + key: "Ctrl-Shift-P", readOnly: true, - editorOnly: true, }, - selectdown: { - description: "Select down", - key: "Shift-Down", - readOnly: true, + { + name: "modeSelect", + description: "Change language mode", + key: "Ctrl-M", + readOnly: false, editorOnly: true, }, - golinedown: { - description: "Go line down", - key: "Down", + { + name: "toggleQuickTools", + description: "Toggle quick tools", + key: null, readOnly: true, - editorOnly: true, }, - selectwordleft: { - description: "Select word left", - key: "Ctrl-Shift-Left", - readOnly: true, + { + name: "selectWord", + description: "Select current word", + key: "Ctrl-D", + action: "select-word", + readOnly: false, editorOnly: true, }, - gotowordleft: { - description: "Go to word left", - key: "Ctrl-Left", + { + name: "openLogFile", + description: "Open log file", + key: null, + action: "open-log-file", readOnly: true, - editorOnly: true, }, - selecttolinestart: { - description: "Select to line start", - key: "Alt-Shift-Left", + { + name: "increaseFontSize", + description: "Increase editor font size", + key: "Ctrl-+|Ctrl-=", readOnly: true, - editorOnly: true, }, - gotolinestart: { - description: "Go to line start", - key: "Alt-Left|Home", + { + name: "decreaseFontSize", + description: "Decrease editor font size", + key: "Ctrl--", readOnly: true, - editorOnly: true, }, - selectleft: { - description: "Select left", - key: "Shift-Left", + { + name: "openPluginsPage", + description: "Open plugins page", + key: null, readOnly: true, - editorOnly: true, }, - gotoleft: { - description: "Go to left", - key: "Left", + { + name: "openFileExplorer", + description: "Open file explorer", + key: null, readOnly: true, - editorOnly: true, }, - selectwordright: { - description: "Select word right", - key: "Ctrl-Shift-Right", + { + name: "copyDeviceInfo", + description: "Copy device info", + key: null, + action: "copy-device-info", readOnly: true, - editorOnly: true, }, - gotowordright: { - description: "Go to word right", - key: "Ctrl-Right", + { + name: "changeAppTheme", + description: "Change app theme", + key: null, + action: "change-app-theme", readOnly: true, - editorOnly: true, }, - selecttolineend: { - description: "Select to line end", - key: "Alt-Shift-Right", + { + name: "changeEditorTheme", + description: "Change editor theme", + key: null, + action: "change-editor-theme", readOnly: true, - editorOnly: true, }, - gotolineend: { - description: "Go to line end", - key: "Alt-Right|End", + { + name: "openTerminal", + description: "Open terminal", + key: "Ctrl-`", + action: "new-terminal", readOnly: true, - editorOnly: true, }, - selectright: { - description: "Select right", - key: "Shift-Right", + { + name: "documentSymbols", + description: "Go to symbol in document", + key: null, readOnly: true, editorOnly: true, }, - gotoright: { - description: "Go to right", - key: "Right", - readOnly: true, + { + name: "duplicateSelection", + description: "Duplicate selection", + key: "Ctrl-Shift-D", + readOnly: false, editorOnly: true, }, - selectpagedown: { - description: "Select page down", - key: "Shift-PageDown", - readOnly: true, + { + name: "copylinesdown", + description: "Copy lines down", + key: "Alt-Shift-Down", + readOnly: false, editorOnly: true, }, - pagedown: { - description: "Page down", - key: null, - readOnly: true, + { + name: "copylinesup", + description: "Copy lines up", + key: "Alt-Shift-Up", + readOnly: false, editorOnly: true, }, - gotopagedown: { - description: "Go to page down", - key: "PageDown", + { + name: "movelinesdown", + description: "Move lines down", + key: "Alt-Down", readOnly: false, editorOnly: true, }, - selectpageup: { - description: "Select page up", - key: "Shift-PageUp", - readOnly: true, + { + name: "movelinesup", + description: "Move lines up", + key: "Alt-Up", + readOnly: false, editorOnly: true, }, - pageup: { - description: "Page up", + { + name: "removeline", + description: "Remove line", key: null, readOnly: false, editorOnly: true, }, - problems: { - description: "Show problems", - key: "Ctrl-Shift-K", - readOnly: true, + { + name: "insertlineafter", + description: "Insert line after", + key: null, + readOnly: false, editorOnly: true, }, - gotopageup: { - description: "Go to page up", - key: "PageUp", + { + name: "selectline", + description: "Select line", + key: null, readOnly: true, editorOnly: true, }, - scrollup: { - description: "Scroll up", - key: "Ctrl-Up", + { + name: "selectlinesdown", + description: "Select lines down", + key: null, readOnly: true, editorOnly: true, }, - scrolldown: { - description: "Scroll down", - key: "Ctrl-Down", + { + name: "selectlinesup", + description: "Select lines up", + key: null, readOnly: true, editorOnly: true, }, - selectlinestart: { + { + name: "selectlinestart", description: "Select line start", key: "Shift-Home", readOnly: true, editorOnly: true, }, - selectlineend: { + { + name: "selectlineend", description: "Select line end", key: "Shift-End", readOnly: true, editorOnly: true, }, - togglerecording: { - description: "Toggle recording", - key: "Ctrl-Alt-E", - readOnly: true, - editorOnly: true, - }, - formatcode: { - description: "Format Code", - key: "Ctrl-Alt-F", + { + name: "indent", + description: "Indent", + key: "Tab", readOnly: false, editorOnly: true, - action: "format", }, - replaymacro: { - description: "Replay macro", - key: "Ctrl-Shift-E", - readOnly: true, - editorOnly: true, - }, - jumptomatching: { - description: "Jump to matching", - key: "Ctrl-\\", - readOnly: true, + { + name: "outdent", + description: "Outdent", + key: "Shift-Tab", + readOnly: false, editorOnly: true, }, - selecttomatching: { - description: "Select to matching", - key: "Ctrl-Shift-\\", + { + name: "indentselection", + description: "Indent selection", + key: null, readOnly: false, editorOnly: true, }, - expandToMatching: { - description: "Expand to matching", - key: "Ctrl-Shift-M", + { + name: "newline", + description: "Insert newline", + key: null, readOnly: false, editorOnly: true, }, - removeline: { - description: "Remove line", + { + name: "joinlines", + description: "Join lines", key: null, readOnly: false, editorOnly: true, }, - duplicateSelection: { - description: "Duplicate selection", - key: "Ctrl-Shift-D", + { + name: "deletetolinestart", + description: "Delete to line start", + key: null, readOnly: false, editorOnly: true, }, - sortlines: { - description: "Sort lines", - key: "Ctrl-Alt-S", + { + name: "deletetolineend", + description: "Delete to line end", + key: null, readOnly: false, editorOnly: true, }, - togglecomment: { + { + name: "togglecomment", description: "Toggle comment", key: "Ctrl-/", readOnly: false, editorOnly: true, }, - toggleBlockComment: { - description: "Toggle block comment", - key: "Ctrl-Shift-/", - readOnly: false, - editorOnly: true, - }, - modifyNumberUp: { - description: "Modify number up", - key: "Ctrl-Shift-Up", + { + name: "comment", + description: "Add line comment", + key: null, readOnly: false, editorOnly: true, }, - modifyNumberDown: { - description: "Modify number down", - key: "Ctrl-Shift-Down", + { + name: "uncomment", + description: "Remove line comment", + key: null, readOnly: false, editorOnly: true, }, - replace: { - description: "Replace", - key: "Ctrl-R", + { + name: "toggleBlockComment", + description: "Toggle block comment", + key: "Ctrl-Shift-/", readOnly: false, editorOnly: true, }, - undo: { + { + name: "undo", description: "Undo", key: "Ctrl-Z", readOnly: false, editorOnly: true, }, - redo: { + { + name: "redo", description: "Redo", key: "Ctrl-Shift-Z|Ctrl-Y", readOnly: false, editorOnly: true, }, - copylinesup: { - description: "Copy lines up", - key: "Alt-Shift-Up", - readOnly: false, - editorOnly: true, - }, - movelinesup: { - description: "Move lines up", - key: "Alt-Up", - readOnly: false, - editorOnly: true, - }, - copylinesdown: { - description: "Copy lines down", - key: "Alt-Shift-Down", - readOnly: false, - editorOnly: true, - }, - movelinesdown: { - description: "Move lines down", - key: "Alt-Down", - readOnly: false, - editorOnly: true, - }, - del: { - description: "Delete", - key: "Delete", - readOnly: true, - editorOnly: true, - }, - backspace: { - description: "Backspace", - key: "Shift-Backspace|Backspace", - readOnly: false, - editorOnly: true, - }, - cut_or_delete: { - description: "Cut or delete", - key: "Shift-Delete", - readOnly: false, - editorOnly: true, - }, - removetolinestart: { - description: "Remove to line start", - key: "Alt-Backspace", - readOnly: false, - editorOnly: true, - }, - removetolineend: { - description: "Remove to line end", - key: "Alt-Delete", - readOnly: false, - editorOnly: true, - }, - removetolinestarthard: { - description: "Remove to line start hard", - key: "Ctrl-Shift-Backspace", - readOnly: false, - editorOnly: true, - }, - removetolineendhard: { - description: "Remove to line end hard", - key: "Ctrl-Shift-Delete", - readOnly: false, - editorOnly: true, - }, - removewordleft: { - description: "Remove word left", - key: "Ctrl-Backspace", - readOnly: false, - editorOnly: true, - }, - removewordright: { - description: "Remove word right", - key: "Ctrl-Delete", - readOnly: false, - editorOnly: true, - }, - outdent: { - description: "Outdent", - key: "Shift-Tab", - readOnly: false, - editorOnly: true, - }, - indent: { - description: "Indent", - key: "Tab", - readOnly: true, - editorOnly: true, - }, - blockoutdent: { - description: "Block outdent", - key: "Ctrl-[", - readOnly: false, - editorOnly: true, - }, - blockindent: { - description: "Block indent", - key: "Ctrl-]", - readOnly: false, - editorOnly: true, - }, - splitline: { - description: "Split line", + { + name: "simplifySelection", + description: "Simplify selection", key: null, - readOnly: false, - editorOnly: true, - }, - transposeletters: { - description: "Transpose letters", - key: "Alt-Shift-X", - readOnly: false, - editorOnly: true, - }, - touppercase: { - description: "To uppercase", - key: "Ctrl-U", - readOnly: false, - editorOnly: true, - }, - tolowercase: { - description: "To lowercase", - key: "Ctrl-Shift-U", - readOnly: false, - editorOnly: true, - }, - expandtoline: { - description: "Expand to line", - key: "Ctrl-Shift-L", readOnly: true, editorOnly: true, }, - joinlines: { - description: "Join lines", - key: null, - readOnly: false, - editorOnly: true, - }, - invertSelection: { - description: "Invert selection", - key: null, - readOnly: false, - editorOnly: true, - }, - openCommandPalette: { - description: "Open command palette", - key: "Ctrl-Shift-P", - readOnly: true, - }, - modeSelect: { - description: "Change language mode", - key: "Ctrl-M", - readOnly: false, - editorOnly: true, - }, - increaseFontSize: { - description: "Increase font size", - key: "Ctrl-+|Ctrl-=", - editorOnly: true, - }, - decreaseFontSize: { - description: "Decrease font size", - key: "Ctrl+-|Ctrl-_", - editorOnly: true, - }, - resetFontSize: { - description: "Reset font size", - key: "Ctrl+0|Ctrl-Numpad0", - editorOnly: true, - }, - openTerminal: { - description: "Open Terminal", - key: "Ctrl-`", - readOnly: true, - action: "new-terminal", - }, - "run-tests": { - description: "Run Tests", - key: "Ctrl-Shift-T", - readOnly: true, - action: "run-tests", - }, - "dev:toggleDevTools": { - description: "Toggle DevTools", - key: "Ctrl-Shift-I", - readOnly: true, - action: "toggle-inspector", - }, -}; +]; + +const APP_KEY_BINDINGS = buildAppBindings(APP_BINDING_CONFIG); +const APP_CUSTOM_COMMANDS = new Set( + APP_BINDING_CONFIG.filter((config) => !config.action).map( + (config) => config.name, + ), +); + +const FORCE_READ_ONLY = new Set([ + "toggleTabFocusMode", + "temporarilySetTabFocusMode", +]); +const MUTATING_COMMAND_PATTERN = + /^(delete|insert|indent|move|copy|split|transpose|toggle|undo|redo|line|block)/i; + +const CODEMIRROR_COMMAND_NAMES = new Set( + Object.entries(cmCommands) + .filter(([, value]) => typeof value === "function") + .map(([name]) => name), +); + +const CODEMIRROR_KEY_BINDINGS = buildCodemirrorKeyBindings(APP_KEY_BINDINGS); + +const keyBindings = Object.fromEntries( + Object.entries({ ...CODEMIRROR_KEY_BINDINGS, ...APP_KEY_BINDINGS }) + .filter( + ([name, binding]) => + binding && + (binding.action || + APP_CUSTOM_COMMANDS.has(name) || + CODEMIRROR_COMMAND_NAMES.has(name)), + ) + .sort((a, b) => a[0].localeCompare(b[0])), +); + +export default keyBindings; + +function buildAppBindings(configs) { + return Object.fromEntries( + configs.map( + ({ + name, + description, + key = null, + action, + readOnly = true, + editorOnly, + }) => [ + name, + { + description: description ?? humanizeCommandName(name), + key, + readOnly, + ...(editorOnly !== undefined ? { editorOnly } : {}), + ...(action ? { action } : {}), + }, + ], + ), + ); +} + +function buildCodemirrorKeyBindings(appBindings) { + const commandEntries = Object.entries(cmCommands).filter( + ([, value]) => typeof value === "function", + ); + const commandNameByFunction = new Map( + commandEntries.map(([name, fn]) => [fn, name]), + ); + const comboMap = new Map(); + + for (const binding of KEYMAP_SOURCES) { + const baseCombos = new Set(); + + pushCommandCombo(binding.run, binding.key, "win", baseCombos); + pushCommandCombo(binding.run, binding.win, "win", baseCombos); + pushCommandCombo(binding.run, binding.linux, "win", baseCombos); + pushCommandCombo(binding.run, binding.mac, "mac", baseCombos); + + if (binding.shift) { + const shiftName = commandNameByFunction.get(binding.shift); + if (shiftName && !appBindings[shiftName]) { + const combos = baseCombos.size + ? Array.from(baseCombos) + : [ + normalizeKey(binding.key, "win"), + normalizeKey(binding.win, "win"), + normalizeKey(binding.linux, "win"), + normalizeKey(binding.mac, "mac"), + ].filter(Boolean); + for (const combo of combos) { + addCommandCombo(comboMap, shiftName, ensureModifier(combo, "Shift")); + } + } + } + } + + const result = {}; + for (const [name, combos] of comboMap.entries()) { + if (!combos.size || appBindings[name]) continue; + result[name] = { + description: humanizeCommandName(name), + key: Array.from(combos) + .sort((a, b) => a.localeCompare(b)) + .join("|"), + readOnly: inferReadOnly(name), + editorOnly: true, + }; + } + return result; + + function pushCommandCombo(commandFn, key, platform, baseCombos) { + if (!commandFn) return; + const name = commandNameByFunction.get(commandFn); + if (!name || appBindings[name]) return; + const normalized = normalizeKey(key, platform); + if (!normalized) return; + addCommandCombo(comboMap, name, normalized); + baseCombos.add(normalized); + } +} + +function addCommandCombo(map, name, combo) { + if (!combo) return; + let entry = map.get(name); + if (!entry) { + entry = new Set(); + map.set(name, entry); + } + entry.add(combo); +} + +function normalizeKey(key, platform = "win") { + if (!key) return null; + const replaced = key.replace(/Mod/g, platform === "mac" ? "Cmd" : "Ctrl"); + const { modifiers, baseKey } = parseKeyParts(replaced); + if (!baseKey) return [...modifiers].join("-") || null; + const ordered = MODIFIER_ORDER.filter((mod) => modifiers.has(mod)); + return [...ordered, baseKey].join("-"); +} + +function ensureModifier(combo, modifier) { + if (!combo) return null; + const { modifiers, baseKey } = parseKeyParts(combo); + if (!baseKey) return combo; + modifiers.add(modifier); + const ordered = MODIFIER_ORDER.filter((mod) => modifiers.has(mod)); + return [...ordered, baseKey].join("-"); +} + +function parseKeyParts(combo) { + const modifiers = new Set(); + let baseKey = ""; + if (!combo) return { modifiers, baseKey }; + const parts = combo.endsWith("-") + ? [...combo.slice(0, -1).split("-").filter(Boolean), "-"] + : combo.split("-"); + for (const rawPart of parts) { + const part = rawPart.trim(); + if (!part) continue; + const normalized = part.charAt(0).toUpperCase() + part.slice(1); + if (MODIFIER_ORDER.includes(normalized)) { + modifiers.add(normalized); + } else { + baseKey = part; + } + } + return { modifiers, baseKey }; +} + +function humanizeCommandName(name) { + return name + .replace(/([a-z0-9])([A-Z])/g, "$1 $2") + .replace(/_/g, " ") + .replace(/^./, (char) => char.toUpperCase()); +} + +function inferReadOnly(name) { + if (FORCE_READ_ONLY.has(name)) return true; + return !MUTATING_COMMAND_PATTERN.test(name); +} diff --git a/src/lib/loadPlugin.js b/src/lib/loadPlugin.js index bad8e81eb..14aa18a50 100644 --- a/src/lib/loadPlugin.js +++ b/src/lib/loadPlugin.js @@ -8,6 +8,27 @@ export default async function loadPlugin(pluginId, justInstalled = false) { const baseUrl = await helpers.toInternalUri(Url.join(PLUGIN_DIR, pluginId)); const cacheFile = Url.join(CACHE_STORAGE, pluginId); + // Unmount the old version before loading the new one. + // This MUST be done here by the framework, not by the new plugin code itself, + // because once the new script loads, it calls acode.setPluginUnmount(id, newDestroy) + // which overwrites the old version's destroy callback. At that point the old + // destroy — which holds references to the old sidebar app, commands, event + // listeners, etc. — is lost and can never be called. Letting the framework + // invoke unmountPlugin() first ensures the OLD destroy() runs while it still + // exists, so all old-version resources are properly cleaned up. + try { + acode.unmountPlugin(pluginId); + } catch (e) { + // unmountPlugin() itself is safe when no callback is registered (it no-ops), + // but a plugin's destroy() callback may throw. We catch here so a faulty + // cleanup in the old version does not block reloading the new one. + console.error(`Error while unmounting plugin "${pluginId}":`, e); + } + + // Remove the old ; + const $script = ( + + ); $script.onerror = (error) => { reject( diff --git a/src/lib/notificationManager.js b/src/lib/notificationManager.js index 52518402d..2ff308981 100644 --- a/src/lib/notificationManager.js +++ b/src/lib/notificationManager.js @@ -1,4 +1,5 @@ import sidebarApps from "sidebarApps"; +import DOMPurify from "dompurify"; // Singleton instance let instance = null; @@ -107,21 +108,24 @@ export default class NotificationManager { data-id={notification.id} >
      ); + const safeIcon = this.sanitizeIcon(this.parseIcon(notification.icon)); + const safeTitle = this.sanitizeText(notification.title); + const safeMessage = this.sanitizeText(notification.message); element.innerHTML = ` -
      - ${this.parseIcon(notification.icon)} -
      -
      -
      - ${notification.title} - ${this.formatTime(notification.time)} +
      + ${safeIcon}
      -
      ${notification.message}
      -
      -
      Dismiss
      +
      +
      + ${safeTitle} + ${this.formatTime(notification.time)} +
      +
      ${safeMessage}
      +
      +
      Dismiss
      +
      -
      - `; + `; if (notification.action) { element.addEventListener("click", (e) => { if (e.target.closest(".action-button")) { @@ -140,16 +144,27 @@ export default class NotificationManager { data-id={notification.id} >
      ); + const safeIcon = this.sanitizeIcon(this.parseIcon(notification.icon)); + const safeTitle = this.sanitizeText(notification.title); + const safeMessage = this.sanitizeText(notification.message); element.innerHTML = ` -
      ${this.parseIcon(notification.icon)}
      -
      -
      - ${notification.title} +
      ${safeIcon}
      +
      +
      + ${safeTitle} +
      +
      ${safeMessage}
      -
      ${notification.message}
      -
      - ${notification.autoClose ? "" : ``} - `; + ${notification.autoClose ? "" : ``} + `; + + const closeIcon = element.querySelector(".close-icon"); + if (closeIcon) { + closeIcon.addEventListener("click", (event) => { + event.stopPropagation(); + element.remove(); + }); + } if (notification.action) { element.addEventListener("click", () => notification.action(notification), @@ -202,13 +217,27 @@ export default class NotificationManager { } parseIcon(icon) { - if (!icon) return this.DEFAULT_ICON; + if (typeof icon !== "string" || !icon) return this.DEFAULT_ICON; if (icon.startsWith("`; return ``; } + sanitizeText(text) { + return DOMPurify.sanitize(String(text ?? ""), { + ALLOWED_TAGS: [], + ALLOWED_ATTR: [], + }); + } + + sanitizeIcon(iconMarkup) { + return DOMPurify.sanitize(iconMarkup, { + USE_PROFILES: { html: true, svg: true }, + ALLOW_DATA_ATTR: false, + }); + } + formatTime(date) { const now = new Date(); const diff = Math.floor((now - date) / 1000); diff --git a/src/lib/openFile.js b/src/lib/openFile.js index 58319a09d..1d716ed88 100644 --- a/src/lib/openFile.js +++ b/src/lib/openFile.js @@ -39,12 +39,13 @@ export default async function openFile(file, options = {}) { if (existingFile) { // If file is already opened and new text is provided - const existingText = existingFile.session.getValue(); - const existingCursorPos = existingFile.session.selection.getCursor(); + const existingText = existingFile.session.doc.toString() ?? ""; // If file is already opened existingFile.makeActive(); + const { editor } = editorManager; + if (onsave) { existingFile.onsave = onsave; } @@ -57,18 +58,27 @@ export default async function openFile(file, options = {}) { // } // if (confirmation) { // } - existingFile.session.setValue(text); + editor.dispatch({ + changes: { + from: 0, + to: editor.state.doc.length, + insert: String(text), + }, + }); } - if ( - cursorPos && - existingCursorPos && - existingCursorPos.row !== cursorPos.row && - existingCursorPos.column !== cursorPos.column - ) { - existingFile.session.selection.moveCursorTo( - cursorPos.row, - cursorPos.column, + // Move cursor if requested and different + try { + if (cursorPos) { + const cur = editor.getCursorPosition(); + if (cur.row !== cursorPos.row || cur.column !== cursorPos.column) { + editor.gotoLine(cursorPos.row, cursorPos.column); + } + } + } catch (error) { + console.warn( + `Failed to move cursor for ${existingFile.filename || existingFile.uri}`, + error, ); } diff --git a/src/lib/openFolder.js b/src/lib/openFolder.js index 522719de1..11add0d1a 100644 --- a/src/lib/openFolder.js +++ b/src/lib/openFolder.js @@ -14,6 +14,7 @@ import escapeStringRegexp from "escape-string-regexp"; import FileBrowser from "pages/fileBrowser"; import helpers from "utils/helpers"; import Path from "utils/Path"; +import Uri from "utils/Uri"; import Url from "utils/Url"; import constants from "./constants"; import * as FileList from "./fileList"; @@ -49,7 +50,32 @@ const isTerminalAccessiblePath = (url = "") => { const convertToProotPath = (url = "") => { const { alpineRoot, publicDir } = getTerminalPaths(); if (isAcodeTerminalPublicSafUri(url)) { - return "/public"; + try { + const { docId } = Uri.parse(url); + const cleanDocId = /::/.test(url) + ? decodeURIComponent(docId || "") + : docId || ""; + if (!cleanDocId) return "/public"; + if (cleanDocId.startsWith(publicDir)) { + return cleanDocId.replace(publicDir, "/public") || "/public"; + } + if (cleanDocId.startsWith("/public")) { + return cleanDocId; + } + if (cleanDocId.startsWith("public:")) { + const relativePath = cleanDocId.slice("public:".length); + return relativePath ? Path.join("/public", relativePath) : "/public"; + } + const relativePath = cleanDocId + .replace(/^\/+/, "") + .replace(/^public\//, ""); + return relativePath ? Path.join("/public", relativePath) : "/public"; + } catch (error) { + console.warn( + `Failed to parse public SAF URI for terminal conversion: ${url}`, + ); + return "/public"; + } } const cleanUrl = url.replace(/^file:\/\//, ""); if (cleanUrl.startsWith(publicDir)) { @@ -356,7 +382,7 @@ async function handleContextmenu(type, url, name, $target) { const OPEN_IN_TERMINAL = [ "open-in-terminal", strings["open in terminal"] || "Open in Terminal", - "licons terminal", + "terminal", ]; options.push(OPEN_IN_TERMINAL); } @@ -373,7 +399,7 @@ async function handleContextmenu(type, url, name, $target) { const OPEN_IN_TERMINAL = [ "open-in-terminal", strings["open in terminal"] || "Open in Terminal", - "licons terminal", + "terminal", ]; options.push(OPEN_IN_TERMINAL); } @@ -560,7 +586,7 @@ function execOperation(type, action, url, $target, name) { recents.removeFile(url); if (helpers.isFile(type)) { await fsOperation(url).delete(); - $target.remove(); + removeEntryFromOpenFolder(url); const file = editorManager.getFile(url, "uri"); if (file) file.uri = null; editorManager.onupdate("delete-file"); @@ -591,7 +617,7 @@ function execOperation(type, action, url, $target, name) { } recents.removeFolder(url); helpers.updateUriOfAllActiveFiles(url, null); - $target.parentElement.remove(); + removeEntryFromOpenFolder(url); editorManager.onupdate("delete-folder"); editorManager.emit("update", "delete-folder"); } @@ -664,25 +690,34 @@ function execOperation(type, action, url, $target, name) { newName = helpers.fixFilename(newName); if (!newName) return; startLoading(); - let newUrl; + try { + const isNestedPath = newName.split("/").filter(Boolean).length > 1; + let newUrl; - if (action === "new file") { - newUrl = await helpers.createFileStructure(url, newName); - } else { - newUrl = await helpers.createFileStructure(url, newName, false); - } - if (!newUrl) return; - newName = Url.basename(newUrl.uri); - if ($target.unclasped) { - if (newUrl.type === "file") { - appendTile($target, createFileTile(newName, newUrl.uri)); - } else if (newUrl.type === "folder") { - appendList($target, createFolderTile(newName, newUrl.uri)); + if (action === "new file") { + newUrl = await helpers.createFileStructure(url, newName); + } else { + newUrl = await helpers.createFileStructure(url, newName, false); } - } + if (!newUrl.created) return; - FileList.append(url, newUrl.uri); - toast(strings.success); + if (isNestedPath) { + await refreshOpenFolder(url); + await FileList.refresh(); + toast(strings.success); + return; + } + + newName = Url.basename(newUrl.uri); + appendEntryToOpenFolder(url, newUrl.uri, newUrl.type); + + FileList.append(url, newUrl.uri); + toast(strings.success); + } catch (error) { + helpers.error(error); + } finally { + stopLoading(); + } } async function paste() { @@ -954,6 +989,102 @@ function appendList($target, $list) { else $target.append($list); } +/** + * Get the active file tree for a folder element, if it has been loaded. + * @param {HTMLElement} $el + * @returns {FileTree|null} + */ +function getLoadedFileTree($el) { + return ( + $el?.$ul?._fileTree || $el?.fileTree || $el?.nextElementSibling?._fileTree + ); +} + +/** + * Remove matching rendered entries from expanded folder views. + * This keeps FileTree's in-memory state aligned with the rendered tree. + * @param {string} entryUrl + */ +function removeEntryFromOpenFolder(entryUrl) { + const filesApp = sidebarApps.get("files"); + const $els = Array.from( + filesApp.getAll(`[data-url="${CSS.escape(entryUrl)}"]`), + ); + + $els.forEach(($el) => { + const ownerTree = + $el?.parentElement?._fileTree || + $el?.parentElement?.parentElement?._fileTree; + + if (ownerTree) { + ownerTree.removeEntry(entryUrl); + return; + } + + const type = $el.dataset.type; + if (helpers.isFile(type)) { + $el.remove(); + } else { + $el.parentElement?.remove(); + } + }); +} + +/** + * Update matching expanded folder views with a new entry. + * @param {string} parentUrl + * @param {string} entryUrl + * @param {"file"|"folder"} type + */ +function appendEntryToOpenFolder(parentUrl, entryUrl, type) { + const filesApp = sidebarApps.get("files"); + const $els = filesApp.getAll(`[data-url="${parentUrl}"]`); + const isDirectory = type === "folder"; + const name = Url.basename(entryUrl); + + Array.from($els).forEach(($el) => { + if (!(helpers.isDir($el.dataset.type) || $el.dataset.type === "root")) { + return; + } + + if (!$el.unclasped) return; + + const fileTree = getLoadedFileTree($el); + if (fileTree) { + fileTree.appendEntry(name, entryUrl, isDirectory); + return; + } + + if (isDirectory) { + appendList($el, createFolderTile(name, entryUrl)); + } else { + appendTile($el, createFileTile(name, entryUrl)); + } + }); +} + +/** + * Refresh matching expanded folder views. + * @param {string} folderUrl + */ +async function refreshOpenFolder(folderUrl) { + const filesApp = sidebarApps.get("files"); + const $els = filesApp.getAll(`[data-url="${folderUrl}"]`); + + await Promise.all( + Array.from($els).map(async ($el) => { + if (!(helpers.isDir($el.dataset.type) || $el.dataset.type === "root")) { + return; + } + + const fileTree = getLoadedFileTree($el); + if (fileTree) { + await fileTree.refresh(); + } + }), + ); +} + /** * Create a folder tile * @param {string} name @@ -998,18 +1129,7 @@ function createFileTile(name, url) { openFolder.add = async (url, type) => { const { url: parent } = await fsOperation(Url.dirname(url)).stat(); FileList.append(parent, url); - - const filesApp = sidebarApps.get("files"); - const $els = filesApp.getAll(`[data-url="${parent}"]`); - Array.from($els).forEach(($el) => { - if ($el.dataset.type !== "dir") return; - - if (type === "file") { - appendTile($el, createFileTile(Url.basename(url), url)); - } else { - appendList($el, createFolderTile(Url.basename(url), url)); - } - }); + appendEntryToOpenFolder(parent, url, type); }; openFolder.renameItem = (oldFile, newFile, newFilename) => { @@ -1046,16 +1166,7 @@ openFolder.removeItem = (url) => { return; } - const filesApp = sidebarApps.get("files"); - const $el = filesApp.getAll(`[data-url="${url}"]`); - Array.from($el).forEach(($el) => { - const type = $el.dataset.type; - if (helpers.isFile(type)) { - $el.remove(); - } else { - $el.parentElement.remove(); - } - }); + removeEntryFromOpenFolder(url); }; openFolder.removeFolders = (url) => { diff --git a/src/lib/prettierFormatter.js b/src/lib/prettierFormatter.js new file mode 100644 index 000000000..4b93fa0f6 --- /dev/null +++ b/src/lib/prettierFormatter.js @@ -0,0 +1,520 @@ +import fsOperation from "fileSystem"; +import { parse } from "acorn"; +import toast from "components/toast"; +import appSettings from "lib/settings"; +import prettierPluginBabel from "prettier/plugins/babel"; +import prettierPluginEstree from "prettier/plugins/estree"; +import prettierPluginGraphql from "prettier/plugins/graphql"; +import prettierPluginHtml from "prettier/plugins/html"; +import prettierPluginMarkdown from "prettier/plugins/markdown"; +import prettierPluginPostcss from "prettier/plugins/postcss"; +import prettierPluginTypescript from "prettier/plugins/typescript"; +import prettierPluginYaml from "prettier/plugins/yaml"; +import prettier from "prettier/standalone"; +import helpers from "utils/helpers"; +import Url from "utils/Url"; + +const PRETTIER_ID = "prettier"; +const PRETTIER_NAME = "Prettier"; +const CONFIG_FILENAMES = [ + ".prettierrc", + ".prettierrc.json", + ".prettierrc.json5", + ".prettierrc.js", + ".prettierrc.cjs", + ".prettierrc.mjs", + ".prettierrc.config.cjs", + ".prettierrc.config.mjs", + ".prettier.config.js", + ".prettier.config.cjs", + ".prettier.config.mjs", + "prettier.config.json", + "prettier.config.js", + "prettier.config.cjs", + "prettier.config.mjs", +]; +const PRETTIER_PLUGINS = [ + prettierPluginEstree, + prettierPluginBabel, + prettierPluginHtml, + prettierPluginMarkdown, + prettierPluginPostcss, + prettierPluginTypescript, + prettierPluginYaml, + prettierPluginGraphql, +]; + +/** + * Supported parser mapping keyed by CodeMirror mode name + * @type {Record} + */ +const MODE_TO_PARSER = { + angular: "angular", + gfm: "markdown", + css: "css", + graphql: "graphql", + html: "html", + json: "json", + json5: "json", + jsx: "babel", + less: "less", + markdown: "markdown", + md: "markdown", + mdx: "mdx", + scss: "scss", + styled_jsx: "babel", + typescript: "typescript", + tsx: "typescript", + jsonc: "json", + yaml: "yaml", + yml: "yaml", + vue: "vue", + javascript: "babel", +}; + +const SUPPORTED_EXTENSIONS = [ + "js", + "cjs", + "mjs", + "jsx", + "ts", + "tsx", + "json", + "json5", + "css", + "scss", + "less", + "html", + "htm", + "vue", + "md", + "markdown", + "mdx", + "yaml", + "yml", + "graphql", + "gql", +]; + +/** + * Register Prettier formatter with Acode instance + */ +export function registerPrettierFormatter() { + if (!window?.acode) return; + const alreadyRegistered = acode.formatters.some( + ({ id }) => id === PRETTIER_ID, + ); + if (alreadyRegistered) return; + acode.registerFormatter( + PRETTIER_ID, + SUPPORTED_EXTENSIONS, + () => formatActiveFileWithPrettier(), + PRETTIER_NAME, + ); +} + +async function formatActiveFileWithPrettier() { + const file = editorManager?.activeFile; + const editor = editorManager?.editor; + if (!file || file.type !== "editor" || !editor) return false; + + const modeName = (file.currentMode || "text").toLowerCase(); + const parser = getParserForMode(modeName); + if (!parser) { + toast("Prettier does not support this file type yet"); + return false; + } + + const doc = editor.state.doc; + const source = doc.toString(); + const filepath = file.uri || file.filename || ""; + try { + const config = await resolvePrettierConfig(file); + const formatted = await prettier.format(source, { + ...config, + parser, + plugins: PRETTIER_PLUGINS, + filepath, + overrideEditorconfig: true, + }); + + if (formatted === source) return true; + + editor.dispatch({ + changes: { + from: 0, + to: doc.length, + insert: formatted, + }, + }); + return true; + } catch (error) { + const message = error instanceof Error ? error.message : String(error); + toast(message); + return false; + } +} + +function getParserForMode(modeName) { + if (MODE_TO_PARSER[modeName]) return MODE_TO_PARSER[modeName]; + if (modeName.includes("javascript")) return "babel"; + if (modeName.includes("typescript")) return "typescript"; + return null; +} + +async function resolvePrettierConfig(file) { + const overrides = appSettings?.value?.prettier || {}; + const projectConfig = await loadProjectConfig(file); + const result = { ...overrides, ...(projectConfig || {}) }; + if (file?.eol && result.endOfLine == null) { + result.endOfLine = file.eol === "windows" ? "crlf" : "lf"; + } + if (result.useTabs == null) { + result.useTabs = !appSettings?.value?.softTab; + } + if ( + result.tabWidth == null && + typeof appSettings?.value?.tabSize === "number" + ) { + result.tabWidth = appSettings.value.tabSize; + } + return result; +} + +async function loadProjectConfig(file) { + const uri = file?.uri; + if (!uri) return null; + + const projectRoot = findProjectRoot(uri); + const directories = collectCandidateDirectories(uri, projectRoot); + + for (const directory of directories) { + const config = await readConfigFromDirectory(directory); + if (config) return config; + } + + return null; +} + +function findProjectRoot(uri) { + const folders = Array.isArray(globalThis.addedFolder) + ? globalThis.addedFolder + : []; + const target = normalizePath(uri); + let match = null; + let matchLength = -1; + + for (const folder of folders) { + const folderUrl = folder?.url; + if (!folderUrl) continue; + const normalized = normalizePath(folderUrl); + if (!normalized) continue; + if (target === normalized || target.startsWith(`${normalized}/`)) { + if (normalized.length > matchLength) { + match = folderUrl; + matchLength = normalized.length; + } + } + } + + return match; +} + +function collectCandidateDirectories(fileUri, projectRoot) { + const directories = []; + const visited = new Set(); + let currentDir = safeDirname(fileUri); + + while (currentDir) { + const normalized = normalizePath(currentDir); + if (visited.has(normalized)) break; + directories.push(currentDir); + visited.add(normalized); + if (projectRoot && pathsAreSame(currentDir, projectRoot)) break; + const parent = safeDirname(currentDir); + if (!parent || parent === currentDir) break; + currentDir = parent; + } + + if ( + projectRoot && + !directories.some((dir) => pathsAreSame(dir, projectRoot)) + ) { + directories.push(projectRoot); + } + + return directories; +} + +function safeDirname(path) { + try { + return Url.dirname(path); + } catch (_) { + return null; + } +} + +async function readConfigFromDirectory(directory) { + if (!directory) return null; + + for (const name of CONFIG_FILENAMES) { + const config = await loadConfigFile(directory, name); + if (config) return config; + } + + return loadPrettierFromPackageJson(directory); +} + +async function loadConfigFile(directory, basename) { + try { + const filePath = Url.join(directory, basename); + const fs = fsOperation(filePath); + if (!(await fs.exists())) return null; + const text = await fs.readFile("utf8"); + + switch (basename) { + case ".prettierrc": + case ".prettierrc.json": + case ".prettierrc.json5": + case "prettier.config.json": + return parseJsonLike(text); + case ".prettierrc.js": + case ".prettier.config.js": + case "prettier.config.js": + return parseJsConfig(directory, text, filePath); + case ".prettierrc.mjs": + case ".prettierrc.config.mjs": + case ".prettier.config.mjs": + case "prettier.config.mjs": + return parseJsConfig(directory, text, filePath); + case ".prettierrc.cjs": + case ".prettierrc.config.cjs": + case ".prettier.config.cjs": + case "prettier.config.cjs": + return parseJsConfig(directory, text, filePath); + default: + return null; + } + } catch (_) { + return null; + } +} + +async function loadPrettierFromPackageJson(directory) { + try { + const pkgPath = Url.join(directory, "package.json"); + const fs = fsOperation(pkgPath); + if (!(await fs.exists())) return null; + const pkg = await fs.readFile("json"); + const config = pkg?.prettier; + if (config && typeof config === "object") return config; + } catch (_) { + return null; + } + return null; +} + +function parseJsonLike(text) { + const trimmed = text?.trim(); + if (!trimmed) return null; + const parsed = helpers.parseJSON(trimmed); + if (parsed) return parsed; + try { + return parseSafeExpression(trimmed); + } catch (_) { + return null; + } +} + +function parseJsConfig(directory, source, absolutePath) { + if (!source) return null; + void directory; + void absolutePath; + try { + return extractConfigFromProgram(source); + } catch (_) { + return null; + } +} + +function parseProgram(source) { + try { + return parse(source, { + ecmaVersion: "latest", + sourceType: "module", + allowHashBang: true, + }); + } catch (_) { + return parse(source, { + ecmaVersion: "latest", + sourceType: "script", + allowHashBang: true, + }); + } +} + +function extractConfigFromProgram(source) { + const ast = parseProgram(source); + const scope = new Map(); + + for (const statement of ast.body) { + const declared = readVariableDeclaration(statement, scope); + if (declared) { + for (const [name, value] of declared) { + scope.set(name, value); + } + continue; + } + + const exported = readCommonJsExport(statement, scope); + if (exported !== undefined) return exported; + + const esmExported = readEsmExport(statement, scope); + if (esmExported !== undefined) return esmExported; + } + + return null; +} + +function parseSafeExpression(text) { + const wrapped = `(${text})`; + const ast = parse(wrapped, { + ecmaVersion: "latest", + sourceType: "module", + allowHashBang: true, + }); + const statement = ast.body[0]; + if (statement?.type !== "ExpressionStatement") return null; + return evaluateNode(statement.expression, new Map()); +} + +function readVariableDeclaration(statement, scope) { + if (statement?.type !== "VariableDeclaration") return null; + const values = new Map(); + const lookupScope = new Map(scope); + + for (const decl of statement.declarations || []) { + if (!decl || decl.type !== "VariableDeclarator") continue; + if (decl.id?.type !== "Identifier") continue; + if (!decl.init) continue; + try { + const value = evaluateNode(decl.init, lookupScope); + values.set(decl.id.name, value); + lookupScope.set(decl.id.name, value); + } catch (_) { + // Ignore unsupported declarations + } + } + + return values.size ? values : null; +} + +function readCommonJsExport(statement, scope) { + if (statement?.type !== "ExpressionStatement") return undefined; + const expr = statement.expression; + if (expr?.type !== "AssignmentExpression" || expr.operator !== "=") { + return undefined; + } + + if (!isModuleExports(expr.left)) return undefined; + return evaluateNode(expr.right, scope); +} + +function readEsmExport(statement, scope) { + if (statement?.type !== "ExportDefaultDeclaration") return undefined; + return evaluateNode(statement.declaration, scope); +} + +function isModuleExports(node) { + return ( + node?.type === "MemberExpression" && + !node.computed && + node.object?.type === "Identifier" && + node.object.name === "module" && + node.property?.type === "Identifier" && + node.property.name === "exports" + ); +} + +function evaluateNode(node, scope) { + if (!node) return null; + + switch (node.type) { + case "ObjectExpression": + return evaluateObjectExpression(node, scope); + case "ArrayExpression": + return node.elements.map((entry) => evaluateNode(entry, scope)); + case "Literal": + return node.value; + case "TemplateLiteral": + if (node.expressions.length) { + throw new Error("Template expressions are not supported"); + } + return node.quasis.map((part) => part.value.cooked ?? "").join(""); + case "Identifier": + if (scope.has(node.name)) return scope.get(node.name); + if (node.name === "undefined") return undefined; + throw new Error(`Unsupported identifier: ${node.name}`); + case "UnaryExpression": + return evaluateUnaryExpression(node, scope); + default: + throw new Error(`Unsupported node type: ${node.type}`); + } +} + +function evaluateObjectExpression(node, scope) { + const output = {}; + for (const property of node.properties || []) { + if (!property || property.type !== "Property") { + throw new Error("Unsupported object property"); + } + if (property.kind !== "init" || property.method || property.shorthand) { + throw new Error("Unsupported object property kind"); + } + const key = property.computed + ? evaluateNode(property.key, scope) + : getPropertyKey(property.key); + const normalizedKey = + typeof key === "string" || typeof key === "number" ? String(key) : null; + if (!normalizedKey) { + throw new Error("Unsupported object key"); + } + output[normalizedKey] = evaluateNode(property.value, scope); + } + return output; +} + +function getPropertyKey(node) { + if (node?.type === "Identifier") return node.name; + if (node?.type === "Literal") return node.value; + throw new Error("Unsupported property key"); +} + +function evaluateUnaryExpression(node, scope) { + const value = evaluateNode(node.argument, scope); + switch (node.operator) { + case "+": + return +value; + case "-": + return -value; + case "!": + return !value; + default: + throw new Error(`Unsupported unary operator: ${node.operator}`); + } +} + +function normalizePath(path) { + let result = String(path || "").replace(/\\/g, "/"); + while (result.length > 1 && result.endsWith("/")) { + const prefix = result.slice(0, -1); + if (/^[a-z]+:\/{0,2}$/i.test(prefix)) break; + result = prefix; + } + return result; +} + +function pathsAreSame(a, b) { + if (!a || !b) return false; + return normalizePath(a) === normalizePath(b); +} diff --git a/src/lib/recents.js b/src/lib/recents.js index 9eb3bad84..c3d18436f 100644 --- a/src/lib/recents.js +++ b/src/lib/recents.js @@ -8,13 +8,15 @@ const recents = { * @returns {Array} */ get files() { - return JSON.parse(localStorage.recentFiles || "[]"); + const files = helpers.parseJSON(localStorage.recentFiles); + return Array.isArray(files) ? files : []; }, /** * @returns {{url: String, opts: Map}[]} */ get folders() { - return JSON.parse(localStorage.recentFolders || "[]"); + const folders = helpers.parseJSON(localStorage.recentFolders); + return Array.isArray(folders) ? folders : []; }, set files(list) { if (Array.isArray(list)) localStorage.recentFiles = JSON.stringify(list); diff --git a/src/lib/remoteStorage.js b/src/lib/remoteStorage.js index 96dee270a..acfdd00d5 100644 --- a/src/lib/remoteStorage.js +++ b/src/lib/remoteStorage.js @@ -65,9 +65,7 @@ export default { res.home = home; } loader.destroy(); - if (IS_FREE_VERSION && (await window.iad?.isLoaded())) { - window.iad.show(); - } + await helpers.showInterstitialIfReady(); return res; } catch (err) { if (stopConnection) { @@ -232,9 +230,7 @@ export default { }, }); loader.destroy(); - if (IS_FREE_VERSION && (await window.iad?.isLoaded())) { - window.iad.show(); - } + await helpers.showInterstitialIfReady(); return { alias, name: alias, @@ -428,11 +424,13 @@ export default { }; async function loadAd() { - if (!IS_FREE_VERSION) return; + if (!helpers.canShowAds()) return; try { if (!(await window.iad?.isLoaded())) { toast(strings.loading); await window.iad.load(); } - } catch (error) {} + } catch (error) { + console.warn("Failed to load interstitial ad.", error); + } } diff --git a/src/lib/removeAds.js b/src/lib/removeAds.js index 2188e810e..5b65f383e 100644 --- a/src/lib/removeAds.js +++ b/src/lib/removeAds.js @@ -1,5 +1,5 @@ import purchaseListener from "handlers/purchase"; -import helpers from "utils/helpers"; +import { hideAd } from "./startAd.js"; /** * Remove ads after purchase @@ -25,7 +25,7 @@ export default function removeAds() { function onpurchase() { resolve(null); - helpers.hideAd(true); + hideAd(true); localStorage.setItem("acode_pro", "true"); window.IS_FREE_VERSION = false; toast(strings["thank you :)"]); diff --git a/src/lib/restoreFiles.js b/src/lib/restoreFiles.js index 345d2280c..6f58c8828 100644 --- a/src/lib/restoreFiles.js +++ b/src/lib/restoreFiles.js @@ -10,7 +10,7 @@ export default async function restoreFiles(files) { await Promise.all( files.map(async (file, i) => { - rendered = file.render; + rendered ||= !!file.render; if (i === files.length - 1 && !rendered) { file.render = true; diff --git a/src/lib/run.js b/src/lib/run.js index 85df583c8..a0eac7c42 100644 --- a/src/lib/run.js +++ b/src/lib/run.js @@ -7,6 +7,7 @@ import anchor from "markdown-it-anchor"; import MarkdownItGitHubAlerts from "markdown-it-github-alerts"; import mimeType from "mime-types"; import mustache from "mustache"; +import openMarkdownPreview from "pages/markdownPreview"; import browser from "plugins/browser"; import helpers from "utils/helpers"; import Url from "utils/Url"; @@ -31,6 +32,15 @@ async function run( target = appSettings.value.previewMode, runFile = false, ) { + /** @type {EditorFile} */ + const activeFile = isConsole ? null : editorManager.activeFile; + + if (!isConsole && Url.extname(activeFile?.filename || "") === ".md") { + if (!(await activeFile?.canRun())) return; + await openMarkdownPreview(activeFile); + return; + } + if (!isConsole && !runFile) { const { serverPort, previewPort, previewMode, disableCache, host } = appSettings.value; @@ -46,8 +56,6 @@ async function run( } } - /** @type {EditorFile} */ - const activeFile = isConsole ? null : editorManager.activeFile; if (!isConsole && !(await activeFile?.canRun())) return; if (!isConsole && !localStorage.__init_runPreview) { @@ -197,7 +205,7 @@ async function run( break; case EXECUTING_SCRIPT: { - const text = activeFile?.session.getValue() || ""; + const text = activeFile?.session?.doc?.toString() || ""; sendText(text, reqId, "application/javascript"); break; } @@ -236,7 +244,7 @@ async function run( if (activeFile.mode === "single") { if (filename === reqPath) { sendText( - activeFile.session.getValue(), + activeFile.session?.doc?.toString(), reqId, mimeType.lookup(filename), ); @@ -270,7 +278,7 @@ async function run( const htmlUrl = Url.join(pathName, reqPath + ".html"); const htmlFile = editorManager.getFile(htmlUrl, "uri"); if (htmlFile?.loaded && htmlFile.isUnsaved) { - sendHTML(htmlFile.session?.getValue(), reqId); + sendHTML(htmlFile.session?.doc?.toString(), reqId); return; } const htmlFs = fsOperation(htmlUrl); @@ -295,7 +303,7 @@ async function run( case ".htm": case ".html": if (file && file.loaded && file.isUnsaved) { - sendHTML(file.session.getValue(), reqId); + sendHTML(file.session?.doc?.toString(), reqId); } else { sendFileContent(url, reqId, MIMETYPE_HTML); } @@ -312,7 +320,7 @@ async function run( .toLowerCase() .replace(/[^a-z0-9]+/g, "-"), }) - .render(file.session.getValue()); + .render(file.session?.doc?.toString()); const doc = mustache.render($_markdown, { html, filename, @@ -325,7 +333,7 @@ async function run( default: if (file && file.loaded && file.isUnsaved) { sendText( - file.session.getValue(), + file.session?.doc?.toString(), reqId, mimeType.lookup(file.filename), ); diff --git a/src/lib/saveFile.js b/src/lib/saveFile.js index a80813ca8..01c8d01db 100644 --- a/src/lib/saveFile.js +++ b/src/lib/saveFile.js @@ -53,7 +53,7 @@ async function saveFile(file, isSaveAs = false) { * File data * @type {string} */ - const data = file.session.getValue(); + const data = file.session ? file.session.doc.toString() : ""; /** * File tab bar text element, used to show saving status * @type {HTMLElement} diff --git a/src/lib/saveState.js b/src/lib/saveState.js index fa825d3b3..a6ba3c1d4 100644 --- a/src/lib/saveState.js +++ b/src/lib/saveState.js @@ -1,3 +1,4 @@ +import { getAllFolds, getScrollPosition, getSelection } from "cm/editorUtils"; import constants from "./constants"; import { addedFolder } from "./openFolder"; import appSettings from "./settings"; @@ -15,22 +16,56 @@ export default () => { if (file.id === constants.DEFAULT_FILE_SESSION) return; if (file.SAFMode === "single") return; + // Selection per file: + // - Active file uses live EditorView selection + // - Inactive files use their persisted EditorState selection + let cursorPos; + if (activeFile?.id === file.id) { + cursorPos = getSelection(editor); + } else { + const sel = file.session?.selection; + if (sel) { + cursorPos = { + ranges: sel.ranges.map((r) => ({ from: r.from, to: r.to })), + mainIndex: sel.mainIndex ?? 0, + }; + } else { + cursorPos = null; + } + } + + // Scroll per file: + // - Active file uses live scroll from EditorView + // - Inactive files use lastScrollTop/Left captured on tab switch + let scrollTop, scrollLeft; + if (activeFile?.id === file.id) { + const sp = getScrollPosition(editor); + scrollTop = sp.scrollTop; + scrollLeft = sp.scrollLeft; + } else { + scrollTop = + typeof file.lastScrollTop === "number" ? file.lastScrollTop : 0; + scrollLeft = + typeof file.lastScrollLeft === "number" ? file.lastScrollLeft : 0; + } + const fileJson = { id: file.id, uri: file.uri, type: file.type, filename: file.filename, + pinned: file.pinned, isUnsaved: file.isUnsaved, readOnly: file.readOnly, SAFMode: file.SAFMode, deletedFile: file.deletedFile, - cursorPos: editor.getCursorPosition(), - scrollTop: editor.session.getScrollTop(), - scrollLeft: editor.session.getScrollLeft(), + cursorPos, + scrollTop, + scrollLeft, editable: file.editable, encoding: file.encoding, - render: activeFile.id === file.id, - folds: parseFolds(file.session.getAllFolds()), + render: activeFile?.id === file.id, + folds: getAllFolds(file.session), }; if (settings.rememberFiles || fileJson.isUnsaved) @@ -55,20 +90,3 @@ export default () => { localStorage.files = JSON.stringify(filesToSave); localStorage.folders = JSON.stringify(folders); }; - -function parseFolds(folds) { - if (!Array.isArray(folds)) return []; - - return folds - .map((fold) => { - if (!fold || !fold.range) return null; - - const { range, ranges, placeholder } = fold; - return { - range, - ranges: parseFolds(ranges || []), - placeholder, - }; - }) - .filter(Boolean); -} diff --git a/src/lib/secureAdRewardState.js b/src/lib/secureAdRewardState.js new file mode 100644 index 000000000..ef77d23dd --- /dev/null +++ b/src/lib/secureAdRewardState.js @@ -0,0 +1,33 @@ +function execSystem(action, args = []) { + return new Promise((resolve, reject) => { + if (!window.cordova?.exec) { + reject(new Error("Cordova exec is unavailable.")); + return; + } + + cordova.exec(resolve, reject, "System", action, args); + }); +} + +export default { + async getStatus() { + try { + const raw = await execSystem("getRewardStatus"); + if (!raw) return null; + return typeof raw === "string" ? JSON.parse(raw) : raw; + } catch (error) { + console.warn("Failed to load secure rewarded ad status.", error); + return null; + } + }, + async redeem(offerId) { + try { + const raw = await execSystem("redeemReward", [offerId]); + if (!raw) return null; + return typeof raw === "string" ? JSON.parse(raw) : raw; + } catch (error) { + console.warn("Failed to redeem rewarded ad offer.", error); + throw error; + } + }, +}; diff --git a/src/lib/selectionMenu.js b/src/lib/selectionMenu.js index 8e7fea58b..53b8a966e 100644 --- a/src/lib/selectionMenu.js +++ b/src/lib/selectionMenu.js @@ -10,6 +10,20 @@ const exec = (command) => { editor.focus(); }; +const showCodeActions = async () => { + const { editor } = editorManager; + if (!editor) return; + + try { + const { showCodeActionsMenu, supportsCodeActions } = await import("cm/lsp"); + if (supportsCodeActions(editor)) { + await showCodeActionsMenu(editor); + } + } catch (error) { + console.warn("[SelectionMenu] Code actions not available:", error); + } +}; + const items = []; export default function selectionMenu() { @@ -33,6 +47,12 @@ export default function selectionMenu() { , "all", ), + item( + () => showCodeActions(), + , + "all", + true, + ), ...items, ]; } diff --git a/src/lib/settings.js b/src/lib/settings.js index 4d6424c84..42b161921 100644 --- a/src/lib/settings.js +++ b/src/lib/settings.js @@ -26,6 +26,10 @@ class Settings { #defaultSettings; #oldSettings; #initialized = false; + #uiZoomBaseFontSize = { + root: null, + body: null, + }; #on = { update: [], "update:after": [], @@ -113,6 +117,7 @@ class Settings { autosave: 0, fileBrowser: this.#fileBrowserSettings, formatter: {}, + prettier: {}, maxFileSize: 12, serverPort: constants.SERVER_PORT, previewPort: constants.PREVIEW_PORT, @@ -123,8 +128,9 @@ class Settings { host: "localhost", search: this.#searchSettings, lang: "en-us", + uiZoom: 100, fontSize: "12px", - editorTheme: "ace/theme/nord_dark", + editorTheme: "one_dark", textWrap: true, softTab: true, tabSize: 2, @@ -136,11 +142,13 @@ class Settings { openFileListPos: this.OPEN_FILE_LIST_POS_HEADER, quickTools: this.#IS_TABLET ? 0 : 1, quickToolsTriggerMode: this.QUICKTOOLS_TRIGGER_MODE_TOUCH, + appFont: "", editorFont: "Roboto Mono", vibrateOnTap: true, fullscreen: false, floatingButton: !this.#IS_TABLET, liveAutoCompletion: true, + autoCloseTags: true, showPrintMargin: false, printMargin: 80, scrollbarSize: 20, @@ -157,8 +165,6 @@ class Settings { rememberFolders: true, diagonalScrolling: false, reverseScrolling: false, - teardropTimeout: 3000, - teardropSize: 30, scrollSpeed: constants.SCROLL_SPEED_NORMAL, customTheme: this.#customTheme, relativeLineNumbers: false, @@ -175,9 +181,17 @@ class Settings { maxRetryCount: 3, showRetryToast: false, showSideButtons: true, + showSponsorSidebarApp: true, showAnnotations: false, + lintGutter: true, + indentGuides: false, + rainbowBrackets: true, pluginsDisabled: {}, // pluginId: true/false + lsp: { + servers: {}, + }, developerMode: false, + shiftClickSelection: false, }; this.value = structuredClone(this.#defaultSettings); } @@ -361,6 +375,10 @@ class Settings { this.applyAnimationSetting(); break; + case "uiZoom": + this.applyUiZoomSetting(); + break; + case "lang": this.applyLangSetting(); break; @@ -387,6 +405,40 @@ class Settings { } } + applyUiZoomSetting() { + const zoom = Number(this.value.uiZoom) || 100; + const clamped = Math.min(160, Math.max(70, zoom)); + if (clamped === 100) { + document.documentElement.style.fontSize = ""; + document.body.style.fontSize = ""; + if (window.root) { + window.root.style.zoom = ""; + window.root.style.width = ""; + window.root.style.height = ""; + } + return; + } + + const rootFontSize = + this.#uiZoomBaseFontSize.root || + Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || + 14; + const bodyFontSize = + this.#uiZoomBaseFontSize.body || + Number.parseFloat(getComputedStyle(document.body).fontSize) || + rootFontSize; + + this.#uiZoomBaseFontSize.root = rootFontSize; + this.#uiZoomBaseFontSize.body = bodyFontSize; + document.documentElement.style.fontSize = `${(rootFontSize * clamped) / 100}px`; + document.body.style.fontSize = `${(bodyFontSize * clamped) / 100}px`; + if (window.root) { + window.root.style.zoom = ""; + window.root.style.width = ""; + window.root.style.height = ""; + } + } + async applyLangSetting() { const value = this.value.lang; lang.set(value); diff --git a/src/lib/startAd.js b/src/lib/startAd.js index e4eccd9ef..7afc255a1 100644 --- a/src/lib/startAd.js +++ b/src/lib/startAd.js @@ -1,5 +1,8 @@ +import tag from "html-tag-js"; + let adUnitIdBanner = "ca-app-pub-5911839694379275/9157899592"; // Production let adUnitIdInterstitial = "ca-app-pub-5911839694379275/9570937608"; // Production +let adUnitIdRewarded = "ca-app-pub-5911839694379275/1633667633"; // Production let initialized = false; export default async function startAd() { @@ -10,7 +13,8 @@ export default async function startAd() { if (BuildInfo.type === "debug") { adUnitIdBanner = "ca-app-pub-3940256099942544/6300978111"; // Test - adUnitIdInterstitial = "ca-app-pub-3940256099942544/5224354917"; // Test + adUnitIdInterstitial = "ca-app-pub-3940256099942544/1033173712"; // Test + adUnitIdRewarded = "ca-app-pub-3940256099942544/5224354917"; // Test } } @@ -53,4 +57,22 @@ export default async function startAd() { }); window.ad = banner; window.iad = interstitial; + window.adRewardedUnitId = adUnitIdRewarded; +} + +/** + * Hides the ad + * @param {Boolean} [force=false] + */ +export function hideAd(force = false) { + const { ad } = window; + if (ad?.active) { + const $pages = tag.getAll(".page-replacement"); + const hide = $pages.length === 1; + + if (force || hide) { + ad.active = false; + ad.hide(); + } + } } diff --git a/src/main.js b/src/main.js index dea2e1cb9..65067364a 100644 --- a/src/main.js +++ b/src/main.js @@ -8,15 +8,21 @@ import "styles/overrideAceStyle.scss"; import "styles/wideScreen.scss"; import "lib/polyfill"; -import "ace/supportedModes"; +import "cm/supportedModes"; import "components/WebComponents"; import fsOperation from "fileSystem"; import sidebarApps from "sidebarApps"; import ajax from "@deadlyjack/ajax"; -import { setKeyBindings } from "ace/commands"; -import { initModes } from "ace/modelist"; +import { setKeyBindings } from "cm/commandRegistry"; +import { + getModeForPath, + getModes, + getModesByName, + initModes, +} from "cm/modelist"; import Contextmenu from "components/contextmenu"; +import { hasConnectedServers } from "components/lspInfoDialog"; import Sidebar from "components/sidebar"; import { TerminalManager } from "components/terminal"; import tile from "components/tile"; @@ -29,6 +35,7 @@ import quickToolsInit from "handlers/quickToolsInit"; import windowResize from "handlers/windowResize"; import Acode from "lib/acode"; import actionStack from "lib/actionStack"; +import adRewards from "lib/adRewards"; import applySettings from "lib/applySettings"; import checkFiles from "lib/checkFiles"; import checkPluginsUpdate from "lib/checkPluginsUpdate"; @@ -40,6 +47,7 @@ import loadPlugins from "lib/loadPlugins"; import Logger from "lib/logger"; import NotificationManager from "lib/notificationManager"; import openFolder, { addedFolder } from "lib/openFolder"; +import { registerPrettierFormatter } from "lib/prettierFormatter"; import restoreFiles from "lib/restoreFiles"; import settings from "lib/settings"; import startAd from "lib/startAd"; @@ -48,6 +56,7 @@ import plugins from "pages/plugins"; import openWelcomeTab from "pages/welcome"; import otherSettings from "settings/appSettings"; import themes from "theme/list"; +import { initHighlighting } from "utils/codeHighlight"; import { getEncoding, initEncodings } from "utils/encodings"; import helpers from "utils/helpers"; import loadPolyFill from "utils/polyfill"; @@ -61,6 +70,59 @@ const previousVersionCode = Number.parseInt(localStorage.versionCode, 10); window.onload = Main; const logger = new Logger(); +function createAceModelistCompatModule() { + const toAceMode = (mode) => { + const resolved = mode || getModeForPath(""); + if (!resolved) return null; + const name = resolved.name || "text"; + const rawMode = String(resolved.mode || name); + const modePath = rawMode.startsWith("ace/mode/") + ? rawMode + : `ace/mode/${rawMode}`; + return { + ...resolved, + name, + caption: resolved.caption || name, + mode: modePath, + }; + }; + + return { + get modes() { + return getModes() + .map((mode) => toAceMode(mode)) + .filter(Boolean); + }, + get modesByName() { + const source = getModesByName(); + const result = {}; + Object.keys(source).forEach((name) => { + result[name] = toAceMode(source[name]); + }); + return result; + }, + getModeForPath(path) { + return toAceMode(getModeForPath(String(path || ""))); + }, + }; +} + +function ensureAceCompatApi() { + const ace = window.ace || {}; + const modelistModule = createAceModelistCompatModule(); + const originalRequire = + typeof ace.require === "function" ? ace.require.bind(ace) : null; + + ace.require = (moduleId) => { + if (moduleId === "ace/ext/modelist" || moduleId === "ace/ext/modelist.js") { + return modelistModule; + } + return originalRequire?.(moduleId); + }; + + window.ace = ace; +} + async function Main() { const oldPreventDefault = TouchEvent.prototype.preventDefault; @@ -176,6 +238,8 @@ async function onDeviceReady() { return true; })(); window.acode = new Acode(); + await adRewards.init(); + ensureAceCompatApi(); system.requestPermission("android.permission.READ_EXTERNAL_STORAGE"); system.requestPermission("android.permission.WRITE_EXTERNAL_STORAGE"); @@ -192,10 +256,13 @@ async function onDeviceReady() { } localStorage.versionCode = versionCode; - document.body.setAttribute( - "data-version", - `v${BuildInfo.version} (${versionCode})`, - ); + + try { + await setDebugInfo(); + } catch (e) { + console.error(e); + } + acode.setLoadingMessage("Loading settings..."); window.resolveLocalFileSystemURL = function (url, ...args) { @@ -215,6 +282,9 @@ async function onDeviceReady() { acode.setLoadingMessage("Loading settings..."); await settings.init(); themes.init(); + initHighlighting(); + + registerPrettierFormatter(); acode.setLoadingMessage("Loading language..."); await lang.set(settings.value.lang); @@ -333,6 +403,30 @@ async function onDeviceReady() { .catch(console.error); } +async function setDebugInfo() { + const { version, versionCode } = BuildInfo; + + const userAgent = navigator.userAgent; + const language = navigator.language; + + // Extract Android version + const androidMatch = userAgent.match(/Android\s([0-9.]+)/); + const androidVersion = androidMatch ? androidMatch[1] : "Unknown"; + + // Extract Chrome/WebView version + const chromeMatch = userAgent.match(/Chrome\/([0-9.]+)/); + const webviewVersion = chromeMatch ? chromeMatch[1] : "Unknown"; + + const info = [ + `App: v${version} (${versionCode})`, + `Android: ${androidVersion}`, + `WebView: ${webviewVersion}`, + `Language: ${language}`, + ].join("\n"); + + document.body.setAttribute("data-version", info); +} + async function promptUpdateCheckConsent() { try { if (Boolean(localStorage.getItem("checkForUpdatesPrompted"))) return; @@ -471,7 +565,7 @@ async function loadApp() { $sidebar.onshow = () => { const activeFile = editorManager.activeFile; - if (activeFile) editorManager.editor.blur(); + if (activeFile) editorManager.editor.contentDOM.blur(); }; sdcard.watchFile(KEYBINDING_FILE, async () => { await setKeyBindings(editorManager.editor); @@ -512,15 +606,17 @@ async function loadApp() { if (Array.isArray(files) && files.length) { try { await restoreFiles(files); - // save state to handle file loading gracefully - sessionStorage.setItem("isfilesRestored", true); - // Process any pending intents that were queued before files were restored - await processPendingIntents(); } catch (error) { window.log("error", "File loading failed!"); window.log("error", error); toast("File loading failed!"); + } finally { + // Mark restoration complete even after a partial failure so + // switch-file persistence and queued intents are not blocked. + sessionStorage.setItem("isfilesRestored", true); } + // Process any pending intents that were queued before files were restored + await processPendingIntents(); } else { // Even when no files need to be restored, mark as restored and process pending intents sessionStorage.setItem("isfilesRestored", true); @@ -567,6 +663,9 @@ async function loadApp() { if (settings.value.rememberFiles && activeFile) { localStorage.setItem("lastfile", activeFile.id); } + if (saveState && sessionStorage.getItem("isfilesRestored") === "true") { + acode.exec("save-state"); + } return; } @@ -621,7 +720,8 @@ function onClickApp(e) { function mainPageOnShow() { const { editor } = editorManager; - editor.resize(true); + // TODO : Codemirror + //editor.resize(true); } function createMainMenu({ top, bottom, toggler }) { @@ -658,17 +758,28 @@ function createFileMenu({ top, bottom, toggler }) { const { label: encoding } = getEncoding(file.encoding); const isEditorFile = file.type === "editor"; + const cmEditor = window.editorManager?.editor; + const hasSelection = !!cmEditor && !cmEditor.state.selection.main.empty; return mustache.render($_fileMenu, { ...strings, - file_mode: isEditorFile - ? (file.session?.getMode()?.$id || "").split("/").pop() - : "", + file_id: file.id, + toggle_pin_tab_text: file.pinned + ? strings["unpin tab"] || "Unpin tab" + : strings["pin tab"] || "Pin tab", + toggle_pin_tab_icon: file.pinned ? "icon pin-off" : "icon pin", + close_tabs_to_right_text: + strings["close tabs to right"] || "Close Right", + close_tabs_to_left_text: strings["close tabs to left"] || "Close Left", + close_other_tabs_text: strings["close other tabs"] || "Close Others", + // Use CodeMirror mode stored on EditorFile (set in setMode) + file_mode: isEditorFile ? file.currentMode || "" : "", file_encoding: isEditorFile ? encoding : "", file_read_only: !file.editable, file_on_disk: !!file.uri, file_eol: isEditorFile ? file.eol : "", - copy_text: !!window.editorManager.editor.getCopyText(), + copy_text: isEditorFile ? hasSelection : false, is_editor: isEditorFile, + has_lsp_servers: isEditorFile && hasConnectedServers(), }); }, }); @@ -719,6 +830,7 @@ function pauseHandler() { } function resumeHandler() { + adRewards.handleResume(); if (!settings.value.checkFiles) return; checkFiles(); } diff --git a/src/main.scss b/src/main.scss index 8d0f5fa39..eab98f5d9 100644 --- a/src/main.scss +++ b/src/main.scss @@ -4,9 +4,11 @@ @use "./styles/keyframes.scss"; @use "./styles/fileInfo.scss"; @use "./styles/markdown.scss"; +@use "./styles/codemirror.scss"; :root { --scrollbar-width: 4px; + --app-font-family: "Roboto", sans-serif; } * { @@ -31,7 +33,7 @@ body { body { user-select: none; - font-family: "Roboto", sans-serif; + font-family: var(--app-font-family); -webkit-tap-highlight-color: transparent; background-color: #9999ff; background-color: var(--primary-color); @@ -454,49 +456,6 @@ textarea { } } -.cursor { - position: absolute; - top: 0; - left: 0; - display: block; - border-radius: 50%; - background-color: white; - background-color: var(--primary-text-color); - border: solid 1px #666; - box-sizing: border-box; - transform-origin: left top; - z-index: 4; - pointer-events: none; - - &[data-size="60"] { - width: 60px; - height: 60px; - } - - &[data-size="30"] { - width: 30px; - height: 30px; - } - - &[data-size="20"] { - width: 20px; - height: 20px; - } - - &.end { - border-radius: 0% 50% 50% 50%; - } - - &.start { - border-radius: 50% 0 50% 50%; - } - - &.single { - transform: rotate(45deg); - border-radius: 0 50% 50% 50%; - } -} - .cursor-menu { position: absolute; top: 0; diff --git a/src/pages/about/about.js b/src/pages/about/about.js index cb6a6b5c4..374e564c3 100644 --- a/src/pages/about/about.js +++ b/src/pages/about/about.js @@ -4,8 +4,8 @@ import Page from "components/page"; import Reactive from "html-tag-js/reactive"; import actionStack from "lib/actionStack"; import constants from "lib/constants"; +import { hideAd } from "lib/startAd"; import helpers from "utils/helpers"; - export default function AboutInclude() { const $page = Page(strings.about.capitalize()); const webviewVersionName = Reactive("N/A"); @@ -115,7 +115,7 @@ export default function AboutInclude() { $page.onhide = function () { actionStack.remove("about"); - helpers.hideAd(); + hideAd(); }; app.append($page); diff --git a/src/pages/adRewards/adRewards.scss b/src/pages/adRewards/adRewards.scss new file mode 100644 index 000000000..977d5c551 --- /dev/null +++ b/src/pages/adRewards/adRewards.scss @@ -0,0 +1,249 @@ +#ad-rewards-page { + padding: 16px; + max-width: 600px; + margin: 0 auto; + color: var(--primary-text-color); + + .reward-hero { + margin-bottom: 20px; + + .hero-copy { + margin-bottom: 16px; + + .eyebrow { + display: inline-flex; + align-items: center; + padding: 4px 10px; + border-radius: 6px; + background: color-mix(in srgb, + var(--active-color) 15%, + transparent); + color: var(--active-color); + font-size: 0.72rem; + font-weight: 600; + letter-spacing: 0.05em; + text-transform: uppercase; + } + + h1 { + margin: 10px 0 6px; + font-size: 1.2rem; + font-weight: 700; + line-height: 1.3; + } + + p { + margin: 0; + font-size: 0.85rem; + color: color-mix(in srgb, + var(--primary-text-color) 60%, + transparent); + line-height: 1.5; + } + } + + .reward-status { + padding: 12px 14px; + display: flex; + align-items: center; + gap: 12px; + flex-wrap: wrap; + background: color-mix(in srgb, + var(--primary-color) 10%, + transparent); + border-radius: 10px; + border: 1px solid var(--border-color); + transition: all 0.2s ease; + + &.is-active { + border-color: color-mix(in srgb, + var(--active-color) 50%, + transparent); + background: color-mix(in srgb, + var(--active-color) 10%, + transparent); + } + + .status-label { + font-size: 0.72rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.04em; + color: color-mix(in srgb, + var(--primary-text-color) 55%, + transparent); + } + + .status-value { + font-size: 0.9rem; + font-weight: 700; + flex: 1; + min-width: 0; + } + + .status-note { + font-size: 0.78rem; + color: color-mix(in srgb, + var(--primary-text-color) 55%, + transparent); + width: 100%; + } + + .status-subnote { + font-size: 0.74rem; + color: color-mix(in srgb, + var(--primary-text-color) 50%, + transparent); + width: 100%; + } + } + } + + .reward-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 10px; + margin-bottom: 20px; + } + + .reward-offer { + background: color-mix(in srgb, + var(--popup-background-color) 20%, + transparent); + border-radius: 12px; + border: 1px solid var(--border-color); + padding: 14px; + display: flex; + flex-direction: column; + gap: 8px; + transition: border-color 0.2s ease; + + &.is-focus { + border-color: color-mix(in srgb, + var(--link-text-color) 50%, + transparent); + } + + &.is-upgrade { + border-color: color-mix(in srgb, + var(--button-background-color) 40%, + transparent); + } + + .offer-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 8px; + } + + .offer-kicker { + font-size: 0.68rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.04em; + color: color-mix(in srgb, + var(--primary-text-color) 55%, + transparent); + } + + h2 { + margin: 3px 0 0; + font-size: 0.88rem; + font-weight: 600; + } + + .offer-duration { + padding: 3px 8px; + border-radius: 6px; + background: var(--primary-color); + color: var(--primary-text-color); + font-size: 0.68rem; + font-weight: 600; + white-space: nowrap; + align-self: flex-start; + } + + p { + margin: 0; + color: color-mix(in srgb, + var(--primary-text-color) 60%, + transparent); + line-height: 1.45; + font-size: 0.8rem; + flex: 1; + } + + .offer-limit { + font-size: 0.74rem; + line-height: 1.4; + color: color-mix(in srgb, + var(--primary-text-color) 55%, + transparent); + } + } + + .offer-action { + appearance: none; + border: 0; + border-radius: 8px; + padding: 9px 12px; + font: inherit; + font-size: 0.82rem; + font-weight: 600; + background: var(--button-background-color); + color: var(--button-text-color); + cursor: pointer; + transition: all 0.2s ease; + + &:active { + transform: translateY(1px); + opacity: 0.9; + } + + &:disabled { + opacity: 0.45; + cursor: not-allowed; + } + + &.secondary { + background: var(--primary-color); + color: var(--primary-text-color); + } + } + + .reward-notes { + display: grid; + gap: 10px; + + .note-card { + padding: 12px 14px; + border-left: 3px solid var(--active-color); + border-radius: 0 8px 8px 0; + background: color-mix(in srgb, + var(--primary-color) 8%, + transparent); + + h3 { + margin: 0 0 4px; + font-size: 0.82rem; + font-weight: 600; + } + + p { + margin: 0; + line-height: 1.45; + font-size: 0.78rem; + color: color-mix(in srgb, + var(--primary-text-color) 60%, + transparent); + } + } + } +} + +@media (max-width: 400px) { + #ad-rewards-page .reward-grid { + grid-template-columns: 1fr; + } +} diff --git a/src/pages/adRewards/index.js b/src/pages/adRewards/index.js new file mode 100644 index 000000000..fdf06d15e --- /dev/null +++ b/src/pages/adRewards/index.js @@ -0,0 +1,189 @@ +import "./adRewards.scss"; + +import Page from "components/page"; +import loader from "dialogs/loader"; +import actionStack from "lib/actionStack"; +import adRewards from "lib/adRewards"; +import removeAds from "lib/removeAds"; +import { hideAd } from "lib/startAd"; +import helpers from "utils/helpers"; + +let $rewardPage = null; + +export default function openAdRewardsPage() { + if ($rewardPage) { + $rewardPage.show?.(); + return $rewardPage; + } + + const $page = Page("Ad-free passes"); + + function render() { + const rewardState = adRewards.getState(); + const rewardedSupported = adRewards.isRewardedSupported(); + const unavailableReason = adRewards.getRewardedUnavailableReason(); + const offers = adRewards.getOffers(); + const isBusy = adRewards.isWatchingReward(); + const redemptionStatus = adRewards.canRedeemNow(); + const rewardDisabledReason = !rewardedSupported + ? unavailableReason + : !redemptionStatus.ok + ? redemptionStatus.reason + : ""; + + $page.body = ( +
      +
      +
      +
      Rewarded ads
      +

      Trade a short ad break for focused coding time.

      +

      + Unlock temporary ad-free time without leaving the free version. + When your pass expires, Acode will show a toast and add a + notification in-app. +

      +
      +
      +
      + {rewardState.isActive ? "Ad-free active" : "No active pass"} +
      +
      + {rewardState.isActive + ? adRewards.getRemainingLabel() + : "Watch a rewarded ad to start a pass"} +
      +
      + {rewardState.isActive + ? `Expires ${adRewards.getExpiryLabel()}` + : "Passes stack on top of any active rewarded time."} +
      +
      + {rewardState.redemptionsToday}/{rewardState.maxRedemptionsPerDay}{" "} + rewards used today +
      +
      +
      + +
      + {offers.map((offer) => ( +
      +
      +
      +
      + {offer.adsRequired} rewarded ad + {offer.adsRequired > 1 ? "s" : ""} +
      +

      {offer.title}

      +
      +
      {offer.durationLabel}
      +
      +

      {offer.description}

      + +
      + {rewardDisabledReason || + `${rewardState.remainingRedemptions} of ${rewardState.maxRedemptionsPerDay} rewards left today`} +
      +
      + ))} + +
      +
      +
      +
      Permanent option
      +

      Remove ads for good

      +
      +
      One purchase
      +
      +

      + If you use Acode daily, Pro still gives the cleanest experience. +

      + +
      +
      + +
      +
      +

      How it works

      +

      + Rewarded passes hide your banners and interstitials until the + timer ends. If you already have time left, new rewards extend the + expiry. +

      +
      +
      +

      Limits

      +

      + You can redeem up to {rewardState.maxRedemptionsPerDay} rewards + per day, and your active ad-free pass is capped at 10 hours. +

      +
      +
      +
      + ); + } + + async function purchaseRemoveAds() { + try { + loader.showTitleLoader(); + await removeAds(); + $page.hide(); + } catch (error) { + helpers.error(error); + } finally { + loader.removeTitleLoader(); + } + } + + async function watchOffer(offerId) { + try { + render(); + await adRewards.watchOffer(offerId); + } catch (error) { + helpers.error(error); + } finally { + render(); + } + } + + const unsubscribe = adRewards.onChange(() => { + if ($page.isConnected) { + render(); + } + }); + + $page.onhide = () => { + unsubscribe(); + actionStack.remove("ad-rewards"); + helpers.showAd(); + $rewardPage = null; + }; + + actionStack.push({ + id: "ad-rewards", + action: $page.hide, + }); + + hideAd(true); + render(); + app.append($page); + $rewardPage = $page; + + return $page; +} diff --git a/src/pages/changelog/changelog.js b/src/pages/changelog/changelog.js index 20dc31bf6..a5d981b2d 100644 --- a/src/pages/changelog/changelog.js +++ b/src/pages/changelog/changelog.js @@ -3,8 +3,10 @@ import fsOperation from "fileSystem"; import Contextmenu from "components/contextmenu"; import Page from "components/page"; import toast from "components/toast"; +import DOMPurify from "dompurify"; import Ref from "html-tag-js/ref"; import actionStack from "lib/actionStack"; +import { hideAd } from "lib/startAd"; import markdownIt from "markdown-it"; import markdownItFootnote from "markdown-it-footnote"; import markdownItTaskLists from "markdown-it-task-lists"; @@ -72,7 +74,7 @@ export default async function Changelog() { $page.onhide = function () { actionStack.remove("changelog"); - helpers.hideAd(); + hideAd(); }; actionStack.push({ @@ -164,7 +166,8 @@ export default async function Changelog() { md.use(markdownItTaskLists); md.use(markdownItFootnote); - body.innerHTML = md.render(processedText); + const renderedHtml = md.render(processedText); + body.innerHTML = DOMPurify.sanitize(renderedHtml); } function updateVersionSelector() { diff --git a/src/pages/customTheme/customTheme.js b/src/pages/customTheme/customTheme.js index a2bdd54ee..669e744eb 100644 --- a/src/pages/customTheme/customTheme.js +++ b/src/pages/customTheme/customTheme.js @@ -6,6 +6,7 @@ import confirm from "dialogs/confirm"; import select from "dialogs/select"; import actionStack from "lib/actionStack"; import settings from "lib/settings"; +import { hideAd } from "lib/startAd"; import ThemeBuilder from "theme/builder"; import themes from "theme/list"; import { isValidColor } from "utils/color/regex"; @@ -34,7 +35,7 @@ export default function CustomThemeInclude() { $page.onhide = () => { actionStack.remove("custom-theme"); - helpers.hideAd(); + hideAd(); }; $page.addEventListener("click", handleClick); @@ -55,7 +56,9 @@ export default function CustomThemeInclude() { ["dark", strings["dark"]], ]); applyTheme(); - } catch (error) {} + } catch (error) { + console.warn("Unable to update custom theme type.", error); + } return; } diff --git a/src/pages/fileBrowser/fileBrowser.js b/src/pages/fileBrowser/fileBrowser.js index f034f1c22..24408c007 100644 --- a/src/pages/fileBrowser/fileBrowser.js +++ b/src/pages/fileBrowser/fileBrowser.js @@ -20,6 +20,7 @@ import projects from "lib/projects"; import recents from "lib/recents"; import remoteStorage from "lib/remoteStorage"; import appSettings from "lib/settings"; +import { hideAd } from "lib/startAd"; import mimeTypes from "mime-types"; import mustache from "mustache"; import filesSettings from "settings/filesSettings"; @@ -62,7 +63,8 @@ function FileBrowserInclude(mode, info, doesOpenLast = true) { const state = []; /**@type {Array} */ const allStorages = []; - let storageList = JSON.parse(localStorage.storageList || "[]"); + let storageList = helpers.parseJSON(localStorage.storageList); + if (!Array.isArray(storageList)) storageList = []; let isSelectionMode = false; let selectedItems = new Set(); @@ -186,10 +188,6 @@ function FileBrowserInclude(mode, info, doesOpenLast = true) { onclick() { $page.hide(); - if (IS_FREE_VERSION && window.iad?.isLoaded()) { - window.iad.show(); - } - resolve({ type: "folder", ...currentDir, @@ -514,7 +512,7 @@ function FileBrowserInclude(mode, info, doesOpenLast = true) { $page.onhide = function () { hideSearchBar(); - helpers.hideAd(); + hideAd(); actionStack.clearFromMark(); actionStack.remove("filebrowser"); $content.removeEventListener("click", handleClick); @@ -1048,31 +1046,23 @@ function FileBrowserInclude(mode, info, doesOpenLast = true) { ); } - // Check for Terminal Home Directory storage try { - const isTerminalInstalled = await Terminal.isInstalled(); - if (typeof Terminal !== "undefined" && isTerminalInstalled) { - const isTerminalSupported = await Terminal.isSupported(); - - if (isTerminalSupported && isTerminalInstalled) { - const terminalHomeUrl = cordova.file.dataDirectory + "alpine/home"; - - // Check if this storage is not already in the list - const terminalStorageExists = allStorages.find( - (storage) => - storage.uuid === "terminal-home" || - storage.url === terminalHomeUrl, - ); + const terminalPublicUrl = cordova.file.dataDirectory + "public"; - if (!terminalStorageExists) { - util.pushFolder(allStorages, "Terminal Home", terminalHomeUrl, { - uuid: "terminal-home", - }); - } - } + // Check if this storage is not already in the list + const terminalPublicStorageExists = allStorages.find( + (storage) => + storage.uuid === "terminal-public" || + storage.url === terminalPublicUrl, + ); + + if (!terminalPublicStorageExists) { + util.pushFolder(allStorages, "Terminal Public", terminalPublicUrl, { + uuid: "terminal-public", + }); } - } catch (error) { - console.error("Error checking Terminal installation:", error); + } catch (err) { + console.error("Error while adding public directory", err); } try { @@ -1088,7 +1078,9 @@ function FileBrowserInclude(mode, info, doesOpenLast = true) { storageType: "sd", }); }); - } catch (err) {} + } catch (err) { + console.warn("Unable to list external storages.", err); + } storageList.forEach((storage) => { let url = storage.url || /**@deprecated */ storage["uri"]; @@ -1271,7 +1263,7 @@ function FileBrowserInclude(mode, info, doesOpenLast = true) { if (arg === "file") { newUrl = await helpers.createFileStructure(url, entryName); } - if (!newUrl) return; + if (!newUrl.created) return; return newUrl.uri; } diff --git a/src/pages/fontManager/fontManager.js b/src/pages/fontManager/fontManager.js index e132b90a4..cacc792d2 100644 --- a/src/pages/fontManager/fontManager.js +++ b/src/pages/fontManager/fontManager.js @@ -2,26 +2,38 @@ import "./style.scss"; import fsOperation from "fileSystem"; import Page from "components/page"; import searchBar from "components/searchbar"; +import { DEFAULT_TERMINAL_SETTINGS } from "components/terminal"; import toast from "components/toast"; -import alert from "dialogs/alert"; import box from "dialogs/box"; import confirm from "dialogs/confirm"; import loader from "dialogs/loader"; import prompt from "dialogs/prompt"; +import select from "dialogs/select"; import Ref from "html-tag-js/ref"; import actionStack from "lib/actionStack"; import fonts from "lib/fonts"; import appSettings from "lib/settings"; +import { hideAd } from "lib/startAd"; import FileBrowser from "pages/fileBrowser"; +import { updateActiveTerminals } from "settings/terminalSettings"; import helpers from "utils/helpers"; import Url from "utils/Url"; export default function fontManager() { - const defaultFont = "Roboto Mono"; + const defaultEditorFont = "Roboto Mono"; + const defaultTerminalFont = DEFAULT_TERMINAL_SETTINGS.fontFamily; + const defaultAppFontLabel = strings.default || "Default"; + const targetLabels = { + app: "App", + editor: "Editor", + terminal: "Terminal", + all: "All", + }; const $page = Page(strings.fonts?.capitalize()); const $search = ; const $addFont = ; const list = Ref(); + $page.classList.add("font-manager-page"); actionStack.push({ id: "fontManager", @@ -32,11 +44,11 @@ export default function fontManager() { }); $page.onhide = () => { - helpers.hideAd(); + hideAd(); actionStack.remove("fontManager"); }; - $page.body =
      ; + $page.body =
      ; $page.querySelector("header").append($search, $addFont); @@ -48,21 +60,35 @@ export default function fontManager() { function renderFonts() { const fontNames = fonts.getNames(); - const currentFont = appSettings.value.editorFont || "Roboto Mono"; let $currentItem; + const content = []; + const defaultAppliedTargets = getAppliedTargets(""); + + const $defaultItem = ( + chooseApplyTarget("")} + /> + ); + if (defaultAppliedTargets.length) $currentItem = $defaultItem; + content.push($defaultItem); - const content = fontNames.map((fontName) => { - const isCurrent = fontName === currentFont; + fontNames.forEach((fontName) => { + const appliedTargets = getAppliedTargets(fontName); const $item = ( selectFont(fontName)} + appliedTargets={appliedTargets} + deletable={fonts.isCustom(fontName)} + onSelect={() => chooseApplyTarget(fontName)} onDelete={() => deleteFont(fontName)} /> ); - if (isCurrent) $currentItem = $item; - return $item; + if (!$currentItem && appliedTargets.length) $currentItem = $item; + content.push($item); }); list.el.content = content; @@ -204,21 +230,131 @@ export default function fontManager() { }); } - async function selectFont(fontName) { + function getAppliedTargets(fontName) { + const appFont = appSettings.value.appFont || ""; + const editorFont = appSettings.value.editorFont || defaultEditorFont; + const terminalFont = + appSettings.value.terminalSettings?.fontFamily || defaultTerminalFont; + const appliedTargets = []; + + if (fontName) { + if (appFont === fontName) appliedTargets.push("app"); + if (editorFont === fontName) appliedTargets.push("editor"); + if (terminalFont === fontName) appliedTargets.push("terminal"); + return appliedTargets; + } + + if (!appFont) appliedTargets.push("app"); + return appliedTargets; + } + + function getTargetOptionText(fontName, target) { + if (fontName) { + return `Apply to ${targetLabels[target]}`; + } + + switch (target) { + case "app": + return "Reset App font"; + case "editor": + return "Reset Editor font"; + case "terminal": + return "Reset Terminal font"; + case "all": + return "Reset all fonts"; + default: + return "Reset font"; + } + } + + async function chooseApplyTarget(fontName) { + const title = fontName + ? `Apply "${fontName}"` + : `${defaultAppFontLabel} font`; + + const target = await select( + title, + [ + ["app", getTargetOptionText(fontName, "app")], + ["editor", getTargetOptionText(fontName, "editor")], + ["terminal", getTargetOptionText(fontName, "terminal")], + ["all", getTargetOptionText(fontName, "all")], + ], + true, + ).catch(() => null); + + if (!target) return; + + await applyFontToTarget(fontName, target); + } + + async function applyFontToTarget(fontName, target) { try { - await fonts.setFont(fontName); - appSettings.update({ editorFont: fontName }, false); - toast(`Font changed to "${fontName}"`); - renderFonts(); // Refresh to update current selection + const nextEditorFont = fontName || defaultEditorFont; + const nextTerminalFont = fontName || defaultTerminalFont; + const nextTerminalSettings = { + ...(appSettings.value.terminalSettings || DEFAULT_TERMINAL_SETTINGS), + }; + const nextSettings = {}; + + switch (target) { + case "app": + await fonts.setAppFont(fontName); + nextSettings.appFont = fontName; + break; + + case "editor": + await fonts.setEditorFont(nextEditorFont); + nextSettings.editorFont = nextEditorFont; + break; + + case "terminal": + nextTerminalSettings.fontFamily = nextTerminalFont; + nextSettings.terminalSettings = nextTerminalSettings; + await updateActiveTerminals("fontFamily", nextTerminalFont); + break; + + case "all": + await fonts.setAppFont(fontName); + await fonts.setEditorFont(nextEditorFont); + nextTerminalSettings.fontFamily = nextTerminalFont; + await updateActiveTerminals("fontFamily", nextTerminalFont); + nextSettings.appFont = fontName; + nextSettings.editorFont = nextEditorFont; + nextSettings.terminalSettings = nextTerminalSettings; + break; + + default: + return; + } + + await appSettings.update(nextSettings, false); + toast(getApplyToast(fontName, target)); + renderFonts(); } catch (error) { - toast("Failed to set font: " + error.message); + toast("Failed to apply font: " + error.message); + } + } + + function getApplyToast(fontName, target) { + const label = fontName ? `"${fontName}"` : "default font"; + switch (target) { + case "app": + return `${label} applied to app`; + case "editor": + return `${label} applied to editor`; + case "terminal": + return `${label} applied to terminal`; + case "all": + return `${label} applied to app, editor, and terminal`; + default: + return "Font applied"; } } async function deleteFont(fontName) { // Don't allow deleting default fonts - const defaultFonts = ["Fira Code", "Roboto Mono", "MesloLGS NF Regular"]; - if (defaultFonts.includes(fontName)) { + if (!fonts.isCustom(fontName)) { toast("Cannot delete default fonts"); return; } @@ -230,9 +366,14 @@ export default function fontManager() { if (shouldDelete) { try { - // Check if we're deleting the currently active font - const currentFont = appSettings.value.editorFont || "Roboto Mono"; - const isCurrentFont = fontName === currentFont; + const currentEditorFont = + appSettings.value.editorFont || defaultEditorFont; + const currentAppFont = appSettings.value.appFont || ""; + const currentTerminalFont = + appSettings.value.terminalSettings?.fontFamily || defaultTerminalFont; + const isCurrentEditorFont = fontName === currentEditorFont; + const isCurrentAppFont = fontName === currentAppFont; + const isCurrentTerminalFont = fontName === currentTerminalFont; // Remove from fonts collection fonts.remove(fontName); @@ -247,11 +388,46 @@ export default function fontManager() { await fs.delete(); } - // If we deleted the current font, switch to default font (Roboto Mono) - if (isCurrentFont) { - await fonts.setFont(defaultFont); - appSettings.update({ editorFont: defaultFont }, false); - toast(`Font "${fontName}" deleted, switched to ${defaultFont}`); + if (isCurrentAppFont) { + await fonts.setAppFont(""); + } + + if (isCurrentEditorFont) { + await fonts.setEditorFont(defaultEditorFont); + } + + if (isCurrentTerminalFont) { + await updateActiveTerminals("fontFamily", defaultTerminalFont); + } + + if (isCurrentAppFont || isCurrentEditorFont || isCurrentTerminalFont) { + await appSettings.update( + { + ...(isCurrentAppFont ? { appFont: "" } : {}), + ...(isCurrentEditorFont ? { editorFont: defaultEditorFont } : {}), + ...(isCurrentTerminalFont + ? { + terminalSettings: { + ...(appSettings.value.terminalSettings || + DEFAULT_TERMINAL_SETTINGS), + fontFamily: defaultTerminalFont, + }, + } + : {}), + }, + false, + ); + } + + if (isCurrentAppFont || isCurrentEditorFont || isCurrentTerminalFont) { + const restoredTargets = [ + isCurrentAppFont ? "app" : null, + isCurrentEditorFont ? "editor" : null, + isCurrentTerminalFont ? "terminal" : null, + ].filter(Boolean); + toast( + `Font "${fontName}" deleted, restored ${restoredTargets.join(", ")} font defaults`, + ); } else { toast(`Font "${fontName}" deleted`); } @@ -259,20 +435,48 @@ export default function fontManager() { renderFonts(); } catch (error) { // Font removed from collection even if file deletion fails - const currentFont = appSettings.value.editorFont || "Roboto Mono"; - const isCurrentFont = fontName === currentFont; - - // If we deleted the current font, switch to default font (Roboto Mono) - if (isCurrentFont) { + const currentEditorFont = + appSettings.value.editorFont || defaultEditorFont; + const currentAppFont = appSettings.value.appFont || ""; + const currentTerminalFont = + appSettings.value.terminalSettings?.fontFamily || defaultTerminalFont; + const isCurrentEditorFont = fontName === currentEditorFont; + const isCurrentAppFont = fontName === currentAppFont; + const isCurrentTerminalFont = fontName === currentTerminalFont; + + if (isCurrentAppFont || isCurrentEditorFont || isCurrentTerminalFont) { try { - await fonts.setFont(defaultFont); - appSettings.update({ editorFont: defaultFont }, false); - toast( - `Font "${fontName}" deleted, switched to ${defaultFont} (file cleanup may have failed)`, + if (isCurrentAppFont) { + await fonts.setAppFont(""); + } + if (isCurrentEditorFont) { + await fonts.setEditorFont(defaultEditorFont); + } + if (isCurrentTerminalFont) { + await updateActiveTerminals("fontFamily", defaultTerminalFont); + } + await appSettings.update( + { + ...(isCurrentAppFont ? { appFont: "" } : {}), + ...(isCurrentEditorFont + ? { editorFont: defaultEditorFont } + : {}), + ...(isCurrentTerminalFont + ? { + terminalSettings: { + ...(appSettings.value.terminalSettings || + DEFAULT_TERMINAL_SETTINGS), + fontFamily: defaultTerminalFont, + }, + } + : {}), + }, + false, ); + toast(`Font "${fontName}" deleted (file cleanup may have failed)`); } catch (setFontError) { toast( - `Font "${fontName}" deleted, but failed to switch to ${defaultFont}`, + `Font "${fontName}" deleted, but failed to restore a fallback font`, ); } } else { @@ -284,36 +488,66 @@ export default function fontManager() { } } - function FontItem({ name, isCurrent, onSelect, onDelete }) { - const defaultFonts = ["Fira Code", "Roboto Mono", "MesloLGS NF Regular"]; - const isDefault = defaultFonts.includes(name); + function FontItem({ + name, + appliedTargets, + subtitle, + deletable = true, + onSelect, + onDelete, + }) { + const isBuiltIn = name !== defaultAppFontLabel && !fonts.isCustom(name); + const isApplied = appliedTargets.length > 0; + const resolvedSubtitle = + subtitle || + (isApplied + ? "Applied font" + : isBuiltIn + ? "Built-in font" + : "Custom font"); const $item = (
      {name}
      + {resolvedSubtitle}
      - + {appliedTargets.length || deletable ? ( +
      + {appliedTargets.map((target) => ( + + {targetLabels[target]} + + ))} + {deletable ? ( + + ) : null} +
      + ) : null}
      ); $item.onclick = (e) => { - const action = e.target.dataset.action; - if (action === "delete" && !isDefault) { + const $target = e.target; + const action = $target.dataset.action; + if (action === "delete" && deletable) { e.stopPropagation(); onDelete(); } else if ( - !e.target.classList.contains("icon") || + !$target.classList.contains("font-manager-action") || action === "select-font" ) { onSelect(); diff --git a/src/pages/fontManager/style.scss b/src/pages/fontManager/style.scss index 670d8ec3b..d67e1b0ab 100644 --- a/src/pages/fontManager/style.scss +++ b/src/pages/fontManager/style.scss @@ -1,63 +1,182 @@ -.main.list .list-item.current-font { - background: var(--active-color-5, rgba(51, 153, 255, 0.1)) !important; - border-left: 3px solid var(--active-color) !important; +wc-page.font-manager-page { + background: var(--secondary-color); - .text { - font-weight: 600 !important; - } + .font-manager-list { + display: flex; + flex-direction: column; + width: 100%; + max-width: 48rem; + margin: 0 auto; + padding: 0.5rem 0 5.5rem; + box-sizing: border-box; + background: var(--secondary-color); + } - .icon:first-child { - color: var(--active-color) !important; - } -} + .font-manager-list > .list-item { + display: flex; + width: 100%; + min-height: 4.1rem; + margin: 0; + padding: 0.75rem 1rem; + box-sizing: border-box; + align-items: center; + gap: 0.85rem; + background: transparent; + cursor: pointer; + transition: background-color 140ms ease; + text-decoration: none; + + &:not(:last-of-type) { + border-bottom: 1px solid var(--border-color); + border-bottom: 1px solid color-mix(in srgb, var(--border-color), transparent 20%); + } + + &:focus, + &:active { + background: color-mix( + in srgb, + var(--secondary-color), + var(--popup-text-color) 4% + ); + } + + > .icon:first-child { + display: flex; + align-items: center; + justify-content: center; + width: 1.4rem; + min-width: 1.4rem; + height: 1.4rem; + font-size: 1.15rem; + color: color-mix(in srgb, var(--secondary-text-color), transparent 18%); + } + + > .container { + flex: 1; + display: flex; + flex-direction: column; + min-width: 0; + overflow: visible; + gap: 0.24rem; + padding-right: 0.6rem; + + > .text { + display: flex; + align-items: center; + min-width: 0; + font-size: 1rem; + line-height: 1.2; + font-weight: 600; + color: var(--popup-text-color); + } + + > .value { + display: block; + font-size: 0.82rem; + line-height: 1.35; + color: color-mix(in srgb, var(--secondary-text-color), transparent 30%); + text-transform: none; + white-space: normal; + overflow: visible; + overflow-wrap: anywhere; + opacity: 1; + } + } + + > .setting-tail { + display: flex; + align-items: center; + justify-content: flex-end; + flex-shrink: 0; + min-height: 1.65rem; + gap: 0.65rem; + margin-left: 0.9rem; + align-self: center; + } + } + + .font-manager-list > .list-item.current-font { + background: color-mix(in srgb, var(--secondary-color), var(--active-color) 8%); + } + + .font-manager-list > .list-item.current-font:focus, + .font-manager-list > .list-item.current-font:active { + background: color-mix(in srgb, var(--secondary-color), var(--active-color) 12%); + } -.font-manager { - .list-item { - .container { - flex: 1; - } - - .icon { - - &.visibility, - &.delete { - opacity: 0.6; - transition: opacity 0.2s ease; - cursor: pointer; - - &:hover { - opacity: 1; - } - } - - &.delete { - &:hover:not(.disabled) { - color: var(--error-text-color); - } - - &.disabled { - opacity: 0.3; - cursor: not-allowed; - - &:hover { - opacity: 0.3; - } - } - } - } - } + .font-manager-list > .list-item.current-font > .icon:first-child { + color: color-mix(in srgb, var(--active-color), transparent 10%); + } + + .font-manager-list > .list-item.current-font > .container > .text { + font-weight: 700; + } + + @media screen and (min-width: 768px) { + .font-manager-list { + padding-left: 0.5rem; + padding-right: 0.5rem; + } + } + + .font-manager-badge { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0.16rem 0.48rem; + border-radius: 999px; + font-size: 0.82rem; + font-weight: 600; + line-height: 1.2; + background: color-mix(in srgb, var(--secondary-color), var(--active-color) 10%); + color: color-mix(in srgb, var(--active-color), transparent 12%); + } + + .font-manager-badge-editor { + background: color-mix(in srgb, var(--secondary-color), #4ca3ff 14%); + color: color-mix(in srgb, #4ca3ff, white 4%); + } + + .font-manager-badge-terminal { + background: color-mix(in srgb, var(--secondary-color), #21b36b 14%); + color: color-mix(in srgb, #21b36b, white 4%); + } + + .font-manager-badge-app { + background: color-mix(in srgb, var(--secondary-color), var(--active-color) 12%); + color: color-mix(in srgb, var(--active-color), transparent 14%); + } + + .font-manager-action { + display: inline-flex; + align-items: center; + justify-content: center; + width: 1.2rem; + min-width: 1.2rem; + height: 1.2rem; + font-size: 1.1rem; + line-height: 1; + color: color-mix(in srgb, var(--secondary-text-color), transparent 28%); + cursor: pointer; + transition: color 140ms ease; + + &:hover, + &:active { + color: var(--error-text-color); + } + } } .prompt.box { - .font-css-editor { - &.input { - border-bottom: 1px solid var(--border-color); - min-height: 120px; - margin-top: 5px; - - &:focus { - border-bottom-color: var(--active-color); - } - } - } -} \ No newline at end of file + .font-css-editor { + &.input { + border-bottom: 1px solid var(--border-color); + min-height: 120px; + margin-top: 5px; + + &:focus { + border-bottom-color: var(--active-color); + } + } + } +} diff --git a/src/pages/markdownPreview/index.js b/src/pages/markdownPreview/index.js new file mode 100644 index 000000000..bfcfd62f2 --- /dev/null +++ b/src/pages/markdownPreview/index.js @@ -0,0 +1,564 @@ +import "./style.scss"; + +import fsOperation from "fileSystem"; +import Page from "components/page"; +import DOMPurify from "dompurify"; +import actionStack from "lib/actionStack"; +import openFile from "lib/openFile"; +import { highlightCodeBlock, initHighlighting } from "utils/codeHighlight"; +import { + getMarkdownBaseUri, + hasMathContent, + isExternalLink, + isMarkdownPath, + renderMarkdown, + resolveMarkdownTarget, +} from "./renderer"; + +let previewController = null; +let mermaidModulePromise = null; +let mermaidThemeSignature = ""; +let mathStylesPromise = null; + +function getThemeColor(name, fallback) { + const value = getComputedStyle(document.documentElement) + .getPropertyValue(name) + .trim(); + return value || fallback; +} + +function isDarkColor(color) { + const normalized = color.replace(/\s+/g, ""); + const match = normalized.match(/^#([0-9a-f]{6})$/i); + if (!match) return true; + + const value = match[1]; + const r = Number.parseInt(value.slice(0, 2), 16); + const g = Number.parseInt(value.slice(2, 4), 16); + const b = Number.parseInt(value.slice(4, 6), 16); + const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255; + return luminance < 0.5; +} + +function escapeHtml(text) { + return String(text ?? "") + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); +} + +function getTargetElement(container, targetId) { + const decodedId = decodeURIComponent(targetId || ""); + if (!decodedId) return null; + + const elements = container.querySelectorAll("[id], [name]"); + return ( + Array.from(elements).find( + (element) => + element.getAttribute("id") === decodedId || + element.getAttribute("name") === decodedId, + ) || null + ); +} + +function getOffsetTopWithinContainer(target, container) { + let top = 0; + let element = target; + + while (element && element !== container) { + top += element.offsetTop || 0; + element = element.offsetParent; + } + + return top; +} + +async function getMermaid() { + if (!mermaidModulePromise) { + mermaidModulePromise = import("mermaid") + .then(({ default: mermaid }) => mermaid) + .catch((error) => { + mermaidModulePromise = null; + throw error; + }); + } + + return mermaidModulePromise; +} + +async function ensureMathStyles() { + if (!mathStylesPromise) { + mathStylesPromise = Promise.all([ + import("katex/dist/katex.min.css"), + import("markdown-it-texmath/css/texmath.css"), + ]).catch((error) => { + mathStylesPromise = null; + throw error; + }); + } + + return mathStylesPromise; +} + +function getMermaidThemeConfig() { + const backgroundColor = getThemeColor("--background-color", "#1e1e1e"); + const panelColor = getThemeColor("--popup-background-color", "#2a2f3a"); + const borderColor = getThemeColor("--border-color", "#4a4f5a"); + const primaryTextColor = getThemeColor("--primary-text-color", "#f5f5f5"); + const accentColor = getThemeColor("--link-text-color", "#4ba3ff"); + const activeColor = getThemeColor("--active-color", accentColor); + + return { + startOnLoad: false, + securityLevel: "strict", + htmlLabels: false, + theme: "base", + flowchart: { + htmlLabels: false, + }, + themeVariables: { + darkMode: isDarkColor(backgroundColor), + background: backgroundColor, + mainBkg: panelColor, + primaryColor: panelColor, + mainContrastColor: primaryTextColor, + textColor: primaryTextColor, + primaryTextColor, + primaryBorderColor: borderColor, + lineColor: primaryTextColor, + secondaryColor: accentColor, + secondaryBorderColor: borderColor, + secondaryTextColor: primaryTextColor, + tertiaryColor: backgroundColor, + tertiaryBorderColor: borderColor, + tertiaryTextColor: primaryTextColor, + clusterBkg: panelColor, + clusterBorder: borderColor, + nodeBorder: borderColor, + nodeTextColor: primaryTextColor, + titleColor: primaryTextColor, + defaultLinkColor: activeColor, + actorTextColor: primaryTextColor, + labelTextColor: primaryTextColor, + loopTextColor: primaryTextColor, + noteTextColor: primaryTextColor, + sectionBkgColor: panelColor, + sectionBkgColor2: backgroundColor, + sectionTitleColor: primaryTextColor, + sequenceNumberColor: primaryTextColor, + signalTextColor: primaryTextColor, + taskTextColor: primaryTextColor, + taskTextDarkColor: primaryTextColor, + taskTextOutsideColor: primaryTextColor, + edgeLabelBackground: backgroundColor, + pieTitleTextColor: primaryTextColor, + pieLegendTextColor: primaryTextColor, + pieSectionTextColor: primaryTextColor, + git0: panelColor, + git1: backgroundColor, + git2: accentColor, + git3: activeColor, + }, + }; +} + +function initializeMermaid(mermaid) { + const config = getMermaidThemeConfig(); + const signature = JSON.stringify(config); + if (signature === mermaidThemeSignature) return; + mermaid.initialize(config); + mermaidThemeSignature = signature; +} + +async function copyText(text) { + if (cordova?.plugins?.clipboard) { + cordova.plugins.clipboard.copy(text); + return; + } + + if (navigator.clipboard?.writeText) { + await navigator.clipboard.writeText(text); + return; + } + + throw new Error("Clipboard API unavailable"); +} + +async function fileToObjectUrl(file) { + const fs = fsOperation(file); + const fileInfo = await fs.stat(); + const binData = await fs.readFile(); + return URL.createObjectURL( + new Blob([binData], { type: fileInfo.mime || "application/octet-stream" }), + ); +} + +function revokeObjectUrls(urls) { + urls.forEach((url) => { + try { + URL.revokeObjectURL(url); + } catch (error) { + console.warn("Failed to revoke object URL", error); + } + }); +} + +async function resolveRenderedImages(container, file) { + const baseUri = getMarkdownBaseUri(file); + const objectUrls = []; + const images = Array.from(container.querySelectorAll("img[src]")); + + images.forEach((image) => { + const src = image.getAttribute("src"); + if (!src || src.startsWith("data:") || src.startsWith("blob:")) return; + if (src.startsWith("#") || isExternalLink(src)) return; + if (!image.hasAttribute("data-markdown-local-src")) { + image.setAttribute( + "data-markdown-local-src", + resolveMarkdownTarget(src, baseUri), + ); + } + }); + + await Promise.all( + images.map(async (image) => { + const resolvedPath = image.getAttribute("data-markdown-local-src"); + if (!resolvedPath) return; + + try { + const objectUrl = await fileToObjectUrl(resolvedPath); + + image.setAttribute("src", objectUrl); + image.setAttribute("data-source-uri", resolvedPath); + image.setAttribute("loading", "lazy"); + image.setAttribute("decoding", "async"); + image.classList.add("markdown-image"); + objectUrls.push(objectUrl); + } catch (error) { + console.warn("Failed to resolve markdown image:", resolvedPath, error); + } + }), + ); + + return objectUrls; +} + +function createMarkdownPreview(file) { + const $page = Page(file.filename); + const $content =
      ; + $page.body = $content; + app.append($page); + + const previewState = { + page: $page, + file, + content: $content, + renderVersion: 0, + objectUrls: [], + pendingHash: "", + disposed: false, + }; + + const removeAction = () => actionStack.remove("markdown-preview"); + + actionStack.push({ + id: "markdown-preview", + action: () => $page.hide(), + }); + + $page.onhide = () => { + removeAction(); + dispose(); + }; + + const onFileChanged = (changedFile) => { + if (changedFile?.id !== previewState.file?.id) return; + void render(); + }; + + const onFileRenamed = (renamedFile) => { + if (renamedFile?.id !== previewState.file?.id) return; + previewState.file = renamedFile; + $page.settitle(renamedFile.filename); + void render(); + }; + + const onFileRemoved = (removedFile) => { + if (removedFile?.id !== previewState.file?.id) return; + if ($page.isConnected) { + $page.hide(); + } else { + dispose(); + } + }; + + previewState.content.addEventListener("click", onContentClick, true); + editorManager.on("file-content-changed", onFileChanged); + editorManager.on("rename-file", onFileRenamed); + editorManager.on("remove-file", onFileRemoved); + initHighlighting(); + + async function onContentClick(event) { + const link = event.target.closest("a[href]"); + if (!link) return; + + const originalHref = link.getAttribute("href") || ""; + const resolvedHref = + link.getAttribute("data-resolved-href") || + resolveMarkdownTarget( + originalHref, + getMarkdownBaseUri(previewState.file), + ); + event.preventDefault(); + event.stopPropagation(); + + if (originalHref.startsWith("#")) { + scrollToHash(originalHref.slice(1)); + return; + } + + if (isExternalLink(originalHref)) { + system.openInBrowser(originalHref); + return; + } + + const hashIndex = resolvedHref.indexOf("#"); + const targetPath = + hashIndex === -1 ? resolvedHref : resolvedHref.slice(0, hashIndex); + const targetHash = + hashIndex === -1 ? "" : resolvedHref.slice(hashIndex + 1); + + if (!targetPath && targetHash) { + scrollToHash(targetHash); + return; + } + + if (isMarkdownPath(resolvedHref)) { + await openFile(targetPath, { render: true }); + const nextFile = + editorManager.getFile(targetPath, "uri") || editorManager.activeFile; + if (nextFile) { + await bind(nextFile, targetHash); + } + return; + } + + $page.hide(); + await openFile(targetPath, { render: true }); + } + + function scrollToHash(targetId) { + const target = getTargetElement(previewState.content, targetId); + if (!target) return; + + const topOffset = 12; + const top = + getOffsetTopWithinContainer(target, previewState.content) - topOffset; + + previewState.content.scrollTo({ + top: Math.max(0, top), + behavior: "smooth", + }); + } + + async function enhanceCodeBlocks(version) { + const codeBlocks = Array.from(previewState.content.querySelectorAll("pre")); + + await Promise.all( + codeBlocks.map(async (pre) => { + const codeElement = pre.querySelector("code"); + if (!codeElement || codeElement.closest(".mermaid-error")) return; + + const language = + codeElement.dataset.language || + codeElement.className.match(/language-(\S+)/)?.[1]; + if (!language) return; + + const originalCode = codeElement.textContent || ""; + codeElement.classList.add("cm-highlighted"); + + const highlighted = await highlightCodeBlock(originalCode, language); + if ( + previewState.disposed || + version !== previewState.renderVersion || + !codeElement.isConnected + ) { + return; + } + + if (highlighted && highlighted !== originalCode) { + codeElement.innerHTML = DOMPurify.sanitize(highlighted, { + ALLOWED_TAGS: ["span"], + ALLOWED_ATTR: ["class"], + }); + } + }), + ); + + if (previewState.disposed || version !== previewState.renderVersion) return; + + codeBlocks.forEach((pre) => { + if (pre.querySelector(".copy-button")) return; + + pre.style.position = "relative"; + + const copyButton = document.createElement("button"); + copyButton.className = "copy-button"; + copyButton.textContent = "Copy"; + copyButton.addEventListener("click", async (event) => { + event.preventDefault(); + event.stopPropagation(); + + try { + const code = pre.querySelector("code")?.textContent || ""; + await copyText(code); + copyButton.textContent = "Copied!"; + setTimeout(() => { + if (copyButton.isConnected) copyButton.textContent = "Copy"; + }, 2000); + } catch (error) { + console.warn("Failed to copy markdown code block", error); + copyButton.textContent = "Failed to copy"; + setTimeout(() => { + if (copyButton.isConnected) copyButton.textContent = "Copy"; + }, 2000); + } + }); + + pre.append(copyButton); + }); + } + + async function renderMermaidBlocks(version) { + const mermaidBlocks = Array.from( + previewState.content.querySelectorAll(".mermaid"), + ); + if (!mermaidBlocks.length) return; + + const mermaid = await getMermaid(); + if (previewState.disposed || version !== previewState.renderVersion) return; + initializeMermaid(mermaid); + let index = 0; + await Promise.all( + mermaidBlocks.map(async (block) => { + const source = block.textContent || ""; + const id = `acode-markdown-mermaid-${Date.now()}-${version}-${index++}`; + + try { + const { svg, bindFunctions } = await mermaid.render(id, source); + if ( + previewState.disposed || + version !== previewState.renderVersion || + !block.isConnected + ) { + return; + } + + const sanitizedSvg = DOMPurify.sanitize(svg, { + USE_PROFILES: { svg: true, svgFilters: true }, + ADD_TAGS: ["style"], + ADD_ATTR: ["data-et", "data-id", "data-node", "data-zoom", "class"], + }); + block.innerHTML = sanitizedSvg; + bindFunctions?.(block); + } catch (error) { + if (!block.isConnected) return; + block.classList.add("mermaid-error"); + block.innerHTML = ` +
      ${escapeHtml(source)}
      +
      ${escapeHtml(error?.message || "Failed to render Mermaid diagram.")}
      + `; + } + }), + ); + } + + async function render() { + const version = ++previewState.renderVersion; + previewState.page.settitle(previewState.file.filename); + revokeObjectUrls(previewState.objectUrls); + previewState.objectUrls = []; + + const markdownText = previewState.file.session?.doc?.toString?.() || ""; + const pendingRenderTasks = [ + renderMarkdown(markdownText, previewState.file), + ]; + if (hasMathContent(markdownText)) { + pendingRenderTasks.push(ensureMathStyles()); + } + const [{ html }] = await Promise.all(pendingRenderTasks); + + if (previewState.disposed || version !== previewState.renderVersion) { + return; + } + + previewState.content.innerHTML = DOMPurify.sanitize(html, { + FORBID_TAGS: ["style"], + ADD_TAGS: ["eq", "eqn"], + }); + + const objectUrls = await resolveRenderedImages( + previewState.content, + previewState.file, + ); + + if (previewState.disposed || version !== previewState.renderVersion) { + revokeObjectUrls(objectUrls); + return; + } + previewState.objectUrls = objectUrls; + await enhanceCodeBlocks(version); + await renderMermaidBlocks(version); + + if ( + previewState.pendingHash && + !previewState.disposed && + version === previewState.renderVersion + ) { + scrollToHash(previewState.pendingHash); + previewState.pendingHash = ""; + } + } + + async function bind(nextFile, hash = "") { + previewState.file = nextFile; + previewState.pendingHash = hash; + if (!previewState.page.isConnected) { + app.append(previewState.page); + } + await render(); + } + + function dispose() { + if (previewState.disposed) return; + previewState.disposed = true; + previewState.content.removeEventListener("click", onContentClick, true); + editorManager.off("file-content-changed", onFileChanged); + editorManager.off("rename-file", onFileRenamed); + editorManager.off("remove-file", onFileRemoved); + revokeObjectUrls(previewState.objectUrls); + if (previewController === controller) { + previewController = null; + } + } + + const controller = { + bind, + render, + page: $page, + }; + + return controller; +} + +export default async function openMarkdownPreview(file, hash = "") { + if (!file) return null; + + if (!previewController || previewController.page?.isConnected === false) { + previewController = createMarkdownPreview(file); + } + + await previewController.bind(file, hash); + return previewController.page; +} diff --git a/src/pages/markdownPreview/renderer.js b/src/pages/markdownPreview/renderer.js new file mode 100644 index 000000000..a6cc98837 --- /dev/null +++ b/src/pages/markdownPreview/renderer.js @@ -0,0 +1,254 @@ +import markdownIt from "markdown-it"; +import anchor from "markdown-it-anchor"; +import { full as markdownItEmoji } from "markdown-it-emoji"; +import markdownItFootnote from "markdown-it-footnote"; +import MarkdownItGitHubAlerts from "markdown-it-github-alerts"; +import markdownItTaskLists from "markdown-it-task-lists"; +import Url from "utils/Url"; + +const EXTERNAL_LINK_PATTERN = /^(?:[a-z][a-z0-9+.-]*:|\/\/)/i; +const IMAGE_PLACEHOLDER = + "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="; +const BLOCK_MATH_PATTERN = /(^|[^\\])\$\$[\s\S]+?\$\$/m; +const INLINE_MATH_PATTERN = + /(^|[^\\])\$(?!\s)(?:\\.|[^$\\\n])*(?:\\[{^_(]|[{^_])(?:\\.|[^$\\\n])*\$(?!\w)/m; +const BEGIN_END_MATH_PATTERN = + /\\begin\{(?:equation|align|gather|multline|eqnarray)\*?\}[\s\S]*?\\end\{(?:equation|align|gather|multline|eqnarray)\*?\}/m; + +let mathModulesPromise = null; +let mathMarkdownItPromise = null; + +function slugify(text) { + return text + .trim() + .toLowerCase() + .normalize("NFD") + .replace(/[\u0300-\u036f]/g, "") + .replace(/[^\p{L}\p{N}]+/gu, "-") + .replace(/^-+|-+$/g, ""); +} + +function escapeAttribute(value = "") { + return String(value) + .replace(/&/g, "&") + .replace(/"/g, """) + .replace(//g, ">"); +} + +function splitLinkTarget(target = "") { + const hashIndex = target.indexOf("#"); + if (hashIndex === -1) { + return { path: target, hash: "" }; + } + + return { + path: target.slice(0, hashIndex), + hash: target.slice(hashIndex), + }; +} + +export function isExternalLink(target = "") { + return EXTERNAL_LINK_PATTERN.test(String(target).trim()); +} + +export function isMarkdownPath(target = "") { + return /\.md(?:[#?].*)?$/i.test(String(target).trim()); +} + +export function getMarkdownBaseUri(file) { + if (!file) return ""; + if (file.uri) return file.uri; + if (file.location && file.filename) { + return Url.join(file.location, file.filename); + } + return file.location || ""; +} + +export function resolveMarkdownTarget(target = "", baseUri = "") { + if (!target || target.startsWith("#") || isExternalLink(target)) { + return target; + } + + const { path, hash } = splitLinkTarget(target); + if (!path) return target; + + let resolvedPath = path; + if (!path.startsWith("/")) { + const baseDir = baseUri ? Url.dirname(baseUri) : ""; + if (baseDir) { + resolvedPath = Url.join(baseDir, path); + } + } + + return `${resolvedPath}${hash}`; +} + +function resolveImageTarget(target = "", baseUri = "") { + if ( + !target || + target.startsWith("#") || + target.startsWith("data:") || + target.startsWith("blob:") || + isExternalLink(target) + ) { + return null; + } + + const { path } = splitLinkTarget(target); + if (!path) return null; + + let resolvedPath = path; + if (!path.startsWith("/")) { + const baseDir = baseUri ? Url.dirname(baseUri) : ""; + if (baseDir) { + resolvedPath = Url.join(baseDir, path); + } + } + + return resolvedPath; +} + +function collectTokens(tokens, callback) { + for (const token of tokens) { + callback(token); + if (Array.isArray(token.children) && token.children.length) { + collectTokens(token.children, callback); + } + } +} + +export function hasMathContent(text = "") { + return ( + BLOCK_MATH_PATTERN.test(text) || + INLINE_MATH_PATTERN.test(text) || + BEGIN_END_MATH_PATTERN.test(text) + ); +} + +async function getKatexAndTexmathModules() { + if (!mathModulesPromise) { + mathModulesPromise = Promise.all([ + import("katex").then(({ default: katex }) => katex), + import("markdown-it-texmath").then( + ({ default: markdownItTexmath }) => markdownItTexmath, + ), + ]).then(([katex, markdownItTexmath]) => ({ + katex, + markdownItTexmath, + })); + mathModulesPromise = mathModulesPromise.catch((error) => { + mathModulesPromise = null; + throw error; + }); + } + + return mathModulesPromise; +} + +function createMarkdownIt({ katex = null, markdownItTexmath = null } = {}) { + const md = markdownIt({ + html: true, + linkify: true, + }); + + md.use(MarkdownItGitHubAlerts) + .use(anchor, { slugify }) + .use(markdownItTaskLists) + .use(markdownItFootnote); + + if (katex && markdownItTexmath) { + md.use(markdownItTexmath, { + engine: katex, + delimiters: ["dollars", "beg_end"], + katexOptions: { + throwOnError: false, + strict: "ignore", + }, + }); + } + + md.use(markdownItEmoji); + + md.renderer.rules.image = (tokens, idx, options, env, self) => { + const token = tokens[idx]; + token.attrSet("loading", "lazy"); + token.attrSet("decoding", "async"); + + const src = token.attrGet("src"); + if (src && !src.startsWith("data:") && !isExternalLink(src)) { + const resolvedPath = resolveImageTarget(src, env.markdownBaseUri); + if (resolvedPath) { + token.attrSet("data-markdown-local-src", resolvedPath); + token.attrSet("src", IMAGE_PLACEHOLDER); + } + } + + return self.renderToken(tokens, idx, options); + }; + + md.renderer.rules.fence = (tokens, idx) => { + const token = tokens[idx]; + const info = (token.info || "").trim(); + const language = info.split(/\s+/)[0].toLowerCase(); + const escapedCode = md.utils.escapeHtml(token.content || ""); + + if (language === "mermaid") { + return `
      ${escapedCode}
      `; + } + + const className = language + ? ` class="language-${escapeAttribute(language)}"` + : ""; + const dataLanguage = ` data-language="${escapeAttribute(language)}"`; + + return `
      ${escapedCode}
      `; + }; + + return md; +} + +const baseMarkdownIt = createMarkdownIt(); + +async function getMarkdownIt(text = "") { + if (!hasMathContent(text)) { + return baseMarkdownIt; + } + + if (!mathMarkdownItPromise) { + mathMarkdownItPromise = getKatexAndTexmathModules() + .then(({ katex, markdownItTexmath }) => + createMarkdownIt({ katex, markdownItTexmath }), + ) + .catch((error) => { + mathMarkdownItPromise = null; + throw error; + }); + } + + return mathMarkdownItPromise; +} + +export async function renderMarkdown(text, file) { + const markdownText = text || ""; + const md = await getMarkdownIt(markdownText); + const env = {}; + env.markdownBaseUri = getMarkdownBaseUri(file); + const tokens = md.parse(markdownText, env); + + collectTokens(tokens, (token) => { + if (token.type === "link_open") { + const href = token.attrGet("href"); + if (!href || href.startsWith("#") || isExternalLink(href)) return; + + token.attrSet( + "data-resolved-href", + resolveMarkdownTarget(href, env.markdownBaseUri), + ); + } + }); + + return { + html: md.renderer.render(tokens, md.options, env), + }; +} diff --git a/src/pages/markdownPreview/style.scss b/src/pages/markdownPreview/style.scss new file mode 100644 index 000000000..53dfd9a99 --- /dev/null +++ b/src/pages/markdownPreview/style.scss @@ -0,0 +1,122 @@ +.markdown-preview { + overflow: auto; + padding: 16px; + max-width: 960px; + margin: 0 auto; + user-select: text; + + [id] { + scroll-margin-top: 12px; + } + + pre { + margin: 16px 0; + border-radius: 8px; + overflow-x: auto; + max-width: 100%; + } + + pre code { + display: block; + padding: 16px; + margin: 0; + background: transparent !important; + white-space: pre; + word-wrap: normal; + tab-size: 2; + user-select: text; + -webkit-overflow-scrolling: touch; + } + + code[class*="language-"] { + font-size: 13px; + line-height: 1.5; + } + + eq { + display: inline-block; + max-width: 100%; + } + + eqn { + display: block; + width: 100%; + overflow-x: auto; + overflow-y: hidden; + padding: 8px 0; + } + + section.eqno { + display: flex; + align-items: center; + gap: 12px; + overflow-x: auto; + } + + section.eqno > eqn { + margin-left: 0; + } + + section.eqno > span { + flex: 0 0 auto; + opacity: 0.7; + } + + .katex-display { + margin: 1rem 0; + overflow-x: auto; + overflow-y: hidden; + padding-bottom: 4px; + } + + .markdown-image { + display: block; + margin: 1rem auto; + max-width: 100%; + height: auto; + border-radius: 12px; + background: color-mix(in srgb, var(--primary-color) 8%, transparent); + box-shadow: 0 0 0 1px + color-mix(in srgb, var(--primary-color) 12%, transparent); + } + + .mermaid { + display: flex; + justify-content: center; + overflow-x: auto; + padding: 12px 0; + } + + .mermaid svg { + max-width: 100%; + height: auto; + } + + .mermaid svg text, + .mermaid svg tspan, + .mermaid .label, + .mermaid .nodeLabel, + .mermaid .edgeLabel, + .mermaid .cluster-label, + .mermaid .flowchart-label { + fill: var(--primary-text-color) !important; + color: var(--primary-text-color) !important; + } + + .mermaid svg foreignObject, + .mermaid svg foreignObject * { + color: var(--primary-text-color) !important; + } + + .mermaid-error { + border: 1px solid var(--danger-color); + border-radius: 8px; + padding: 12px; + background: color-mix(in srgb, var(--danger-color) 10%, transparent); + } + + .mermaid-error-message { + margin-top: 8px; + color: var(--danger-text-color); + } +} diff --git a/src/pages/plugin/plugin.js b/src/pages/plugin/plugin.js index f4fb544f5..56f7f7f86 100644 --- a/src/pages/plugin/plugin.js +++ b/src/pages/plugin/plugin.js @@ -10,11 +10,13 @@ import constants from "lib/constants"; import installPlugin from "lib/installPlugin"; import InstallState from "lib/installState"; import settings from "lib/settings"; +import { hideAd } from "lib/startAd"; import markdownIt from "markdown-it"; import anchor from "markdown-it-anchor"; import markdownItFootnote from "markdown-it-footnote"; import MarkdownItGitHubAlerts from "markdown-it-github-alerts"; import markdownItTaskLists from "markdown-it-task-lists"; +import { highlightCodeBlock, initHighlighting } from "utils/codeHighlight"; import helpers from "utils/helpers"; import Url from "utils/Url"; import view from "./plugin.view.js"; @@ -60,7 +62,7 @@ export default async function PluginInclude( }); $page.onhide = function () { - helpers.hideAd(); + hideAd(); actionStack.remove("plugin"); loader.removeTitleLoader(); cancelled = true; @@ -204,8 +206,8 @@ export default async function PluginInclude( if (onInstall) onInstall(plugin); installed = true; update = false; - if (!plugin.price && IS_FREE_VERSION && (await window.iad?.isLoaded())) { - window.iad.show(); + if (!plugin.price) { + await helpers.showInterstitialIfReady(); } render(); } catch (err) { @@ -227,8 +229,8 @@ export default async function PluginInclude( if (onUninstall) onUninstall(plugin.id); installed = false; update = false; - if (!plugin.price && IS_FREE_VERSION && (await window.iad?.isLoaded())) { - window.iad.show(); + if (!plugin.price) { + await helpers.showInterstitialIfReady(); } render(); } catch (err) { @@ -405,7 +407,10 @@ export default async function PluginInclude( ); }); - // add copy button to code blocks + // Initialize theme-aware highlight styles + initHighlighting(); + + // Add copy button and syntax highlighting to code blocks const codeBlocks = $page.body.querySelectorAll("pre"); codeBlocks.forEach((pre) => { pre.style.position = "relative"; @@ -415,22 +420,16 @@ export default async function PluginInclude( const codeElement = pre.querySelector("code"); if (codeElement) { - const langMatch = codeElement.className.match( - /language-(\w+)|(javascript)/, - ); + const langMatch = codeElement.className.match(/language-(\w+)/); if (langMatch) { - const langMap = { - bash: "sh", - shell: "sh", - }; - const lang = langMatch[1] || langMatch[2]; - const mappedLang = langMap[lang] || lang; - const highlight = ace.require("ace/ext/static_highlight"); - highlight(codeElement, { - mode: `ace/mode/${mappedLang}`, - theme: settings.value.editorTheme.startsWith("ace/theme/") - ? settings.value.editorTheme - : "ace/theme/" + settings.value.editorTheme, + const lang = langMatch[1]; + const originalCode = codeElement.textContent || ""; + codeElement.classList.add("cm-highlighted"); + + highlightCodeBlock(originalCode, lang).then((highlighted) => { + if (highlighted && highlighted !== originalCode) { + codeElement.innerHTML = highlighted; + } }); } } @@ -475,7 +474,7 @@ export default async function PluginInclude( } async function loadAd(el) { - if (!IS_FREE_VERSION) return; + if (!helpers.canShowAds()) return; try { if (!(await window.iad?.isLoaded())) { const oldText = el.textContent; @@ -483,7 +482,9 @@ export default async function PluginInclude( await window.iad.load(); el.textContent = oldText; } - } catch (error) {} + } catch (error) { + console.warn("Failed to load plugin page ad.", error); + } } async function getPurchase(sku) { diff --git a/src/pages/plugin/plugin.scss b/src/pages/plugin/plugin.scss index cc2284d0e..dfb06b97a 100644 --- a/src/pages/plugin/plugin.scss +++ b/src/pages/plugin/plugin.scss @@ -66,15 +66,23 @@ display: flex; gap: 16px; flex-wrap: wrap; + color: var(--secondary-text-color); color: color-mix(in srgb, var(--primary-text-color) 60%, transparent); font-size: 14px; margin-bottom: 12px; - .author-name { + .meta-item { display: inline-flex; align-items: center; gap: 4px; + vertical-align: middle; + + .icon { + flex-shrink: 0; + } + } + .author-name { a { text-decoration: none; color: inherit; @@ -97,6 +105,7 @@ display: flex; flex-wrap: wrap; gap: 16px; + color: var(--secondary-text-color); color: color-mix(in srgb, var(--primary-text-color) 60%, transparent); font-size: 14px; @@ -141,6 +150,7 @@ position: relative; .keyword { + background: var(--popup-background-color); background: color-mix(in srgb, var(--link-text-color) 10%, transparent); @@ -149,6 +159,7 @@ border-radius: 12px; font-size: 13px; transition: all 0.2s; + border: 1px solid var(--link-text-color); border: 1px solid color-mix(in srgb, var(--link-text-color) 25%, transparent); } } @@ -226,6 +237,7 @@ border-bottom: 1px solid var(--border-color); .tab { + color: var(--secondary-text-color); color: color-mix(in srgb, var(--primary-text-color) 60%, transparent); } @@ -238,24 +250,24 @@ padding: 0 0 24px; #overview { - [class*="language-"] { - word-wrap: normal; - white-space: pre; - font-size: 0.8rem; - border-radius: 4px; - padding: 1em; - margin: 5px 0; - background: var(--primary-color); - color: var(--primary-text-color); - /* border-left: solid 5px var(--active-color); */ - overflow: auto; - width: calc(100% - 10px); + pre { + margin: 16px 0; + border-radius: 8px; + overflow: hidden; + } + + code[class*="language-"] { display: block; + font-size: 13px; + line-height: 1.5; + padding: 16px; + margin: 0; + overflow-x: auto; + white-space: pre; + word-wrap: normal; + tab-size: 2; user-select: text; - - div { - background: var(--primary-color); - } + -webkit-overflow-scrolling: touch; } } } @@ -317,6 +329,7 @@ .contributor-role { font-size: 13px; + color: var(--secondary-text-color); color: color-mix(in srgb, var(--primary-text-color) 60%, transparent); } } @@ -326,6 +339,7 @@ .no-changelog { text-align: center; padding: 2rem; + color: var(--secondary-text-color); color: color-mix(in srgb, var(--primary-text-color) 60%, transparent); i { @@ -497,4 +511,4 @@ } } } -} \ No newline at end of file +} diff --git a/src/pages/plugin/plugin.view.js b/src/pages/plugin/plugin.view.js index 3643afe22..3ae08a9c4 100644 --- a/src/pages/plugin/plugin.view.js +++ b/src/pages/plugin/plugin.view.js @@ -21,7 +21,12 @@ dayjs.extend(dayjsUpdateLocale); dayjs.updateLocale("en", { relativeTime: { future: "in %s", - past: "%s ago", + past: (value, withoutSuffix) => { + if (value === "now") { + return value; + } + return withoutSuffix ? value : `${value} ago`; + }, s: "now", ss: "now", m: "1m", @@ -95,16 +100,16 @@ export default (props) => {

      {name}

      - {repository - ? - - {strings.open_source} - - : null} + {repository ? ( + + + {strings.open_source} + + ) : null}
      - + { {author} - {authorVerified - ? { - toast(strings["verified publisher"]); - }} - className="licons verified verified-tick" - > - : ""} + {authorVerified ? ( + { + toast(strings["verified publisher"]); + }} + className="icon verified verified-tick" + > + ) : ( + "" + )} - + {license || "Unknown"}
      - {votesUp !== undefined - ?
      -
      - - - {helpers.formatDownloadCount( - typeof downloads === "string" - ? Number.parseInt(downloads) - : downloads, - )} - - {strings.downloads} -
      -
      - - = 80 ? "rating-high" : rating.replace("%", "") >= 50 ? "rating-medium" : "rating-low"}`} - > - {rating} - -
      -
      +
      + + + {helpers.formatDownloadCount( + typeof downloads === "string" + ? Number.parseInt(downloads) + : downloads, + )} + + {strings.downloads} +
      +
      + + = 80 ? "rating-high" : rating.replace("%", "") >= 50 ? "rating-medium" : "rating-low"}`} > - - {commentCount} - {strings.reviews} -
      + {rating} +
      - : null} - {Array.isArray(keywords) && keywords.length - ?
      - {keywords.map((keyword) => ( - {keyword} - ))} +
      + + {commentCount} + {strings.reviews}
      - : null} +
      + ) : null} + {Array.isArray(keywords) && keywords.length ? ( +
      + {keywords.map((keyword) => ( + {keyword} + ))} +
      + ) : null}
      @@ -328,7 +332,7 @@ function Buttons({ if (isPaid && !purchased && price) { return ( ); diff --git a/src/pages/plugins/item.js b/src/pages/plugins/item.js index 099309c14..f9198d986 100644 --- a/src/pages/plugins/item.js +++ b/src/pages/plugins/item.js @@ -71,7 +71,7 @@ export default function Item({ {authorName} {author_verified ? ( ) : ( @@ -81,7 +81,7 @@ export default function Item({
      {license || "Unknown"} diff --git a/src/pages/plugins/plugins.js b/src/pages/plugins/plugins.js index a0f0bcbe9..d16aa2dcc 100644 --- a/src/pages/plugins/plugins.js +++ b/src/pages/plugins/plugins.js @@ -16,6 +16,7 @@ import actionStack from "lib/actionStack"; import Contextmenu from "components/contextmenu"; import settings from "lib/settings"; import loadPlugin from "lib/loadPlugin"; +import { hideAd } from "lib/startAd"; /** * @@ -52,6 +53,12 @@ export default function PluginsInclude(updates) { let isSearching = false; let currentFilter = null; const LIMIT = 50; + const SUPPORTED_EDITOR = "cm"; + + const withSupportedEditor = (url) => { + const separator = url.includes("?") ? "&" : "?"; + return `${url}${separator}supported_editor=${SUPPORTED_EDITOR}`; + }; Contextmenu({ toggler: $add, @@ -200,7 +207,7 @@ export default function PluginsInclude(updates) { }); $page.onhide = function () { - helpers.hideAd(); + hideAd(); actionStack.remove("plugins"); }; @@ -337,7 +344,7 @@ export default function PluginsInclude(updates) { if (!query) return []; try { const response = await fetch( - `${constants.API_BASE}/plugins?name=${query}`, + withSupportedEditor(`${constants.API_BASE}/plugins?name=${query}`), ); const plugins = await response.json(); // Map the plugins to Item elements and return @@ -418,11 +425,15 @@ export default function PluginsInclude(updates) { let response; if (filterState.value === "top_rated") { response = await fetch( - `${constants.API_BASE}/plugins?explore=random&page=${page}&limit=${LIMIT}`, + withSupportedEditor( + `${constants.API_BASE}/plugins?explore=random&page=${page}&limit=${LIMIT}`, + ), ); } else { response = await fetch( - `${constants.API_BASE}/plugin?orderBy=${filterState.value}&page=${page}&limit=${LIMIT}`, + withSupportedEditor( + `${constants.API_BASE}/plugin?orderBy=${filterState.value}&page=${page}&limit=${LIMIT}`, + ), ); } const items = await response.json(); @@ -461,7 +472,7 @@ export default function PluginsInclude(updates) { try { const page = filterState.nextPage; const response = await fetch( - `${constants.API_BASE}/plugins?page=${page}&limit=${LIMIT}`, + withSupportedEditor(`${constants.API_BASE}/plugins?page=${page}&limit=${LIMIT}`), ); const data = await response.json(); filterState.nextPage = page + 1; @@ -557,7 +568,9 @@ export default function PluginsInclude(updates) { $list.all.setAttribute("empty-msg", strings["loading..."]); - const response = await fetch(`${constants.API_BASE}/plugins?page=${currentPage}&limit=${LIMIT}`); + const response = await fetch( + withSupportedEditor(`${constants.API_BASE}/plugins?page=${currentPage}&limit=${LIMIT}`), + ); const newPlugins = await response.json(); if (newPlugins.length < LIMIT) { diff --git a/src/pages/plugins/plugins.scss b/src/pages/plugins/plugins.scss index 279cddeeb..d8b3635aa 100644 --- a/src/pages/plugins/plugins.scss +++ b/src/pages/plugins/plugins.scss @@ -65,6 +65,7 @@ position: relative; &:hover { + background: var(--primary-color); background: color-mix(in srgb, var(--primary-color) 12%, transparent); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); @@ -213,56 +214,91 @@ .plugin-toggle-switch { display: flex !important; align-items: center; - gap: 0.5rem; + gap: 0; cursor: pointer; z-index: 100; - min-width: 100px; + min-width: auto; pointer-events: auto !important; position: relative; margin-left: auto; justify-content: flex-end; - padding: 0.5rem; - border-radius: 8px; + padding: 0; + border-radius: 999px; transition: background-color 0.2s ease; &:hover { - background-color: var(--primary-color); + background-color: transparent; } } .plugin-toggle-track { - width: 40px; - height: 22px; - border-radius: 12px; - background: #e5e7eb; + width: 2.8rem; + height: 1.65rem; + border-radius: 999px; + border: 1px solid var(--border-color); + border: 1px solid color-mix(in srgb, var(--border-color), transparent 6%); + background: var(--secondary-color); + background: color-mix( + in srgb, + var(--secondary-color), + var(--popup-background-color) 30% + ); position: relative; - transition: all 0.3s ease; + transition: + background-color 160ms ease, + border-color 160ms ease, + box-shadow 180ms ease; display: inline-block; - margin-right: 0.5rem; - box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + margin-right: 0; + box-sizing: border-box; + box-shadow: none; } .plugin-toggle-switch[data-enabled="true"] .plugin-toggle-track, .plugin-toggle-track[data-enabled="true"] { - background: var(--active-color); - box-shadow: 0 2px 4px var(--box-shadow-color); + background: var(--button-background-color); + border-color: var(--button-background-color); + border-color: color-mix(in srgb, var(--button-background-color), transparent 10%); + box-shadow: inset 0 0 0 1px var(--button-background-color); + box-shadow: inset 0 0 0 1px + color-mix(in srgb, var(--button-background-color), transparent 12%); } .plugin-toggle-thumb { position: absolute; - left: 2px; - top: 2px; - width: 18px; - height: 18px; - border-radius: 50%; - background: white; - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); - transition: all 0.3s ease; + left: 0; + top: 0; + width: 1.25rem; + height: 1.25rem; + margin: 0.14rem; + border-radius: 999px; + background: var(--popup-text-color); + background: color-mix( + in srgb, + var(--popup-text-color), + var(--popup-background-color) 18% + ); + border: 1px solid var(--border-color); + border: 1px solid color-mix(in srgb, var(--border-color), transparent 15%); + box-sizing: border-box; + box-shadow: + 0 0 0 1px var(--border-color), + 0 1px 3px rgba(0, 0, 0, 0.22); + box-shadow: + 0 0 0 1px color-mix(in srgb, var(--border-color), transparent 34%), + 0 1px 3px rgba(0, 0, 0, 0.22); + transition: + transform 180ms cubic-bezier(0.2, 0.9, 0.3, 1), + background-color 160ms ease, + box-shadow 180ms ease; } .plugin-toggle-switch[data-enabled="true"] .plugin-toggle-thumb, .plugin-toggle-track[data-enabled="true"] .plugin-toggle-thumb { - left: 20px; + transform: translateX(1.12rem); + background: var(--button-text-color); + box-shadow: 0 2px 8px var(--button-background-color); + box-shadow: 0 2px 8px color-mix(in srgb, var(--button-background-color), transparent 55%); } } -} \ No newline at end of file +} diff --git a/src/pages/problems/problems.js b/src/pages/problems/problems.js index b3d9d5a3c..447167868 100644 --- a/src/pages/problems/problems.js +++ b/src/pages/problems/problems.js @@ -1,7 +1,9 @@ import "./style.scss"; +import { getLspDiagnostics } from "cm/lsp/diagnostics"; import Page from "components/page"; import actionStack from "lib/actionStack"; import EditorFile from "lib/editorFile"; +import { hideAd } from "lib/startAd"; import helpers from "utils/helpers"; export default function Problems() { @@ -12,29 +14,17 @@ export default function Problems() { files.forEach((file) => { if (file.type !== "editor") return; - /**@type {[]} */ - const annotations = file.session?.getAnnotations(); + const annotations = collectAnnotations(file); if (!annotations.length) return; + const title = `${file.name} (${annotations.length})`; $content.append(
      - {`${file.name} (${annotations.length})`} + {title}
      {annotations.map((annotation) => { - let icon = "info"; - - switch (annotation.type) { - case "error": - icon = "cancel"; - break; - - case "warning": - icon = "warningreport_problem"; - break; - - default: - break; - } + const { type, text, row, column } = annotation; + const icon = getIconForType(type); return (
      - - {annotation.text} + + {text} - {annotation.row + 1}:{annotation.column + 1} + {row + 1}:{column + 1}
      ); @@ -64,7 +54,7 @@ export default function Problems() { helpers.showAd(); $page.onhide = function () { - helpers.hideAd(); + hideAd(); actionStack.remove("problems"); }; @@ -78,15 +68,19 @@ export default function Problems() { * @param {MouseEvent} e */ function clickHandler(e) { - const $target = e.target; + const $target = e.target.closest("[data-action='goto']"); + if (!$target) return; const { action } = $target.dataset; if (action === "goto") { const { fileId } = $target.dataset; const annotation = $target.annotation; + if (!annotation) return; + const row = normalizeIndex(annotation.row); + const column = normalizeIndex(annotation.column); editorManager.switchFile(fileId); - editorManager.editor.gotoLine(annotation.row + 1, annotation.column); + editorManager.editor.gotoLine(row + 1, column); $page.hide(); setTimeout(() => { @@ -94,4 +88,106 @@ export default function Problems() { }, 100); } } + + function collectAnnotations(file) { + const annotations = []; + const { session } = file; + const isActiveFile = editorManager.activeFile?.id === file.id; + const state = + isActiveFile && editorManager.editor + ? editorManager.editor.state + : session; + + if (session && typeof session.getAnnotations === "function") { + const aceAnnotations = session.getAnnotations() || []; + for (const item of aceAnnotations) { + if (!item) continue; + const row = normalizeIndex(item.row); + const column = normalizeIndex(item.column); + annotations.push({ + row, + column, + text: item.text || "", + type: normalizeSeverity(item.type), + }); + } + } + + if (state && typeof state.field === "function") { + annotations.push(...readLspAnnotations(state)); + } + + return annotations; + } + + function readLspAnnotations(state) { + const diagnostics = getLspDiagnostics(state); + if (!diagnostics.length) return []; + + const doc = state.doc; + if (!doc || typeof doc.lineAt !== "function") return []; + + return diagnostics + .map((diagnostic) => { + const start = clampPosition(diagnostic.from, doc.length); + const line = doc.lineAt(start); + const row = Math.max(0, line.number - 1); + const column = Math.max(0, start - line.from); + + let message = diagnostic.message || ""; + if (diagnostic.source) { + message = message + ? `${message} (${diagnostic.source})` + : diagnostic.source; + } + + return { + row: normalizeIndex(row), + column: normalizeIndex(column), + text: message, + type: normalizeSeverity(diagnostic.severity), + }; + }) + .filter((annotation) => annotation.text); + } + + function clampPosition(pos, length) { + if (typeof pos !== "number" || Number.isNaN(pos)) return 0; + return Math.max(0, Math.min(pos, Math.max(0, length))); + } + + function normalizeIndex(value) { + if (typeof value === "number" && Number.isFinite(value)) { + return Math.max(0, value); + } + const parsed = Number(value); + if (Number.isFinite(parsed)) { + return Math.max(0, parsed); + } + return 0; + } + + function normalizeSeverity(severity) { + switch (severity) { + case "error": + case "fatal": + return "error"; + case "warn": + case "warning": + return "warning"; + default: + return "info"; + } + } + + function getIconForType(type) { + switch (type) { + case "error": + return "cancel"; + case "warning": + return "warningreport_problem"; + default: + return "info"; + } + } } diff --git a/src/pages/quickTools/quickTools.js b/src/pages/quickTools/quickTools.js index 02022af9c..8b17e1ecc 100644 --- a/src/pages/quickTools/quickTools.js +++ b/src/pages/quickTools/quickTools.js @@ -3,6 +3,7 @@ import Page from "components/page"; import items, { description } from "components/quickTools/items"; import actionStack from "lib/actionStack"; import settings from "lib/settings"; +import { hideAd } from "lib/startAd"; import helpers from "utils/helpers"; export default function QuickTools() { @@ -30,7 +31,7 @@ export default function QuickTools() { $page.onhide = () => { actionStack.remove("quicktools-settings"); - helpers.hideAd(); + hideAd(); // Cleanup manager manager.destroy(); }; diff --git a/src/pages/sponsors/sponsors.js b/src/pages/sponsors/sponsors.js index b9e12f55c..a965d8ed0 100644 --- a/src/pages/sponsors/sponsors.js +++ b/src/pages/sponsors/sponsors.js @@ -128,7 +128,10 @@ export default function Sponsors() { if (!sponsors.length && "cached_sponsors" in localStorage) { try { - sponsors = JSON.parse(localStorage.getItem("cached_sponsors")) || []; + const cachedSponsors = helpers.parseJSON( + localStorage.getItem("cached_sponsors"), + ); + sponsors = Array.isArray(cachedSponsors) ? cachedSponsors : []; } catch (error) { console.error("Failed to parse cached sponsors", error); } diff --git a/src/pages/themeSetting/themeSetting.js b/src/pages/themeSetting/themeSetting.js index 671f023d3..d78f5419f 100644 --- a/src/pages/themeSetting/themeSetting.js +++ b/src/pages/themeSetting/themeSetting.js @@ -1,4 +1,10 @@ import "./themeSetting.scss"; +import { javascript } from "@codemirror/lang-javascript"; +// For CodeMirror preview +import { EditorState } from "@codemirror/state"; +import { oneDark } from "@codemirror/theme-one-dark"; +import { getThemeConfig, getThemeExtensions, getThemes } from "cm/themes"; +import { basicSetup, EditorView } from "codemirror"; import Page from "components/page"; import searchBar from "components/searchbar"; import TabView from "components/tabView"; @@ -7,6 +13,7 @@ import Ref from "html-tag-js/ref"; import actionStack from "lib/actionStack"; import removeAds from "lib/removeAds"; import appSettings from "lib/settings"; +import { hideAd } from "lib/startAd"; import CustomTheme from "pages/customTheme"; import ThemeBuilder from "theme/builder"; import themes from "theme/list"; @@ -15,40 +22,53 @@ import helpers from "utils/helpers"; export default function () { const $page = Page(strings.theme.capitalize()); const $search = ; - const $themePreview =
      ; + const $themePreview = ( +
      + ); const list = new Ref(); - const editor = ace.edit($themePreview); - - const session = ace.createEditSession(""); - const activeFile = editorManager.activeFile; + let cmPreview = null; + const previewDoc = `// Acode is awesome!\nconst message = "Welcome to Acode";\nconsole.log(message);`; - if (activeFile && activeFile.type === "editor") { - const currentSession = activeFile.session; - session.setMode(currentSession.getMode()); - session.setValue(currentSession.getValue()); - } else { - // Fallback content for preview - session.setMode("ace/mode/javascript"); - session.setValue(`// Acode is awesome! -const message = "Welcome to Acode"; -console.log(message);`); + function destroyPreview(context) { + if (!cmPreview) return; + try { + cmPreview.destroy(); + } catch (error) { + console.warn(`Failed to destroy theme preview (${context}).`, error); + } finally { + cmPreview = null; + } } - editor.setReadOnly(true); - editor.setSession(session); - editor.renderer.setMargin(0, 0, -16, 0); + function createPreview(themeId) { + destroyPreview("create"); + const theme = getThemeExtensions(themeId, [oneDark]); + const fixedHeightTheme = EditorView.theme({ + "&": { height: "100%", flex: "1 1 auto" }, + ".cm-scroller": { height: "100%", overflow: "auto" }, + }); + const state = EditorState.create({ + doc: previewDoc, + extensions: [basicSetup, javascript(), fixedHeightTheme, ...theme], + }); + cmPreview = new EditorView({ state, parent: $themePreview }); + cmPreview.contentDOM.setAttribute("aria-readonly", "true"); + } actionStack.push({ id: "appTheme", action: () => { - editor.destroy(); + destroyPreview("close"); $page.hide(); $page.removeEventListener("click", clickHandler); }, }); $page.onhide = () => { - helpers.hideAd(); + hideAd(); actionStack.remove("appTheme"); }; @@ -74,6 +94,8 @@ console.log(message);`); $page.addEventListener("click", clickHandler); function renderAppThemes() { + // Remove and destroy CodeMirror preview when showing app themes + destroyPreview("switch-tab"); $themePreview.remove(); const content = []; @@ -90,15 +112,16 @@ console.log(message);`); const currentTheme = appSettings.value.appTheme; let $currentItem; - themes.list().forEach((theme) => { + themes.list().forEach((themeSummary) => { + const theme = themes.get(themeSummary.id); const isCurrentTheme = theme.id === currentTheme; const isPremium = theme.version === "paid" && IS_FREE_VERSION; const $item = ( setAppTheme(theme, isPremium)} /> ); @@ -111,30 +134,26 @@ console.log(message);`); } function renderEditorThemes() { - const currentTheme = appSettings.value.editorTheme; - const themePrefix = "ace/theme/"; - const fullThemePath = currentTheme.startsWith(themePrefix) - ? currentTheme - : themePrefix + currentTheme; - - editor.setTheme(fullThemePath); + const currentTheme = ( + appSettings.value.editorTheme || "one_dark" + ).toLowerCase(); if (innerHeight * 0.3 >= 120) { $page.body.append($themePreview); - editor.resize(); + createPreview(currentTheme); } else { $themePreview.remove(); } - const themeList = ace.require("ace/ext/themelist"); + const themeList = getThemes(); let $currentItem; - list.el.content = themeList.themes.map((theme) => { - const isCurrent = theme.theme === fullThemePath; + list.el.content = themeList.map((t) => { + const isCurrent = t.id === currentTheme; const $item = ( setEditorTheme(theme)} + swatches={getEditorThemeSwatches(t.id)} + onclick={() => setEditorTheme({ caption: t.caption, theme: t.id })} /> ); if (isCurrent) $currentItem = $item; @@ -201,8 +220,15 @@ console.log(message);`); ); return; } - editorManager.editor.setTheme(theme); - editor.setTheme(theme); // preview + const ok = editorManager.editor.setTheme(theme); + if (!ok) { + alert( + "Invalid theme", + "This editor theme is not compatible with Acode's CodeMirror runtime.", + ); + return; + } + if (cmPreview) createPreview(theme); appSettings.update( { editorTheme: theme, @@ -221,19 +247,9 @@ console.log(message);`); list.get(`[theme="${theme}"]`)?.check(); } - function Item({ name, color, isDark, onclick, isCurrent, isPremium }) { - const check = ; - const star = ; - let style = {}; - let className = "icon color"; - - if (color) { - style = { color }; - } else if (isDark) { - className += " dark"; - } else { - className += " light"; - } + function Item({ name, swatches, onclick, isCurrent, isPremium }) { + const check = ; + const star = ; const $el = (
      - + {createSwatchPreview(swatches)}
      {name}
      @@ -261,4 +277,51 @@ console.log(message);`); }; return $el; } + + function createSwatchPreview(swatches) { + const colors = [...new Set((swatches || []).filter(Boolean))].slice(0, 3); + while (colors.length < 3) { + colors.push(colors[colors.length - 1] || "var(--border-color)"); + } + + return ( + + ); + } + + function getAppThemeSwatches(theme) { + if (!theme) { + return [ + "var(--primary-color)", + "var(--secondary-color)", + "var(--active-color)", + ]; + } + + return [theme.primaryColor, theme.secondaryColor, theme.activeColor]; + } + + function getEditorThemeSwatches(themeId) { + const config = getThemeConfig(themeId); + return [ + config.background, + config.keyword || config.function || config.foreground, + config.string || config.variable || config.foreground, + ]; + } } diff --git a/src/pages/themeSetting/themeSetting.scss b/src/pages/themeSetting/themeSetting.scss index f8328199c..d89b7ad7e 100644 --- a/src/pages/themeSetting/themeSetting.scss +++ b/src/pages/themeSetting/themeSetting.scss @@ -1,19 +1,55 @@ -#theme-setting { - display: flex; - flex-direction: column; - - #theme-preview:not(:empty) { - height: 120px; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.2); - box-shadow: 0 0 4px var(--box-shadow-color); - pointer-events: none; - } - - .icon.color.custom::before { - background-color: var(--primary-color); - } - - #theme-list { - flex: 1; - } -} \ No newline at end of file +#theme-setting { + display: flex; + flex-direction: column; + + #theme-preview:not(:empty) { + height: 120px; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 4px var(--box-shadow-color); + pointer-events: none; + } + + #theme-preview .cm-editor { + width: 100%; + } + + #theme-list { + flex: 1; + } + + .theme-swatch-slot { + display: flex; + align-items: center; + justify-content: center; + width: 60px; + min-width: 60px; + height: 60px; + flex-shrink: 0; + } + + .theme-swatch-preview { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 0.72fr); + grid-template-rows: repeat(2, minmax(0, 1fr)); + width: 1.5rem; + min-width: 1.5rem; + height: 1.5rem; + padding: 0.08rem; + box-sizing: border-box; + border: 1px solid var(--border-color); + border: 1px solid color-mix(in srgb, var(--border-color), transparent 18%); + border-radius: 0.45rem; + background: var(--secondary-color); + overflow: hidden; + } + + .theme-swatch { + display: block; + min-width: 0; + min-height: 0; + } + + .theme-swatch-main { + grid-row: 1 / 3; + } +} diff --git a/src/palettes/changeEditorTheme/index.js b/src/palettes/changeEditorTheme/index.js new file mode 100644 index 000000000..3f2b71b1c --- /dev/null +++ b/src/palettes/changeEditorTheme/index.js @@ -0,0 +1,28 @@ +import { getThemes } from "cm/themes"; +import palette from "components/palette"; +import appSettings from "lib/settings"; + +export default function changeEditorTheme() { + palette(generateHints, onselect, strings["editor theme"]); +} + +function generateHints() { + const themes = getThemes(); + const current = String( + appSettings.value.editorTheme || "one_dark", + ).toLowerCase(); + return themes.map((t) => { + const isCurrent = current === t.id; + return { + value: t.id, + text: `
      ${t.caption}${isCurrent ? 'current' : ""}
      `, + }; + }); +} + +function onselect(themeId) { + if (!themeId) return; + const ok = editorManager.editor.setTheme(themeId); + if (!ok) return; + appSettings.update({ editorTheme: themeId }, false); +} diff --git a/src/palettes/changeMode/index.js b/src/palettes/changeMode/index.js index c2e3e2d96..2d26a8742 100644 --- a/src/palettes/changeMode/index.js +++ b/src/palettes/changeMode/index.js @@ -1,4 +1,6 @@ +import { getModes } from "cm/modelist"; import palette from "components/palette"; +import helpers from "utils/helpers"; import Path from "utils/Path"; export default function changeMode() { @@ -6,15 +8,31 @@ export default function changeMode() { } function generateHints() { - const { modes } = ace.require("ace/ext/modelist"); + const modes = [...getModes()].sort((a, b) => + a.caption.localeCompare(b.caption), + ); + const activeMode = editorManager.activeFile?.currentMode || ""; + const activeIndex = modes.findIndex(({ mode }) => mode === activeMode); + + if (activeIndex > 0) { + const [activeEntry] = modes.splice(activeIndex, 1); + modes.unshift(activeEntry); + } + + return modes.map(({ aliases = [], caption, extensions, mode }) => { + const searchTerms = [caption, mode, extensions, ...aliases] + .filter(Boolean) + .join(" "); + const title = + caption.toLowerCase() === mode ? caption : `${caption} (${mode})`; - return modes.map(({ caption, mode, extensions }) => { return { + active: mode === activeMode, value: mode, text: `
      - ${caption} - ${mode} -
      `, + ${title} + +
      `, }; }); } @@ -24,7 +42,7 @@ function onselect(mode) { let modeAssociated; try { - modeAssociated = JSON.parse(localStorage.modeassoc || "{}"); + modeAssociated = helpers.parseJSON(localStorage.modeassoc) || {}; } catch (error) { modeAssociated = {}; } diff --git a/src/palettes/changeTheme/index.js b/src/palettes/changeTheme/index.js index be76c6fa7..7827f7054 100644 --- a/src/palettes/changeTheme/index.js +++ b/src/palettes/changeTheme/index.js @@ -4,37 +4,19 @@ import appSettings from "lib/settings"; import { isDeviceDarkTheme } from "lib/systemConfiguration"; import themes from "theme/list"; import { updateSystemTheme } from "theme/preInstalled"; +import changeEditorTheme from "../changeEditorTheme"; export default function changeTheme(type = "editor") { + if (type === "editor") return changeEditorTheme(); palette( () => generateHints(type), (value) => onselect(value), - strings[type === "editor" ? "editor theme" : "app theme"], + strings["app theme"], ); } function generateHints(type) { - if (type === "editor") { - const themeList = ace.require("ace/ext/themelist"); - const currentTheme = appSettings.value.editorTheme; - const themePrefix = "ace/theme/"; - - return themeList.themes.map((theme) => { - const isCurrent = - theme.theme === - (currentTheme.startsWith(themePrefix) - ? currentTheme - : themePrefix + currentTheme); - - return { - value: JSON.stringify({ type: "editor", theme: theme.theme }), - text: `
      - ${theme.caption} - ${isCurrent ? 'current' : ""} -
      `, - }; - }); - } + // Editor handled by changeEditorTheme // App themes const currentTheme = appSettings.value.appTheme; @@ -61,7 +43,9 @@ function generateHints(type) { let previousDark = isDeviceDarkTheme(); const updateTimeMs = 2000; -let intervalId = setInterval(async () => { +let intervalId = null; + +function syncSystemTheme() { if (appSettings.value.appTheme.toLowerCase() === "system") { const isDark = isDeviceDarkTheme(); if (isDark !== previousDark) { @@ -69,33 +53,37 @@ let intervalId = setInterval(async () => { updateSystemTheme(isDark); } } -}, updateTimeMs); +} + +function startSystemThemeWatcher() { + if (intervalId) return; + intervalId = setInterval(syncSystemTheme, updateTimeMs); +} + +function stopSystemThemeWatcher() { + if (!intervalId) return; + clearInterval(intervalId); + intervalId = null; +} + +function updateSystemThemeWatcher(theme) { + if (String(theme).toLowerCase() === "system") { + startSystemThemeWatcher(); + syncSystemTheme(); + return; + } + stopSystemThemeWatcher(); +} + +updateSystemThemeWatcher(appSettings.value.appTheme); +appSettings.on("update:appTheme", updateSystemThemeWatcher); function onselect(value) { if (!value) return; const selection = JSON.parse(value); - if (selection.theme === "system") { - // Start interval if not already started - if (!intervalId) { - intervalId = setInterval(async () => { - if (appSettings.value.appTheme.toLowerCase() === "system") { - const isDark = isDeviceDarkTheme(); - if (isDark !== previousDark) { - previousDark = isDark; - updateSystemTheme(isDark); - } - } - }, updateTimeMs); - } - } else { - // Cancel interval if it's running - if (intervalId) { - clearInterval(intervalId); - intervalId = null; - } - } + updateSystemThemeWatcher(selection.theme); if (selection.type === "editor") { editorManager.editor.setTheme(selection.theme); diff --git a/src/palettes/commandPalette/index.js b/src/palettes/commandPalette/index.js index e3cb90e46..92ae750f5 100644 --- a/src/palettes/commandPalette/index.js +++ b/src/palettes/commandPalette/index.js @@ -1,44 +1,39 @@ +import { executeCommand, getRegisteredCommands } from "cm/commandRegistry"; import palette from "components/palette"; import helpers from "utils/helpers"; export default async function commandPalette() { const recentCommands = RecentlyUsedCommands(); const { editor } = editorManager; - const commands = Object.values(editor.commands.commands); - - const isEditorFocused = editor.isFocused(); + const wasFocused = editor?.hasFocus ?? false; palette(generateHints, onselect, strings["type command"], () => { - if (isEditorFocused) editor.focus(); + if (wasFocused) editor?.focus(); }); function generateHints() { + const registeredCommands = getRegisteredCommands(); const hints = []; - commands.forEach(({ name, description, bindKey }) => { - /** - * @param {boolean} recentlyUsed Is the command recently used - * @returns {{value: string, text: string}} - */ + registeredCommands.forEach(({ name, description, key }) => { + const keyLabel = key ? key.split("|")[0] : ""; const item = (recentlyUsed) => ({ value: name, - text: `${description ?? name}${bindKey?.win ?? ""}`, + text: `${description ?? name}${keyLabel}`, }); if (recentCommands.commands.includes(name)) { hints.unshift(item(true)); return; } - hints.push(item()); + hints.push(item(false)); }); return hints; } function onselect(value) { - const command = commands.find(({ name }) => name === value); - if (!command) return; - recentCommands.push(value); - command.exec(editorManager.editor); + const executed = executeCommand(value, editorManager.editor); + if (executed) recentCommands.push(value); } } diff --git a/src/plugins/auth/src/android/Authenticator.java b/src/plugins/auth/src/android/Authenticator.java index a89fee05e..48bf3cc08 100644 --- a/src/plugins/auth/src/android/Authenticator.java +++ b/src/plugins/auth/src/android/Authenticator.java @@ -145,4 +145,4 @@ private String validateToken(String token) { } -} \ No newline at end of file +} diff --git a/src/plugins/browser/android/com/foxdebug/browser/BrowserActivity.java b/src/plugins/browser/android/com/foxdebug/browser/BrowserActivity.java index eaec867f1..c422e4001 100644 --- a/src/plugins/browser/android/com/foxdebug/browser/BrowserActivity.java +++ b/src/plugins/browser/android/com/foxdebug/browser/BrowserActivity.java @@ -85,8 +85,14 @@ private void setSystemTheme(int systemBarColor) { controller.setSystemBarsAppearance(0, appearance); } } - } catch (IllegalArgumentException ignore) {} catch (Exception ignore) {} - } catch (Exception e) {} + } catch (IllegalArgumentException error) { + Log.w("BrowserActivity", "Invalid system bar color or appearance input.", error); + } catch (Exception error) { + Log.w("BrowserActivity", "Failed applying system bar theme values.", error); + } + } catch (Exception e) { + Log.e("BrowserActivity", "Failed to apply system theme.", e); + } } private void setStatusBarStyle(final Window window) { diff --git a/src/plugins/browser/utils/updatePackage.js b/src/plugins/browser/utils/updatePackage.js index 2850414a7..eb2ade164 100644 --- a/src/plugins/browser/utils/updatePackage.js +++ b/src/plugins/browser/utils/updatePackage.js @@ -1,30 +1,58 @@ -const fs = require('fs'); -const path = require('path'); +const fs = require("fs"); +const path = require("path"); const configXML = path.resolve(__dirname, "../../../config.xml"); -const menuJava = path.resolve(__dirname, "../../../platforms/android/app/src/main/java/com/foxdebug/browser/Menu.java"); -const repeatChar = (char, times) => { - let res = ""; - while (--times >= 0) res += char; - return res; -}; +const menuJava = path.resolve( + __dirname, + "../../../platforms/android/app/src/main/java/com/foxdebug/browser/Menu.java" +); +const docProvider = path.resolve( + __dirname, + "../../../platforms/android/app/src/main/java/com/foxdebug/acode/rk/exec/terminal/AlpineDocumentProvider.java" +); + +const repeatChar = (char, times) => char.repeat(times); + +function replaceImport(filePath, appName) { + if (!fs.existsSync(filePath)) { + console.warn(`⚠ File not found: ${filePath}`); + return; + } + + const data = fs.readFileSync(filePath, "utf8"); + + const updated = data.replace( + /(import\s+com\.foxdebug\.)(acode|acodefree)(\.R;)/, + `$1${appName}$3` + ); + + fs.writeFileSync(filePath, updated); +} try { + if (!fs.existsSync(configXML)) { + throw new Error("config.xml not found"); + } + const config = fs.readFileSync(configXML, "utf8"); - const fileData = fs.readFileSync(menuJava, "utf8"); - const appName = /widget id="([0-9a-zA-Z\.\-_]*)"/.exec(config)[1].split(".").pop(); - const newFileData = fileData.replace(/(import com\.foxdebug\.)(acode|acodefree)(.R;)/, `$1${appName}$3`); - fs.writeFileSync(menuJava, newFileData); + const match = /widget\s+id="([0-9a-zA-Z.\-_]+)"/.exec(config); + + if (!match) { + throw new Error("Could not extract widget id from config.xml"); + } + + const appName = match[1].split(".").pop(); + + replaceImport(docProvider, appName); + replaceImport(menuJava, appName); const msg = `==== Changed package to com.foxdebug.${appName} ====`; - console.log(""); - console.log(repeatChar("=", msg.length)); + console.log("\n" + repeatChar("=", msg.length)); console.log(msg); - console.log(repeatChar("=", msg.length)); - console.log(""); + console.log(repeatChar("=", msg.length) + "\n"); } catch (error) { - console.error(error); + console.error("❌ Error:", error.message); process.exit(1); } \ No newline at end of file diff --git a/src/plugins/pluginContext/src/android/Tee.java b/src/plugins/pluginContext/src/android/Tee.java index be6b75f4b..39edb423c 100644 --- a/src/plugins/pluginContext/src/android/Tee.java +++ b/src/plugins/pluginContext/src/android/Tee.java @@ -14,6 +14,11 @@ import java.util.HashSet; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import android.content.Context; +import org.apache.cordova.*; + +//auth plugin +import com.foxdebug.acode.rk.auth.EncryptedPreferenceManager; public class Tee extends CordovaPlugin { @@ -26,10 +31,62 @@ public class Tee extends CordovaPlugin { // token : list of permissions private /*static*/ final Map> permissionStore = new ConcurrentHashMap<>(); + + + private Context context; + + + public void initialize(CordovaInterface cordova, CordovaWebView webView) { + super.initialize(cordova, webView); + this.context = cordova.getContext(); + } + @Override public boolean execute(String action, JSONArray args, CallbackContext callback) throws JSONException { + + if ("get_secret".equals(action)) { + String token = args.getString(0); + String key = args.getString(1); + String defaultValue = args.getString(2); + + String pluginId = getPluginIdFromToken(token); + + if (pluginId == null) { + callback.error("INVALID_TOKEN"); + return true; + } + + EncryptedPreferenceManager prefs = + new EncryptedPreferenceManager(context, pluginId); + + String value = prefs.getString(key, defaultValue); + callback.success(value); + return true; + } + + if ("set_secret".equals(action)) { + String token = args.getString(0); + String key = args.getString(1); + String value = args.getString(2); + + String pluginId = getPluginIdFromToken(token); + + if (pluginId == null) { + callback.error("INVALID_TOKEN"); + return true; + } + + EncryptedPreferenceManager prefs = + new EncryptedPreferenceManager(context, pluginId); + + prefs.setString(key, value); + callback.success(); + return true; + } + + if ("requestToken".equals(action)) { String pluginId = args.getString(0); String pluginJson = args.getString(1); @@ -69,6 +126,16 @@ public boolean execute(String action, JSONArray args, CallbackContext callback) return false; } + + private String getPluginIdFromToken(String token) { + for (Map.Entry entry : tokenStore.entrySet()) { + if (entry.getValue().equals(token)) { + return entry.getKey(); + } + } + return null; + } + //============================================================ //do not change function signatures public boolean isTokenValid(String token, String pluginId) { diff --git a/src/plugins/pluginContext/www/PluginContext.js b/src/plugins/pluginContext/www/PluginContext.js index 380dfbb9b..a2d868d2d 100644 --- a/src/plugins/pluginContext/www/PluginContext.js +++ b/src/plugins/pluginContext/www/PluginContext.js @@ -34,6 +34,31 @@ const PluginContext = (function () { exec(resolve, reject, "Tee", "listAllPermissions", [this.uuid]); }); } + + getSecret(key, defaultValue = "") { + return new Promise((resolve, reject) => { + exec( + resolve, + reject, + "Tee", + "get_secret", + [this.uuid, key, defaultValue] + ); + }); + } + + + setSecret(key, value) { + return new Promise((resolve, reject) => { + exec( + resolve, + reject, + "Tee", + "set_secret", + [this.uuid, key, value] + ); + }); + } } //Object.freeze(this); diff --git a/src/plugins/sdcard/index.d.ts b/src/plugins/sdcard/index.d.ts index 41b4484fb..1933dd305 100644 --- a/src/plugins/sdcard/index.d.ts +++ b/src/plugins/sdcard/index.d.ts @@ -183,12 +183,14 @@ interface SDcard { ): void; /** * Opens gallery to select image - * @param onSuccess Callback function on success returns url of selected file + * Returns a temporary URI grant for the selected image. + * Use read/stats on the returned URI if you need to inspect or preview it. + * @param onSuccess Callback function on success returns URI of selected image * @param onFail Callback function on error returns error object * @param mimeType MimeType of file to be selected */ getImage( - onSuccess: (url: DocumentFile) => void, + onSuccess: (url: string) => void, onFail: (err: any) => void, mimeType: string, ): void; diff --git a/src/plugins/sdcard/readme.md b/src/plugins/sdcard/readme.md index fda642ea8..4af2dcc89 100644 --- a/src/plugins/sdcard/readme.md +++ b/src/plugins/sdcard/readme.md @@ -89,17 +89,26 @@ interface SDcard { * @param onFail Callback function on error returns error object */ move(src: String, dest: String, onSuccess: (url: String) => void, onFail: (err: any) => void): void; - /** - * Opens file provider to select file - * @param onSuccess Callback function on success returns url of selected file - * @param onFail Callback function on error returns error object - * @param mimeType MimeType of file to be selected - */ - openDocumentFile(onSuccess: (url: String) => void, onFail: (err: any) => void, mimeType: String): void; - /** - * Renames the given file/directory to given new name - * @param src Url of file/directory - * @param newname New name + /** + * Opens file provider to select file + * @param onSuccess Callback function on success returns url of selected file + * @param onFail Callback function on error returns error object + * @param mimeType MimeType of file to be selected + */ + openDocumentFile(onSuccess: (url: String) => void, onFail: (err: any) => void, mimeType: String): void; + /** + * Opens gallery/photo picker to select an image + * Returns a temporary URI grant for the selected image. + * Use read/stats on the returned URI if you need to inspect or preview it. + * @param onSuccess Callback function on success returns URI of selected image + * @param onFail Callback function on error returns error object + * @param mimeType MimeType of file to be selected + */ + getImage(onSuccess: (url: String) => void, onFail: (err: any) => void, mimeType: String): void; + /** + * Renames the given file/directory to given new name + * @param src Url of file/directory + * @param newname New name * @param onSuccess Callback function on success returns url of renamed file * @param onFail Callback function on error returns error object */ diff --git a/src/plugins/sdcard/src/android/SDcard.java b/src/plugins/sdcard/src/android/SDcard.java index 19447a0b0..01f14070f 100644 --- a/src/plugins/sdcard/src/android/SDcard.java +++ b/src/plugins/sdcard/src/android/SDcard.java @@ -226,6 +226,7 @@ public void getImage(String mimeType, CallbackContext callback) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); if (mimeType == null) mimeType = "image/*"; + intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType(mimeType); activityResultCallback = callback; cordova.startActivityForResult(this, intent, this.PICK_FROM_GALLERY); @@ -314,8 +315,6 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) { return; } - if (data == null) return; - if (resultCode == Activity.RESULT_CANCELED) { activityResultCallback.error("Operation cancelled"); return; @@ -323,20 +322,24 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == PICK_FROM_GALLERY) { if (resultCode == Activity.RESULT_OK) { + if (data == null) { + activityResultCallback.error("No result returned from picker"); + return; + } + Uri uri = data.getData(); + + if (uri == null && data.getClipData() != null) { + if (data.getClipData().getItemCount() > 0) { + uri = data.getClipData().getItemAt(0).getUri(); + } + } + if (uri == null) { activityResultCallback.error("No file selected"); } else { - try { - takePermission(uri); - activityResultCallback.success(uri.toString()); - } catch (Exception e) { - activityResultCallback.error( - "Error taking permission: " + e.getMessage() - ); - } + activityResultCallback.success(uri.toString()); } - //activityResultCallback.success(uri.toString()); } else { activityResultCallback.error("Operation cancelled"); } @@ -346,6 +349,11 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == OPEN_DOCUMENT) { if (resultCode == Activity.RESULT_OK) { try { + if (data == null) { + activityResultCallback.error("No result returned from picker"); + return; + } + Uri uri = data.getData(); if (uri == null) { @@ -380,6 +388,11 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) { } try { + if (data == null) { + activityResultCallback.error("No result returned from picker"); + return; + } + Uri uri = data.getData(); if (uri == null) { activityResultCallback.error("Empty uri"); diff --git a/src/plugins/server/src/android/com/foxdebug/server/NanoHTTPDWebserver.java b/src/plugins/server/src/android/com/foxdebug/server/NanoHTTPDWebserver.java index 05887c4a6..c6f1a0fa0 100644 --- a/src/plugins/server/src/android/com/foxdebug/server/NanoHTTPDWebserver.java +++ b/src/plugins/server/src/android/com/foxdebug/server/NanoHTTPDWebserver.java @@ -116,17 +116,19 @@ Response serveFile( long endAt = -1; String range = header.get("range"); if (range != null) { - if (range.startsWith("bytes=")) { - range = range.substring("bytes=".length()); - int minus = range.indexOf('-'); - try { - if (minus > 0) { - startFrom = Long.parseLong(range.substring(0, minus)); - endAt = Long.parseLong(range.substring(minus + 1)); - } - } catch (NumberFormatException ignored) {} - } - } + if (range.startsWith("bytes=")) { + range = range.substring("bytes=".length()); + int minus = range.indexOf('-'); + try { + if (minus > 0) { + startFrom = Long.parseLong(range.substring(0, minus)); + endAt = Long.parseLong(range.substring(minus + 1)); + } + } catch (NumberFormatException error) { + Log.w("NanoHTTPDWebserver", "Invalid range header: " + range, error); + } + } + } // get if-range header. If present, it must match etag or else we // should ignore the range request @@ -334,11 +336,13 @@ private InputStream getInputStream(DocumentFile file) return contentResolver.openInputStream(uri); } - private JSONObject getJSONObject(JSONObject ob, String key) { - JSONObject jsonObject = null; - try { - jsonObject = ob.getJSONObject(key); - } catch (JSONException e) {} - return jsonObject; - } -} + private JSONObject getJSONObject(JSONObject ob, String key) { + JSONObject jsonObject = null; + try { + jsonObject = ob.getJSONObject(key); + } catch (JSONException e) { + Log.w("NanoHTTPDWebserver", "Missing or invalid JSON object for key: " + key, e); + } + return jsonObject; + } +} diff --git a/src/plugins/system/android/com/foxdebug/system/RewardPassManager.java b/src/plugins/system/android/com/foxdebug/system/RewardPassManager.java new file mode 100644 index 000000000..d947cf7ac --- /dev/null +++ b/src/plugins/system/android/com/foxdebug/system/RewardPassManager.java @@ -0,0 +1,189 @@ +package com.foxdebug.system; + +import android.content.Context; +import android.util.Log; +import com.foxdebug.acode.rk.auth.EncryptedPreferenceManager; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; +import java.util.Random; +import org.json.JSONException; +import org.json.JSONObject; + +public class RewardPassManager { + private static final String TAG = "SystemRewardPass"; + private static final String ADS_PREFS_FILENAME = "ads"; + private static final String KEY_REWARD_STATE = "reward_state"; + private static final long ONE_HOUR_MS = 60L * 60L * 1000L; + private static final long MAX_ACTIVE_PASS_MS = 10L * ONE_HOUR_MS; + private static final int MAX_REDEMPTIONS_PER_DAY = 3; + + private final EncryptedPreferenceManager adsPrefManager; + private final Random random = new Random(); + + public RewardPassManager(Context context) { + this.adsPrefManager = new EncryptedPreferenceManager(context, ADS_PREFS_FILENAME); + } + + public String getRewardStatus() throws JSONException { + JSONObject state = syncRewardState(loadRewardState()); + JSONObject status = buildRewardStatus(state); + + if (status.optBoolean("hasPendingExpiryNotice")) { + state.put("expiryNoticePendingUntil", 0L); + } + + saveRewardState(state); + return status.toString(); + } + + public String redeemReward(String offerId) throws JSONException { + JSONObject state = syncRewardState(loadRewardState()); + int redemptionsToday = state.optInt("redemptionsToday", 0); + long now = java.lang.System.currentTimeMillis(); + long adFreeUntil = state.optLong("adFreeUntil", 0L); + long remainingMs = Math.max(0L, adFreeUntil - now); + + if (redemptionsToday >= MAX_REDEMPTIONS_PER_DAY) { + throw new JSONException( + "Daily limit reached. You can redeem up to " + MAX_REDEMPTIONS_PER_DAY + " rewards per day." + ); + } + + if (remainingMs >= MAX_ACTIVE_PASS_MS) { + throw new JSONException("You already have the maximum 10 hours of ad-free time active."); + } + + long grantedDurationMs = resolveRewardDuration(offerId); + long baseTime = Math.max(now, adFreeUntil); + long newAdFreeUntil = Math.min(baseTime + grantedDurationMs, now + MAX_ACTIVE_PASS_MS); + long appliedDurationMs = Math.max(0L, newAdFreeUntil - baseTime); + + state.put("adFreeUntil", newAdFreeUntil); + state.put("lastExpiredRewardUntil", 0L); + state.put("expiryNoticePendingUntil", 0L); + state.put("redemptionDay", getTodayKey()); + state.put("redemptionsToday", redemptionsToday + 1); + saveRewardState(state); + + JSONObject status = buildRewardStatus(state); + status.put("grantedDurationMs", grantedDurationMs); + status.put("appliedDurationMs", appliedDurationMs); + status.put("offerId", offerId); + return status.toString(); + } + + private JSONObject loadRewardState() { + String raw = adsPrefManager.getString(KEY_REWARD_STATE, ""); + if (raw == null || raw.isEmpty()) { + return defaultRewardState(); + } + + try { + return mergeRewardState(new JSONObject(raw)); + } catch (JSONException error) { + Log.w(TAG, "Failed to parse reward state, resetting.", error); + return defaultRewardState(); + } + } + + private JSONObject defaultRewardState() { + JSONObject state = new JSONObject(); + try { + state.put("adFreeUntil", 0L); + state.put("lastExpiredRewardUntil", 0L); + state.put("expiryNoticePendingUntil", 0L); + state.put("redemptionDay", getTodayKey()); + state.put("redemptionsToday", 0); + } catch (JSONException ignored) { + } + return state; + } + + private JSONObject mergeRewardState(JSONObject parsed) { + JSONObject state = defaultRewardState(); + try { + state.put("adFreeUntil", parsed.optLong("adFreeUntil", 0L)); + state.put("lastExpiredRewardUntil", parsed.optLong("lastExpiredRewardUntil", 0L)); + state.put("expiryNoticePendingUntil", parsed.optLong("expiryNoticePendingUntil", 0L)); + state.put("redemptionDay", parsed.optString("redemptionDay", getTodayKey())); + state.put("redemptionsToday", parsed.optInt("redemptionsToday", 0)); + } catch (JSONException ignored) { + } + return state; + } + + private void saveRewardState(JSONObject state) { + adsPrefManager.setString(KEY_REWARD_STATE, state.toString()); + } + + private JSONObject syncRewardState(JSONObject state) throws JSONException { + String todayKey = getTodayKey(); + if (!todayKey.equals(state.optString("redemptionDay", todayKey))) { + state.put("redemptionDay", todayKey); + state.put("redemptionsToday", 0); + } + + long adFreeUntil = state.optLong("adFreeUntil", 0L); + long now = java.lang.System.currentTimeMillis(); + if (adFreeUntil > 0L && adFreeUntil <= now) { + if (state.optLong("expiryNoticePendingUntil", 0L) != adFreeUntil) { + state.put("expiryNoticePendingUntil", adFreeUntil); + } + state.put("lastExpiredRewardUntil", adFreeUntil); + state.put("adFreeUntil", 0L); + } + + return state; + } + + private JSONObject buildRewardStatus(JSONObject state) throws JSONException { + long now = java.lang.System.currentTimeMillis(); + long adFreeUntil = state.optLong("adFreeUntil", 0L); + int redemptionsToday = state.optInt("redemptionsToday", 0); + long remainingMs = Math.max(0L, adFreeUntil - now); + int remainingRedemptions = Math.max(0, MAX_REDEMPTIONS_PER_DAY - redemptionsToday); + + JSONObject status = new JSONObject(); + status.put("adFreeUntil", adFreeUntil); + status.put("lastExpiredRewardUntil", state.optLong("lastExpiredRewardUntil", 0L)); + status.put("isActive", adFreeUntil > now); + status.put("remainingMs", remainingMs); + status.put("redemptionsToday", redemptionsToday); + status.put("remainingRedemptions", remainingRedemptions); + status.put("maxRedemptionsPerDay", MAX_REDEMPTIONS_PER_DAY); + status.put("maxActivePassMs", MAX_ACTIVE_PASS_MS); + status.put("hasPendingExpiryNotice", state.optLong("expiryNoticePendingUntil", 0L) > 0L); + status.put("expiryNoticePendingUntil", state.optLong("expiryNoticePendingUntil", 0L)); + + boolean canRedeem = remainingRedemptions > 0 && remainingMs < MAX_ACTIVE_PASS_MS; + status.put("canRedeem", canRedeem); + status.put("redeemDisabledReason", getRedeemDisabledReason(remainingRedemptions, remainingMs)); + return status; + } + + private String getRedeemDisabledReason(int remainingRedemptions, long remainingMs) { + if (remainingRedemptions <= 0) { + return "Daily limit reached. You can redeem up to " + MAX_REDEMPTIONS_PER_DAY + " rewards per day."; + } + if (remainingMs >= MAX_ACTIVE_PASS_MS) { + return "You already have the maximum 10 hours of ad-free time active."; + } + return ""; + } + + private long resolveRewardDuration(String offerId) throws JSONException { + if ("quick".equals(offerId)) { + return ONE_HOUR_MS; + } + if ("focus".equals(offerId)) { + int selectedHours = 4 + random.nextInt(3); + return selectedHours * ONE_HOUR_MS; + } + throw new JSONException("Unknown reward offer."); + } + + private String getTodayKey() { + return new SimpleDateFormat("yyyy-MM-dd", Locale.US).format(new Date()); + } +} diff --git a/src/plugins/system/android/com/foxdebug/system/SoftInputAssist.java b/src/plugins/system/android/com/foxdebug/system/SoftInputAssist.java new file mode 100644 index 000000000..90b8d9ca4 --- /dev/null +++ b/src/plugins/system/android/com/foxdebug/system/SoftInputAssist.java @@ -0,0 +1,66 @@ +package com.foxdebug.system; + +import android.app.Activity; +import android.view.View; +import java.util.List; + +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; +import androidx.core.view.WindowInsetsAnimationCompat; + +public class SoftInputAssist { + + private boolean animationRunning = false; + + public SoftInputAssist(Activity activity) { + View contentView = activity.findViewById(android.R.id.content); + + ViewCompat.setOnApplyWindowInsetsListener(contentView, (v, insets) -> { + + if (!animationRunning) { + Insets ime = insets.getInsets(WindowInsetsCompat.Type.ime()); + Insets nav = insets.getInsets(WindowInsetsCompat.Type.navigationBars()); + + int keyboardHeight = Math.max(0, ime.bottom - nav.bottom); + + v.setPadding(0, 0, 0, keyboardHeight); + } + + return insets; + }); + + ViewCompat.setWindowInsetsAnimationCallback( + contentView, + new WindowInsetsAnimationCompat.Callback( + WindowInsetsAnimationCompat.Callback.DISPATCH_MODE_CONTINUE_ON_SUBTREE + ) { + + @Override + public void onPrepare(WindowInsetsAnimationCompat animation) { + animationRunning = true; + } + + @Override + public void onEnd(WindowInsetsAnimationCompat animation) { + animationRunning = false; + } + + @Override + public WindowInsetsCompat onProgress( + WindowInsetsCompat insets, + List runningAnimations) { + + Insets ime = insets.getInsets(WindowInsetsCompat.Type.ime()); + Insets nav = insets.getInsets(WindowInsetsCompat.Type.navigationBars()); + + int keyboardHeight = Math.max(0, ime.bottom - nav.bottom); + + contentView.setPadding(contentView.getPaddingLeft(), contentView.getPaddingTop(), contentView.getPaddingRight(), keyboardHeight); + + return insets; + } + } + ); + } +} \ No newline at end of file diff --git a/src/plugins/system/android/com/foxdebug/system/System.java b/src/plugins/system/android/com/foxdebug/system/System.java index 7ddf6c547..492dee90a 100644 --- a/src/plugins/system/android/com/foxdebug/system/System.java +++ b/src/plugins/system/android/com/foxdebug/system/System.java @@ -95,8 +95,25 @@ import androidx.core.content.ContextCompat; +import android.graphics.Paint; +import android.graphics.RectF; +import android.graphics.Typeface; +import android.graphics.Canvas; +import android.util.TypedValue; + +import android.provider.MediaStore; +import android.graphics.Bitmap; +import android.os.Build; +import android.graphics.ImageDecoder; + + +import java.security.MessageDigest; +import java.security.MessageDigest; + + public class System extends CordovaPlugin { + private static final String TAG = "SystemPlugin"; private CallbackContext requestPermissionCallback; private Activity activity; @@ -108,12 +125,22 @@ public class System extends CordovaPlugin { private CallbackContext intentHandler; private CordovaWebView webView; private String fileProviderAuthority; + private RewardPassManager rewardPassManager; public void initialize(CordovaInterface cordova, CordovaWebView webView) { super.initialize(cordova, webView); this.context = cordova.getContext(); this.activity = cordova.getActivity(); this.webView = webView; + this.rewardPassManager = new RewardPassManager(this.context); + this.activity.runOnUiThread( + new Runnable() { + @Override + public void run() { + setNativeContextMenuDisabled(false); + } + } + ); // Set up global exception handler Thread.setDefaultUncaughtExceptionHandler( @@ -156,6 +183,7 @@ public boolean execute( switch (action) { case "get-webkit-info": case "file-action": + case "checksumText": case "is-powersave-mode": case "get-app-info": case "add-shortcut": @@ -174,6 +202,7 @@ public boolean execute( case "copyToUri": case "compare-file-text": case "compare-texts": + case "pin-file-shortcut": break; case "get-configuration": getConfiguration(callbackContext); @@ -182,6 +211,18 @@ public boolean execute( setInputType(arg1); callbackContext.success(); return true; + case "set-native-context-menu-disabled": + this.cordova.getActivity() + .runOnUiThread( + new Runnable() { + @Override + public void run() { + setNativeContextMenuDisabled(Boolean.parseBoolean(arg1)); + callbackContext.success(); + } + } + ); + return true; case "get-cordova-intent": getCordovaIntent(callbackContext); return true; @@ -224,6 +265,12 @@ public void run() { case "getFilesDir": callbackContext.success(getFilesDir()); return true; + case "getRewardStatus": + callbackContext.success(rewardPassManager.getRewardStatus()); + return true; + case "redeemReward": + callbackContext.success(rewardPassManager.redeemReward(args.getString(0))); + return true; case "getParentPath": callbackContext.success(getParentPath(args.getString(0))); @@ -338,7 +385,7 @@ public void run() { if (new File(args.getString(0)).setExecutable(Boolean.parseBoolean(args.getString(1)))) { callbackContext.success(); } else { - callbackContext.error("set exec faild"); + callbackContext.error("set exec failed"); } return true; @@ -463,6 +510,9 @@ public void run() { case "get-app-info": getAppInfo(callbackContext); break; + case "pin-file-shortcut": + pinFileShortcut(args.optJSONObject(0), callbackContext); + break; case "add-shortcut": addShortcut( arg1, @@ -496,7 +546,7 @@ public void run() { openInBrowser(arg1, callbackContext); break; case "launch-app": - launchApp(arg1, arg2, arg3, callbackContext); + launchApp(arg1, arg2, args.optJSONObject(2), callbackContext); break; case "get-global-setting": getGlobalSetting(arg1, callbackContext); @@ -515,6 +565,33 @@ public void run() { break; case "compare-texts": compareTexts(arg1, arg2, callbackContext); + break; + case "checksumText": + + cordova.getThreadPool().execute(() -> { + try { + + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + + byte[] hash = digest.digest(args.getString(0).getBytes("UTF-8")); + + StringBuilder hexString = new StringBuilder(); + + for (byte b : hash) { + String hex = Integer.toHexString(0xff & b); + + if (hex.length() == 1) hexString.append('0'); + + hexString.append(hex); + } + + + callbackContext.success(hexString.toString()); + } catch (Exception e) { + callbackContext.error(e.getMessage()); + } + }); + break; default: break; @@ -729,7 +806,9 @@ private void compareFileText( if (inputStream != null) { try { inputStream.close(); - } catch (IOException ignored) {} + } catch (IOException closeError) { + Log.w(TAG, "Failed to close input stream while reading file.", closeError); + } } } } else { @@ -977,13 +1056,15 @@ private String[] checkPermissions(JSONArray arr) throws Exception { for (int i = 0; i < arr.length(); i++) { try { String permission = arr.getString(i); - if (permission != null || !permission.equals("")) { + if (permission == null || permission.equals("")) { throw new Exception("Permission cannot be null or empty"); } if (!cordova.hasPermission(permission)) { list.add(permission); } - } catch (JSONException e) {} + } catch (JSONException e) { + Log.w(TAG, "Invalid permission entry at index " + i, e); + } } String[] res = new String[list.size()]; @@ -1046,6 +1127,309 @@ private void isPowerSaveMode(CallbackContext callback) { callback.success(powerSaveMode ? 1 : 0); } + private void pinFileShortcut(JSONObject shortcutJson, CallbackContext callback) { + if (shortcutJson == null) { + callback.error("Invalid shortcut data"); + return; + } + + String id = shortcutJson.optString("id", ""); + String label = shortcutJson.optString("label", ""); + String description = shortcutJson.optString("description", label); + String iconSrc = shortcutJson.optString("icon", ""); + String uriString = shortcutJson.optString("uri", ""); + + if (id.isEmpty() || label.isEmpty() || uriString.isEmpty()) { + callback.error("Missing required shortcut fields"); + return; + } + + if (!ShortcutManagerCompat.isRequestPinShortcutSupported(context)) { + callback.error("Pin shortcut not supported on this launcher"); + return; + } + + try { + Uri dataUri = Uri.parse(uriString); + String packageName = context.getPackageName(); + PackageManager pm = context.getPackageManager(); + + Intent launchIntent = pm.getLaunchIntentForPackage(packageName); + if (launchIntent == null) { + callback.error("Launch intent not found for package: " + packageName); + return; + } + + ComponentName componentName = launchIntent.getComponent(); + if (componentName == null) { + callback.error("ComponentName is null"); + return; + } + + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setComponent(componentName); + intent.setData(dataUri); + intent.putExtra("acodeFileUri", uriString); + + IconCompat icon; + + if (iconSrc != null && !iconSrc.isEmpty()) { + try { + Uri iconUri = Uri.parse(iconSrc); + Bitmap bitmap; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + // API 28+ + ImageDecoder.Source source = + ImageDecoder.createSource( + context.getContentResolver(), + iconUri + ); + bitmap = ImageDecoder.decodeBitmap(source); + } else { + // Below API 28 + bitmap = MediaStore.Images.Media.getBitmap( + context.getContentResolver(), + iconUri + ); + } + + icon = IconCompat.createWithBitmap(bitmap); + + } catch (Exception e) { + icon = getFileShortcutIcon(label); + } + } else { + icon = getFileShortcutIcon(label); + } + + ShortcutInfoCompat shortcut = new ShortcutInfoCompat.Builder(context, id) + .setShortLabel(label) + .setLongLabel( + description != null && !description.isEmpty() ? description : label + ) + .setIcon(icon) + .setIntent(intent) + .build(); + + ShortcutManagerCompat.pushDynamicShortcut(context, shortcut); + + boolean requested = ShortcutManagerCompat.requestPinShortcut( + context, + shortcut, + null + ); + + if (!requested) { + callback.error("Failed to request pin shortcut"); + return; + } + + callback.success(); + } catch (Exception e) { + callback.error(e.toString()); + } + } + + private IconCompat getFileShortcutIcon(String filename) { + Bitmap fallback = createFileShortcutBitmap(filename); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + return IconCompat.createWithAdaptiveBitmap(fallback); + } + return IconCompat.createWithBitmap(fallback); + } + + private Bitmap createFileShortcutBitmap(String filename) { + final float baseSizeDp = 72f; + float sizePx = TypedValue.applyDimension( + TypedValue.COMPLEX_UNIT_DIP, + baseSizeDp, + context.getResources().getDisplayMetrics() + ); + if (sizePx <= 0) { + sizePx = baseSizeDp; + } + int size = Math.round(sizePx); + Bitmap bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG | Paint.FILTER_BITMAP_FLAG); + + int backgroundColor = pickShortcutColor(filename); + paint.setColor(backgroundColor); + float radius = size * 0.24f; + RectF bounds = new RectF(0, 0, size, size); + canvas.drawRoundRect(bounds, radius, radius, paint); + + paint.setColor(Color.WHITE); + paint.setTextAlign(Paint.Align.CENTER); + paint.setTypeface(Typeface.create("sans-serif-medium", Typeface.BOLD)); + + String label = getShortcutLabel(filename); + float textLength = Math.max(1, label.length()); + float factor = textLength > 4 ? 0.22f : textLength > 3 ? 0.26f : 0.34f; + paint.setTextSize(size * factor); + Paint.FontMetrics metrics = paint.getFontMetrics(); + float baseline = (size - metrics.bottom - metrics.top) / 2f; + canvas.drawText(label, size / 2f, baseline, paint); + + return bitmap; + } + + private String getFileExtension(String filename) { + if (filename == null) return ""; + int dot = filename.lastIndexOf('.'); + if (dot < 0 || dot == filename.length() - 1) return ""; + return filename.substring(dot + 1).toLowerCase(Locale.getDefault()); + } + + private String getShortcutLabel(String filename) { + String ext = getFileExtension(filename); + if (!ext.isEmpty()) { + switch (ext) { + case "js": + case "jsx": + return "JS"; + case "ts": + case "tsx": + return "TS"; + case "md": + case "markdown": + return "MD"; + case "json": + return "JSON"; + case "html": + case "htm": + return "HTML"; + case "css": + return "CSS"; + case "java": + return "JAVA"; + case "kt": + case "kts": + return "KOT"; + case "py": + return "PY"; + case "rb": + return "RB"; + case "c": + return "C"; + case "cpp": + case "cc": + case "cxx": + return "CPP"; + case "h": + case "hpp": + return "HDR"; + case "go": + return "GO"; + case "rs": + return "RS"; + case "php": + return "PHP"; + case "xml": + return "XML"; + case "yml": + case "yaml": + return "YML"; + case "txt": + return "TXT"; + case "sh": + case "bash": + return "SH"; + default: + String label = ext.replaceAll("[^A-Za-z0-9]", ""); + if (label.isEmpty()) label = ext; + if (label.length() > 4) { + label = label.substring(0, 4); + } + return label.toUpperCase(Locale.getDefault()); + } + } + + if (filename != null && !filename.trim().isEmpty()) { + String cleaned = filename.replaceAll("[^A-Za-z0-9]", ""); + if (!cleaned.isEmpty()) { + if (cleaned.length() > 3) cleaned = cleaned.substring(0, 3); + return cleaned.toUpperCase(Locale.getDefault()); + } + return filename.substring(0, 1).toUpperCase(Locale.getDefault()); + } + + return "FILE"; + } + + private int pickShortcutColor(String filename) { + String ext = getFileExtension(filename); + switch (ext) { + case "js": + case "jsx": + return 0xFFF7DF1E; + case "ts": + case "tsx": + return 0xFF3178C6; + case "md": + case "markdown": + return 0xFF546E7A; + case "json": + return 0xFF4CAF50; + case "html": + case "htm": + return 0xFFF4511E; + case "css": + return 0xFF2962FF; + case "java": + return 0xFFEC6F2D; + case "kt": + case "kts": + return 0xFF7F52FF; + case "py": + return 0xFF306998; + case "rb": + return 0xFFCC342D; + case "c": + return 0xFF546E7A; + case "cpp": + case "cc": + case "cxx": + return 0xFF00599C; + case "h": + case "hpp": + return 0xFF8D6E63; + case "go": + return 0xFF00ADD8; + case "rs": + return 0xFFB7410E; + case "php": + return 0xFF8892BF; + case "xml": + return 0xFF5C6BC0; + case "yml": + case "yaml": + return 0xFF757575; + case "txt": + return 0xFF546E7A; + case "sh": + case "bash": + return 0xFF388E3C; + default: + final int[] colors = new int[] { + 0xFF1E88E5, + 0xFF6D4C41, + 0xFF00897B, + 0xFF8E24AA, + 0xFF3949AB, + 0xFF039BE5, + 0xFFD81B60, + 0xFF43A047 + }; + String key = ext.isEmpty() + ? (filename == null ? "file" : filename) + : ext; + int hash = Math.abs(key.hashCode()); + return colors[hash % colors.length]; + } + } + private void fileAction( String fileURI, String filename, @@ -1180,7 +1564,7 @@ private void openInBrowser(String src, CallbackContext callback) { private void launchApp( String appId, String className, - String data, + JSONObject extras, CallbackContext callback ) { if (appId == null || appId.equals("")) { @@ -1198,21 +1582,38 @@ private void launchApp( intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.setPackage(appId); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.setClassName(appId, className); - if (data != null && !data.equals("")) { - intent.putExtra("acode_data", data); + if (extras != null) { + Iterator keys = extras.keys(); + + while (keys.hasNext()) { + String key = keys.next(); + Object value = extras.get(key); + + if (value instanceof Integer) { + intent.putExtra(key, (Integer) value); + } else if (value instanceof Boolean) { + intent.putExtra(key, (Boolean) value); + } else if (value instanceof Double) { + intent.putExtra(key, (Double) value); + } else if (value instanceof Long) { + intent.putExtra(key, (Long) value); + } else if (value instanceof String) { + intent.putExtra(key, (String) value); + } else { + intent.putExtra(key, value.toString()); + } + } } - intent.setClassName(appId, className); activity.startActivity(intent); callback.success("Launched " + appId); + } catch (Exception e) { callback.error(e.toString()); - return; } - - } @@ -1302,54 +1703,55 @@ private void removeShortcut(String id, CallbackContext callback) { } private void setUiTheme( - final String systemBarColor, - final JSONObject scheme, - final CallbackContext callback + final String systemBarColor, + final JSONObject scheme, + final CallbackContext callback ) { - this.systemBarColor = Color.parseColor(systemBarColor); - this.theme = new Theme(scheme); + try { + this.systemBarColor = Color.parseColor(systemBarColor); + this.theme = new Theme(scheme); + + preferences.set("BackgroundColor", this.systemBarColor); + webView.getPluginManager().postMessage("updateSystemBars", null); + applySystemBarTheme(); + + callback.success(); + } catch (IllegalArgumentException e) { + callback.error("Invalid color: " + systemBarColor); + } catch (Exception e) { + callback.error(e.toString()); + } + } + private void applySystemBarTheme() { final Window window = activity.getWindow(); - // Method and constants not available on all SDKs but we want to be able to compile this code with any SDK - window.clearFlags(0x04000000); // SDK 19: WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); - window.addFlags(0x80000000); // SDK 21: WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); - try { - // Using reflection makes sure any 5.0+ device will work without having to compile with SDK level 21 + final View decorView = window.getDecorView(); - window - .getClass() - .getMethod("setNavigationBarColor", int.class) - .invoke(window, this.systemBarColor); + // Keep Cordova's BackgroundColor flow for API 36+, but also apply the + // window colors directly so OEM variants do not leave stale system-bar + // colors behind after a theme switch. + window.clearFlags(0x04000000 | 0x08000000); // FLAG_TRANSLUCENT_STATUS | FLAG_TRANSLUCENT_NAVIGATION + window.addFlags(0x80000000); // FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS - window - .getClass() - .getMethod("setStatusBarColor", int.class) - .invoke(window, this.systemBarColor); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + window.setNavigationBarContrastEnforced(false); + window.setStatusBarContrastEnforced(false); + } - window.getDecorView().setBackgroundColor(this.systemBarColor); + decorView.setBackgroundColor(this.systemBarColor); - if (Build.VERSION.SDK_INT < 30) { - setStatusBarStyle(window); - setNavigationBarStyle(window); - } else { - String themeType = theme.getType(); - WindowInsetsController controller = window.getInsetsController(); - int appearance = - WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS | - WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS; - - if (themeType.equals("light")) { - controller.setSystemBarsAppearance(appearance, appearance); - } else { - controller.setSystemBarsAppearance(0, appearance); - } - } - callback.success("OK"); - } catch (IllegalArgumentException error) { - callback.error(error.toString()); - } catch (Exception error) { - callback.error(error.toString()); + View rootView = activity.findViewById(android.R.id.content); + if (rootView != null) { + rootView.setBackgroundColor(this.systemBarColor); + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + window.setStatusBarColor(this.systemBarColor); + window.setNavigationBarColor(this.systemBarColor); } + + setStatusBarStyle(window); + setNavigationBarStyle(window); } private void setStatusBarStyle(final Window window) { @@ -1385,22 +1787,22 @@ private void setNavigationBarStyle(final Window window) { String themeType = theme.getType(); View decorView = window.getDecorView(); int uiOptions; + int lightNavigationBar; if (SDK_INT <= 30) { uiOptions = getDeprecatedSystemUiVisibility(decorView); - // 0x80000000 FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS - // 0x00000010 SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR + lightNavigationBar = View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; if (themeType.equals("light")) { - setDeprecatedSystemUiVisibility(decorView, uiOptions | 0x80000000 | 0x00000010); + setDeprecatedSystemUiVisibility(decorView, uiOptions | lightNavigationBar); return; } - setDeprecatedSystemUiVisibility(decorView, uiOptions | (0x80000000 & ~0x00000010)); + setDeprecatedSystemUiVisibility(decorView, uiOptions & ~lightNavigationBar); return; } uiOptions = Objects.requireNonNull(decorView.getWindowInsetsController()).getSystemBarsAppearance(); - int lightNavigationBar = WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS; + lightNavigationBar = WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS; if (themeType.equals("light")) { decorView.getWindowInsetsController().setSystemBarsAppearance(uiOptions | lightNavigationBar, lightNavigationBar); @@ -1651,7 +2053,9 @@ private String getFileProviderAuthority() { } } } - } catch (PackageManager.NameNotFoundException ignored) {} + } catch (PackageManager.NameNotFoundException error) { + Log.w(TAG, "Unable to inspect package providers for FileProvider authority.", error); + } if (fileProviderAuthority == null || fileProviderAuthority.isEmpty()) { fileProviderAuthority = context.getPackageName() + ".provider"; @@ -1695,4 +2099,11 @@ private void setInputType(String type) { } webView.setInputType(mode); } + + private void setNativeContextMenuDisabled(boolean disabled) { + if (webView == null) { + return; + } + webView.setNativeContextMenuDisabled(disabled); + } } diff --git a/src/plugins/system/plugin.xml b/src/plugins/system/plugin.xml index 2ddfb25a1..caa34109f 100644 --- a/src/plugins/system/plugin.xml +++ b/src/plugins/system/plugin.xml @@ -37,9 +37,11 @@ + + - \ No newline at end of file + diff --git a/src/plugins/system/system.d.ts b/src/plugins/system/system.d.ts index 05b1a9888..aa2ef8bf7 100644 --- a/src/plugins/system/system.d.ts +++ b/src/plugins/system/system.d.ts @@ -19,6 +19,14 @@ interface ShortCut { data: string; } +interface FileShortcut { + id: string; + label: string; + description?: string; + icon?: string; + uri: string; +} + interface Intent { action: string; data: string; @@ -29,6 +37,24 @@ interface Intent { }; } +interface RewardStatus { + adFreeUntil: number; + lastExpiredRewardUntil: number; + isActive: boolean; + remainingMs: number; + redemptionsToday: number; + remainingRedemptions: number; + maxRedemptionsPerDay: number; + maxActivePassMs: number; + hasPendingExpiryNotice: boolean; + expiryNoticePendingUntil: number; + canRedeem: boolean; + redeemDisabledReason: string; + grantedDurationMs?: number; + appliedDurationMs?: number; + offerId?: string; +} + type FileAction = 'VIEW' | 'EDIT' | 'SEND' | 'RUN'; type OnFail = (err: string) => void; type OnSuccessBool = (res: boolean) => void; @@ -131,6 +157,18 @@ interface System { * @param onFail */ pinShortcut(id: string, onSuccess: OnSuccessBool, onFail: OnFail): void; + + /** + * Pin a shortcut for a specific file to the home screen + * @param shortcut Shortcut configuration + * @param onSuccess + * @param onFail + */ + pinFileShortcut( + shortcut: FileShortcut, + onSuccess: OnSuccessBool, + onFail: OnFail, + ): void; /** * Gets android version * @param onSuccess @@ -188,19 +226,20 @@ interface System { */ openInBrowser(src: string): void; /** - * Launches and app - * @param app the package name of the app - * @param className the full class name of the activity - * @param data Data to pass to the app - * @param onSuccess - * @param onFail + * Launch an Android application activity. + * + * @param app Package name of the application (e.g. `com.example.app`) + * @param className Fully qualified activity class name (e.g. `com.example.app.MainActivity`) + * @param extras Optional key-value pairs passed as Android Intent extras + * @param onSuccess Called when the activity launches successfully + * @param onFail Called if launching the activity fails */ launchApp( app: string, className: string, - data: string, - onSuccess: OnSuccessBool, - onFail: OnFail, + extras?: Record, + onSuccess?: OnSuccessBool, + onFail?: OnFail, ): void; /** @@ -235,6 +274,27 @@ interface System { * @param onFail */ getCordovaIntent(onSuccess: (intent: Intent) => void, onFail: OnFail): void; + getRewardStatus( + onSuccess: (status: RewardStatus | string) => void, + onFail: OnFail, + ): void; + redeemReward( + offerId: string, + onSuccess: (status: RewardStatus | string) => void, + onFail: OnFail, + ): void; + /** + * Enable/disable native WebView long-press context behavior. + * Use this when rendering a custom editor context menu. + * @param disabled + * @param onSuccess + * @param onFail + */ + setNativeContextMenuDisabled( + disabled: boolean, + onSuccess?: () => void, + onFail?: OnFail, + ): void; } interface Window{ diff --git a/src/plugins/system/www/plugin.js b/src/plugins/system/www/plugin.js index 7831b3b09..49727ad4b 100644 --- a/src/plugins/system/www/plugin.js +++ b/src/plugins/system/www/plugin.js @@ -36,6 +36,12 @@ module.exports = { getFilesDir: function (success, error) { cordova.exec(success, error, 'System', 'getFilesDir', []); }, + getRewardStatus: function (success, error) { + cordova.exec(success, error, 'System', 'getRewardStatus', []); + }, + redeemReward: function (offerId, success, error) { + cordova.exec(success, error, 'System', 'redeemReward', [offerId]); + }, getParentPath: function (path, success, error) { cordova.exec(success, error, 'System', 'getParentPath', [path]); @@ -96,6 +102,9 @@ module.exports = { pinShortcut: function (id, onSuccess, onFail) { cordova.exec(onSuccess, onFail, 'System', 'pin-shortcut', [id]); }, + pinFileShortcut: function (shortcut, onSuccess, onFail) { + cordova.exec(onSuccess, onFail, 'System', 'pin-file-shortcut', [shortcut]); + }, manageAllFiles: function (onSuccess, onFail) { cordova.exec(onSuccess, onFail, 'System', 'manage-all-files', []); }, @@ -117,8 +126,30 @@ module.exports = { openInBrowser: function (src) { cordova.exec(null, null, 'System', 'open-in-browser', [src]); }, - launchApp: function (app, className, data, onSuccess, onFail) { - cordova.exec(onSuccess, onFail, 'System', 'launch-app', [app, className, data]); + /** + * Launch an Android application activity. + * + * @param {string} app - Package name of the application (e.g. `com.example.app`). + * @param {string} className - Fully qualified activity class name (e.g. `com.example.app.MainActivity`). + * @param {Object} [extras] - Optional key-value pairs passed as Intent extras. + * @param {(message: string) => void} [onSuccess] - Callback invoked when the activity launches successfully. + * @param {(error: any) => void} [onFail] - Callback invoked if launching the activity fails. + * + * @example + * System.launchApp( + * "com.example.app", + * "com.example.app.MainActivity", + * { + * user: "example", + * age: 20, + * premium: true + * }, + * (msg) => console.log(msg), + * (err) => console.error(err) + * ); + */ + launchApp: function (app, className, extras, onSuccess, onFail) { + cordova.exec(onSuccess, onFail, 'System', 'launch-app', [app, className, extras]); }, inAppBrowser: function (url, title, showButtons, disableCache) { var myInAppBrowser = { @@ -127,22 +158,48 @@ module.exports = { }; cordova.exec(function (data) { - try { - var dataTag = data.split(':')[0]; - var dataUrl = data.split(':')[1]; - if (dataTag === 'onOpenExternalBrowser') { + if (typeof data !== 'string') { + console.warn('System.inAppBrowser: invalid callback payload', data); + return; + } + var separatorIndex = data.indexOf(':'); + if (separatorIndex < 0) { + console.warn('System.inAppBrowser: malformed callback payload', data); + return; + } + var dataTag = data.slice(0, separatorIndex); + var dataUrl = data.slice(separatorIndex + 1); + if (dataTag === 'onOpenExternalBrowser') { + if (typeof myInAppBrowser.onOpenExternalBrowser === 'function') { myInAppBrowser.onOpenExternalBrowser(dataUrl); + } else { + console.warn('System.inAppBrowser: onOpenExternalBrowser handler is not set'); } - } catch (error) { } + } }, function (err) { - try { - onError(err); - } catch (error) { } + if (typeof myInAppBrowser.onError === 'function') { + myInAppBrowser.onError(err); + return; + } + console.warn('System.inAppBrowser error callback not handled', err); }, 'System', 'in-app-browser', [url, title, !!showButtons, disableCache]); return myInAppBrowser; }, setUiTheme: function (systemBarColor, theme, onSuccess, onFail) { - cordova.exec(onSuccess, onFail, 'System', 'set-ui-theme', [systemBarColor, theme]); + const color = systemBarColor.toLowerCase(); + + if (color === '#ffffff' || color === '#ffffffff') { + systemBarColor = '#fffffe'; + } + + cordova.exec((out) => { + window.statusbar.setBackgroundColor(systemBarColor); + + if (typeof onSuccess === "function") { + onSuccess(out); + } + + }, onFail, 'System', 'set-ui-theme', [systemBarColor, theme]); }, setIntentHandler: function (handler, onerror) { cordova.exec(handler, onerror, 'System', 'set-intent-handler', []); @@ -153,6 +210,15 @@ module.exports = { setInputType: function (type, onSuccess, onFail) { cordova.exec(onSuccess, onFail, 'System', 'set-input-type', [type]); }, + setNativeContextMenuDisabled: function (disabled, onSuccess, onFail) { + cordova.exec( + onSuccess, + onFail, + 'System', + 'set-native-context-menu-disabled', + [String(!!disabled)], + ); + }, getGlobalSetting: function (key, onSuccess, onFail) { cordova.exec(onSuccess, onFail, 'System', 'get-global-setting', [key]); }, @@ -195,4 +261,4 @@ module.exports = { ); }); } -}; \ No newline at end of file +}; diff --git a/src/plugins/terminal/plugin.xml b/src/plugins/terminal/plugin.xml index 72273257f..54b030c40 100644 --- a/src/plugins/terminal/plugin.xml +++ b/src/plugins/terminal/plugin.xml @@ -12,6 +12,9 @@ + + + @@ -28,6 +31,7 @@ + diff --git a/src/plugins/terminal/scripts/init-sandbox.sh b/src/plugins/terminal/scripts/init-sandbox.sh index 3b8a7c3d8..90154f793 100644 --- a/src/plugins/terminal/scripts/init-sandbox.sh +++ b/src/plugins/terminal/scripts/init-sandbox.sh @@ -4,6 +4,26 @@ mkdir -p "$PREFIX/tmp" mkdir -p "$PREFIX/alpine/tmp" mkdir -p "$PREFIX/public" +SRC1="$PREFIX/alpine/home" +SRC2="$PREFIX/alpine/root" +DEST="$PREFIX/public" + +mkdir -p "$DEST" + +move_all() { + SRC="$1" + + [ -d "$SRC" ] || return 0 + + # Only continue if directory is not empty + [ "$(find "$SRC" -mindepth 1 -maxdepth 1 | head -n 1)" ] || return 0 + + find "$SRC" -mindepth 1 -maxdepth 1 -exec mv -f {} "$DEST"/ \; +} + +move_all "$SRC1" +move_all "$SRC2" + export PROOT_TMP_DIR=$PREFIX/tmp if [ "$FDROID" = "true" ]; then @@ -63,6 +83,8 @@ ARGS="$ARGS -b /proc" ARGS="$ARGS -b /sys" ARGS="$ARGS -b $PREFIX" ARGS="$ARGS -b $PREFIX/public:/public" +ARGS="$ARGS -b $PREFIX/public:/home" +ARGS="$ARGS -b $PREFIX/public:/root" ARGS="$ARGS -b $PREFIX/alpine/tmp:/dev/shm" diff --git a/src/plugins/terminal/src/android/Executor.java b/src/plugins/terminal/src/android/Executor.java index 5d0e90777..6fc2c4bd8 100644 --- a/src/plugins/terminal/src/android/Executor.java +++ b/src/plugins/terminal/src/android/Executor.java @@ -29,6 +29,10 @@ import android.app.Activity; import com.foxdebug.acode.rk.exec.terminal.*; +import java.net.ServerSocket; + + + public class Executor extends CordovaPlugin { private Messenger serviceMessenger; @@ -42,6 +46,8 @@ public class Executor extends CordovaPlugin { private static final int REQUEST_POST_NOTIFICATIONS = 1001; + + private void askNotificationPermission(Activity context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { if (ContextCompat.checkSelfPermission( @@ -252,6 +258,32 @@ public boolean execute(String action, JSONArray args, CallbackContext callbackCo return true; } + if (action.equals("spawn")) { + try { + JSONArray cmdArr = args.getJSONArray(0); + String[] cmd = new String[cmdArr.length()]; + for (int i = 0; i < cmdArr.length(); i++) { + cmd[i] = cmdArr.getString(i); + } + + int port; + try (ServerSocket socket = new ServerSocket(0)) { + port = socket.getLocalPort(); + } + + ProcessServer server = new ProcessServer(port, cmd); + server.startAndAwait(); // blocks until onStart() fires — server is listening before port is returned + + callbackContext.success(port); + } catch (Exception e) { + e.printStackTrace(); + callbackContext.error("Failed to spawn process: " + e.getMessage()); + } + + return true; + } + + // For all other actions, ensure service is bound first if (!ensureServiceBound(callbackContext)) { // Error already sent by ensureServiceBound diff --git a/src/plugins/terminal/src/android/ProcessServer.java b/src/plugins/terminal/src/android/ProcessServer.java new file mode 100644 index 000000000..c6c264164 --- /dev/null +++ b/src/plugins/terminal/src/android/ProcessServer.java @@ -0,0 +1,118 @@ +package com.foxdebug.acode.rk.exec.terminal; + +import org.java_websocket.WebSocket; +import org.java_websocket.handshake.ClientHandshake; +import org.java_websocket.server.WebSocketServer; + +import java.io.InputStream; +import java.io.OutputStream; +import java.net.InetSocketAddress; +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.atomic.AtomicReference; + +class ProcessServer extends WebSocketServer { + + private final String[] cmd; + private final CountDownLatch readyLatch = new CountDownLatch(1); + private final AtomicReference startError = new AtomicReference<>(); + + private static final class ConnState { + final Process process; + final OutputStream stdin; + + ConnState(Process process, OutputStream stdin) { + this.process = process; + this.stdin = stdin; + } + } + + ProcessServer(int port, String[] cmd) { + super(new InetSocketAddress("127.0.0.1", port)); + this.cmd = cmd; + } + + void startAndAwait() throws Exception { + start(); + readyLatch.await(); + Exception err = startError.get(); + if (err != null) throw err; + } + + @Override + public void onStart() { + readyLatch.countDown(); + } + + @Override + public void onError(WebSocket conn, Exception ex) { + if (conn == null) { + // Bind/startup failure — unblock startAndAwait() so it can throw. + startError.set(ex); + readyLatch.countDown(); + } + // Per-connection errors: do nothing. onClose fires immediately after + // for the same connection, which is the single place cleanup happens. + } + + @Override + public void onOpen(WebSocket conn, ClientHandshake handshake) { + try { + Process process = new ProcessBuilder(cmd).redirectErrorStream(true).start(); + InputStream stdout = process.getInputStream(); + OutputStream stdin = process.getOutputStream(); + + conn.setAttachment(new ConnState(process, stdin)); + + new Thread(() -> { + try { + byte[] buf = new byte[8192]; + int len; + while ((len = stdout.read(buf)) != -1) { + conn.send(ByteBuffer.wrap(buf, 0, len)); + } + } catch (Exception ignored) {} + conn.close(1000, "process exited"); + }).start(); + + } catch (Exception e) { + conn.close(1011, "Failed to start process: " + e.getMessage()); + } + } + + @Override + public void onMessage(WebSocket conn, ByteBuffer msg) { + try { + ConnState state = conn.getAttachment(); + state.stdin.write(msg.array(), msg.position(), msg.remaining()); + state.stdin.flush(); + } catch (Exception ignored) {} + } + + @Override + public void onMessage(WebSocket conn, String message) { + try { + ConnState state = conn.getAttachment(); + state.stdin.write(message.getBytes(StandardCharsets.UTF_8)); + state.stdin.flush(); + } catch (Exception ignored) {} + } + + @Override + public void onClose(WebSocket conn, int code, String reason, boolean remote) { + try { + ConnState state = conn.getAttachment(); + if (state != null) state.process.destroy(); + } catch (Exception ignored) {} + + // stop() calls w.join() on every worker thread. If called directly from + // onClose (which runs on a WebSocketWorker thread), it deadlocks waiting + // for itself to finish. A separate thread sidesteps that entirely. + new Thread(() -> { + try { + stop(); + } catch (Exception ignored) {} + }).start(); + } +} \ No newline at end of file diff --git a/src/plugins/terminal/src/android/ProcessUtils.java b/src/plugins/terminal/src/android/ProcessUtils.java index 10ccc4034..eb3a8f579 100644 --- a/src/plugins/terminal/src/android/ProcessUtils.java +++ b/src/plugins/terminal/src/android/ProcessUtils.java @@ -1,6 +1,7 @@ package com.foxdebug.acode.rk.exec.terminal; import java.lang.reflect.Field; +import android.util.Log; import com.foxdebug.acode.rk.exec.terminal.*; public class ProcessUtils { @@ -39,7 +40,9 @@ public static void killProcessTree(Process process) { if (pid > 0) { Runtime.getRuntime().exec("kill -9 -" + pid); } - } catch (Exception ignored) {} + } catch (Exception error) { + Log.w("ProcessUtils", "Failed to kill process tree.", error); + } process.destroy(); } -} \ No newline at end of file +} diff --git a/src/plugins/terminal/www/Executor.js b/src/plugins/terminal/www/Executor.js index 4cb6c970c..7724447a7 100644 --- a/src/plugins/terminal/www/Executor.js +++ b/src/plugins/terminal/www/Executor.js @@ -12,6 +12,31 @@ class Executor { constructor(BackgroundExecutor = false) { this.ExecutorType = BackgroundExecutor ? "BackgroundExecutor" : "Executor"; } + + /** + * Spawns a process and exposes it as a raw WebSocket stream. + * + * @param {string[]} cmd - Command and arguments to execute (e.g. `["sh", "-c", "echo hi"]`). + * @param {(ws: WebSocket) => void} callback - Called with the connected WebSocket once the + * process is ready. Use `ws.send()` to write to stdin and `ws.onmessage` to read stdout. + */ + spawnStream(cmd, callback, onError) { + exec((port) => { + const ws = new WebSocket(`ws://127.0.0.1:${port}`); + ws.binaryType = "arraybuffer"; + + ws.onopen = () => { + callback(ws); + }; + + ws.onerror = (e) => { + if (onError) onError(e); + }; + + }, (err) => { if (onError) onError(err); }, "Executor", "spawn", [cmd]); + } + + /** * Starts a shell process and enables real-time streaming of stdout, stderr, and exit status. * @@ -150,6 +175,8 @@ class Executor { * * @returns {Promise} Resolves when the service has been stopped. * + * Note: This does not gurantee that all running processes have been killed, but the service will no longer be active. Use with caution. + * * @example * executor.stopService(); */ diff --git a/src/plugins/terminal/www/Terminal.js b/src/plugins/terminal/www/Terminal.js index d63c29c16..61512062c 100644 --- a/src/plugins/terminal/www/Terminal.js +++ b/src/plugins/terminal/www/Terminal.js @@ -327,21 +327,16 @@ const Terminal = { reject("Alpine is not installed."); return; } - const cmd = ` set -e - - INCLUDE_FILES="alpine .downloaded .extracted axs" + INCLUDE_FILES="alpine .downloaded .extracted .configured axs" if [ "$FDROID" = "true" ]; then INCLUDE_FILES="$INCLUDE_FILES libtalloc.so.2 libproot-xed.so" fi - - EXCLUDE="--exclude=alpine/data --exclude=alpine/system --exclude=alpine/vendor --exclude=alpine/sdcard --exclude=alpine/storage --exclude=alpine/public" - + EXCLUDE="--exclude=alpine/data --exclude=alpine/system --exclude=alpine/vendor --exclude=alpine/sdcard --exclude=alpine/storage --exclude=alpine/public --exclude=alpine/apex --exclude=alpine/odm --exclude=alpine/product --exclude=alpine/system_ext --exclude=alpine/linkerconfig --exclude=alpine/proc --exclude=alpine/sys --exclude=alpine/dev --exclude=alpine/run --exclude=alpine/tmp" tar -cf "$PREFIX/aterm_backup.tar" -C "$PREFIX" $EXCLUDE $INCLUDE_FILES echo "ok" `; - const result = await Executor.execute(cmd); if (result === "ok") { resolve(cordova.file.dataDirectory + "aterm_backup.tar"); @@ -375,9 +370,9 @@ const Terminal = { } const cmd = ` - sleep 2 + set -e - INCLUDE_FILES="$PREFIX/alpine $PREFIX/.downloaded $PREFIX/.extracted $PREFIX/axs" + INCLUDE_FILES="$PREFIX/alpine $PREFIX/.downloaded $PREFIX/.extracted $PREFIX/.configured $PREFIX/axs" if [ "$FDROID" = "true" ]; then INCLUDE_FILES="$INCLUDE_FILES $PREFIX/libtalloc.so.2 $PREFIX/libproot-xed.so" @@ -387,7 +382,7 @@ const Terminal = { rm -rf -- "$item" done - tar -xf "$PREFIX/aterm_backup.bin" -C "$PREFIX" + tar -xf $PREFIX/aterm_backup.* -C "$PREFIX" echo "ok" `; @@ -425,7 +420,7 @@ const Terminal = { const cmd = ` set -e - INCLUDE_FILES="$PREFIX/alpine $PREFIX/.downloaded $PREFIX/.extracted $PREFIX/axs" + INCLUDE_FILES="$PREFIX/alpine $PREFIX/.downloaded $PREFIX/.extracted $PREFIX/.configured $PREFIX/axs" if [ "$FDROID" = "true" ]; then INCLUDE_FILES="$INCLUDE_FILES $PREFIX/libtalloc.so.2 $PREFIX/libproot-xed.so" diff --git a/src/res/file-icons/style.css b/src/res/file-icons/style.css index e845690ad..2d9e4eaa1 100644 --- a/src/res/file-icons/style.css +++ b/src/res/file-icons/style.css @@ -886,6 +886,11 @@ color: #2c2d72; } +.file_type_luau:before { + content: "\e949"; + color: #2c2d72; +} + .file_type_lp:before { content: "\e949"; color: #2c2d72; @@ -1768,4 +1773,4 @@ .file_type_zig:before { content: "\e9a5"; color: #f7a41d; -} \ No newline at end of file +} diff --git a/src/res/icons/icons.ttf b/src/res/icons/icons.ttf index 751a3c9d4..7760219ea 100644 Binary files a/src/res/icons/icons.ttf and b/src/res/icons/icons.ttf differ diff --git a/src/res/icons/li-icon.ttf b/src/res/icons/li-icon.ttf deleted file mode 100644 index 6627c9325..000000000 Binary files a/src/res/icons/li-icon.ttf and /dev/null differ diff --git a/src/res/icons/style.css b/src/res/icons/style.css index cae1ff314..431df79bb 100644 --- a/src/res/icons/style.css +++ b/src/res/icons/style.css @@ -1,37 +1,13 @@ @font-face { font-family: "code-editor-icon"; - src: url("icons.ttf?r1lwvj") format("truetype"); + src: url("icons.ttf?v2") format("truetype"); font-weight: normal; font-style: normal; font-display: block; } - -@font-face { - font-family: "li-icon"; - src: url("li-icon.ttf") format("truetype"); - font-weight: normal; - font-style: normal; - font-display: block; -} - .icon { - /* use !important to prevent issues with browser extensions that change fonts */ - font-family: "code-editor-icon" !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.licons { /* Use !important to prevent extensions from overriding this font. */ - font-family: "li-icon" !important; + font-family: "code-editor-icon" !important; font-style: normal; font-weight: normal; font-variant: normal; @@ -42,1179 +18,941 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } - -.licons.scale:before { - content: "\f006"; -} - -.licons.cart:before { - content: "\f005"; -} - -.licons.zap:before { - content: "\f000"; -} - -.licons.verified:before { - content: "\f001"; +.icon.text-search:before { + content: "\f02a"; } - -.licons.terminal:before { - content: "\f002"; +.icon.wand:before { + content: "\f014"; } - -.licons.tag:before { - content: "\f003"; +.icon.wand-sparkles:before { + content: "\f013"; } - -.icon.acode:before { - content: "\ea0d"; - color: #3499fe; +.icon.link:before { + content: "\f012"; } - -.icon.shift:before { - content: "\ea06"; +.icon.brain:before { + content: "\f011"; } - -.icon.replace:before { - content: "\ea07"; +.icon.paperclip:before { + content: "\f010"; } - -.icon.replace_all:before { - content: "\ea08"; +.icon.palette:before { + content: "\f00f"; } - -.icon.moveline-up:before { - content: "\ea09"; +.icon.loader:before { + content: "\f00e"; } - -.icon.moveline-down:before { - content: "\ea0a"; +.icon.square-terminal:before { + content: "\f00d"; } - -.icon.copyline-up:before { - content: "\ea0b"; +.icon.house:before { + content: "\f00c"; } - -.icon.copyline-down:before { - content: "\ea0c"; +.icon.message-circle:before { + content: "\f00b"; } - -.icon.android:before { - content: "\e92e"; - color: #a4c639; +.icon.user-round:before { + content: "\f00a"; } - -.icon.angular:before { - content: "\e92f"; - color: #dd0031; -} - -.icon.angularuniversal:before { - content: "\e9ff"; - color: #00acc1; -} - -.icon.css3:before { - content: "\e930"; - color: #1572b6; -} - -.icon.dev-dot-to:before { - content: "\e931"; -} - -.icon.facebook:before { - content: "\e932"; - color: #4172b8; -} - -.icon.git:before { - content: "\e933"; - color: #f05032; -} - -.icon.github:before { - content: "\e934"; -} - -.icon.gmail:before { - content: "\e935"; - color: #d14836; -} - -.icon.googlechrome:before { - content: "\e936"; - color: #4285f4; -} - -.icon.googledrive:before { - content: "\e937"; - color: #4285f4; -} - -.icon.googleplay:before { - content: "\e938"; - color: #607d8b; -} - -.icon.html5:before { - content: "\e939"; - color: #e34f26; -} - -.icon.instagram:before { - content: "\e93a"; - color: #e4405f; -} - -.icon.ionic:before { - content: "\e93b"; - color: #3880ff; +.icon.funnel:before { + content: "\f009"; } - -.icon.javascript:before { - content: "\e93c"; - color: #f7df1e; -} - -.icon.jekyll:before { - content: "\e93d"; - color: #c00; -} - -.icon.linkedin:before { - content: "\e93e"; - color: #0077b5; -} - -.icon.markdown:before { - content: "\e93f"; -} - -.icon.npm:before { - content: "\e940"; - color: #cb3837; -} - -.icon.patreon:before { - content: "\ea0f"; - color: #f96854; -} - -.icon.paypal:before { - content: "\ea10"; - color: #00457c; -} - -.icon.python:before { - content: "\e941"; - color: #3776ab; -} - -.icon.react:before { - content: "\e942"; - color: #61dafb; -} - -.icon.ruby:before { - content: "\ea11"; - color: #cc342d; -} - -.icon.stackexchange:before { - content: "\e943"; - color: #1e5397; -} - -.icon.stackoverflow:before { - content: "\e944"; - color: #fe7a16; -} - -.icon.telegram:before { - content: "\e945"; - color: #2ca5e0; +.icon.zap:before { + content: "\f000"; } - -.icon.twitter:before { - content: "\e946"; - color: #1da1f2; +.icon.verified:before { + content: "\f001"; } - -.icon.visualstudiocode:before { - content: "\e947"; - color: #007acc; +.icon.terminal:before { + content: "\f002"; } - -.icon.vue:before { - content: "\e9fe"; - color: #4fc08d; +.icon.tag:before { + content: "\f003"; } - -.icon.webpack:before { - content: "\e948"; - color: #8dd6f9; +.icon.scale:before { + content: "\f004"; } - -.icon.yarn:before { - content: "\e949"; - color: #2c8ebb; +.icon.cart:before { + content: "\f005"; } - -.icon.youtube:before { - content: "\e94a"; - color: #f00; +.icon.lightbulb:before { + content: "\f006"; } - -.icon.zip:before { - content: "\e9f8"; +.icon.pin:before { + content: "\f007"; } - -.icon.zip-outline:before { - content: "\e9f9"; +.icon.pin-off:before { + content: "\f008"; } - .icon.document-information:before { content: "\e900"; } - .icon.document-information-outline:before { content: "\e901"; } - .icon.document-forbidden:before { content: "\e902"; } - .icon.document-forbidden-outline:before { content: "\e903"; } - .icon.document-remove:before { content: "\e904"; } - .icon.document-remove-outline:before { content: "\e905"; } - .icon.document-checked:before { content: "\e906"; } - .icon.document-checked-outline:before { content: "\e907"; } - .icon.document-cancel:before { content: "\e908"; } - .icon.document-cancel-outline:before { content: "\e909"; } - .icon.document-error:before { content: "\e90a"; } - .icon.document-error-outline:before { content: "\e90b"; } - .icon.document-locked:before { content: "\e90c"; } - .icon.document-locked-outline:before { content: "\e90d"; } - .icon.document-unlocked:before { content: "\e90e"; } - .icon.document-unlocked-outline:before { content: "\e90f"; } - .icon.document-search:before { content: "\e910"; } - .icon.document-search-outline:before { content: "\e911"; } - .icon.document-code:before { content: "\e912"; } - .icon.document-code-outline:before { content: "\e913"; } - .icon.document-text:before { content: "\e914"; } - .icon.document-text-outline:before { content: "\e915"; } - -.icon.document-text2:before { - content: "\ea01"; +.icon.text_format:before { + content: "\e916"; } - -.icon.document-text2-outline:before { - content: "\ea02"; +.icon.chat_bubble:before { + content: "\e917"; } - -.icon.document-text4:before { - content: "\ea03"; +.icon.movie:before { + content: "\e918"; } - -.icon.document-text5:before { - content: "\ea04"; +.icon.videocam:before { + content: "\e919"; } - .icon.document-add:before { content: "\e91a"; } - .icon.document-add-outline:before { content: "\e91b"; } - .icon.documents:before { content: "\e91c"; } - .icon.documents-outline:before { content: "\e91d"; } - .icon.folder-information:before { content: "\e91e"; } - .icon.folder-information-outline:before { content: "\e91f"; } - .icon.folder-remove:before { content: "\e920"; } - .icon.folder-remove-outline:before { content: "\e921"; } - .icon.folder-add:before { content: "\e922"; } - .icon.folder-add-outline:before { content: "\e923"; } - .icon.folder-upload:before { content: "\e924"; } - .icon.folder-upload-outline:before { content: "\e925"; } - .icon.folder-download:before { content: "\e926"; } - .icon.folder-download-outline:before { content: "\e927"; } - .icon.folder-search:before { content: "\e928"; } - .icon.folder-search-outline:before { content: "\e929"; } - .icon.folder:before { content: "\e92a"; } - .icon.folder-outline:before { content: "\e92b"; } - .icon.folder2:before { content: "\e92c"; } - .icon.folder2-outline:before { content: "\e92d"; } - +.icon.android:before { + content: "\e92e"; + color: #a4c639; +} +.icon.angular:before { + content: "\e92f"; + color: #dd0031; +} +.icon.css3:before { + content: "\e930"; + color: #1572b6; +} +.icon.dev-dot-to:before { + content: "\e931"; +} +.icon.facebook:before { + content: "\e932"; + color: #4172b8; +} +.icon.git:before { + content: "\e933"; + color: #f05032; +} +.icon.github:before { + content: "\e934"; +} +.icon.gmail:before { + content: "\e935"; + color: #d14836; +} +.icon.googlechrome:before { + content: "\e936"; + color: #4285f4; +} +.icon.googledrive:before { + content: "\e937"; + color: #4285f4; +} +.icon.googleplay:before { + content: "\e938"; + color: #607d8b; +} +.icon.html5:before { + content: "\e939"; + color: #e34f26; +} +.icon.instagram:before { + content: "\e93a"; + color: #e4405f; +} +.icon.ionic:before { + content: "\e93b"; + color: #3880ff; +} +.icon.javascript:before { + content: "\e93c"; + color: #f7df1e; +} +.icon.jekyll:before { + content: "\e93d"; + color: #c00; +} +.icon.linkedin:before { + content: "\e93e"; + color: #0077b5; +} +.icon.markdown:before { + content: "\e93f"; +} +.icon.npm:before { + content: "\e940"; + color: #cb3837; +} +.icon.python:before { + content: "\e941"; + color: #3776ab; +} +.icon.react:before { + content: "\e942"; + color: #61dafb; +} +.icon.stackexchange:before { + content: "\e943"; + color: #1e5397; +} +.icon.stackoverflow:before { + content: "\e944"; + color: #fe7a16; +} +.icon.telegram:before { + content: "\e945"; + color: #2ca5e0; +} +.icon.twitter:before { + content: "\e946"; + color: #1da1f2; +} +.icon.visualstudiocode:before { + content: "\e947"; + color: #007acc; +} +.icon.webpack:before { + content: "\e948"; + color: #8dd6f9; +} +.icon.yarn:before { + content: "\e949"; + color: #2c8ebb; +} +.icon.youtube:before { + content: "\e94a"; + color: #f00; +} .icon.error:before { content: "\e94b"; } - .icon.error_outline:before { content: "\e94c"; } - .icon.warningreport_problem:before { content: "\e94d"; } - -.icon.movie:before { - content: "\e918"; -} - .icon.library_addqueueadd_to_photos:before { content: "\e94e"; } - .icon.library_music:before { content: "\e94f"; } - .icon.new_releases:before { content: "\e950"; } - .icon.not_interesteddo_not_disturb:before { content: "\e951"; } - .icon.pause:before { content: "\e952"; } - .icon.pause_circle_filled:before { content: "\e953"; } - .icon.pause_circle_outline:before { content: "\e954"; } - .icon.play_arrow:before { content: "\e955"; } - .icon.play_circle_filled:before { content: "\e956"; } - .icon.play_circle_outline:before { content: "\e957"; } - .icon.repeat:before { content: "\e958"; } - .icon.repeat_one:before { content: "\e959"; } - .icon.replay:before { content: "\e95a"; } - .icon.shuffle:before { content: "\e95b"; } - .icon.skip_next:before { content: "\e95c"; } - .icon.skip_previous:before { content: "\e95d"; } - -.icon.videocam:before { - content: "\e919"; -} - -.icon.music_video:before { - content: "\e978"; -} - .icon.emailmailmarkunreadlocal_post_office:before { content: "\e95e"; } - -.icon.chat_bubble:before { - content: "\e917"; -} - .icon.vpn_key:before { content: "\e95f"; } - .icon.add:before { content: "\e960"; } - .icon.add_box:before { content: "\e961"; } - .icon.add_circle:before { content: "\e962"; } - .icon.add_circle_outlinecontrol_point:before { content: "\e963"; } - .icon.block:before { content: "\e964"; } - .icon.clearclose:before { content: "\e965"; } - .icon.copy:before { content: "\e966"; } - .icon.cut:before { content: "\e967"; } - .icon.paste:before { content: "\e968"; } - .icon.edit:before { content: "\e969"; } - .icon.drafts:before { content: "\e96a"; } - .icon.forward:before { content: "\e96b"; } - -.icon.linkinsert_link:before { - content: "\ea00"; -} - -.icon.redo:before { - content: "\e9f6"; -} - .icon.remove:before { content: "\e96c"; } - .icon.remove_circledo_not_disturb_on:before { content: "\e96d"; } - .icon.remove_circle_outline:before { content: "\e96e"; } - -.icon.save:before { - content: "\e9f7"; -} - .icon.send:before { content: "\e96f"; } - -.icon.text_format:before { - content: "\e916"; -} - .icon.undo:before { content: "\e970"; } - -.icon.font_download:before { - content: "\ea12"; -} - .icon.save_alt:before { content: "\e971"; } - .icon.file_copy:before { content: "\e972"; } - .icon.sd_storagesd_card:before { content: "\e973"; } - .icon.attach_file:before { content: "\e974"; } - .icon.attach_money:before { content: "\e975"; } - .icon.format_bold:before { content: "\e976"; } - .icon.format_color_fill:before { content: "\e977"; } - +.icon.music_video:before { + content: "\e978"; +} .icon.format_size:before { content: "\e979"; } - .icon.format_underlined:before { content: "\e97a"; } - .icon.insert_chartpollassessment:before { content: "\e97b"; } - .icon.insert_emoticontag_facesmood:before { content: "\e97c"; } - .icon.insert_invitationevent:before { content: "\e97d"; } - .icon.image:before { content: "\e97e"; } - .icon.publish:before { content: "\e97f"; } - .icon.vertical_align_bottom:before { content: "\e980"; } - .icon.vertical_align_top:before { content: "\e981"; } - .icon.monetization_on:before { content: "\e982"; } - -.icon.notes:before { - content: "\ea13"; -} - .icon.cloud:before { content: "\e983"; } - .icon.cloud_done:before { content: "\e984"; } - .icon.cloud_download:before { content: "\e985"; } - .icon.cloud_uploadbackup:before { content: "\e986"; } - .icon.file_downloadget_app:before { content: "\e987"; } - .icon.file_upload:before { content: "\e988"; } - -.icon.folder4:before { - content: "\ea05"; +.icon.audiotrack:before { + content: "\e989"; +} +.icon.music_note:before { + content: "\e98a"; } - -.icon.folder_open:before { - content: "\e9fb"; +.icon.movie_filter:before { + content: "\e98b"; +} +.icon.local_moviestheaters:before { + content: "\e98c"; } - .icon.keyboard_arrow_down:before { content: "\e98d"; } - .icon.keyboard_arrow_left:before { content: "\e98e"; } - .icon.keyboard_arrow_right:before { content: "\e98f"; } - .icon.keyboard_arrow_up:before { content: "\e990"; } - .icon.keyboard_backspace:before { content: "\e991"; } - .icon.keyboard_capslock:before { content: "\e992"; } - .icon.keyboard_hide:before { content: "\e993"; } - .icon.keyboard_tab:before { content: "\e994"; } - .icon.keyboard_voice:before { content: "\e995"; } - .icon.laptop_chromebook:before { content: "\e996"; } - .icon.laptop_mac:before { content: "\e997"; } - .icon.laptop_windows:before { content: "\e998"; } - .icon.phone_android:before { content: "\e999"; } - .icon.phone_iphone:before { content: "\e99a"; } - -.icon.audiotrack:before { - content: "\e989"; -} - .icon.color_lenspalette:before { content: "\e99b"; } - .icon.colorize:before { content: "\e99c"; } - -.icon.music_note:before { - content: "\e98a"; -} - .icon.navigate_beforechevron_left:before { content: "\e99d"; } - .icon.navigate_nextchevron_right:before { content: "\e99e"; } - .icon.remove_red_eyevisibility:before { content: "\e99f"; } - .icon.tune:before { content: "\e9a0"; } - -.icon.movie_filter:before { - content: "\e98b"; -} - .icon.add_photo_alternate:before { content: "\e9a1"; } - .icon.image_search:before { content: "\e9a2"; } - .icon.beenhere:before { content: "\e9a3"; } - -.icon.local_moviestheaters:before { - content: "\e98c"; -} - .icon.apps:before { content: "\e9a4"; } - .icon.arrow_back:before { content: "\e9a5"; } - .icon.arrow_drop_down:before { content: "\e9a6"; } - .icon.arrow_drop_down_circle:before { content: "\e9a7"; } - .icon.arrow_drop_up:before { content: "\e9a8"; } - .icon.arrow_forward:before { content: "\e9a9"; } - .icon.cancel:before { content: "\e9aa"; } - .icon.check:before { content: "\e9ab"; } - .icon.expand_less:before { content: "\e9ac"; } - .icon.expand_more:before { content: "\e9ad"; } - .icon.fullscreen:before { content: "\e9ae"; } - .icon.fullscreen_exit:before { content: "\e9af"; } - .icon.menu:before { content: "\e9b0"; } - .icon.keyboard_control:before { content: "\e9b1"; } - .icon.more_vert:before { content: "\e9b2"; } - .icon.refresh:before { content: "\e9b3"; } - .icon.unfold_less:before { content: "\e9b4"; } - .icon.unfold_more:before { content: "\e9b5"; } - .icon.arrow_upward:before { content: "\e9b6"; } - .icon.subdirectory_arrow_left:before { content: "\e9b7"; } - .icon.subdirectory_arrow_right:before { content: "\e9b8"; } - .icon.arrow_downward:before { content: "\e9b9"; } - .icon.first_page:before { content: "\e9ba"; } - .icon.last_page:before { content: "\e9bb"; } - .icon.arrow_left:before { content: "\e9bc"; } - .icon.arrow_right:before { content: "\e9bd"; } - .icon.arrow_back_ios:before { content: "\e9be"; } - .icon.arrow_forward_ios:before { content: "\e9bf"; } - .icon.folder_special:before { content: "\e9c0"; } - .icon.priority_high:before { content: "\e9c1"; } - .icon.notifications:before { content: "\e9c2"; } - .icon.notifications_none:before { content: "\e9c3"; } - .icon.person:before { content: "\e9c4"; } - .icon.public:before { content: "\e9c5"; } - .icon.share:before { content: "\e9c6"; } - .icon.sentiment_dissatisfied:before { content: "\e9c7"; } - .icon.sentiment_neutral:before { content: "\e9c8"; } - .icon.sentiment_satisfied:before { content: "\e9c9"; } - .icon.sentiment_very_dissatisfied:before { content: "\e9ca"; } - .icon.sentiment_very_satisfied:before { content: "\e9cb"; } - .icon.stargrade:before { content: "\e9cc"; } - .icon.star_half:before { content: "\e9cd"; } - .icon.star_outline:before { content: "\e9ce"; } - .icon.account_box:before { content: "\e9cf"; } - .icon.account_circle:before { content: "\e9d0"; } - .icon.android-full:before { content: "\e9d1"; } - .icon.autorenew:before { content: "\e9d2"; } - .icon.cached:before { content: "\e9d3"; } - .icon.check_circle:before { content: "\e9d4"; } - .icon.code:before { content: "\e9d5"; } - .icon.delete:before { content: "\e9d6"; } - .icon.exit_to_app:before { content: "\e9d7"; } - .icon.extension:before { content: "\e9d8"; } - .icon.favorite:before { content: "\e9d9"; } - .icon.favorite_outline:before { content: "\e9da"; } - .icon.help:before { content: "\e9db"; } - .icon.highlight_remove:before { content: "\e9dc"; } - .icon.historyrestore:before { content: "\e9dd"; } - .icon.home:before { content: "\e9de"; } - .icon.httpslock:before { content: "\e9df"; } - .icon.info:before { content: "\e9e0"; } - .icon.info_outline:before { content: "\e9e1"; } - .icon.input:before { content: "\e9e2"; } - .icon.label:before { content: "\e9e3"; } - .icon.label_outline:before { content: "\e9e4"; } - -.icon.launchopen_in_new:before { - content: "\e9fc"; -} - -.icon.open_in_browser:before { - content: "\e9fd"; -} - .icon.perm_media:before { content: "\e9e5"; } - .icon.power_settings_new:before { content: "\e9e6"; } - .icon.search:before { content: "\e9e7"; } - .icon.settings:before { content: "\e9e8"; } - .icon.settings_applications:before { content: "\e9e9"; } - .icon.shop:before { content: "\e9ea"; } - .icon.spellcheck:before { content: "\e9eb"; } - .icon.stars:before { content: "\e9ec"; } - .icon.translate:before { content: "\e9ed"; } - .icon.visibility_off:before { content: "\e9ee"; } - -.icon.http:before { - content: "\ea14"; -} - -.icon.compare_arrows:before { - content: "\ea15"; -} - .icon.update:before { content: "\e9ef"; } - .icon.g_translate:before { content: "\e9f0"; } - .icon.check_circle_outline:before { content: "\e9f1"; } - .icon.delete_outline:before { content: "\e9f2"; } - .icon.drive_folder_upload:before { content: "\e9f3"; } - -.icon.home_filled:before { - content: "\ea16"; -} - .icon.library_add_check:before { content: "\e9f4"; } - +.icon.replay_circle_filled:before { + content: "\e9f5"; +} +.icon.redo:before { + content: "\e9f6"; +} +.icon.save:before { + content: "\e9f7"; +} +.icon.zip:before { + content: "\e9f8"; +} +.icon.zip-outline:before { + content: "\e9f9"; +} .icon.logout:before { content: "\e9fa"; } - -.icon.replay_circle_filled:before { - content: "\e9f5"; +.icon.folder_open:before { + content: "\e9fb"; +} +.icon.launchopen_in_new:before { + content: "\e9fc"; +} +.icon.open_in_browser:before { + content: "\e9fd"; +} +.icon.vue:before { + content: "\e9fe"; + color: #4fc08d; +} +.icon.angularuniversal:before { + content: "\e9ff"; + color: #00acc1; +} +.icon.linkinsert_link:before { + content: "\ea00"; +} +.icon.document-text2:before { + content: "\ea01"; +} +.icon.document-text2-outline:before { + content: "\ea02"; +} +.icon.document-text4:before { + content: "\ea03"; +} +.icon.document-text5:before { + content: "\ea04"; +} +.icon.folder4:before { + content: "\ea05"; +} +.icon.shift:before { + content: "\ea06"; +} +.icon.replace:before { + content: "\ea07"; +} +.icon.replace_all:before { + content: "\ea08"; +} +.icon.moveline-up:before { + content: "\ea09"; +} +.icon.moveline-down:before { + content: "\ea0a"; +} +.icon.copyline-up:before { + content: "\ea0b"; +} +.icon.copyline-down:before { + content: "\ea0c"; +} +.icon.acode:before { + content: "\ea0d"; + color: #3499fe; +} +.icon.patreon:before { + content: "\ea0f"; + color: #f96854; +} +.icon.paypal:before { + content: "\ea10"; + color: #00457c; +} +.icon.ruby:before { + content: "\ea11"; + color: #cc342d; +} +.icon.font_download:before { + content: "\ea12"; +} +.icon.notes:before { + content: "\ea13"; +} +.icon.http:before { + content: "\ea14"; +} +.icon.compare_arrows:before { + content: "\ea15"; +} +.icon.home_filled:before { + content: "\ea16"; } - .icon.height:before { content: "\ea17"; } - .icon.all_inclusive:before { content: "\ea18"; -} \ No newline at end of file +} diff --git a/src/settings/appSettings.js b/src/settings/appSettings.js index 2dea46a51..c2284cbce 100644 --- a/src/settings/appSettings.js +++ b/src/settings/appSettings.js @@ -1,11 +1,13 @@ import fsOperation from "fileSystem"; import ajax from "@deadlyjack/ajax"; -import { resetKeyBindings } from "ace/commands"; +import { resetKeyBindings } from "cm/commandRegistry"; import settingsPage from "components/settingsPage"; import loader from "dialogs/loader"; +import select from "dialogs/select"; import actions from "handlers/quickTools"; import actionStack from "lib/actionStack"; import constants from "lib/constants"; +import fonts from "lib/fonts"; import lang from "lib/lang"; import openFile from "lib/openFile"; import appSettings from "lib/settings"; @@ -18,11 +20,26 @@ import Url from "utils/Url"; export default function otherSettings() { const values = appSettings.value; const title = strings["app settings"].capitalize(); + const appFontText = strings["app font"] || "App font"; + const appFontInfo = + strings["settings-info-app-font-family"] || + "Choose the font used across the app interface."; + const defaultFontLabel = strings.default || "Default"; + const categories = { + interface: strings["settings-category-interface"], + fonts: strings["settings-category-fonts"], + filesSessions: strings["settings-category-files-sessions"], + advanced: strings["settings-category-advanced"], + }; const items = [ { - key: "retryRemoteFsAfterFail", - text: strings["retry ftp/sftp when fail"], - checkbox: values.retryRemoteFsAfterFail, + key: "lang", + text: strings["change language"], + value: values.lang, + select: lang.list, + valueText: (value) => lang.getName(value), + info: strings["settings-info-app-language"], + category: categories.interface, }, { key: "animation", @@ -34,58 +51,34 @@ export default function otherSettings() { ["yes", strings.yes], ["system", strings.system], ], + info: strings["settings-info-app-animation"], + category: categories.interface, }, { key: "fullscreen", text: strings.fullscreen.capitalize(), checkbox: values.fullscreen, + info: strings["settings-info-app-fullscreen"], + category: categories.interface, }, { - key: "lang", - text: strings["change language"], - value: values.lang, - select: lang.list, - valueText: (value) => lang.getName(value), - }, - { - key: "keybindings", - text: strings["key bindings"], - select: [ - ["edit", strings.edit], - ["reset", strings.reset], - ], - }, - { - key: "confirmOnExit", - text: strings["confirm on exit"], - checkbox: values.confirmOnExit, - }, - { - key: "checkFiles", - text: strings["check file changes"], - checkbox: values.checkFiles, - }, - { - key: "checkForAppUpdates", - text: strings["check for app updates"], - checkbox: values.checkForAppUpdates, - info: strings["info-checkForAppUpdates"], - }, - { - key: "console", - text: strings.console, - value: values.console, - select: [appSettings.CONSOLE_LEGACY, appSettings.CONSOLE_ERUDA], - }, - { - key: "developerMode", - text: strings["developer mode"], - checkbox: values.developerMode, - info: strings["info-developermode"], - }, - { - key: "cleanInstallState", - text: strings["clean install state"], + key: "uiZoom", + text: strings["ui zoom"] || "UI zoom", + value: values.uiZoom, + valueText: (value) => `${value}%`, + prompt: strings["ui zoom"] || "UI zoom", + promptType: "number", + promptOptions: { + test(value) { + if (!/^\d+$/.test(String(value).trim())) return false; + const zoom = Number(value); + return zoom >= 70 && zoom <= 160; + }, + }, + info: + strings["settings-info-app-ui-zoom"] || + "Scale text across the Acode interface.", + category: categories.interface, }, { key: "keyboardMode", @@ -102,26 +95,36 @@ export default function otherSettings() { strings["no suggestions aggressive"], ], ], + info: strings["settings-info-app-keyboard-mode"], + category: categories.interface, }, { key: "vibrateOnTap", text: strings["vibrate on tap"], checkbox: values.vibrateOnTap, + info: strings["settings-info-app-vibrate-on-tap"], + category: categories.interface, }, { - key: "rememberFiles", - text: strings["remember opened files"], - checkbox: values.rememberFiles, + key: "floatingButton", + text: strings["floating button"], + checkbox: values.floatingButton, + info: strings["settings-info-app-floating-button"], + category: categories.interface, }, { - key: "rememberFolders", - text: strings["remember opened folders"], - checkbox: values.rememberFolders, + key: "showSideButtons", + text: strings["show side buttons"], + checkbox: values.showSideButtons, + info: strings["settings-info-app-side-buttons"], + category: categories.interface, }, { - key: "floatingButton", - text: strings["floating button"], - checkbox: values.floatingButton, + key: "showSponsorSidebarApp", + text: `${strings.sponsor} (${strings.sidebar})`, + checkbox: values.showSponsorSidebarApp, + info: strings["settings-info-app-sponsor-sidebar"], + category: categories.interface, }, { key: "openFileListPos", @@ -133,12 +136,15 @@ export default function otherSettings() { [appSettings.OPEN_FILE_LIST_POS_HEADER, strings.header], [appSettings.OPEN_FILE_LIST_POS_BOTTOM, strings.bottom], ], + info: strings["settings-info-app-open-file-list-position"], + category: categories.interface, }, { key: "quickTools", text: strings["quick tools"], checkbox: !!values.quickTools, info: strings["info-quickTools"], + category: categories.interface, }, { key: "quickToolsTriggerMode", @@ -148,6 +154,15 @@ export default function otherSettings() { [appSettings.QUICKTOOLS_TRIGGER_MODE_CLICK, "click"], [appSettings.QUICKTOOLS_TRIGGER_MODE_TOUCH, "touch"], ], + info: strings["settings-info-app-quick-tools-trigger-mode"], + category: categories.interface, + }, + { + key: "quickToolsSettings", + text: strings["shortcut buttons"], + info: strings["settings-info-app-quick-tools-settings"], + category: categories.interface, + chevron: true, }, { key: "touchMoveThreshold", @@ -160,21 +175,47 @@ export default function otherSettings() { return value >= 0; }, }, + info: strings["settings-info-app-touch-move-threshold"], + category: categories.interface, }, { - key: "quickToolsSettings", - text: strings["shortcut buttons"], - index: 0, + key: "appFont", + text: appFontText, + value: values.appFont || "", + valueText: (value) => value || defaultFontLabel, + get select() { + return [["", defaultFontLabel], ...fonts.getNames()]; + }, + info: appFontInfo, + category: categories.fonts, }, { key: "fontManager", text: strings["fonts"], - index: 1, + info: strings["settings-info-app-font-manager"], + category: categories.fonts, + chevron: true, }, { - key: "showSideButtons", - text: strings["show side buttons"], - checkbox: values.showSideButtons, + key: "rememberFiles", + text: strings["remember opened files"], + checkbox: values.rememberFiles, + info: strings["settings-info-app-remember-files"], + category: categories.filesSessions, + }, + { + key: "rememberFolders", + text: strings["remember opened folders"], + checkbox: values.rememberFolders, + info: strings["settings-info-app-remember-folders"], + category: categories.filesSessions, + }, + { + key: "retryRemoteFsAfterFail", + text: strings["retry ftp/sftp when fail"], + checkbox: values.retryRemoteFsAfterFail, + info: strings["settings-info-app-retry-remote-fs"], + category: categories.filesSessions, }, { key: "excludeFolders", @@ -189,6 +230,8 @@ export default function otherSettings() { }); }, }, + info: strings["settings-info-app-exclude-folders"], + category: categories.filesSessions, }, { key: "defaultFileEncoding", @@ -203,14 +246,78 @@ export default function otherSettings() { return [id, encoding.label]; }), ], + info: strings["settings-info-app-default-file-encoding"], + category: categories.filesSessions, + }, + { + key: "keybindings", + text: strings["key bindings"], + info: strings["settings-info-app-keybindings"], + category: categories.advanced, + chevron: true, + }, + { + key: "confirmOnExit", + text: strings["confirm on exit"], + checkbox: values.confirmOnExit, + info: strings["settings-info-app-confirm-on-exit"], + category: categories.advanced, + }, + { + key: "checkFiles", + text: strings["check file changes"], + checkbox: values.checkFiles, + info: strings["settings-info-app-check-files"], + category: categories.advanced, + }, + { + key: "checkForAppUpdates", + text: strings["check for app updates"], + checkbox: values.checkForAppUpdates, + info: strings["info-checkForAppUpdates"], + category: categories.advanced, + }, + { + key: "console", + text: strings.console, + value: values.console, + select: [appSettings.CONSOLE_LEGACY, appSettings.CONSOLE_ERUDA], + info: strings["settings-info-app-console"], + category: categories.advanced, + }, + { + key: "developerMode", + text: strings["developer mode"], + checkbox: values.developerMode, + info: strings["info-developermode"], + category: categories.advanced, + }, + { + key: "cleanInstallState", + text: strings["clean install state"], + info: strings["settings-info-app-clean-install-state"], + category: categories.advanced, + chevron: true, }, ]; - return settingsPage(title, items, callback); + return settingsPage(title, items, callback, undefined, { + preserveOrder: true, + pageClassName: "detail-settings-page", + listClassName: "detail-settings-list", + infoAsDescription: true, + valueInTail: true, + }); async function callback(key, value) { switch (key) { case "keybindings": { + value = await select(strings["key bindings"], [ + ["edit", strings.edit], + ["reset", strings.reset], + ]); + if (!value) return; + if (value === "edit") { actionStack.pop(2); openFile(KEYBINDING_FILE); @@ -228,6 +335,10 @@ export default function otherSettings() { FontManager(); return; + case "appFont": + await fonts.setAppFont(value); + break; + case "console": { if (value !== "eruda") { break; @@ -321,6 +432,12 @@ export default function otherSettings() { system.setInputType(value); break; + case "uiZoom": + value = Number(value); + if (!Number.isInteger(value)) return; + value = Math.min(160, Math.max(70, value)); + break; + case "fullscreen": if (value) acode.exec("enable-fullscreen"); else acode.exec("disable-fullscreen"); diff --git a/src/settings/backupRestore.js b/src/settings/backupRestore.js index a181c2d47..e95b2b01b 100644 --- a/src/settings/backupRestore.js +++ b/src/settings/backupRestore.js @@ -142,18 +142,25 @@ function backupRestore() { key: "backup", text: strings.backup.capitalize(), icon: "file_downloadget_app", + chevron: true, }, { key: "restore", text: strings.restore.capitalize(), icon: "historyrestore", + chevron: true, }, { note: strings["backup/restore note"], }, ]; - return settingsPage(title, items, callback); + return settingsPage(title, items, callback, undefined, { + preserveOrder: true, + pageClassName: "detail-settings-page", + listClassName: "detail-settings-list", + groupByDefault: true, + }); function callback(key) { switch (key) { diff --git a/src/settings/editorSettings.js b/src/settings/editorSettings.js index 966efe57e..2a466c7b4 100644 --- a/src/settings/editorSettings.js +++ b/src/settings/editorSettings.js @@ -7,20 +7,31 @@ import scrollSettings from "./scrollSettings"; export default function editorSettings() { const title = strings["editor settings"]; const values = appSettings.value; + const categories = { + scrolling: strings["settings-category-scrolling"], + textLayout: strings["settings-category-text-layout"], + editing: strings["settings-category-editing"], + assistance: strings["settings-category-assistance"], + guidesIndicators: strings["settings-category-guides-indicators"], + cursorSelection: strings["settings-category-cursor-selection"], + }; const items = [ { - key: "autosave", - text: strings.autosave, - value: values.autosave, - valueText: (value) => (value ? value : strings.no), - prompt: strings.delay + " (>=1000 || 0)", - promptType: "number", - promptOptions: { - test(value) { - value = Number.parseInt(value); - return value >= 1000 || value === 0; - }, + key: "scroll-settings", + text: strings["scroll settings"], + info: strings["settings-info-editor-scroll-settings"], + category: categories.scrolling, + chevron: true, + }, + { + key: "editorFont", + text: strings["editor font"], + value: values.editorFont, + get select() { + return fonts.getNames(); }, + info: strings["settings-info-editor-font-family"], + category: categories.textLayout, }, { key: "fontSize", @@ -31,146 +42,176 @@ export default function editorSettings() { required: true, match: constants.FONT_SIZE, }, + info: strings["settings-info-editor-font-size"], + category: categories.textLayout, }, { - key: "softTab", - text: strings["soft tab"], - checkbox: values.softTab, + key: "lineHeight", + text: strings["line height"], + value: values.lineHeight, + prompt: strings["line height"], + promptType: "number", + promptOptions: { + test(value) { + value = Number.parseFloat(value); + return value >= 1 && value <= 2; + }, + }, + info: strings["settings-info-editor-line-height"], + category: categories.textLayout, }, { - key: "tabSize", - text: strings["tab size"], - value: values.tabSize, - prompt: strings["tab size"], + key: "textWrap", + text: strings["text wrap"], + checkbox: values.textWrap, + info: strings["settings-info-editor-text-wrap"], + category: categories.textLayout, + }, + { + key: "hardWrap", + text: strings["hard wrap"], + checkbox: values.hardWrap, + info: strings["settings-info-editor-hard-wrap"], + category: categories.textLayout, + }, + { + key: "autosave", + text: strings.autosave, + value: values.autosave, + valueText: (value) => (value ? value : strings.no), + prompt: strings.delay + " (>=1000 || 0)", promptType: "number", promptOptions: { test(value) { value = Number.parseInt(value); - return value >= 1 && value <= 8; + return value >= 1000 || value === 0; }, }, + info: strings["settings-info-editor-autosave"], + category: categories.editing, }, { - key: "linenumbers", - text: strings["show line numbers"], - checkbox: values.linenumbers, + key: "softTab", + text: strings["soft tab"], + checkbox: values.softTab, + info: strings["settings-info-editor-soft-tab"], + category: categories.editing, }, { - key: "lineHeight", - text: strings["line height"], - value: values.lineHeight, - prompt: strings["line height"], + key: "tabSize", + text: strings["tab size"], + value: values.tabSize, + prompt: strings["tab size"], promptType: "number", promptOptions: { test(value) { - value = Number.parseFloat(value); - return value >= 1 && value <= 2; + value = Number.parseInt(value); + return value >= 1 && value <= 8; }, }, + info: strings["settings-info-editor-tab-size"], + category: categories.editing, }, { key: "formatOnSave", text: strings["format on save"], checkbox: values.formatOnSave, - }, - { - key: "showSpaces", - text: strings["show spaces"], - checkbox: values.showSpaces, - }, - { - key: "editorFont", - text: strings["editor font"], - value: values.editorFont, - get select() { - return fonts.getNames(); - }, + info: strings["settings-info-editor-format-on-save"], + category: categories.editing, }, { key: "liveAutoCompletion", text: strings["live autocompletion"], checkbox: values.liveAutoCompletion, + info: strings["settings-info-editor-live-autocomplete"], + category: categories.assistance, }, { - key: "showPrintMargin", - text: strings["show print margin"], - checkbox: values.showPrintMargin, + key: "autoCloseTags", + text: strings["auto close tags"], + checkbox: values.autoCloseTags, + info: strings["settings-info-editor-auto-close-tags"], + category: categories.assistance, }, { - key: "textWrap", - text: strings["text wrap"], - checkbox: values.textWrap, - }, - { - key: "printMargin", - text: strings["print margin"], - value: values.printMargin, - prompt: strings["print margin"], - promptType: "number", - promptOptions: { - test(value) { - value = Number.parseInt(value); - return value >= 10 && value <= 200; - }, - }, + key: "colorPreview", + text: strings["color preview"], + checkbox: values.colorPreview, + info: strings["settings-info-editor-color-preview"], + category: categories.assistance, }, { - key: "teardropSize", - text: strings["cursor controller size"], - value: values.teardropSize, - valueText(value) { - return this.select.find(([v]) => v === value)[1]; - }, - select: [ - [0, strings.none], - [20, strings.small], - [30, strings.medium], - [60, strings.large], - ], + key: "linenumbers", + text: strings["show line numbers"], + checkbox: values.linenumbers, + info: strings["settings-info-editor-line-numbers"], + category: categories.guidesIndicators, }, { key: "relativeLineNumbers", text: strings["relative line numbers"], checkbox: values.relativeLineNumbers, + info: strings["settings-info-editor-relative-line-numbers"], + category: categories.guidesIndicators, }, { - key: "elasticTabstops", - text: strings["elastic tabstops"], - checkbox: values.elasticTabstops, + key: "lintGutter", + text: strings["lint gutter"] || "Show lint gutter", + checkbox: values.lintGutter ?? true, + info: strings["settings-info-editor-lint-gutter"], + category: categories.guidesIndicators, }, { - key: "rtlText", - text: strings["line based rtl switching"], - checkbox: values.rtlText, + key: "showSpaces", + text: strings["show spaces"], + checkbox: values.showSpaces, + info: strings["settings-info-editor-show-spaces"], + category: categories.guidesIndicators, }, { - key: "hardWrap", - text: strings["hard wrap"], - checkbox: values.hardWrap, + key: "indentGuides", + text: strings["indent guides"] || "Indent guides", + checkbox: values.indentGuides ?? false, + info: strings["settings-info-editor-indent-guides"], + category: categories.guidesIndicators, }, { - key: "useTextareaForIME", - text: strings["use textarea for ime"], - checkbox: values.useTextareaForIME, + key: "rainbowBrackets", + text: strings["rainbow brackets"] || "Rainbow brackets", + checkbox: values.rainbowBrackets ?? true, + info: strings["settings-info-editor-rainbow-brackets"], + category: categories.guidesIndicators, }, { key: "fadeFoldWidgets", text: strings["fade fold widgets"], checkbox: values.fadeFoldWidgets, + info: strings["settings-info-editor-fade-fold-widgets"], + category: categories.guidesIndicators, }, { - index: 0, - key: "scroll-settings", - text: strings["scroll settings"], + key: "shiftClickSelection", + text: strings["shift click selection"], + checkbox: values.shiftClickSelection, + info: strings["settings-info-editor-shift-click-selection"], + category: categories.cursorSelection, }, { - key: "colorPreview", - text: strings["color preview"], - checkbox: values.colorPreview, + key: "rtlText", + text: strings["line based rtl switching"], + checkbox: values.rtlText, + info: strings["settings-info-editor-rtl-text"], + category: categories.cursorSelection, }, ]; - return settingsPage(title, items, callback); + return settingsPage(title, items, callback, undefined, { + preserveOrder: true, + pageClassName: "detail-settings-page", + listClassName: "detail-settings-list", + infoAsDescription: true, + valueInTail: true, + }); /** * Callback for settings page when an item is clicked @@ -181,7 +222,7 @@ export default function editorSettings() { switch (key) { case "scroll-settings": appSettings.uiSettings[key].show(); - break; + return; case "editorFont": fonts.setFont(value); diff --git a/src/settings/filesSettings.js b/src/settings/filesSettings.js index c45a82b05..ca697c704 100644 --- a/src/settings/filesSettings.js +++ b/src/settings/filesSettings.js @@ -19,7 +19,12 @@ export default function filesSettings() { }, ]; - return settingsPage(title, items, callback); + return settingsPage(title, items, callback, undefined, { + preserveOrder: true, + pageClassName: "detail-settings-page", + listClassName: "detail-settings-list", + groupByDefault: true, + }); function callback(key, value) { appSettings.value.fileBrowser[key] = value; diff --git a/src/settings/formatterSettings.js b/src/settings/formatterSettings.js index 25dae3911..512510d6d 100644 --- a/src/settings/formatterSettings.js +++ b/src/settings/formatterSettings.js @@ -1,35 +1,58 @@ +import { getModes } from "cm/modelist"; import settingsPage from "components/settingsPage"; import appSettings from "lib/settings"; +import helpers from "utils/helpers"; export default function formatterSettings(languageName) { const title = strings.formatter; const values = appSettings.value; const { formatters } = acode; - const { modes } = ace.require("ace/ext/modelist"); + const languagesLabel = strings.languages || "Languages"; - const items = modes.map((mode) => { - const { name, caption } = mode; - const formatterID = values.formatter[name] || null; - const extensions = mode.extensions.split("|"); - const options = acode.getFormatterFor(extensions); + // Build items from CodeMirror modelist + const items = getModes() + .slice() + .sort((a, b) => + String(a.caption || a.name).localeCompare(String(b.caption || b.name)), + ) + .map((mode) => { + const { name, caption, extensions } = mode; + const formatterID = values.formatter[name] || null; + // Only pass real extensions (skip anchored filename patterns like ^Dockerfile) + const extList = String(extensions) + .split("|") + .filter((e) => e && !e.startsWith("^")); + const options = acode.getFormatterFor(extList); + const sampleExt = extList[0] || name; - return { - key: name, - text: caption, - icon: `file file_type_default file_type_${name}`, - value: formatterID, - valueText: (value) => { - const formatter = formatters.find(({ id }) => id === value); - if (formatter) { - return formatter.name; - } - return strings.none; - }, - select: options, - }; + return { + key: name, + text: caption, + icon: helpers.getIconForFile(`sample.${sampleExt}`), + value: formatterID, + valueText: (value) => { + const formatter = formatters.find(({ id }) => id === value); + if (formatter) { + return formatter.name; + } + return strings.none; + }, + select: options, + chevron: true, + category: languagesLabel, + }; + }); + + items.unshift({ + note: strings["settings-note-formatter-settings"], }); - const page = settingsPage(title, items, callback, "separate"); + const page = settingsPage(title, items, callback, "separate", { + preserveOrder: true, + pageClassName: "detail-settings-page formatter-settings-page", + listClassName: "detail-settings-list formatter-settings-list", + notePosition: "top", + }); page.show(languageName); function callback(key, value) { diff --git a/src/settings/helpSettings.js b/src/settings/helpSettings.js index 5263ae65a..bd8cdf35a 100644 --- a/src/settings/helpSettings.js +++ b/src/settings/helpSettings.js @@ -8,24 +8,33 @@ export default function help() { key: "docs", text: strings.documentation, link: constants.DOCS_URL, + chevron: true, }, { key: "help", text: strings.help, link: constants.TELEGRAM_URL, + chevron: true, }, { key: "faqs", text: strings.faqs, link: `${constants.WEBSITE_URL}/faqs`, + chevron: true, }, { key: "bug_report", text: strings.bug_report, link: `${constants.GITHUB_URL}/issues`, + chevron: true, }, ]; - const page = settingsPage(title, items, () => {}, "separate"); + const page = settingsPage(title, items, () => {}, "separate", { + preserveOrder: true, + pageClassName: "detail-settings-page", + listClassName: "detail-settings-list", + groupByDefault: true, + }); page.show(); } diff --git a/src/settings/lspConfigUtils.js b/src/settings/lspConfigUtils.js new file mode 100644 index 000000000..acb2120d9 --- /dev/null +++ b/src/settings/lspConfigUtils.js @@ -0,0 +1,143 @@ +import lspApi from "cm/lsp/api"; +import appSettings from "lib/settings"; + +function cloneLspSettings() { + return JSON.parse(JSON.stringify(appSettings.value?.lsp || {})); +} + +export function normalizeServerId(id) { + return String(id || "") + .trim() + .toLowerCase(); +} + +export function normalizeLanguages(value) { + if (Array.isArray(value)) { + return value + .map((lang) => + String(lang || "") + .trim() + .toLowerCase(), + ) + .filter(Boolean); + } + + return String(value || "") + .split(",") + .map((lang) => lang.trim().toLowerCase()) + .filter(Boolean); +} + +export function getServerOverride(id) { + return appSettings.value?.lsp?.servers?.[normalizeServerId(id)] || {}; +} + +export function isCustomServer(id) { + return getServerOverride(id).custom === true; +} + +export async function updateServerConfig(serverId, partial) { + const key = normalizeServerId(serverId); + if (!key) { + throw new Error("Server id is required"); + } + + const current = cloneLspSettings(); + current.servers = current.servers || {}; + const nextServer = { + ...(current.servers[key] || {}), + }; + + Object.entries(partial || {}).forEach(([entryKey, value]) => { + if (value === undefined) { + delete nextServer[entryKey]; + return; + } + nextServer[entryKey] = value; + }); + + if (Object.keys(nextServer).length) { + current.servers[key] = nextServer; + } else { + delete current.servers[key]; + } + + await appSettings.update({ lsp: current }, false); +} + +export async function upsertCustomServer(serverId, config) { + const key = normalizeServerId(serverId); + if (!key) { + throw new Error("Server id is required"); + } + + const existingServer = lspApi.servers.get(key); + if (existingServer && getServerOverride(key).custom !== true) { + throw new Error("A built-in server already uses this id"); + } + + const languages = normalizeLanguages(config.languages); + if (!languages.length) { + throw new Error("At least one language id is required"); + } + + const current = cloneLspSettings(); + current.servers = current.servers || {}; + const existing = current.servers[key] || {}; + const hasTransport = Object.prototype.hasOwnProperty.call( + config, + "transport", + ); + const hasLauncher = Object.prototype.hasOwnProperty.call(config, "launcher"); + const nextConfig = { + ...existing, + ...config, + custom: true, + label: config.label || existing.label || key, + languages, + transport: hasTransport + ? config.transport + : existing.transport || { kind: "websocket" }, + launcher: hasLauncher ? config.launcher : existing.launcher, + enabled: config.enabled !== false, + }; + + const installKind = nextConfig.launcher?.install?.kind; + if (installKind && installKind !== "shell") { + const providedExecutable = + nextConfig.launcher.install.binaryPath || + nextConfig.launcher.install.executable; + if (!providedExecutable) { + throw new Error( + "Managed installers must declare the executable path or command they provide", + ); + } + } + + current.servers[key] = nextConfig; + await appSettings.update({ lsp: current }, false); + + const definition = { + id: key, + label: nextConfig.label, + languages, + transport: nextConfig.transport, + launcher: nextConfig.launcher, + clientConfig: nextConfig.clientConfig, + initializationOptions: nextConfig.initializationOptions, + startupTimeout: nextConfig.startupTimeout, + enabled: nextConfig.enabled !== false, + }; + + lspApi.upsert(definition); + return key; +} + +export async function removeCustomServer(serverId) { + const key = normalizeServerId(serverId); + const current = cloneLspSettings(); + current.servers = current.servers || {}; + delete current.servers[key]; + await appSettings.update({ lsp: current }, false); + lspApi.servers.unregister(key); +} diff --git a/src/settings/lspServerDetail.js b/src/settings/lspServerDetail.js new file mode 100644 index 000000000..0d6872d5a --- /dev/null +++ b/src/settings/lspServerDetail.js @@ -0,0 +1,732 @@ +import lspApi from "cm/lsp/api"; +import { + checkServerInstallation, + getInstallCommand, + getUninstallCommand, + installServer, + stopManagedServer, + uninstallServer, +} from "cm/lsp/serverLauncher"; +import settingsPage from "components/settingsPage"; +import toast from "components/toast"; +import alert from "dialogs/alert"; +import confirm from "dialogs/confirm"; +import prompt from "dialogs/prompt"; +import appSettings from "lib/settings"; +import { + getServerOverride, + isCustomServer, + removeCustomServer, + updateServerConfig, +} from "./lspConfigUtils"; + +function getFeatureItems() { + return [ + [ + "ext_hover", + "hover", + strings["lsp-feature-hover"], + strings["lsp-feature-hover-info"], + ], + [ + "ext_completion", + "completion", + strings["lsp-feature-completion"], + strings["lsp-feature-completion-info"], + ], + [ + "ext_signature", + "signature", + strings["lsp-feature-signature"], + strings["lsp-feature-signature-info"], + ], + [ + "ext_diagnostics", + "diagnostics", + strings["lsp-feature-diagnostics"], + strings["lsp-feature-diagnostics-info"], + ], + [ + "ext_inlayHints", + "inlayHints", + strings["lsp-feature-inlay-hints"], + strings["lsp-feature-inlay-hints-info"], + ], + [ + "ext_formatting", + "formatting", + strings["lsp-feature-formatting"], + strings["lsp-feature-formatting-info"], + ], + ]; +} + +function fillTemplate(template, replacements) { + return Object.entries(replacements).reduce( + (result, [key, value]) => result.replaceAll(`{${key}}`, String(value)), + String(template || ""), + ); +} + +function clone(value) { + if (!value || typeof value !== "object") return value; + return JSON.parse(JSON.stringify(value)); +} + +function mergeLauncher(base, patch) { + if (!base && !patch) return undefined; + return { + ...(base || {}), + ...(patch || {}), + bridge: { + ...(base?.bridge || {}), + ...(patch?.bridge || {}), + }, + install: { + ...(base?.install || {}), + ...(patch?.install || {}), + }, + }; +} + +function isDirectWebSocketServer(server) { + return server?.transport?.kind === "websocket" && !server?.launcher?.bridge; +} + +function getMergedConfig(server) { + const override = getServerOverride(server.id); + return { + ...server, + enabled: override.enabled ?? server.enabled, + startupTimeout: override.startupTimeout ?? server.startupTimeout, + initializationOptions: { + ...(server.initializationOptions || {}), + ...(override.initializationOptions || {}), + }, + clientConfig: { + ...(server.clientConfig || {}), + ...(override.clientConfig || {}), + builtinExtensions: { + ...(server.clientConfig?.builtinExtensions || {}), + ...(override.clientConfig?.builtinExtensions || {}), + }, + }, + launcher: mergeLauncher(server.launcher, override.launcher), + }; +} + +function formatInstallStatus(result) { + switch (result?.status) { + case "present": + return result.version + ? fillTemplate(strings["lsp-status-installed-version"], { + version: result.version, + }) + : strings["lsp-status-installed"]; + case "missing": + return strings["lsp-status-not-installed"]; + case "failed": + return strings["lsp-status-check-failed"]; + default: + return strings["lsp-status-unknown"]; + } +} + +function formatStartupTimeoutValue(timeout) { + return typeof timeout === "number" + ? fillTemplate(strings["lsp-timeout-ms"], { timeout }) + : strings["lsp-default"]; +} + +function sanitizeInstallMessage(message) { + const lines = String(message || "") + .split("\n") + .map((line) => line.trim()) + .filter(Boolean) + .filter( + (line) => + !/^proot warning:/i.test(line) && + !line.includes(`"/proc/self/fd/0"`) && + !line.includes(`"/proc/self/fd/1"`) && + !line.includes(`"/proc/self/fd/2"`), + ); + + return lines.join(" "); +} + +function formatInstallInfo(result) { + const cleanedMessage = sanitizeInstallMessage(result?.message); + + switch (result?.status) { + case "present": + return result.version + ? fillTemplate(strings["lsp-install-info-version-available"], { + version: result.version, + }) + : strings["lsp-install-info-ready"]; + case "missing": + return strings["lsp-install-info-missing"]; + case "failed": + return cleanedMessage || strings["lsp-install-info-check-failed"]; + default: + return cleanedMessage || strings["lsp-install-info-unknown"]; + } +} + +function formatValue(value) { + if (value === undefined || value === null || value === "") return ""; + let text = String(value); + if (text.includes("\n")) { + [text] = text.split("\n"); + } + if (text.length > 47) { + text = `${text.slice(0, 47)}...`; + } + return text; +} + +function escapeHtml(text) { + const div = document.createElement("div"); + div.textContent = String(text || ""); + return div.innerHTML; +} + +function updateItemDisplay($list, itemsByKey, key, value, extras = {}) { + const item = itemsByKey.get(key); + if (!item) return; + + if ("value" in extras) { + item.value = extras.value; + } else if (value !== undefined) { + item.value = value; + } + + if ("info" in extras) { + item.info = extras.info; + } + + if ("checkbox" in extras) { + item.checkbox = extras.checkbox; + } + + const $item = $list?.querySelector?.(`[data-key="${key}"]`); + if (!$item) return; + + const $subtitle = $item.querySelector(".value"); + if ($subtitle) { + $subtitle.textContent = $subtitle.classList.contains("setting-info") + ? String(item.info || "") + : formatValue(item.value); + } + + const $trailingValue = $item.querySelector(".setting-trailing-value"); + if ($trailingValue) { + $trailingValue.textContent = formatValue(item.value); + } + + const $checkbox = $item.querySelector(".input-checkbox"); + if ($checkbox && typeof item.checkbox === "boolean") { + $checkbox.checked = item.checkbox; + } +} + +async function buildSnapshot(serverId) { + const liveServer = lspApi.servers.get(serverId); + if (!liveServer) return null; + + const merged = getMergedConfig(liveServer); + const override = getServerOverride(serverId); + const directWebSocket = isDirectWebSocketServer(merged); + const installResult = directWebSocket + ? { + status: "unknown", + version: null, + canInstall: false, + canUpdate: false, + message: strings["lsp-websocket-server-managed-externally"], + } + : await checkServerInstallation(merged).catch((error) => ({ + status: "failed", + version: null, + canInstall: true, + canUpdate: true, + message: error instanceof Error ? error.message : String(error), + })); + + return { + liveServer, + merged, + override, + directWebSocket, + isCustom: isCustomServer(serverId), + installResult, + builtinExts: merged.clientConfig?.builtinExtensions || {}, + installCommand: getInstallCommand(merged, "install"), + updateCommand: getInstallCommand(merged, "update"), + uninstallCommand: getUninstallCommand(merged), + }; +} + +function createItems(snapshot) { + const featureItems = getFeatureItems(); + const categories = { + general: strings["settings-category-general"], + installation: strings["settings-category-installation"], + advanced: strings["settings-category-advanced"], + features: strings["settings-category-features"], + }; + const items = [ + { + key: "enabled", + text: strings["lsp-enabled"], + checkbox: snapshot.merged.enabled !== false, + info: strings["settings-info-lsp-server-enabled"], + category: categories.general, + }, + ...(snapshot.isCustom + ? [ + { + key: "remove_custom_server", + text: strings["lsp-remove-custom-server"], + info: strings["settings-info-lsp-remove-custom-server"], + category: categories.general, + chevron: true, + }, + ] + : []), + { + key: "startup_timeout", + text: strings["lsp-startup-timeout"], + value: formatStartupTimeoutValue(snapshot.merged.startupTimeout), + info: strings["settings-info-lsp-startup-timeout"], + category: categories.advanced, + chevron: true, + }, + { + key: "edit_init_options", + text: strings["lsp-edit-initialization-options"], + value: Object.keys(snapshot.override.initializationOptions || {}).length + ? strings["lsp-configured"] + : strings["lsp-empty"], + info: strings["settings-info-lsp-edit-init-options"], + category: categories.advanced, + chevron: true, + }, + { + key: "view_init_options", + text: strings["lsp-view-initialization-options"], + info: strings["settings-info-lsp-view-init-options"], + category: categories.advanced, + chevron: true, + }, + ]; + + if (!snapshot.directWebSocket) { + items.splice( + 1, + 0, + { + key: "install_status", + text: strings["lsp-installed"], + value: formatInstallStatus(snapshot.installResult), + info: formatInstallInfo(snapshot.installResult), + category: categories.installation, + chevron: true, + }, + { + key: "install_server", + text: strings["lsp-install-repair"], + info: strings["settings-info-lsp-install-server"], + category: categories.installation, + chevron: true, + }, + { + key: "update_server", + text: strings["lsp-update-server"], + info: strings["settings-info-lsp-update-server"], + category: categories.installation, + chevron: true, + }, + { + key: "uninstall_server", + text: strings["lsp-uninstall-server"], + info: strings["settings-info-lsp-uninstall-server"], + category: categories.installation, + chevron: true, + }, + ); + } + + featureItems.forEach(([key, extKey, text, info]) => { + items.push({ + key, + text, + checkbox: isBuiltinFeatureEnabled(snapshot.builtinExts, extKey), + info, + category: categories.features, + }); + }); + + return items; +} + +async function refreshVisibleState($list, itemsByKey, serverId) { + if (!$list) return; + + const snapshot = await buildSnapshot(serverId); + if (!snapshot) return; + + updateItemDisplay($list, itemsByKey, "enabled", undefined, { + checkbox: snapshot.merged.enabled !== false, + }); + updateItemDisplay( + $list, + itemsByKey, + "install_status", + formatInstallStatus(snapshot.installResult), + { + info: formatInstallInfo(snapshot.installResult), + }, + ); + updateItemDisplay($list, itemsByKey, "install_server", ""); + updateItemDisplay($list, itemsByKey, "update_server", ""); + updateItemDisplay($list, itemsByKey, "uninstall_server", ""); + updateItemDisplay( + $list, + itemsByKey, + "startup_timeout", + formatStartupTimeoutValue(snapshot.merged.startupTimeout), + ); + updateItemDisplay( + $list, + itemsByKey, + "edit_init_options", + Object.keys(snapshot.override.initializationOptions || {}).length + ? strings["lsp-configured"] + : strings["lsp-empty"], + ); + + getFeatureItems().forEach(([key, extKey]) => { + updateItemDisplay($list, itemsByKey, key, undefined, { + checkbox: isBuiltinFeatureEnabled(snapshot.builtinExts, extKey), + }); + }); +} + +function isBuiltinFeatureEnabled(builtinExts, extKey) { + if (extKey === "inlayHints") { + return builtinExts?.[extKey] === true; + } + return builtinExts?.[extKey] !== false; +} + +async function persistEnabled(serverId, value) { + await updateServerConfig(serverId, { enabled: value }); + lspApi.servers.update(serverId, (current) => ({ + ...current, + enabled: value, + })); +} + +async function persistClientConfig(serverId, clientConfig) { + await updateServerConfig(serverId, { clientConfig }); + lspApi.servers.update(serverId, (current) => ({ + ...current, + clientConfig: { + ...(current.clientConfig || {}), + ...clientConfig, + }, + })); +} + +async function persistStartupTimeout(serverId, timeout) { + await updateServerConfig(serverId, { startupTimeout: timeout }); + lspApi.servers.update(serverId, (current) => ({ + ...current, + startupTimeout: timeout, + })); +} + +async function persistInitOptions(serverId, value) { + await updateServerConfig(serverId, { initializationOptions: value }); + lspApi.servers.update(serverId, (current) => ({ + ...current, + initializationOptions: value, + })); +} + +export default function lspServerDetail(serverId) { + const initialServer = lspApi.servers.get(serverId); + if (!initialServer) { + toast(strings["lsp-server-not-found"]); + return null; + } + + const initialSnapshot = { + liveServer: initialServer, + merged: getMergedConfig(initialServer), + override: getServerOverride(serverId), + directWebSocket: isDirectWebSocketServer(getMergedConfig(initialServer)), + isCustom: isCustomServer(serverId), + installResult: isDirectWebSocketServer(getMergedConfig(initialServer)) + ? { + status: "unknown", + version: null, + canInstall: false, + canUpdate: false, + message: strings["lsp-websocket-server-managed-externally"], + } + : { + status: "unknown", + version: null, + canInstall: true, + canUpdate: true, + message: strings["lsp-checking-installation-status"], + }, + builtinExts: + getMergedConfig(initialServer).clientConfig?.builtinExtensions || {}, + installCommand: getInstallCommand( + getMergedConfig(initialServer), + "install", + ), + updateCommand: getInstallCommand(getMergedConfig(initialServer), "update"), + uninstallCommand: getUninstallCommand(getMergedConfig(initialServer)), + }; + + const items = createItems(initialSnapshot); + const itemsByKey = new Map(items.map((item) => [item.key, item])); + const page = settingsPage( + initialServer.label || initialServer.id, + items, + callback, + undefined, + { + preserveOrder: true, + pageClassName: "detail-settings-page", + listClassName: "detail-settings-list", + valueInTail: true, + }, + ); + + const baseShow = page.show.bind(page); + + return { + ...page, + show(goTo) { + baseShow(goTo); + const $list = document.querySelector("#settings .main.list"); + refreshVisibleState($list, itemsByKey, serverId).catch(console.error); + }, + }; + + async function callback(key, value) { + const $list = this?.parentElement; + const snapshot = await buildSnapshot(serverId); + if (!snapshot) { + toast(strings["lsp-server-not-found"]); + return; + } + + switch (key) { + case "enabled": + await persistEnabled(serverId, value); + if (!value) { + stopManagedServer(serverId); + } + toast( + value + ? strings["lsp-server-enabled-toast"] + : strings["lsp-server-disabled-toast"], + ); + break; + + case "remove_custom_server": + if ( + !(await confirm( + strings["lsp-remove-custom-server"], + fillTemplate(strings["lsp-remove-custom-server-confirm"], { + server: snapshot.liveServer.label || serverId, + }), + )) + ) { + break; + } + stopManagedServer(serverId); + await removeCustomServer(serverId); + toast(strings["lsp-custom-server-removed"]); + page.hide(); + appSettings.uiSettings["lsp-settings"]?.show(); + return; + + case "install_status": { + const result = await checkServerInstallation(snapshot.merged); + const lines = [ + fillTemplate(strings["lsp-status-line"], { + status: formatInstallStatus(result), + }), + result.version + ? fillTemplate(strings["lsp-version-line"], { + version: result.version, + }) + : null, + fillTemplate(strings["lsp-details-line"], { + details: formatInstallInfo(result), + }), + ].filter(Boolean); + alert(strings["lsp-installation-status"], lines.join("
      ")); + break; + } + + case "install_server": + if (!snapshot.installCommand) { + toast(strings["lsp-install-command-unavailable"]); + break; + } + await installServer(snapshot.merged, "install"); + break; + + case "update_server": + if (!snapshot.updateCommand) { + toast(strings["lsp-update-command-unavailable"]); + break; + } + await installServer(snapshot.merged, "update"); + break; + + case "uninstall_server": + if (!snapshot.uninstallCommand) { + toast(strings["lsp-uninstall-command-unavailable"]); + break; + } + if ( + !(await confirm( + strings["lsp-uninstall-server"], + fillTemplate(strings["lsp-remove-installed-files"], { + server: snapshot.liveServer.label || serverId, + }), + )) + ) { + break; + } + await uninstallServer(snapshot.merged, { promptConfirm: false }); + toast(strings["lsp-server-uninstalled"]); + break; + + case "startup_timeout": { + const currentTimeout = + snapshot.override.startupTimeout ?? + snapshot.liveServer.startupTimeout ?? + 5000; + const result = await prompt( + strings["lsp-startup-timeout-ms"], + String(currentTimeout), + "number", + { + test: (val) => { + const timeout = Number.parseInt(String(val), 10); + return Number.isFinite(timeout) && timeout >= 1000; + }, + }, + ); + + if (result === null) { + break; + } + + const timeout = Number.parseInt(String(result), 10); + if (!Number.isFinite(timeout) || timeout < 1000) { + toast(strings["lsp-invalid-timeout"]); + break; + } + + await persistStartupTimeout(serverId, timeout); + toast( + fillTemplate(strings["lsp-startup-timeout-set"], { + timeout, + }), + ); + break; + } + + case "edit_init_options": { + const currentJson = JSON.stringify( + snapshot.override.initializationOptions || {}, + null, + 2, + ); + const result = await prompt( + strings["lsp-initialization-options-json"], + currentJson || "{}", + "textarea", + { + test: (val) => { + try { + JSON.parse(val); + return true; + } catch { + return false; + } + }, + }, + ); + + if (result === null) { + break; + } + + await persistInitOptions(serverId, JSON.parse(result)); + toast(strings["lsp-initialization-options-updated"]); + break; + } + + case "view_init_options": { + const json = JSON.stringify( + snapshot.merged.initializationOptions || {}, + null, + 2, + ); + alert( + strings["lsp-initialization-options"], + `
      ${escapeHtml(json)}
      `, + ); + break; + } + + case "ext_hover": + case "ext_completion": + case "ext_signature": + case "ext_diagnostics": + case "ext_inlayHints": + case "ext_formatting": { + const extKey = key.replace("ext_", ""); + const feature = getFeatureItems().find( + ([featureKey]) => featureKey === key, + ); + const currentClientConfig = clone(snapshot.override.clientConfig || {}); + const currentBuiltins = currentClientConfig.builtinExtensions || {}; + + await persistClientConfig(serverId, { + ...currentClientConfig, + builtinExtensions: { + ...currentBuiltins, + [extKey]: value, + }, + }); + toast( + fillTemplate(strings["lsp-feature-state-toast"], { + feature: feature?.[2] || extKey, + state: value + ? strings["lsp-state-enabled"] + : strings["lsp-state-disabled"], + }), + ); + break; + } + + default: + break; + } + + await refreshVisibleState($list, itemsByKey, serverId); + } +} diff --git a/src/settings/lspSettings.js b/src/settings/lspSettings.js new file mode 100644 index 000000000..158d3bc12 --- /dev/null +++ b/src/settings/lspSettings.js @@ -0,0 +1,412 @@ +import { quoteArg } from "cm/lsp/installRuntime"; +import serverRegistry from "cm/lsp/serverRegistry"; +import settingsPage from "components/settingsPage"; +import toast from "components/toast"; +import prompt from "dialogs/prompt"; +import select from "dialogs/select"; +import { + getServerOverride, + normalizeLanguages, + normalizeServerId, + upsertCustomServer, +} from "./lspConfigUtils"; +import lspServerDetail from "./lspServerDetail"; + +function parseArgsInput(value) { + const normalized = String(value || "").trim(); + if (!normalized) return []; + + const parsed = JSON.parse(normalized); + if (!Array.isArray(parsed)) { + throw new Error(strings["lsp-error-args-must-be-array"]); + } + return parsed.map((entry) => String(entry)); +} + +function normalizePackages(value) { + return String(value || "") + .split(",") + .map((entry) => entry.trim()) + .filter(Boolean); +} + +function getInstallMethods() { + return [ + { value: "manual", text: strings["lsp-install-method-manual"] }, + { value: "apk", text: strings["lsp-install-method-apk"] }, + { value: "npm", text: strings["lsp-install-method-npm"] }, + { value: "pip", text: strings["lsp-install-method-pip"] }, + { value: "cargo", text: strings["lsp-install-method-cargo"] }, + { value: "shell", text: strings["lsp-install-method-shell"] }, + ]; +} + +function getTransportMethods() { + return [ + { + value: "stdio", + text: + strings["lsp-transport-method-stdio"] || + "STDIO (launch a binary command)", + }, + { + value: "websocket", + text: + strings["lsp-transport-method-websocket"] || + "WebSocket (connect to a ws/wss URL)", + }, + ]; +} + +function parseWebSocketUrl(value) { + const normalized = String(value || "").trim(); + if (!normalized) { + throw new Error( + strings["lsp-error-websocket-url-required"] || + "WebSocket URL is required", + ); + } + if (!/^wss?:\/\//i.test(normalized)) { + throw new Error( + strings["lsp-error-websocket-url-invalid"] || + "WebSocket URL must start with ws:// or wss://", + ); + } + return normalized; +} + +function buildDefaultCheckCommand(binaryCommand, installer) { + const executable = String( + installer?.binaryPath || installer?.executable || binaryCommand || "", + ).trim(); + if (!executable) return ""; + if (installer?.kind === "manual" && installer?.binaryPath) { + return `test -x ${quoteArg(installer.binaryPath)}`; + } + if (executable.includes("/")) { + return `test -x ${quoteArg(executable)}`; + } + return `which ${quoteArg(executable)}`; +} + +async function promptInstaller(binaryCommand) { + const method = await select( + strings["lsp-install-method-title"], + getInstallMethods(), + ); + if (!method) return null; + + switch (method) { + case "manual": { + const binaryPath = await prompt( + strings["lsp-binary-path-optional"], + String(binaryCommand || "").includes("/") ? String(binaryCommand) : "", + "text", + ); + if (binaryPath === null) return null; + return { + kind: "manual", + source: "manual", + executable: String(binaryCommand || "").trim() || undefined, + binaryPath: String(binaryPath || "").trim() || undefined, + }; + } + case "apk": + case "npm": + case "pip": + case "cargo": { + const packagesInput = await prompt( + strings["lsp-packages-prompt"].replace( + "{method}", + method.toUpperCase(), + ), + "", + "text", + ); + if (packagesInput === null) return null; + const packages = normalizePackages(packagesInput); + if (!packages.length) { + throw new Error(strings["lsp-error-package-required"]); + } + return { + kind: method, + source: method, + executable: String(binaryCommand || "").trim() || undefined, + packages, + }; + } + case "shell": { + const installCommand = await prompt( + strings["lsp-install-command"], + "", + "textarea", + ); + if (installCommand === null) return null; + const updateCommand = await prompt( + strings["lsp-update-command-optional"], + String(installCommand || ""), + "textarea", + ); + if (updateCommand === null) return null; + return { + kind: "shell", + source: "custom", + executable: String(binaryCommand || "").trim() || undefined, + command: String(installCommand || "").trim() || undefined, + updateCommand: String(updateCommand || "").trim() || undefined, + }; + } + default: + return null; + } +} + +/** + * LSP Settings page - shows list of all language servers + * @returns {object} Settings page interface + */ +export default function lspSettings() { + const title = + strings?.lsp_settings || strings["language servers"] || "Language Servers"; + const categories = { + customServers: strings["settings-category-custom-servers"], + servers: strings["settings-category-servers"], + }; + let page = createPage(); + + return { + show(goTo) { + page = createPage(); + page.show(goTo); + }, + hide() { + page.hide(); + }, + search(key) { + page = createPage(); + return page.search(key); + }, + restoreList() { + page.restoreList(); + }, + setTitle(nextTitle) { + page.setTitle(nextTitle); + }, + }; + + function createPage() { + const servers = serverRegistry.listServers(); + + const sortedServers = servers.sort((a, b) => { + const aEnabled = getServerOverride(a.id).enabled ?? a.enabled; + const bEnabled = getServerOverride(b.id).enabled ?? b.enabled; + + if (aEnabled !== bEnabled) { + return bEnabled ? 1 : -1; + } + return a.label.localeCompare(b.label); + }); + + const items = [ + { + key: "add_custom_server", + text: strings["lsp-add-custom-server"], + info: strings["settings-info-lsp-add-custom-server"], + category: categories.customServers, + index: 0, + chevron: true, + }, + ]; + + for (const server of sortedServers) { + const source = server.launcher?.install?.source + ? ` • ${server.launcher.install.source}` + : ""; + const languagesList = + Array.isArray(server.languages) && server.languages.length + ? `${server.languages.join(", ")}${source}` + : source.slice(3); + + items.push({ + key: `server:${server.id}`, + text: server.label, + info: languagesList || undefined, + category: categories.servers, + chevron: true, + }); + } + + items.push({ + note: strings["settings-note-lsp-settings"], + }); + + return settingsPage(title, items, callback, undefined, { + preserveOrder: true, + pageClassName: "detail-settings-page", + listClassName: "detail-settings-list", + groupByDefault: true, + }); + } + + function refreshVisiblePage() { + page.hide(); + page = createPage(); + page.show(); + } + + async function callback(key) { + if (key === "add_custom_server") { + try { + const idInput = await prompt(strings["lsp-server-id"], "", "text"); + if (idInput === null) return; + + const serverId = normalizeServerId(idInput); + if (!serverId) { + toast(strings["lsp-error-server-id-required"]); + return; + } + + const label = await prompt( + strings["lsp-server-label"], + serverId, + "text", + ); + if (label === null) return; + + const languageInput = await prompt( + strings["lsp-language-ids"], + "", + "text", + ); + if (languageInput === null) return; + const languages = normalizeLanguages(languageInput); + if (!languages.length) { + toast(strings["lsp-error-language-id-required"]); + return; + } + + const transportKind = await select( + strings.type || "Type", + getTransportMethods(), + ); + if (!transportKind) return; + + let transport; + let launcher; + + if (transportKind === "websocket") { + const websocketUrlInput = await prompt( + strings["lsp-websocket-url"] || "WebSocket URL", + "ws://127.0.0.1:3000/", + "text", + { + test: (value) => { + try { + parseWebSocketUrl(value); + return true; + } catch { + return false; + } + }, + }, + ); + if (websocketUrlInput === null) return; + + transport = { + kind: "websocket", + url: parseWebSocketUrl(websocketUrlInput), + }; + } else { + const binaryCommand = await prompt( + strings["lsp-binary-command"], + "", + "text", + ); + if (binaryCommand === null) return; + if (!String(binaryCommand).trim()) { + toast(strings["lsp-error-binary-command-required"]); + return; + } + + const argsInput = await prompt( + strings["lsp-binary-args"], + "[]", + "textarea", + { + test: (value) => { + try { + parseArgsInput(value); + return true; + } catch { + return false; + } + }, + }, + ); + if (argsInput === null) return; + + const parsedArgs = parseArgsInput(argsInput); + const installer = await promptInstaller(binaryCommand); + if (installer === null) return; + const defaultCheckCommand = buildDefaultCheckCommand( + binaryCommand, + installer, + ); + + const checkCommand = await prompt( + strings["lsp-check-command-optional"], + defaultCheckCommand, + "text", + { + placeholder: defaultCheckCommand || "which my-language-server", + }, + ); + if (checkCommand === null) return; + + transport = { + kind: "stdio", + command: String(binaryCommand).trim(), + args: parsedArgs, + }; + launcher = { + bridge: { + kind: "axs", + command: String(binaryCommand).trim(), + args: parsedArgs, + }, + checkCommand: String(checkCommand || "").trim() || undefined, + install: installer, + }; + } + + await upsertCustomServer(serverId, { + label: String(label || "").trim() || serverId, + languages, + transport, + launcher, + enabled: true, + }); + + toast(strings["lsp-custom-server-added"]); + refreshVisiblePage(); + const detailPage = lspServerDetail(serverId); + detailPage?.show(); + } catch (error) { + toast( + error instanceof Error + ? error.message + : strings["lsp-error-add-server-failed"], + ); + } + return; + } + + if (key.startsWith("server:")) { + const id = key.split(":")[1]; + const detailPage = lspServerDetail(id); + if (detailPage) { + detailPage.show(); + } + } + } +} diff --git a/src/settings/mainSettings.js b/src/settings/mainSettings.js index 3df4c3dfc..dfaff6782 100644 --- a/src/settings/mainSettings.js +++ b/src/settings/mainSettings.js @@ -6,6 +6,7 @@ import openFile from "lib/openFile"; import removeAds from "lib/removeAds"; import appSettings from "lib/settings"; import settings from "lib/settings"; +import openAdRewardsPage from "pages/adRewards"; import Changelog from "pages/changelog/changelog"; import plugins from "pages/plugins"; import Sponsors from "pages/sponsors"; @@ -17,6 +18,7 @@ import backupRestore from "./backupRestore"; import editorSettings from "./editorSettings"; import filesSettings from "./filesSettings"; import formatterSettings from "./formatterSettings"; +import lspSettings from "./lspSettings"; import previewSettings from "./previewSettings"; import scrollSettings from "./scrollSettings"; import searchSettings from "./searchSettings"; @@ -24,92 +26,155 @@ import terminalSettings from "./terminalSettings"; export default function mainSettings() { const title = strings.settings.capitalize(); + const categories = { + core: strings["settings-category-core"], + customizationTools: strings["settings-category-customization-tools"], + maintenance: strings["settings-category-maintenance"], + aboutAcode: strings["settings-category-about-acode"], + supportAcode: strings["settings-category-support-acode"], + }; const items = [ { - key: "about", - text: strings.about, - icon: "acode", - index: 0, - }, - { - key: "sponsors", - text: strings.sponsor, - icon: "favorite", - iconColor: "orangered", - index: 1, + key: "app-settings", + text: strings["app settings"], + icon: "tune", + info: strings["settings-info-main-app-settings"], + category: categories.core, + chevron: true, }, { key: "editor-settings", text: strings["editor settings"], icon: "text_format", - index: 3, + info: strings["settings-info-main-editor-settings"], + category: categories.core, + chevron: true, }, { - key: "app-settings", - text: strings["app settings"], - icon: "tune", - index: 2, + key: "terminal-settings", + text: `${strings["terminal settings"]}`, + icon: "terminal", + info: strings["settings-info-main-terminal-settings"], + category: categories.core, + chevron: true, + }, + { + key: "preview-settings", + text: strings["preview settings"], + icon: "public", + info: strings["settings-info-main-preview-settings"], + category: categories.core, + chevron: true, }, { key: "formatter", text: strings.formatter, - icon: "stars", + icon: "spellcheck", + info: strings["settings-info-main-formatter"], + category: categories.customizationTools, + chevron: true, }, { key: "theme", text: strings.theme, icon: "color_lenspalette", + info: strings["settings-info-main-theme"], + category: categories.customizationTools, + chevron: true, }, { - key: "backup-restore", - text: strings.backup.capitalize() + "/" + strings.restore.capitalize(), - icon: "cached", + key: "plugins", + text: strings["plugins"], + icon: "extension", + info: strings["settings-info-main-plugins"], + category: categories.customizationTools, + chevron: true, }, { - key: "rateapp", - text: strings["rate acode"], - icon: "googleplay", + key: "lsp-settings", + text: + strings?.lsp_settings || + strings["language servers"] || + "Language servers", + icon: "zap", + info: strings["settings-info-main-lsp-settings"], + category: categories.customizationTools, + chevron: true, }, { - key: "plugins", - text: strings["plugins"], - icon: "extension", + key: "backup-restore", + text: `${strings.backup.capitalize()} & ${strings.restore.capitalize()}`, + icon: "cached", + info: strings["settings-info-main-backup-restore"], + category: categories.maintenance, + chevron: true, + }, + { + key: "editSettings", + text: `${strings["edit"]} settings.json`, + icon: "edit", + info: strings["settings-info-main-edit-settings"], + category: categories.maintenance, + chevron: true, }, { key: "reset", text: strings["restore default settings"], icon: "historyrestore", - index: 6, + info: strings["settings-info-main-reset"], + category: categories.maintenance, + chevron: true, }, { - key: "preview-settings", - text: strings["preview settings"], - icon: "play_arrow", - index: 4, - }, - { - key: "terminal-settings", - text: `${strings["terminal settings"]}`, - icon: "licons terminal", - index: 5, + key: "about", + text: strings.about, + icon: "info", + info: `Version ${BuildInfo.version}`, + category: categories.aboutAcode, + chevron: true, }, { - key: "editSettings", - text: `${strings["edit"]} settings.json`, - icon: "edit", + key: "sponsors", + text: strings.sponsor, + icon: "favorite", + info: strings["settings-info-main-sponsors"], + category: categories.aboutAcode, + chevron: true, }, { key: "changeLog", text: `${strings["changelog"]}`, icon: "update", + info: strings["settings-info-main-changelog"], + category: categories.aboutAcode, + chevron: true, + }, + { + key: "rateapp", + text: strings["rate acode"], + icon: "star_outline", + info: strings["settings-info-main-rateapp"], + category: categories.aboutAcode, + chevron: true, }, ]; if (IS_FREE_VERSION) { + items.push({ + key: "adRewards", + text: strings["earn ad-free time"], + icon: "play_arrow", + info: strings["settings-info-main-ad-rewards"], + category: categories.supportAcode, + chevron: true, + }); items.push({ key: "removeads", text: strings["remove ads"], - icon: "cancel", + icon: "block", + info: strings["settings-info-main-remove-ads"], + category: categories.supportAcode, + chevron: true, }); } @@ -125,6 +190,7 @@ export default function mainSettings() { case "editor-settings": case "preview-settings": case "terminal-settings": + case "lsp-settings": appSettings.uiSettings[key].show(); break; @@ -148,6 +214,10 @@ export default function mainSettings() { plugins(); break; + case "adRewards": + openAdRewardsPage(); + break; + case "formatter": formatterSettings(); break; @@ -187,7 +257,11 @@ export default function mainSettings() { } } - const page = settingsPage(title, items, callback); + const page = settingsPage(title, items, callback, undefined, { + preserveOrder: true, + pageClassName: "main-settings-page", + listClassName: "main-settings-list", + }); page.show(); appSettings.uiSettings["main-settings"] = page; @@ -199,4 +273,5 @@ export default function mainSettings() { appSettings.uiSettings["search-settings"] = searchSettings(); appSettings.uiSettings["preview-settings"] = previewSettings(); appSettings.uiSettings["terminal-settings"] = terminalSettings(); + appSettings.uiSettings["lsp-settings"] = lspSettings(); } diff --git a/src/settings/previewSettings.js b/src/settings/previewSettings.js index d9529f92e..7346ae85d 100644 --- a/src/settings/previewSettings.js +++ b/src/settings/previewSettings.js @@ -1,10 +1,13 @@ -import Checkbox from "components/checkbox"; import settingsPage from "components/settingsPage"; import appSettings from "lib/settings"; export default function previewSettings() { const values = appSettings.value; const title = strings["preview settings"]; + const categories = { + server: strings["settings-category-server"], + preview: strings["settings-category-preview"], + }; const PORT_REGEX = /^([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/; const items = [ @@ -19,6 +22,8 @@ export default function previewSettings() { return PORT_REGEX.test(value); }, }, + info: strings["settings-info-preview-preview-port"], + category: categories.server, }, { key: "serverPort", @@ -31,6 +36,8 @@ export default function previewSettings() { return PORT_REGEX.test(value); }, }, + info: strings["settings-info-preview-server-port"], + category: categories.server, }, { key: "previewMode", @@ -40,6 +47,8 @@ export default function previewSettings() { [appSettings.PREVIEW_MODE_BROWSER, strings.browser], [appSettings.PREVIEW_MODE_INAPP, strings.inapp], ], + info: strings["settings-info-preview-mode"], + category: categories.server, }, { key: "host", @@ -57,28 +66,42 @@ export default function previewSettings() { } }, }, + info: strings["settings-info-preview-host"], + category: categories.server, }, { key: "disableCache", text: strings["disable in-app-browser caching"], checkbox: values.disableCache, + info: strings["settings-info-preview-disable-cache"], + category: categories.preview, }, { key: "useCurrentFileForPreview", text: strings["should_use_current_file_for_preview"], checkbox: !!values.useCurrentFileForPreview, + info: strings["settings-info-preview-use-current-file"], + category: categories.preview, }, { key: "showConsoleToggler", text: strings["show console toggler"], checkbox: values.showConsoleToggler, + info: strings["settings-info-preview-show-console-toggler"], + category: categories.preview, }, { note: strings["preview settings note"], }, ]; - return settingsPage(title, items, callback); + return settingsPage(title, items, callback, undefined, { + preserveOrder: true, + pageClassName: "detail-settings-page", + listClassName: "detail-settings-list", + infoAsDescription: true, + valueInTail: true, + }); function callback(key, value) { appSettings.update({ diff --git a/src/settings/scrollSettings.js b/src/settings/scrollSettings.js index ca3ab78b9..0366f7280 100644 --- a/src/settings/scrollSettings.js +++ b/src/settings/scrollSettings.js @@ -7,7 +7,7 @@ export default function scrollSettings() { const title = strings["scroll settings"]; const items = [ - { + /*{ key: "scrollSpeed", text: strings["scroll speed"], value: values.scrollSpeed, @@ -18,17 +18,17 @@ export default function scrollSettings() { [constants.SCROLL_SPEED_NORMAL, strings.normal], [constants.SCROLL_SPEED_SLOW, strings.slow], ], - }, - { + },*/ + /*{ key: "reverseScrolling", text: strings["reverse scrolling"], checkbox: values.reverseScrolling, - }, - { + },*/ + /*{ key: "diagonalScrolling", text: strings["diagonal scrolling"], checkbox: values.diagonalScrolling, - }, + },*/ { key: "scrollbarSize", text: strings["scrollbar size"], @@ -38,7 +38,14 @@ export default function scrollSettings() { }, ]; - return settingsPage(title, items, callback); + return settingsPage(title, items, callback, undefined, { + preserveOrder: true, + pageClassName: "detail-settings-page", + listClassName: "detail-settings-list", + infoAsDescription: true, + valueInTail: true, + groupByDefault: true, + }); function callback(key, value) { appSettings.update({ diff --git a/src/settings/searchSettings.js b/src/settings/searchSettings.js index 485b9b907..21ff65602 100644 --- a/src/settings/searchSettings.js +++ b/src/settings/searchSettings.js @@ -22,7 +22,12 @@ export default function searchSettings() { }, ]; - return settingsPage(title, items, callback); + return settingsPage(title, items, callback, undefined, { + preserveOrder: true, + pageClassName: "detail-settings-page", + listClassName: "detail-settings-list", + groupByDefault: true, + }); function callback(key, value) { values[key] = value; diff --git a/src/settings/terminalSettings.js b/src/settings/terminalSettings.js index 8821658c9..28abbf025 100644 --- a/src/settings/terminalSettings.js +++ b/src/settings/terminalSettings.js @@ -16,6 +16,13 @@ import helpers from "utils/helpers"; export default function terminalSettings() { const title = strings["terminal settings"]; const values = appSettings.value; + const categories = { + permissions: strings["settings-category-permissions"], + display: strings["settings-category-display"], + cursor: strings["settings-category-cursor"], + session: strings["settings-category-session"], + maintenance: strings["settings-category-maintenance"], + }; // Initialize terminal settings with defaults if not present if (!values.terminalSettings) { @@ -33,6 +40,8 @@ export default function terminalSettings() { key: "all_file_access", text: strings["allFileAccess"], info: strings["info-all_file_access"], + category: categories.permissions, + chevron: true, }, { key: "fontSize", @@ -47,6 +56,7 @@ export default function terminalSettings() { }, }, info: strings["info-fontSize"], + category: categories.display, }, { key: "fontFamily", @@ -56,6 +66,7 @@ export default function terminalSettings() { return fonts.getNames(); }, info: strings["info-fontFamily"], + category: categories.display, }, { key: "theme", @@ -72,20 +83,7 @@ export default function terminalSettings() { const option = this.select.find(([v]) => v === value); return option ? option[1] : value; }, - }, - { - key: "cursorStyle", - text: strings["terminal:cursor style"], - value: terminalValues.cursorStyle, - select: ["block", "underline", "bar"], - info: strings["info-cursorStyle"], - }, - { - key: "cursorInactiveStyle", - text: strings["terminal:cursor inactive style"], - value: terminalValues.cursorInactiveStyle, - select: ["outline", "block", "bar", "underline", "none"], - info: strings["info-cursorInactiveStyle"], + category: categories.display, }, { key: "fontWeight", @@ -105,12 +103,46 @@ export default function terminalSettings() { "900", ], info: strings["info-fontWeight"], + category: categories.display, + }, + { + key: "letterSpacing", + text: strings["letter spacing"], + value: terminalValues.letterSpacing, + prompt: strings["letter spacing"], + promptType: "number", + info: strings["info-letterSpacing"], + category: categories.display, + }, + { + key: "fontLigatures", + text: strings["font ligatures"], + checkbox: terminalValues.fontLigatures, + info: strings["info-fontLigatures"], + category: categories.display, + }, + { + key: "cursorStyle", + text: strings["terminal:cursor style"], + value: terminalValues.cursorStyle, + select: ["block", "underline", "bar"], + info: strings["info-cursorStyle"], + category: categories.cursor, + }, + { + key: "cursorInactiveStyle", + text: strings["terminal:cursor inactive style"], + value: terminalValues.cursorInactiveStyle, + select: ["outline", "block", "bar", "underline", "none"], + info: strings["info-cursorInactiveStyle"], + category: categories.cursor, }, { key: "cursorBlink", text: strings["terminal:cursor blink"], checkbox: terminalValues.cursorBlink, info: strings["info-cursorBlink"], + category: categories.cursor, }, { key: "scrollback", @@ -125,6 +157,7 @@ export default function terminalSettings() { }, }, info: strings["info-scrollback"], + category: categories.session, }, { key: "tabStopWidth", @@ -139,57 +172,58 @@ export default function terminalSettings() { }, }, info: strings["info-tabStopWidth"], - }, - { - key: "letterSpacing", - text: strings["letter spacing"], - value: terminalValues.letterSpacing, - prompt: strings["letter spacing"], - promptType: "number", - info: strings["info-letterSpacing"], + category: categories.session, }, { key: "convertEol", text: strings["terminal:convert eol"], checkbox: terminalValues.convertEol, + info: strings["settings-info-terminal-convert-eol"], + category: categories.session, }, { key: "imageSupport", text: strings["terminal:image support"], checkbox: terminalValues.imageSupport, info: strings["info-imageSupport"], - }, - { - key: "fontLigatures", - text: strings["font ligatures"], - checkbox: terminalValues.fontLigatures, - info: strings["info-fontLigatures"], + category: categories.session, }, { key: "confirmTabClose", text: strings["terminal:confirm tab close"], checkbox: terminalValues.confirmTabClose !== false, info: strings["info-confirmTabClose"], + category: categories.session, }, { key: "backup", text: strings.backup, info: strings["info-backup"], + category: categories.maintenance, + chevron: true, }, { key: "restore", text: strings.restore, info: strings["info-restore"], + category: categories.maintenance, + chevron: true, }, { key: "uninstall", text: strings.uninstall, info: strings["info-uninstall"], + category: categories.maintenance, + chevron: true, }, ]; return settingsPage(title, items, callback, undefined, { preserveOrder: true, + pageClassName: "detail-settings-page", + listClassName: "detail-settings-list", + infoAsDescription: true, + valueInTail: true, }); /** @@ -205,11 +239,11 @@ export default function terminalSettings() { if (boolStr === "true") { system.requestStorageManager(console.log, console.error); } else { - alert("This feature is not available."); + alert(strings["feature not available"]); } }, alert); } else { - alert("This feature is not available."); + alert(strings["feature not available"]); } return; @@ -291,14 +325,16 @@ export default function terminalSettings() { */ async function terminalRestore() { try { + await Executor.execute("rm -rf $PREFIX/aterm_backup.*"); + sdcard.openDocumentFile( async (data) => { loader.showTitleLoader(); - //this will create a file at $PREFIX/atem_backup.bin + //this will create a file at $PREFIX/atem_backup.tar.tar await system.copyToUri( data.uri, cordova.file.dataDirectory, - "aterm_backup", + "aterm_backup.tar", console.log, console.error, ); @@ -306,11 +342,9 @@ export default function terminalSettings() { // Restore await Terminal.restore(); - // Clean up - const backupFilename = "aterm_backup.bin"; - const tempBackupPath = cordova.file.dataDirectory + backupFilename; - const tempFS = fsOperation(tempBackupPath); - await tempFS.delete(); + //Cleanup restore file + await Executor.execute("rm -rf $PREFIX/aterm_backup.*"); + loader.removeTitleLoader(); alert( strings.success.toUpperCase(), @@ -333,7 +367,7 @@ export default function terminalSettings() { * @param {string} key * @param {any} value */ -async function updateActiveTerminals(key, value) { +export async function updateActiveTerminals(key, value) { // Find all terminal tabs and update their settings const terminalTabs = editorManager.files.filter( (file) => file.type === "terminal", diff --git a/src/sidebarApps/extensions/index.js b/src/sidebarApps/extensions/index.js index 3daaf7b06..56584fb35 100644 --- a/src/sidebarApps/extensions/index.js +++ b/src/sidebarApps/extensions/index.js @@ -33,6 +33,12 @@ let isLoading = false; let currentFilter = null; let filterHasMore = true; let isFilterLoading = false; +const SUPPORTED_EDITOR = "cm"; + +function withSupportedEditor(url) { + const separator = url.includes("?") ? "&" : "?"; + return `${url}${separator}supported_editor=${SUPPORTED_EDITOR}`; +} const $header = (
      @@ -42,7 +48,11 @@ const $header = ( -
      @@ -140,7 +150,9 @@ async function loadMorePlugins() { startLoading($explore); const response = await fetch( - `${constants.API_BASE}/plugins?page=${currentPage}&limit=${LIMIT}`, + withSupportedEditor( + `${constants.API_BASE}/plugins?page=${currentPage}&limit=${LIMIT}`, + ), ); const newPlugins = await response.json(); @@ -210,7 +222,7 @@ async function searchPlugin() { $searchResult.onscroll = null; $searchResult.content = ""; - const status = helpers.checkAPIStatus(); + const status = await helpers.checkAPIStatus(); if (!status) { $searchResult.content = ( {strings.api_error} @@ -224,7 +236,9 @@ async function searchPlugin() { try { $searchResult.classList.add("loading"); const plugins = await fsOperation( - Url.join(constants.API_BASE, `plugins?name=${query}`), + withSupportedEditor( + Url.join(constants.API_BASE, `plugins?name=${query}`), + ), ).readFile("json"); installedPlugins = await listInstalledPlugins(); @@ -352,17 +366,19 @@ async function filterPlugins() { } } -async function addSource() { - const sourceOption = [ - ["remote", strings.remote], - ["local", strings.local], - ]; - const sourceType = await select("Select Source", sourceOption); +async function addSource(sourceType, value = "https://") { + if (!sourceType) { + const sourceOption = [ + ["remote", strings.remote], + ["local", strings.local], + ]; + sourceType = await select("Select Source", sourceOption); + } if (!sourceType) return; let source; if (sourceType === "remote") { - source = await prompt("Enter plugin source", "https://", "url"); + source = await prompt("Enter plugin source", value, "url"); } else { source = (await FileBrowser("file", "Select plugin source")).url; } @@ -399,7 +415,7 @@ async function loadInstalled() { async function loadExplore() { if (this.collapsed) return; - const status = helpers.checkAPIStatus(); + const status = await helpers.checkAPIStatus(); if (!status) { $explore.$ul.content = {strings.api_error}; return; @@ -411,7 +427,9 @@ async function loadExplore() { hasMore = true; const response = await fetch( - `${constants.API_BASE}/plugins?page=${currentPage}&limit=${LIMIT}`, + withSupportedEditor( + `${constants.API_BASE}/plugins?page=${currentPage}&limit=${LIMIT}`, + ), ); const plugins = await response.json(); @@ -424,6 +442,7 @@ async function loadExplore() { currentPage++; updateHeight($explore); } catch (error) { + console.error("Failed to load plugins in sidebar explore:", error); $explore.$ul.content = {strings.error}; } finally { stopLoading($explore); @@ -434,15 +453,36 @@ async function listInstalledPlugins() { const plugins = await Promise.all( (await fsOperation(PLUGIN_DIR).lsDir()).map(async (item) => { const id = Url.basename(item.url); - const url = Url.join(item.url, "plugin.json"); - const plugin = await fsOperation(url).readFile("json"); - const iconUrl = getLocalRes(id, plugin.icon); - plugin.icon = await helpers.toInternalUri(iconUrl); - plugin.installed = true; - return plugin; + + try { + const url = Url.join(item.url, "plugin.json"); + const plugin = await fsOperation(url).readFile("json"); + + if (plugin.icon) { + const iconUrl = getLocalRes(id, plugin.icon); + try { + plugin.icon = await helpers.toInternalUri(iconUrl); + } catch (error) { + console.warn( + `Failed to resolve plugin icon for "${id}" in sidebar.`, + error, + ); + } + } + + plugin.installed = true; + return plugin; + } catch (error) { + console.warn( + `Skipping unreadable installed plugin "${id}" in sidebar.`, + error, + ); + return null; + } }), ); - return plugins; + + return plugins.filter(Boolean); } async function getFilteredPlugins(filterState) { @@ -454,11 +494,15 @@ async function getFilteredPlugins(filterState) { let response; if (filterState.value === "top_rated") { response = await fetch( - `${constants.API_BASE}/plugins?explore=random&page=${page}&limit=${LIMIT}`, + withSupportedEditor( + `${constants.API_BASE}/plugins?explore=random&page=${page}&limit=${LIMIT}`, + ), ); } else { response = await fetch( - `${constants.API_BASE}/plugin?orderBy=${filterState.value}&page=${page}&limit=${LIMIT}`, + withSupportedEditor( + `${constants.API_BASE}/plugin?orderBy=${filterState.value}&page=${page}&limit=${LIMIT}`, + ), ); } const items = await response.json(); @@ -497,7 +541,9 @@ async function getFilteredPlugins(filterState) { try { const page = filterState.nextPage; const response = await fetch( - `${constants.API_BASE}/plugins?page=${page}&limit=${LIMIT}`, + withSupportedEditor( + `${constants.API_BASE}/plugins?page=${page}&limit=${LIMIT}`, + ), ); const data = await response.json(); filterState.nextPage = page + 1; @@ -686,20 +732,22 @@ function ListItem({ icon, name, id, version, downloads, installed, source }) { > {name} - {installed - ? <> - {source - ? - : null} - - - : } + {installed ? ( + <> + {source ? ( + + ) : null} + + + ) : ( + + )}
      ); @@ -846,7 +894,7 @@ function ListItem({ icon, name, id, version, downloads, installed, source }) { } async function loadAd(el) { - if (!IS_FREE_VERSION) return; + if (!helpers.canShowAds()) return; try { if (!(await window.iad?.isLoaded())) { const oldText = el.textContent; @@ -868,6 +916,8 @@ async function uninstall(id) { fsOperation(pluginDir).delete(), state.delete(state.storeUrl), ]); + const pluginMainScript = document.getElementById(`${id}-mainScript`); + if (pluginMainScript) document.head.removeChild(pluginMainScript); acode.unmountPlugin(id); const searchInput = container.querySelector('input[name="search-ext"]'); @@ -886,9 +936,7 @@ async function uninstall(id) { } // Show Ad If Its Free Version, interstitial Ad(iad) is loaded. - if (IS_FREE_VERSION && (await window.iad?.isLoaded())) { - window.iad.show(); - } + await helpers.showInterstitialIfReady(); } catch (err) { helpers.error(err); } diff --git a/src/sidebarApps/index.js b/src/sidebarApps/index.js index c08636c84..363578e72 100644 --- a/src/sidebarApps/index.js +++ b/src/sidebarApps/index.js @@ -1,3 +1,4 @@ +import appSettings from "lib/settings"; import Sponsors from "pages/sponsors"; import SidebarApp from "./sidebarApp"; @@ -11,6 +12,8 @@ let $sidebar; let currentSection = localStorage.getItem(SIDEBAR_APPS_LAST_SECTION); /**@type {SidebarApp[]} */ const apps = []; +/**@type {HTMLSpanElement | null} */ +let $sponsorIcon = null; /** * @param {string} icon icon of the app @@ -32,12 +35,13 @@ function add( ) { currentSection ??= id; - const active = currentSection === id; const app = new SidebarApp(icon, id, title, initFunction, onSelected); - - app.active = active; - app.install(prepend); apps.push(app); + app.install(prepend); + + if (currentSection === id) { + setActiveApp(id); + } } /** @@ -52,10 +56,14 @@ function remove(id) { app.remove(); apps.splice(apps.indexOf(app), 1); if (wasActive && apps.length > 0) { - const firstApp = apps[0]; - firstApp.active = true; - currentSection = firstApp.id; - localStorage.setItem(SIDEBAR_APPS_LAST_SECTION, firstApp.id); + const preferredApp = apps.find((app) => app.id === currentSection); + setActiveApp(preferredApp?.id || apps[0].id); + return; + } + + if (!apps.length) { + currentSection = null; + localStorage.removeItem(SIDEBAR_APPS_LAST_SECTION); } } @@ -68,6 +76,10 @@ function init($el) { $apps = $sidebar.get(".app-icons-container"); $apps.addEventListener("click", onclick); SidebarApp.init($el, $apps); + appSettings.on( + "update:showSponsorSidebarApp", + setSponsorSidebarAppVisibility, + ); } /** @@ -78,7 +90,33 @@ async function loadApps() { add(...(await import("./searchInFiles")).default); add(...(await import("./extensions")).default); add(...(await import("./notification")).default); - $apps.append(); + setSponsorSidebarAppVisibility(appSettings.value.showSponsorSidebarApp); +} + +/** + * Adds or removes the sponsor icon in sidebar based on settings. + * @param {boolean} visible + */ +function setSponsorSidebarAppVisibility(visible) { + if (!$apps) return; + + if (visible) { + if ($sponsorIcon?.isConnected) return; + $sponsorIcon = ( + + ); + $apps.append($sponsorIcon); + return; + } + + if ($sponsorIcon) { + $sponsorIcon.remove(); + $sponsorIcon = null; + } } /** @@ -88,12 +126,20 @@ async function loadApps() { * @returns {void} */ function ensureActiveApp() { - const hasActiveApp = apps.some((app) => app.active); - if (!hasActiveApp && apps.length > 0) { - const firstApp = apps[0]; - firstApp.active = true; - currentSection = firstApp.id; - localStorage.setItem(SIDEBAR_APPS_LAST_SECTION, firstApp.id); + const activeApps = apps.filter((app) => app.active); + if (activeApps.length === 1) return; + + if (activeApps.length > 1) { + const preferredActiveApp = activeApps.find( + (app) => app.id === currentSection, + ); + setActiveApp(preferredActiveApp?.id || activeApps[0].id); + return; + } + + if (apps.length > 0) { + const preferredApp = apps.find((app) => app.id === currentSection); + setActiveApp(preferredApp?.id || apps[0].id); } } @@ -117,11 +163,24 @@ function onclick(e) { if (action !== "sidebar-app") return; - localStorage.setItem(SIDEBAR_APPS_LAST_SECTION, id); - const activeApp = apps.find((app) => app.active); + setActiveApp(id); +} + +/** + * Activates the given sidebar app and deactivates all others. + * @param {string} id + * @returns {void} + */ +function setActiveApp(id) { const app = apps.find((app) => app.id === id); - if (activeApp) activeApp.active = false; - if (app) app.active = true; + if (!app) return; + + currentSection = id; + localStorage.setItem(SIDEBAR_APPS_LAST_SECTION, id); + + for (const currentApp of apps) { + currentApp.active = currentApp.id === id; + } } export default { diff --git a/src/sidebarApps/searchInFiles/cmResultView.js b/src/sidebarApps/searchInFiles/cmResultView.js new file mode 100644 index 000000000..9309c4d89 --- /dev/null +++ b/src/sidebarApps/searchInFiles/cmResultView.js @@ -0,0 +1,389 @@ +import { EditorState, StateEffect, StateField } from "@codemirror/state"; +import { + Decoration, + EditorView, + ViewPlugin, + WidgetType, +} from "@codemirror/view"; +import appSettings from "lib/settings"; +import helpers from "utils/helpers"; + +/** + * CodeMirror view to render search results + * + * @param {HTMLElement} container + * @param {object} opts + * @param {(lineIndex:number)=>void} opts.onLineClick + * @param {()=>string[]} opts.getWords - returns list of words to highlight + * @param {()=>string[]} opts.getFileNames - returns list of filenames (used to style header lines) + */ +export function createSearchResultView( + container, + { onLineClick, getWords, getFileNames, getRegex }, +) { + let view; + + // Effect and field to maintain collapsed headers (by line number) + const toggleFold = StateEffect.define(); + const foldState = StateField.define({ + create() { + return new Set(); + }, + update(value, tr) { + let next = value; + for (const e of tr.effects) { + if (e.is(toggleFold)) { + if (next === value) next = new Set(value); + const ln = e.value; + if (next.has(ln)) next.delete(ln); + else next.add(ln); + } + } + // Reset folds on full document reset + if (tr.docChanged && tr.startState.doc.length === 0) return new Set(); + return next; + }, + }); + + function eachGroup(doc, fn) { + // Groups start at lines not beginning with a tab + const total = doc.lines; + let start = 1; + while (start <= total) { + const header = doc.line(start); + // If header starts with tab, advance until a non-tab header + if (header.text.startsWith("\t")) { + start++; + continue; + } + let end = start; + for (let i = start + 1; i <= total; i++) { + const line = doc.line(i); + if (!line.text.startsWith("\t")) break; + end = i; + } + fn({ start, end }); + start = end + 1; + } + } + + class ChevronWidget extends WidgetType { + constructor(collapsed) { + super(); + this.collapsed = collapsed; + } + eq(other) { + return other.collapsed === this.collapsed; + } + toDOM() { + const span = document.createElement("span"); + span.className = `cm-foldChevron icon keyboard_arrow_${this.collapsed ? "right" : "down"}`; + return span; + } + ignoreEvent() { + return false; + } + } + + class SummaryWidget extends WidgetType { + constructor(text) { + super(); + this.text = text; + } + eq(other) { + return other.text === this.text; + } + toDOM() { + const div = document.createElement("div"); + div.className = "cm-collapsedSummary"; + div.textContent = this.text; + return div; + } + ignoreEvent() { + return false; + } + } + + class CountWidget extends WidgetType { + constructor(count) { + super(); + this.count = count; + } + eq(other) { + return other.count === this.count; + } + toDOM() { + const span = document.createElement("span"); + span.className = "cm-fileCount"; + span.textContent = `(${this.count})`; + return span; + } + ignoreEvent() { + return true; + } + } + + class FileIconWidget extends WidgetType { + constructor(className) { + super(); + this.className = className; + } + eq(other) { + return other.className === this.className; + } + toDOM() { + const span = document.createElement("span"); + span.className = `${this.className} cm-fileIcon`; + return span; + } + ignoreEvent() { + return false; + } + } + + function buildGroupDecos(state) { + const doc = state.doc; + const folded = state.field(foldState, false) || new Set(); + // No removed groups + const fns = + (typeof getFileNames === "function" ? getFileNames() : []) || []; + if (!fns.length || doc.length === 0 || doc.lines === 0) + return Decoration.none; + + const builder = []; + // Build header chevrons and collapses per group + let groupIndex = 0; + eachGroup(doc, ({ start, end }) => { + const header = doc.line(start); + const key = start - 1; + const collapsed = folded.has(key); // zero-based line index + // Header line class and chevron widget + builder.push( + Decoration.line({ class: "cm-fileName" }).range(header.from), + ); + builder.push( + Decoration.widget({ + widget: new ChevronWidget(collapsed), + side: -1, + }).range(header.from), + ); + // File icon + const fileNames = + (typeof getFileNames === "function" ? getFileNames() : []) || []; + const fname = fileNames[groupIndex] || ""; + const iconClass = helpers.getIconForFile(fname); + builder.push( + Decoration.widget({ + widget: new FileIconWidget(iconClass), + side: -1, + }).range(header.from), + ); + // Count badge on right + const count = Math.max(0, end - start); + builder.push( + Decoration.widget({ widget: new CountWidget(count), side: 1 }).range( + header.to, + ), + ); + + if (collapsed && end > start) { + // Hide content lines and show a summary placeholder + const first = doc.line(start + 1); + const last = doc.line(end); + builder.push( + Decoration.replace({ block: true }).range(first.from, last.to), + ); + const count2 = end - start; + builder.push( + Decoration.widget({ + widget: new SummaryWidget( + `${count2} result${count2 > 1 ? "s" : ""}`, + ), + side: 1, + block: true, + }).range(first.from), + ); + } + groupIndex++; + }); + + return Decoration.set(builder, true); + } + + const groupDecoField = StateField.define({ + create(state) { + return buildGroupDecos(state); + }, + update(decos, tr) { + if ( + tr.docChanged || + tr.startState.field(foldState, false) !== + tr.state.field(foldState, false) + ) { + return buildGroupDecos(tr.state); + } + return decos.map(tr.changes); + }, + provide: (f) => EditorView.decorations.from(f), + }); + + const decorationsPlugin = ViewPlugin.fromClass( + class { + constructor(view) { + this.decorations = this.buildDecos(view); + } + + update(update) { + if ( + update.docChanged || + update.viewportChanged || + update.startState.field(foldState) !== update.state.field(foldState) + ) { + this.decorations = this.buildDecos(update.view); + } + } + + buildDecos(view) { + const builder = []; + let searchRegex = null; + if (typeof getRegex === "function") { + const r = getRegex(); + if (r && r.source) { + const flags = (r.ignoreCase ? "i" : "") + "g"; + try { + searchRegex = new RegExp(r.source, flags); + } catch {} + } + } + const words = searchRegex ? [] : (getWords?.() || []).filter(Boolean); + + let wordRegex = null; + if (!searchRegex && words.length) { + const escaped = words + .map((w) => w.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")) + .join("|"); + try { + wordRegex = new RegExp(escaped, "g"); + } catch {} + } + // Add match highlights only on visible lines to keep it fast + const matcher = searchRegex || wordRegex; + if (matcher) { + for (const { from, to } of view.visibleRanges) { + let pos = from; + while (pos <= to) { + const line = view.state.doc.lineAt(pos); + const text = line.text; + if (text && text.charCodeAt(0) === 9) { + matcher.lastIndex = 0; + let m; + while ((m = matcher.exec(text))) { + const fromPos = line.from + m.index; + const toPos = fromPos + m[0].length; + builder.push( + Decoration.mark({ class: "cm-match" }).range( + fromPos, + toPos, + ), + ); + if (m.index === matcher.lastIndex) matcher.lastIndex++; + } + } + if (line.to >= to) break; + pos = line.to + 1; + } + } + } + + return Decoration.set(builder, true); + } + }, + { + decorations: (v) => v.decorations, + eventHandlers: { + mousedown(event, view) { + // Map click to line number and notify (use client coords) + const pos = view.posAtCoords({ x: event.clientX, y: event.clientY }); + if (pos == null) return; + // Only react when clicking on a line element, not empty space + const lineEl = + event.target && event.target.closest + ? event.target.closest(".cm-line") + : null; + if (!lineEl) return; + const ln = view.state.doc.lineAt(pos).number - 1; // zero-based + const lineText = view.state.doc.line(ln + 1).text; + const isHeader = lineText.length > 0 && lineText.charCodeAt(0) !== 9; + if (isHeader) { + // Toggle collapse on header click + view.dispatch({ effects: toggleFold.of(ln) }); + return; + } + // Only trigger navigation for match lines (start with tab) + if (!(lineText && lineText.charCodeAt(0) === 9)) return; + onLineClick?.(ln); + }, + }, + }, + ); + + const readOnly = EditorState.readOnly.of(true); + const lineWrap = EditorView.lineWrapping; + const noCursor = EditorView.editable.of(false); + + function getEditorFontFamily() { + const font = appSettings?.value?.editorFont || "Roboto Mono"; + return `${font}, Noto Mono, Monaco, monospace`; + } + + const theme = EditorView.theme({ + "&": { + fontSize: String(appSettings?.value?.fontSize || "12px"), + lineHeight: String(appSettings?.value?.lineHeight || 1.5), + }, + ".cm-content": { + padding: 0, + fontFamily: getEditorFontFamily(), + }, + ".cm-line": { + color: "var(--primary-text-color)", + }, + }); + + const state = EditorState.create({ + doc: "", + extensions: [ + EditorState.tabSize.of(1), + readOnly, + noCursor, + lineWrap, + theme, + foldState, + groupDecoField, + decorationsPlugin, + ], + }); + + view = new EditorView({ state, parent: container }); + + return { + setValue(text) { + view.dispatch({ + changes: { from: 0, to: view.state.doc.length, insert: text || "" }, + }); + }, + insert(text) { + if (!text) return; + view.dispatch({ changes: { from: view.state.doc.length, insert: text } }); + }, + setGhostText(text) { + this.setValue(text || ""); + }, + removeGhostText() { + this.setValue(""); + }, + get view() { + return view; + }, + }; +} diff --git a/src/sidebarApps/searchInFiles/index.js b/src/sidebarApps/searchInFiles/index.js index 5fc682911..50ff696fc 100644 --- a/src/sidebarApps/searchInFiles/index.js +++ b/src/sidebarApps/searchInFiles/index.js @@ -1,6 +1,6 @@ import "./styles.scss"; import fsOperation from "fileSystem"; -import addTouchListeners from "ace/touchHandler"; +import { EditorView } from "@codemirror/view"; import autosize from "autosize"; import Checkbox from "components/checkbox"; import Sidebar, { preventSlide } from "components/sidebar"; @@ -11,7 +11,12 @@ import files, { Tree } from "lib/fileList"; import openFile from "lib/openFile"; import settings from "lib/settings"; import helpers from "utils/helpers"; -import { fileNames, words } from "./searchResultMode"; +import { createSearchResultView } from "./cmResultView"; + +// Local highlight sources +const words = []; +const fileNames = []; +const MAX_HL_WORDS = 400; // cap to avoid massive regex in result view const workers = []; const results = []; @@ -84,8 +89,8 @@ const store = { const debounceSearch = helpers.debounce(searchAll, 500); let useIncludeAndExclude = false; -/**@type {AceAjax.Editor} */ -let searchResult = null; +let searchResult = null; // CM6 wrapper from createSearchResultView +let currentSearchRegex = null; let replacing = false; let newFiles = 0; let searching = false; @@ -104,19 +109,13 @@ files.on("push-file", () => { }); $container.onref = ($el) => { - searchResult = ace.edit($el, { - readOnly: true, - useWorker: false, - showLineNumbers: false, - fontSize: "14px", - mode: "ace/mode/search_result", + searchResult = createSearchResultView($el, { + onLineClick: onCursorChange, + getWords: () => words, + getFileNames: () => fileNames, + getRegex: () => currentSearchRegex, }); - searchResult.focus = () => {}; $container.style.lineHeight = "1.5"; - searchResult.session.setTabSize(1); - searchResult.renderer.setMargin(0, 0, -20, 0); - addTouchListeners(searchResult, true, onCursorChange); - searchResult.session.setUseWrapMode(true); }; preventSlide((target) => { @@ -215,9 +214,7 @@ export default [ ); }, false, // show as first item - () => { - searchResult?.resize(true); - }, + () => {}, ]; /** @@ -238,8 +235,12 @@ async function onWorkerMessage(e) { let readError; const editorFile = editorManager.getFile(data, "uri"); - if (editorFile) { - content = editorFile.session?.getValue() || ""; + if (editorFile?.session?.doc) { + try { + content = editorFile.session.doc.toString() || ""; + } catch (_) { + content = ""; + } } else { try { content = await fsOperation(data).readFile( @@ -266,6 +267,10 @@ async function onWorkerMessage(e) { if (filesSearched.includes(file)) return; filesSearched.push(Tree.fromJSON(file)); + // Clear any ghost text on first result + if (filesSearched.length === 1) { + searchResult.setValue(""); + } resultOverview.filesCount += 1; resultOverview.matchesCount += matches.length; $resultOverview.innerHTML = searchResultText( @@ -280,18 +285,16 @@ async function onWorkerMessage(e) { position: null, }); - fileNames.push(escapeStringRegexp(file.name)); - forceTokenizer(); + fileNames.push(file.name); for (const result of matches) { result.file = index; results.push(result); - if (!words.includes(result.renderText)) { - words.push(escapeStringRegexp(result.renderText)); - forceTokenizer(); + if (words.length < MAX_HL_WORDS) { + const token = escapeStringRegexp(result.renderText); + if (!words.includes(token)) words.push(token); } } - searchResult.navigateFileEnd(); if (fileNames.length > 1) { searchResult.insert(`\n${text}`); } else { @@ -317,9 +320,7 @@ async function onWorkerMessage(e) { break; } - if (IS_FREE_VERSION && (await window.iad?.isLoaded())) { - window.iad.show(); - } + await helpers.showInterstitialIfReady(); terminateWorker(false); replacing = false; @@ -334,8 +335,8 @@ async function onWorkerMessage(e) { } const showAd = results.length > 100; - if (IS_FREE_VERSION && showAd && (await window.iad?.isLoaded())) { - window.iad.show(); + if (showAd) { + await helpers.showInterstitialIfReady(); } if (!results.length) { @@ -367,6 +368,7 @@ async function onWorkerMessage(e) { * On input event handler * @param {InputEvent} e */ + function onInput(e) { if (!searchResult || replacing) return; @@ -439,6 +441,7 @@ async function searchAll() { searching = true; words.length = 0; fileNames.length = 0; + currentSearchRegex = regex; searchResult.setGhostText(strings["searching..."], { row: 0, column: 0 }); sendMessage("search-files", allFiles, regex, options); } @@ -712,14 +715,12 @@ function toRegex(search, options) { /** * On cursor change event handler */ -async function onCursorChange() { - const line = searchResult.selection.getCursor().row; +async function onCursorChange(line) { const result = results[line]; if (!result) return; const { file, position } = result; if (!position) { - // fold the file - searchResult.execCommand("toggleFoldWidget"); + // header line clicked; CM view folding not implemented yet return; } @@ -727,10 +728,20 @@ async function onCursorChange() { const { url } = filesSearched[file]; await openFile(url, { render: true }); const { editor } = editorManager; - editor.moveCursorTo(position.start.row, position.start.column, false); - editor.selection.setRange(position); - editor.centerSelection(); - editor.focus(); + try { + // Compute offsets from row/column (rows from worker are 0-based) + const doc = editor.state.doc; + const startLine = doc.line(position.start.row + 1); + const endLine = doc.line(position.end.row + 1); + const from = Math.min(startLine.from + position.start.column, startLine.to); + const to = Math.min(endLine.from + position.end.column, endLine.to); + editor.dispatch({ + selection: { anchor: from, head: to }, + effects: EditorView.scrollIntoView(from, { y: "center" }), + }); + } catch (error) { + console.warn(`Failed to focus search result at line ${line}.`, error); + } } /** @@ -767,13 +778,3 @@ function removeEvents() { editorManager.off("rename-file", onInput); editorManager.off("file-content-changed", onInput); } - -function forceTokenizer() { - const { session } = searchResult; - // force recreation of tokenizer - session.$mode.$tokenizer = null; - session.bgTokenizer.setTokenizer(session.$mode.getTokenizer()); - // force re-highlight whole document - const row = session.getLength() - 1; - session.bgTokenizer.start(row); -} diff --git a/src/sidebarApps/searchInFiles/searchResultMode.js b/src/sidebarApps/searchInFiles/searchResultMode.js deleted file mode 100644 index 2260c502f..000000000 --- a/src/sidebarApps/searchInFiles/searchResultMode.js +++ /dev/null @@ -1,223 +0,0 @@ -export const words = []; -export const fileNames = []; - -ace.define( - "ace/mode/search_result_highlight_rules", - [ - "require", - "exports", - "module", - "ace/lib/oop", - "ace/mode/text_highlight_rules", - ], - function (require, exports, module) { - const oop = require("../lib/oop"); - const { TextHighlightRules } = require("./text_highlight_rules"); - - function SearchHighlightRules() { - this.$rules = { - start: [ - { - token: "file_name", - get regex() { - return fileNames.join("|"); - }, - }, - { - token: "highlight", - get regex() { - return words.join("|"); - }, - }, - { - token: "string", // multi line string start - regex: /[|>][-+\d]*(?:$|\s+(?:$|#))/, - onMatch: function (val, state, stack, line) { - line = line.replace(/ #.*/, ""); - var indent = /^ *((:\s*)?-(\s*[^|>])?)?/ - .exec(line)[0] - .replace(/\S\s*$/, "").length; - var indentationIndicator = Number.parseInt( - /\d+[\s+-]*$/.exec(line), - ); - - if (indentationIndicator) { - indent += indentationIndicator - 1; - this.next = "mlString"; - } else { - this.next = "mlStringPre"; - } - if (!stack.length) { - stack.push(this.next); - stack.push(indent); - } else { - stack[0] = this.next; - stack[1] = indent; - } - return this.token; - }, - next: "mlString", - }, - ], - mlStringPre: [ - { - token: "indent", - regex: /^ *$/, - }, - { - token: "indent", - regex: /^ */, - onMatch: function (val, state, stack) { - var curIndent = stack[1]; - - if (curIndent >= val.length) { - this.next = "start"; - stack.shift(); - stack.shift(); - } else { - stack[1] = val.length - 1; - this.next = stack[0] = "mlString"; - } - return this.token; - }, - next: "mlString", - }, - ], - mlString: [ - { - token: "indent", - regex: /^ *$/, - }, - { - token: "indent", - regex: /^ */, - onMatch: function (val, state, stack) { - var curIndent = stack[1]; - - if (curIndent >= val.length) { - this.next = "start"; - stack.splice(0); - } else { - this.next = "mlString"; - } - return this.token; - }, - next: "mlString", - }, - ], - }; - this.normalizeRules(); - } - oop.inherits(SearchHighlightRules, TextHighlightRules); - exports.SearchHighlightRules = SearchHighlightRules; - }, -); - -define("ace/mode/folding/search_result_fold", [ - "require", - "exports", - "module", - "ace/lib/oop", - "ace/mode/folding/fold_mode", - "ace/range", -], function (require, exports, module) { - const oop = require("ace/lib/oop"); - const { FoldMode: BaseFoldMode } = require("./fold_mode"); - const { Range } = require("ace/range"); - - function FoldMode() {} - oop.inherits(FoldMode, BaseFoldMode); - exports.FoldMode = FoldMode; - - (function () { - this.getFoldWidgetRange = function (session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) return range; - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel === -1 || line[startLevel] !== "#") return; - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - if (level === -1) continue; - if (line[level] !== "#") break; - endRow = row; - } - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - }; - this.getFoldWidget = function (session, foldStyle, row) { - var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - if (indent === -1) { - session.foldWidgets[row - 1] = - prevIndent !== -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent === -1) { - if ( - indent === nextIndent && - line[indent] === "#" && - next[indent] === "#" - ) { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; - return "start"; - } - } else if ( - prevIndent === indent && - line[indent] === "#" && - prev[indent] === "#" - ) { - if (session.getLine(row - 2).search(/\S/) === -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; - } - } - if (prevIndent !== -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; - else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; - else return ""; - }; - }).call(FoldMode.prototype); -}); - -ace.define( - "ace/mode/search_result", - [ - "require", - "exports", - "module", - "ace/lib/oop", - "ace/mode/text", - "ace/mode/folding/search_result_fold", - "ace/search_result_highlight_rules", - ], - function (require, exports, module) { - const oop = require("ace/lib/oop"); - const { Mode: TextMode } = require("./text"); - const { SearchHighlightRules } = require("./search_result_highlight_rules"); - const { FoldMode } = require("./folding/search_result_fold"); - - function Mode() { - this.$id = "ace/mode/search_result"; - this.HighlightRules = SearchHighlightRules; - this.foldingRules = new FoldMode(); - } - oop.inherits(Mode, TextMode); - exports.Mode = Mode; - }, -); diff --git a/src/sidebarApps/searchInFiles/styles.scss b/src/sidebarApps/searchInFiles/styles.scss index f4d704728..c0a1ae048 100644 --- a/src/sidebarApps/searchInFiles/styles.scss +++ b/src/sidebarApps/searchInFiles/styles.scss @@ -54,58 +54,99 @@ } } - .ace_editor { + .cm-editor { height: 100%; - width: calc(100% + 18px); - margin-left: -8px; - background-color: rgb(153, 153, 255); + width: 100%; background-color: var(--primary-color); - color: rgb(255, 255, 255); color: var(--primary-text-color); - .ace_gutter, - .ace_gutter-cell { - background-color: inherit !important; - color: inherit !important; + + .cm-content { + background-color: inherit; + color: inherit; + padding: 0 !important; + + .cm-line { + padding: 0 !important; + } + + .cm-line:nth-child(odd) { + background-color: rgba(0, 0, 0, 0.2) !important; + } } - .ace_fold { - display: none !important; + .cm-scroller { + overflow: auto; } - .ace_bracket { - display: none !important; + .cm-line.cm-fileName .cm-foldChevron { + display: inline-flex; + align-items: center; + width: auto; + margin-right: 2px; + opacity: 0.9; + vertical-align: middle; } - .ace_cursor { - display: none !important; + + .cm-line.cm-fileName { + font-weight: 600; } - .ace_marker-layer { - display: none !important; + .cm-line.cm-fileName .cm-fileIcon { + display: inline-flex; + align-items: center; + vertical-align: middle; + margin-right: 2px; + font-size: 1em; + line-height: 1; } - .ace_highlight { - border: solid 1px rgba(122, 122, 122, 0.2); - border: solid 1px var(--border-color); - border-radius: 2px; - background-color: rgb(255, 255, 255); - background-color: var(--secondary-color); - color: rgb(37, 37, 37); + .cm-line.cm-fileName .cm-fileCount { + display: inline-block; + margin-left: 8px; + font-size: 0.9em; color: var(--secondary-text-color); } - .ace_file_name { - color: rgb(255, 215, 0); - color: var(--active-text-color); + .cm-collapsedSummary { + padding: 4px 8px; + margin: 2px 0 6px 18px; + font-size: 0.9em; + color: var(--secondary-text-color); + background: color-mix(in srgb, var(--secondary-color) 60%, transparent); + border: 1px solid var(--border-color); + border-radius: 4px; } - .ace_gutter-cell:nth-child(odd), - .ace_line_group:nth-child(odd) { - background-color: rgba(0, 0, 0, 0.2) !important; + /* Match highlight */ + .cm-match { + background: color-mix(in srgb, var(--active-color) 60%, transparent); + color: var(--secondary-text-color); + outline: 1px solid var(--border-color); + border-radius: 2px; + font-weight: 500; } } + .cm-editor { + width: 100% !important; + margin-left: 0 !important; + } + + .search-in-file-editor { + height: 100%; + min-height: 0; + overflow: hidden; + display: block; + } + + textarea { + height: auto; + resize: none; + overflow-y: hidden; + } + .extras { display: block !important; line-height: 0px !important; diff --git a/src/sidebarApps/searchInFiles/worker.js b/src/sidebarApps/searchInFiles/worker.js index b740b2866..7f3ce85bf 100644 --- a/src/sidebarApps/searchInFiles/worker.js +++ b/src/sidebarApps/searchInFiles/worker.js @@ -222,7 +222,53 @@ function done(ratio, mode) { * @param {string} arg.include - The inclusion patterns separated by commas. */ function Skip({ exclude, include }) { - const excludeFiles = (exclude ? exclude.split(",") : []).map((p) => p.trim()); + // Default exclude patterns for binary/media/archives/fonts/etc. + const defaultExcludes = [ + "**/*.png", + "**/*.jpg", + "**/*.jpeg", + "**/*.gif", + "**/*.bmp", + "**/*.webp", + "**/*.avif", + "**/*.ico", + "**/*.svgz", + "**/*.mp3", + "**/*.wav", + "**/*.ogg", + "**/*.flac", + "**/*.m4a", + "**/*.aac", + "**/*.mp4", + "**/*.mkv", + "**/*.webm", + "**/*.mov", + "**/*.avi", + "**/*.zip", + "**/*.gz", + "**/*.bz2", + "**/*.xz", + "**/*.7z", + "**/*.rar", + "**/*.tar", + "**/*.exe", + "**/*.dll", + "**/*.so", + "**/*.bin", + "**/*.class", + "**/*.ttf", + "**/*.otf", + "**/*.woff", + "**/*.woff2", + "**/*.pdf", + "**/*.psd", + "**/*.ai", + "**/*.sketch", + ]; + const userExcludes = (exclude ? exclude.split(",") : []) + .map((p) => p.trim()) + .filter(Boolean); + const excludeFiles = [...defaultExcludes, ...userExcludes]; const includeFiles = (include ? include.split(",") : ["**"]).map((p) => p.trim(), ); diff --git a/src/sidebarApps/sidebarApp.js b/src/sidebarApps/sidebarApp.js index df147dcdd..0c85339bc 100644 --- a/src/sidebarApps/sidebarApp.js +++ b/src/sidebarApps/sidebarApp.js @@ -86,7 +86,10 @@ export default class SidebarApp { /**@param {boolean} value */ set active(value) { - this.#active = !!value; + const nextValue = !!value; + if (this.#active === nextValue) return; + + this.#active = nextValue; this.#icon.classList.toggle("active", this.#active); if (this.#active) { const oldContainer = getContainer(this.#container); diff --git a/src/styles/codemirror.scss b/src/styles/codemirror.scss new file mode 100644 index 000000000..972b38cf9 --- /dev/null +++ b/src/styles/codemirror.scss @@ -0,0 +1,119 @@ +.editor-container { + position: relative; +} + +.editor-container > .cursor-menu { + z-index: 600; +} + +.cm-tooltip { + box-sizing: border-box; + max-width: min(32rem, calc(100vw - 1.25rem)); + width: max-content; + padding: 0.4rem 0.45rem; + border-radius: 0; + overscroll-behavior: contain; + overflow-y: auto; + max-height: min(70vh, 22rem); + + .cm-tooltip-section + .cm-tooltip-section { + margin-top: 0.5rem; + } +} + +.cm-tooltip.cm-tooltip-hover { + font-size: 0.9rem; + line-height: 1.45; + word-break: break-word; + max-height: min(65vh, 20rem); +} + +.cm-tooltip.cm-tooltip-autocomplete { + display: flex; + flex-wrap: nowrap; + align-items: stretch; + gap: 0.4rem; + width: auto; + min-width: min(15rem, calc(100vw - 1.75rem)); + max-width: min(32rem, calc(100vw - 1.25rem)); + max-height: min(60vh, 20rem); + padding: 0.25rem; + overflow: visible; +} + +.cm-tooltip.cm-tooltip-autocomplete > ul { + flex: 1 1 auto; + max-height: inherit; + overflow: auto; + padding: 0.25rem; + margin: 0; + scrollbar-gutter: stable; +} + +.cm-tooltip.cm-tooltip-autocomplete > ul > li { + display: flex; + align-items: center; + gap: 0.12rem; + padding: 0.3rem 0.36rem; + border-radius: 0.2rem; +} + +.cm-tooltip.cm-tooltip-autocomplete .cm-completionIcon { + flex: 0 0 auto; + min-width: 1rem; + text-align: center; + line-height: 1; +} + +.cm-tooltip.cm-tooltip-autocomplete .cm-completionLabel { + flex: 1 1 auto; + font-size: 0.95em; + line-height: 1.4; + overflow-wrap: anywhere; +} + +.cm-tooltip.cm-tooltip-autocomplete .cm-completionMatchedText { + font-weight: 600; +} + +.cm-tooltip.cm-tooltip-autocomplete .cm-completionDetail { + margin-left: auto; + font-size: 0.85em; +} + +.cm-tooltip.cm-tooltip-autocomplete .cm-completionInfo { + flex: 1 1 45%; + min-width: min(12rem, calc(100vw - 3rem)); + max-width: min(18rem, calc(100vw - 2.5rem)); + max-height: inherit; + padding: 0.3rem 0.35rem; + font-size: 0.85rem; + line-height: 1.35; + overflow: auto; +} + +@media (max-width: 480px) { + .cm-tooltip { + font-size: 0.9rem; + max-width: calc(100vw - 1.25rem); + max-height: min(70vh, 20rem); + } + + .cm-tooltip.cm-tooltip-autocomplete { + flex-direction: column; + min-width: min(13.5rem, calc(100vw - 1.5rem)); + max-width: calc(100vw - 1.35rem); + max-height: min(65vh, 18rem); + } + + .cm-tooltip.cm-tooltip-autocomplete > ul > li { + padding: 0.32rem 0.4rem; + } + + .cm-tooltip.cm-tooltip-autocomplete .cm-completionInfo { + min-width: auto; + max-width: 100%; + max-height: 12rem; + padding: 0.35rem 0.4rem 0.2rem; + } +} diff --git a/src/styles/console.m.scss b/src/styles/console.m.scss index dba6fed98..8ff4d63b1 100644 --- a/src/styles/console.m.scss +++ b/src/styles/console.m.scss @@ -40,7 +40,7 @@ c-console { background-color: #313131; z-index: 99998; color: #eeeeee; - font-family: "Roboto", sans-serif; + font-family: var(--app-font-family); } c-console[title] { @@ -318,4 +318,4 @@ c-table c-cell:not(:last-child) { opacity: 1; transform: translate3d(0, 0, 0) } -} \ No newline at end of file +} diff --git a/src/styles/list.scss b/src/styles/list.scss index 3de6ea01e..1f35b615b 100644 --- a/src/styles/list.scss +++ b/src/styles/list.scss @@ -74,7 +74,7 @@ .icon.lang { padding-right: 5px; - font-family: "Roboto", sans-serif; + font-family: var(--app-font-family); font-weight: bolder; color: rgb(37, 37, 37); color: var(--secondary-text-color); @@ -277,4 +277,4 @@ ul { &:focus { background-color: rgba($color: #000000, $alpha: 0.2); } -} \ No newline at end of file +} diff --git a/src/styles/wideScreen.scss b/src/styles/wideScreen.scss index d74235efc..ea12e7844 100644 --- a/src/styles/wideScreen.scss +++ b/src/styles/wideScreen.scss @@ -221,24 +221,24 @@ } .plugin-toggle-switch { - min-width: 140px; - padding: 0.75rem; + min-width: auto; + padding: 0; .plugin-toggle-track { - width: 52px; - height: 28px; - border-radius: 14px; + width: 2.8rem; + height: 1.65rem; + border-radius: 999px; } .plugin-toggle-thumb { - width: 24px; - height: 24px; - left: 2px; - top: 2px; + width: 1.25rem; + height: 1.25rem; + left: 0; + top: 0; } &[data-enabled="true"] .plugin-toggle-thumb { - left: 26px; + transform: translateX(1.12rem); } } } @@ -421,4 +421,4 @@ } } } -} \ No newline at end of file +} diff --git a/src/test/ace.test.js b/src/test/ace.test.js new file mode 100644 index 000000000..36b99a3f0 --- /dev/null +++ b/src/test/ace.test.js @@ -0,0 +1,291 @@ +import { TestRunner } from "./tester"; + +/** + * Ace Editor API Compatibility Tests + * + * These tests validate that the CodeMirror-based editor (from editorManager) + * properly implements the Ace Editor API compatibility layer. + */ +export async function runAceCompatibilityTests(writeOutput) { + const runner = new TestRunner("Ace API Compatibility"); + + function getEditor() { + return editorManager?.editor; + } + + async function createTestFile(text = "") { + const EditorFile = acode.require("editorFile"); + const file = new EditorFile("__ace_test__.txt", { + text, + render: true, + }); + await new Promise((r) => setTimeout(r, 100)); + return file; + } + + runner.test("editorManager.editor exists", (test) => { + test.assert( + typeof editorManager !== "undefined", + "editorManager should exist", + ); + test.assert( + editorManager.editor != null, + "editorManager.editor should exist", + ); + }); + + runner.test("editorManager isCodeMirror flag", (test) => { + test.assertEqual(editorManager.isCodeMirror, true); + }); + + runner.test("editor.getValue()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.getValue === "function", + "getValue should be a function", + ); + const value = editor.getValue(); + test.assert(typeof value === "string", "getValue should return string"); + }); + + runner.test("editor.insert()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.insert === "function", + "insert should be a function", + ); + }); + + runner.test("editor.getCursorPosition()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.getCursorPosition === "function", + "getCursorPosition should exist", + ); + const pos = editor.getCursorPosition(); + test.assert(typeof pos.row === "number", "row should be number"); + test.assert(typeof pos.column === "number", "column should be number"); + }); + + runner.test("editor.gotoLine()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.gotoLine === "function", + "gotoLine should be a function", + ); + }); + + runner.test("editor.moveCursorToPosition()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.moveCursorToPosition === "function", + "moveCursorToPosition should exist", + ); + }); + + runner.test("editor.selection object", (test) => { + const editor = getEditor(); + test.assert(editor.selection != null, "selection should exist"); + }); + + runner.test("editor.selection.getRange()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.selection.getRange === "function", + "getRange should be a function", + ); + const range = editor.selection.getRange(); + test.assert(range.start != null, "range should have start"); + test.assert(range.end != null, "range should have end"); + }); + + runner.test("editor.getSelectionRange()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.getSelectionRange === "function", + "getSelectionRange should be a function", + ); + const range = editor.getSelectionRange(); + test.assert(range.start != null, "range should have start"); + test.assert(range.end != null, "range should have end"); + }); + + runner.test("editor.scrollToRow()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.scrollToRow === "function", + "scrollToRow should be a function", + ); + const ok = editor.scrollToRow(0); + test.assert(ok === true || ok === undefined, "scrollToRow should not fail"); + }); + + runner.test("editor.selection.getCursor()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.selection.getCursor === "function", + "getCursor should be a function", + ); + const pos = editor.selection.getCursor(); + test.assert(typeof pos.row === "number", "row should be number"); + test.assert(typeof pos.column === "number", "column should be number"); + }); + + runner.test("editor.getCopyText()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.getCopyText === "function", + "getCopyText should exist", + ); + const text = editor.getCopyText(); + test.assert(typeof text === "string", "should return string"); + }); + + runner.test("editor.session exists", async (test) => { + const testFile = await createTestFile("test"); + const editor = getEditor(); + test.assert(editor.session != null, "session should exist"); + testFile.remove(false); + }); + + runner.test("editor.setTheme()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.setTheme === "function", + "setTheme should be a function", + ); + }); + + runner.test("editor.commands object", (test) => { + const editor = getEditor(); + test.assert(editor.commands != null, "commands should exist"); + }); + + runner.test("editor.commands.addCommand()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.commands.addCommand === "function", + "addCommand should be a function", + ); + }); + + runner.test("editor.commands.removeCommand()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.commands.removeCommand === "function", + "removeCommand should exist", + ); + }); + + runner.test("editor.commands.commands getter", (test) => { + const editor = getEditor(); + const cmds = editor.commands.commands; + test.assert( + typeof cmds === "object" && cmds !== null, + "commands should return object", + ); + }); + + runner.test("editor.execCommand()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.execCommand === "function", + "execCommand should be a function", + ); + }); + + runner.test("editor.focus()", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.focus === "function", + "focus should be a function", + ); + }); + + runner.test("editor.state (CodeMirror)", (test) => { + const editor = getEditor(); + test.assert(editor.state != null, "state should exist"); + }); + + runner.test("editor.dispatch (CodeMirror)", (test) => { + const editor = getEditor(); + test.assert( + typeof editor.dispatch === "function", + "dispatch should be a function", + ); + }); + + runner.test("editor.contentDOM (CodeMirror)", (test) => { + const editor = getEditor(); + test.assert(editor.contentDOM != null, "contentDOM should exist"); + }); + + runner.test("ace.require('ace/ext/modelist')", (test) => { + test.assert(window.ace != null, "window.ace should exist"); + test.assert( + typeof window.ace.require === "function", + "ace.require should be a function", + ); + const modelist = window.ace.require("ace/ext/modelist"); + test.assert(modelist != null, "modelist should be available"); + test.assert( + typeof modelist.getModeForPath === "function", + "modelist.getModeForPath should be a function", + ); + }); + + // Session API tests + + runner.test("session.getValue()", async (test) => { + const testFile = await createTestFile("test content"); + const editor = getEditor(); + test.assert( + typeof editor.session.getValue === "function", + "getValue should exist", + ); + const value = editor.session.getValue(); + test.assert(typeof value === "string", "should return string"); + test.assertEqual(value, "test content"); + testFile.remove(false); + }); + + runner.test("session.setValue()", async (test) => { + const testFile = await createTestFile("original"); + const editor = getEditor(); + test.assert( + typeof editor.session.setValue === "function", + "setValue should exist", + ); + editor.session.setValue("modified"); + test.assertEqual(editor.session.getValue(), "modified"); + testFile.remove(false); + }); + + runner.test("session.getLength()", async (test) => { + const testFile = await createTestFile("line1\nline2\nline3"); + const editor = getEditor(); + test.assert( + typeof editor.session.getLength === "function", + "getLength should exist", + ); + const len = editor.session.getLength(); + test.assert(typeof len === "number", "should return number"); + test.assertEqual(len, 3); + testFile.remove(false); + }); + + runner.test("session.getLine()", async (test) => { + const testFile = await createTestFile("first\nsecond\nthird"); + const editor = getEditor(); + test.assert( + typeof editor.session.getLine === "function", + "getLine should exist", + ); + test.assertEqual(editor.session.getLine(0), "first"); + test.assertEqual(editor.session.getLine(1), "second"); + test.assertEqual(editor.session.getLine(2), "third"); + testFile.remove(false); + }); + + return await runner.run(writeOutput); +} diff --git a/src/test/editor.tests.js b/src/test/editor.tests.js index d48b07973..b039524be 100644 --- a/src/test/editor.tests.js +++ b/src/test/editor.tests.js @@ -1,217 +1,827 @@ +import { history, isolateHistory, redo, undo } from "@codemirror/commands"; +import { + bracketMatching, + defaultHighlightStyle, + foldGutter, + syntaxHighlighting, +} from "@codemirror/language"; +import { highlightSelectionMatches, searchKeymap } from "@codemirror/search"; +import { EditorSelection, EditorState } from "@codemirror/state"; +import { EditorView } from "@codemirror/view"; +import createBaseExtensions from "cm/baseExtensions"; +import indentGuides from "cm/indentGuides"; +import { getEdgeScrollDirections } from "cm/touchSelectionMenu"; import { TestRunner } from "./tester"; -export async function runAceEditorTests(writeOutput) { - const runner = new TestRunner("Ace Editor API Tests"); +export async function runCodeMirrorTests(writeOutput) { + const runner = new TestRunner("CodeMirror 6 Editor Tests"); - function createEditor() { + function createEditor(doc = "", extensions = []) { const container = document.createElement("div"); container.style.width = "500px"; container.style.height = "300px"; - container.style.backgroundColor = "#a02f2f"; + container.style.backgroundColor = "#1e1e1e"; document.body.appendChild(container); - const editor = ace.edit(container); - return { editor, container }; + const state = EditorState.create({ + doc, + extensions: [...createBaseExtensions(), ...extensions], + }); + + const view = new EditorView({ state, parent: container }); + return { view, container }; } - async function withEditor(test, fn) { - let editor, container; + async function withEditor(test, fn, initialDoc = "", extensions = []) { + let view, container; try { - ({ editor, container } = createEditor()); - test.assert(editor != null, "Editor instance should be created"); + ({ view, container } = createEditor(initialDoc, extensions)); + test.assert(view != null, "EditorView instance should be created"); await new Promise((resolve) => setTimeout(resolve, 100)); - await fn(editor); + await fn(view); await new Promise((resolve) => setTimeout(resolve, 200)); } finally { - if (editor) editor.destroy(); + if (view) view.destroy(); if (container) container.remove(); } } - // Test 1: Ace is available - runner.test("Ace is loaded", async (test) => { - test.assert(typeof ace !== "undefined", "Ace should be available globally"); + // ========================================= + // BASIC EDITOR TESTS + // ========================================= + + runner.test("CodeMirror imports available", async (test) => { + test.assert( + typeof EditorView !== "undefined", + "EditorView should be defined", + ); + test.assert( + typeof EditorState !== "undefined", + "EditorState should be defined", + ); test.assert( - typeof ace.edit === "function", - "ace.edit should be a function", + typeof EditorState.create === "function", + "EditorState.create should be a function", ); }); - // Test 2: Editor creation - runner.test("Editor creation", async (test) => { - const { editor, container } = createEditor(); - test.assert(editor != null, "Editor instance should be created"); + runner.test("Acode exposes shared CodeMirror modules", async (test) => { + const codemirror = acode.require("codemirror"); + const language = acode.require("@codemirror/language"); + const lezer = acode.require("@lezer/highlight"); + const state = acode.require("@codemirror/state"); + const view = acode.require("@codemirror/view"); + + test.assert(codemirror != null, "codemirror namespace should exist"); + test.assert(language != null, "@codemirror/language should exist"); + test.assert(lezer != null, "@lezer/highlight should exist"); + test.assert(state != null, "@codemirror/state should exist"); + test.assert(view != null, "@codemirror/view should exist"); + test.assert( + language.StreamLanguage != null, + "@codemirror/language should export StreamLanguage", + ); + test.assert(lezer.tags != null, "@lezer/highlight should export tags"); + test.assert( + state.EditorState != null, + "@codemirror/state should export EditorState", + ); test.assert( - typeof editor.getSession === "function", - "Editor should expose getSession", + view.EditorView != null, + "@codemirror/view should export EditorView", ); - editor.destroy(); + test.assertEqual( + language.StreamLanguage, + codemirror.language.StreamLanguage, + "language exports should share the same singleton instance", + ); + test.assertEqual( + lezer.tags, + codemirror.lezer.tags, + "lezer exports should share the same singleton instance", + ); + test.assertEqual( + state.EditorState, + codemirror.state.EditorState, + "state exports should share the same singleton instance", + ); + test.assertEqual( + view.EditorView, + codemirror.view.EditorView, + "view exports should share the same singleton instance", + ); + }); + + runner.test("Editor creation", async (test) => { + const { view, container } = createEditor(); + test.assert(view != null, "EditorView instance should be created"); + test.assert(view.dom instanceof HTMLElement, "Editor should have DOM"); + test.assert(view.state instanceof EditorState, "Editor should have state"); + view.destroy(); container.remove(); }); - // Test 3: Session access - runner.test("Session access", async (test) => { - await withEditor(test, async (editor) => { - const session = editor.getSession(); - test.assert(session != null, "Editor session should exist"); + runner.test("State access", async (test) => { + await withEditor(test, async (view) => { + const state = view.state; + test.assert(state != null, "Editor state should exist"); + test.assert(typeof state.doc !== "undefined", "State should have doc"); test.assert( - typeof session.getValue === "function", - "Session should expose getValue", + typeof state.doc.toString === "function", + "Doc should have toString", ); }); }); - // Test 4: Set and get value - runner.test("Set and get value", async (test) => { - await withEditor(test, async (editor) => { - const text = "Hello Ace Editor"; - editor.setValue(text, -1); - test.assertEqual(editor.getValue(), text); + runner.test("Set and get document content", async (test) => { + await withEditor(test, async (view) => { + const text = "Hello CodeMirror 6"; + view.dispatch({ + changes: { from: 0, to: view.state.doc.length, insert: text }, + }); + test.assertEqual(view.state.doc.toString(), text); }); }); - // Test 5: Cursor movement - runner.test("Cursor movement", async (test) => { - await withEditor(test, async (editor) => { - editor.setValue("line1\nline2\nline3", -1); - editor.moveCursorTo(1, 2); + // ========================================= + // CURSOR AND SELECTION TESTS + // ========================================= - const pos = editor.getCursorPosition(); - test.assertEqual(pos.row, 1); - test.assertEqual(pos.column, 2); + runner.test("Cursor movement", async (test) => { + await withEditor(test, async (view) => { + const doc = "line1\nline2\nline3"; + view.dispatch({ + changes: { from: 0, to: view.state.doc.length, insert: doc }, + }); + + const line2 = view.state.doc.line(2); + const targetPos = line2.from + 2; + view.dispatch({ + selection: { anchor: targetPos, head: targetPos }, + }); + + const pos = view.state.selection.main.head; + const lineInfo = view.state.doc.lineAt(pos); + test.assertEqual(lineInfo.number, 2); + test.assertEqual(pos - lineInfo.from, 2); }); }); - // Test 6: Selection API runner.test("Selection handling", async (test) => { - await withEditor(test, async (editor) => { - editor.setValue("abc\ndef", -1); - editor.selectAll(); - test.assert(editor.getSelectedText().length > 0); + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, to: view.state.doc.length, insert: "abc\ndef" }, + }); + view.dispatch({ + selection: { anchor: 0, head: view.state.doc.length }, + }); + + const { from, to } = view.state.selection.main; + const selectedText = view.state.doc.sliceString(from, to); + test.assert(selectedText.length > 0, "Should have selected text"); + test.assertEqual(selectedText, "abc\ndef"); + }); + }); + + runner.test("Multiple selections", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, to: view.state.doc.length, insert: "foo bar foo" }, + }); + + view.dispatch({ + selection: EditorSelection.create([ + EditorSelection.range(0, 3), + EditorSelection.range(8, 11), + ]), + }); + + test.assertEqual(view.state.selection.ranges.length, 2); + test.assertEqual(view.state.doc.sliceString(0, 3), "foo"); + test.assertEqual(view.state.doc.sliceString(8, 11), "foo"); }); }); - // Test 7: Undo manager - runner.test("Undo manager works", async (test) => { - await withEditor(test, async (editor) => { - const session = editor.getSession(); - const undoManager = session.getUndoManager(); + runner.test("Selection with cursor (empty range)", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, to: view.state.doc.length, insert: "hello world" }, + }); - session.setValue("one"); - undoManager.reset(); + view.dispatch({ + selection: EditorSelection.cursor(5), + }); + + const main = view.state.selection.main; + test.assertEqual(main.from, 5); + test.assertEqual(main.to, 5); + test.assert(main.empty, "Cursor selection should be empty"); + }); + }); + + // ========================================= + // HISTORY (UNDO/REDO) TESTS + // ========================================= + + runner.test("Undo works", async (test) => { + const { view, container } = createEditor("one"); + + try { + view.dispatch({ + changes: { from: 3, insert: "\ntwo" }, + }); + test.assertEqual(view.state.doc.toString(), "one\ntwo"); + + undo(view); + test.assertEqual(view.state.doc.toString(), "one"); + } finally { + view.destroy(); + container.remove(); + } + }); + + runner.test("Redo works", async (test) => { + const { view, container } = createEditor("one"); + + try { + view.dispatch({ + changes: { from: 3, insert: "\ntwo" }, + }); + + undo(view); + test.assertEqual(view.state.doc.toString(), "one"); + + redo(view); + test.assertEqual(view.state.doc.toString(), "one\ntwo"); + } finally { + view.destroy(); + container.remove(); + } + }); + + runner.test("Multiple undo steps", async (test) => { + const { view, container } = createEditor(""); + + try { + // Use isolateHistory to force each change into separate history entries + view.dispatch({ + changes: { from: 0, insert: "a" }, + annotations: isolateHistory.of("full"), + }); + view.dispatch({ + changes: { from: 1, insert: "b" }, + annotations: isolateHistory.of("full"), + }); + view.dispatch({ + changes: { from: 2, insert: "c" }, + annotations: isolateHistory.of("full"), + }); + + test.assertEqual(view.state.doc.toString(), "abc"); + + undo(view); + undo(view); + test.assertEqual(view.state.doc.toString(), "a"); + } finally { + view.destroy(); + container.remove(); + } + }); - editor.insert("\ntwo"); - editor.undo(); + // ========================================= + // DOCUMENT MANIPULATION TESTS + // ========================================= - test.assertEqual(editor.getValue(), "one"); + runner.test("Line count", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, to: view.state.doc.length, insert: "a\nb\nc\nd" }, + }); + test.assertEqual(view.state.doc.lines, 4); }); }); - // Test 8: Mode setting - runner.test("Mode setting", async (test) => { - await withEditor(test, async (editor) => { - const session = editor.getSession(); - session.setMode("ace/mode/javascript"); + runner.test("Insert text at position", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, to: view.state.doc.length, insert: "hello world" }, + }); - const mode = session.getMode(); - test.assert(mode && mode.$id === "ace/mode/javascript"); + view.dispatch({ + changes: { from: 5, to: 5, insert: " there" }, + }); + + test.assertEqual(view.state.doc.toString(), "hello there world"); }); }); - // Test 9: Theme setting - runner.test("Theme setting", async (test) => { - await withEditor(test, async (editor) => { - editor.setTheme("ace/theme/monokai"); - test.assert(editor.getTheme().includes("monokai")); + runner.test("Replace text range", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, to: view.state.doc.length, insert: "hello world" }, + }); + + view.dispatch({ + changes: { from: 6, to: 11, insert: "cm6" }, + }); + + test.assertEqual(view.state.doc.toString(), "hello cm6"); }); }); - // Test 11: Line count - runner.test("Line count", async (test) => { - await withEditor(test, async (editor) => { - editor.setValue("a\nb\nc\nd", -1); - test.assertEqual(editor.session.getLength(), 4); + runner.test("Delete text", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, insert: "hello world" }, + }); + + view.dispatch({ + changes: { from: 5, to: 11, insert: "" }, + }); + + test.assertEqual(view.state.doc.toString(), "hello"); }); }); - // Test 12: Replace text - runner.test("Replace text", async (test) => { - await withEditor(test, async (editor) => { - editor.setValue("hello world", -1); - editor.find("world"); - editor.replace("ace"); + runner.test("Batch changes", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, insert: "aaa bbb ccc" }, + }); + + view.dispatch({ + changes: [ + { from: 0, to: 3, insert: "xxx" }, + { from: 4, to: 7, insert: "yyy" }, + { from: 8, to: 11, insert: "zzz" }, + ], + }); + + test.assertEqual(view.state.doc.toString(), "xxx yyy zzz"); + }); + }); - test.assertEqual(editor.getValue(), "hello ace"); + runner.test("Line information", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { + from: 0, + to: view.state.doc.length, + insert: "line one\nline two\nline three", + }, + }); + + const line2 = view.state.doc.line(2); + test.assertEqual(line2.number, 2); + test.assertEqual(line2.text, "line two"); + test.assert(line2.from > 0, "Line 2 should have positive from"); }); }); - // Test 13: Search API - runner.test("Search API", async (test) => { - await withEditor(test, async (editor) => { - editor.setValue("foo bar foo", -1); - editor.find("foo"); + runner.test("Position conversions", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { + from: 0, + to: view.state.doc.length, + insert: "abc\ndefgh\nij", + }, + }); + + const pos = 7; // 'g' in "defgh" + const lineInfo = view.state.doc.lineAt(pos); + + test.assertEqual(lineInfo.number, 2); + test.assertEqual(lineInfo.text, "defgh"); + test.assertEqual(pos - lineInfo.from, 3); + }); + }); - const range = editor.getSelectionRange(); - test.assert(range.start.column === 0); + runner.test("Empty document handling", async (test) => { + await withEditor(test, async (view) => { + test.assertEqual(view.state.doc.length, 0); + test.assertEqual(view.state.doc.lines, 1); + test.assertEqual(view.state.doc.toString(), ""); }); }); - // Test 14: Renderer availability - runner.test("Renderer exists", async (test) => { - await withEditor(test, async (editor) => { - const renderer = editor.renderer; - test.assert(renderer != null); - test.assert(typeof renderer.updateFull === "function"); + // ========================================= + // DOM AND VIEW TESTS + // ========================================= + + runner.test("DOM elements exist", async (test) => { + await withEditor(test, async (view) => { + test.assert(view.dom != null, "view.dom should exist"); + test.assert(view.scrollDOM != null, "view.scrollDOM should exist"); + test.assert(view.contentDOM != null, "view.contentDOM should exist"); }); }); - // Test 15: Editor options - runner.test("Editor options", async (test) => { - await withEditor(test, async (editor) => { - editor.setOption("showPrintMargin", false); - test.assertEqual(editor.getOption("showPrintMargin"), false); + runner.test("Indent guides render as indentation spans", async (test) => { + const doc = "function x() {\n if (true) {\n return 1;\n }\n}"; + await withEditor( + test, + async (view) => { + const guideLine = view.dom.querySelector(".cm-indent-guides"); + const legacyWidget = view.dom.querySelector( + ".cm-indent-guides-wrapper", + ); + test.assert(guideLine != null, "Indent guide span should exist"); + test.assert( + legacyWidget == null, + "Indent guides should not create widget wrapper DOM", + ); + }, + doc, + [indentGuides()], + ); + }); + + runner.test("Focus and blur", async (test) => { + await withEditor(test, async (view) => { + view.focus(); + await new Promise((resolve) => setTimeout(resolve, 50)); + test.assert(view.hasFocus, "Editor should have focus"); + + view.contentDOM.blur(); + await new Promise((resolve) => setTimeout(resolve, 50)); + test.assert(!view.hasFocus, "Editor should not have focus after blur"); }); }); - // Test 16: Scroll API runner.test("Scroll API", async (test) => { - await withEditor(test, async (editor) => { - editor.setValue(Array(100).fill("line").join("\n"), -1); - editor.scrollToLine(50, true, true, () => {}); + await withEditor(test, async (view) => { + const longDoc = Array(100).fill("line").join("\n"); + view.dispatch({ + changes: { from: 0, to: view.state.doc.length, insert: longDoc }, + }); - const firstVisibleRow = editor.renderer.getFirstVisibleRow(); - test.assert(firstVisibleRow >= 0); + const line50 = view.state.doc.line(50); + view.dispatch({ + effects: EditorView.scrollIntoView(line50.from, { y: "center" }), + }); + + await new Promise((resolve) => setTimeout(resolve, 100)); + test.assert( + view.scrollDOM.scrollTop >= 0, + "scrollTop should be accessible", + ); }); }); - // Test 17: Redo manager - runner.test("Redo manager works", async (test) => { - await withEditor(test, async (editor) => { - const session = editor.getSession(); - const undoManager = session.getUndoManager(); + runner.test("Viewport info", async (test) => { + await withEditor(test, async (view) => { + const longDoc = Array(200).fill("some text content").join("\n"); + view.dispatch({ + changes: { from: 0, insert: longDoc }, + }); + + const viewport = view.viewport; + test.assert(typeof viewport.from === "number", "viewport.from exists"); + test.assert(typeof viewport.to === "number", "viewport.to exists"); + test.assert(viewport.to > viewport.from, "viewport has range"); + }); + }); - session.setValue("one"); - undoManager.reset(); + // ========================================= + // CODEMIRROR-SPECIFIC FEATURES + // ========================================= - session.insert({ row: 0, column: 3 }, "\ntwo"); - editor.undo(); - editor.redo(); + runner.test("EditorState facets", async (test) => { + const { view, container } = createEditor("test"); - test.assertEqual(editor.getValue(), "one\ntwo"); + try { + const readOnly = view.state.facet(EditorState.readOnly); + test.assert(typeof readOnly === "boolean", "readOnly facet exists"); + test.assertEqual(readOnly, false); + } finally { + view.destroy(); + container.remove(); + } + }); + + runner.test("Read-only facet value", async (test) => { + const container = document.createElement("div"); + container.style.width = "500px"; + container.style.height = "300px"; + document.body.appendChild(container); + + const state = EditorState.create({ + doc: "read only content", + extensions: [EditorState.readOnly.of(true)], }); + + const view = new EditorView({ state, parent: container }); + + try { + const isReadOnly = view.state.facet(EditorState.readOnly); + test.assertEqual(isReadOnly, true, "Should report as read-only"); + } finally { + view.destroy(); + container.remove(); + } }); - // Test 18: Focus and blur - runner.test("Focus and blur", async (test) => { - await withEditor(test, async (editor) => { - editor.focus(); - test.assert(editor.isFocused()); + runner.test("Transaction filtering", async (test) => { + let filterCalled = false; - editor.blur(); - test.assert(!editor.isFocused()); + const container = document.createElement("div"); + container.style.width = "500px"; + container.style.height = "300px"; + document.body.appendChild(container); + + const state = EditorState.create({ + doc: "original", + extensions: [ + EditorState.transactionFilter.of((tr) => { + if (tr.docChanged) filterCalled = true; + return tr; + }), + ], + }); + + const view = new EditorView({ state, parent: container }); + + try { + view.dispatch({ + changes: { from: 0, to: 8, insert: "modified" }, + }); + + test.assert(filterCalled, "Transaction filter should be called"); + test.assertEqual(view.state.doc.toString(), "modified"); + } finally { + view.destroy(); + container.remove(); + } + }); + + runner.test("Update listener", async (test) => { + let updateCount = 0; + let docChanged = false; + + const container = document.createElement("div"); + container.style.width = "500px"; + container.style.height = "300px"; + document.body.appendChild(container); + + const state = EditorState.create({ + doc: "", + extensions: [ + EditorView.updateListener.of((update) => { + updateCount++; + if (update.docChanged) docChanged = true; + }), + ], + }); + + const view = new EditorView({ state, parent: container }); + + try { + view.dispatch({ + changes: { from: 0, insert: "hello" }, + }); + + test.assert(updateCount > 0, "Update listener should fire"); + test.assert(docChanged, "docChanged should be true"); + } finally { + view.destroy(); + container.remove(); + } + }); + + runner.test("State effects", async (test) => { + const { StateEffect } = await import("@codemirror/state"); + const myEffect = StateEffect.define(); + + let effectReceived = false; + + const container = document.createElement("div"); + container.style.width = "500px"; + container.style.height = "300px"; + document.body.appendChild(container); + + const state = EditorState.create({ + doc: "", + extensions: [ + EditorView.updateListener.of((update) => { + for (const tr of update.transactions) { + for (const effect of tr.effects) { + if (effect.is(myEffect)) { + effectReceived = true; + } + } + } + }), + ], + }); + + const view = new EditorView({ state, parent: container }); + + try { + view.dispatch({ + effects: myEffect.of("test-value"), + }); + + test.assert(effectReceived, "Custom state effect should be received"); + } finally { + view.destroy(); + container.remove(); + } + }); + + runner.test("Compartments for dynamic config", async (test) => { + const { Compartment } = await import("@codemirror/state"); + + const readOnlyComp = new Compartment(); + + const container = document.createElement("div"); + container.style.width = "500px"; + container.style.height = "300px"; + document.body.appendChild(container); + + const state = EditorState.create({ + doc: "test", + extensions: [readOnlyComp.of(EditorState.readOnly.of(false))], + }); + + const view = new EditorView({ state, parent: container }); + + try { + test.assertEqual(view.state.facet(EditorState.readOnly), false); + + view.dispatch({ + effects: readOnlyComp.reconfigure(EditorState.readOnly.of(true)), + }); + + test.assertEqual(view.state.facet(EditorState.readOnly), true); + } finally { + view.destroy(); + container.remove(); + } + }); + + runner.test("Document iteration", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, insert: "line1\nline2\nline3" }, + }); + + const lines = []; + for (let i = 1; i <= view.state.doc.lines; i++) { + lines.push(view.state.doc.line(i).text); + } + + test.assertEqual(lines.length, 3); + test.assertEqual(lines[0], "line1"); + test.assertEqual(lines[1], "line2"); + test.assertEqual(lines[2], "line3"); + }); + }); + + runner.test("Text iterator", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, insert: "hello world" }, + }); + + const iter = view.state.doc.iter(); + let text = ""; + while (!iter.done) { + text += iter.value; + iter.next(); + } + + test.assertEqual(text, "hello world"); + }); + }); + + runner.test("Slice string", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, insert: "hello world" }, + }); + + test.assertEqual(view.state.doc.sliceString(0, 5), "hello"); + test.assertEqual(view.state.doc.sliceString(6, 11), "world"); + test.assertEqual(view.state.doc.sliceString(6), "world"); + }); + }); + + runner.test("Line at position", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, insert: "aaa\nbbb\nccc" }, + }); + + const lineAtStart = view.state.doc.lineAt(0); + test.assertEqual(lineAtStart.number, 1); + + const lineAtMiddle = view.state.doc.lineAt(5); + test.assertEqual(lineAtMiddle.number, 2); + + const lineAtEnd = view.state.doc.lineAt(10); + test.assertEqual(lineAtEnd.number, 3); + }); + }); + + runner.test("Visible ranges", async (test) => { + await withEditor(test, async (view) => { + const longDoc = Array(100).fill("content").join("\n"); + view.dispatch({ + changes: { from: 0, insert: longDoc }, + }); + + const visibleRanges = view.visibleRanges; + test.assert(Array.isArray(visibleRanges), "visibleRanges is an array"); + test.assert(visibleRanges.length > 0, "Should have visible ranges"); + + for (const range of visibleRanges) { + test.assert(typeof range.from === "number", "range.from exists"); + test.assert(typeof range.to === "number", "range.to exists"); + } + }); + }); + + runner.test("coordsAtPos", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, insert: "hello" }, + }); + + const coords = view.coordsAtPos(0); + test.assert(coords != null, "coords should exist"); + test.assert(typeof coords.left === "number", "coords.left exists"); + test.assert(typeof coords.top === "number", "coords.top exists"); + }); + }); + + runner.test("posAtCoords", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, insert: "hello world" }, + }); + + const rect = view.contentDOM.getBoundingClientRect(); + const pos = view.posAtCoords({ x: rect.left + 10, y: rect.top + 10 }); + + test.assert(pos != null || pos === null, "posAtCoords should return"); + }); + }); + + runner.test("Edge scroll direction helper", async (test) => { + const rect = { + left: 100, + right: 300, + top: 200, + bottom: 400, + }; + + const leftTop = getEdgeScrollDirections({ + x: 110, + y: 210, + rect, + allowHorizontal: true, + }); + test.assertEqual(leftTop.horizontal, -1); + test.assertEqual(leftTop.vertical, -1); + + const rightBottom = getEdgeScrollDirections({ + x: 295, + y: 395, + rect, + allowHorizontal: true, + }); + test.assertEqual(rightBottom.horizontal, 1); + test.assertEqual(rightBottom.vertical, 1); + + const noHorizontal = getEdgeScrollDirections({ + x: 110, + y: 395, + rect, + allowHorizontal: false, + }); + test.assertEqual(noHorizontal.horizontal, 0); + test.assertEqual(noHorizontal.vertical, 1); + }); + + runner.test("lineBlockAt", async (test) => { + await withEditor(test, async (view) => { + view.dispatch({ + changes: { from: 0, insert: "line1\nline2\nline3" }, + }); + + const line2Start = view.state.doc.line(2).from; + const block = view.lineBlockAt(line2Start); + + test.assert(block != null, "lineBlockAt should return block"); + test.assert(typeof block.from === "number", "block.from exists"); + test.assert(typeof block.to === "number", "block.to exists"); + test.assert(typeof block.height === "number", "block.height exists"); }); }); return await runner.run(writeOutput); } + +export { runCodeMirrorTests as runAceEditorTests }; diff --git a/src/test/tester.js b/src/test/tester.js index 62dfa163b..be3ba8ac6 100644 --- a/src/test/tester.js +++ b/src/test/tester.js @@ -1,6 +1,8 @@ -import { runAceEditorTests } from "./editor.tests"; +import { runAceCompatibilityTests } from "./ace.test"; +import { runCodeMirrorTests } from "./editor.tests"; import { runExecutorTests } from "./exec.tests"; import { runSanityTests } from "./sanity.tests"; +import { runUrlTests } from "./url.tests"; export async function runAllTests() { const terminal = acode.require("terminal"); @@ -16,8 +18,10 @@ export async function runAllTests() { try { // Run unit tests await runSanityTests(write); - await runAceEditorTests(write); + await runCodeMirrorTests(write); + await runAceCompatibilityTests(write); await runExecutorTests(write); + await runUrlTests(write); write("\x1b[36m\x1b[1mTests completed!\x1b[0m\n"); } catch (error) { diff --git a/src/test/url.tests.js b/src/test/url.tests.js new file mode 100644 index 000000000..49a2ad9a5 --- /dev/null +++ b/src/test/url.tests.js @@ -0,0 +1,96 @@ +import Url from "../utils/Url"; +import { TestRunner } from "./tester"; + +const JOIN_CASES = [ + { + name: "Android SAF join", + folderUrl: + "content://com.android.externalstorage.documents/tree/primary%3ATesthtml", + activeLocation: + "content://com.android.externalstorage.documents/tree/primary%3ATesthtml::primary:Testhtml/Styles/", + expectedJoined: + "content://com.android.externalstorage.documents/tree/primary%3ATesthtml::primary:Testhtml/Styles/index.html", + }, + { + name: "Termux SAF join", + folderUrl: + "content://com.termux.documents/tree/%2Fdata%2Fdata%2Fcom.termux%2Ffiles%2Fhome%2Facode-site-ui", + activeLocation: + "content://com.termux.documents/tree/%2Fdata%2Fdata%2Fcom.termux%2Ffiles%2Fhome%2Facode-site-ui::/data/data/com.termux/files/home/acode-site-ui/", + expectedJoined: + "content://com.termux.documents/tree/%2Fdata%2Fdata%2Fcom.termux%2Ffiles%2Fhome%2Facode-site-ui::/data/data/com.termux/files/home/acode-site-ui/index.html", + }, + { + name: "Acode SAF join", + folderUrl: + "content://com.foxdebug.acode.documents/tree/%2Fdata%2Fuser%2F0%2Fcom.foxdebug.acode%2Ffiles%2Fpublic", + activeLocation: + "content://com.foxdebug.acode.documents/tree/%2Fdata%2Fuser%2F0%2Fcom.foxdebug.acode%2Ffiles%2Fpublic::/data/user/0/com.foxdebug.acode/files/public/", + expectedJoined: + "content://com.foxdebug.acode.documents/tree/%2Fdata%2Fuser%2F0%2Fcom.foxdebug.acode%2Ffiles%2Fpublic::/data/user/0/com.foxdebug.acode/files/public/index.html", + }, +]; + +const TRAILING_SLASH_CASES = [ + { + name: "Android SAF trailing slash", + a: "content://com.android.externalstorage.documents/tree/primary%3ATesthtml/", + b: "content://com.android.externalstorage.documents/tree/primary%3ATesthtml", + }, + { + name: "Termux SAF trailing slash", + a: "content://com.termux.documents/tree/%2Fdata%2Fdata%2Fcom.termux%2Ffiles%2Fhome%2Facode-site-ui/", + b: "content://com.termux.documents/tree/%2Fdata%2Fdata%2Fcom.termux%2Ffiles%2Fhome%2Facode-site-ui", + }, + { + name: "Acode SAF trailing slash", + a: "content://com.foxdebug.acode.documents/tree/%2Fdata%2Fuser%2F0%2Fcom.foxdebug.acode%2Ffiles%2Fpublic/", + b: "content://com.foxdebug.acode.documents/tree/%2Fdata%2Fuser%2F0%2Fcom.foxdebug.acode%2Ffiles%2Fpublic", + }, +]; + +function assertJoinCase( + test, + { folderUrl, activeLocation, expectedJoined, segment }, +) { + const joined = Url.join(activeLocation, segment || "index.html"); + + test.assert(joined !== null, "Joining the SAF URL should return a value"); + test.assertEqual( + joined, + expectedJoined, + "Joined URL should match the expected SAF file URI", + ); + test.assert( + !Url.areSame(folderUrl, joined), + "Folder URL and joined file URL should not be considered the same", + ); +} + +export async function runUrlTests(writeOutput) { + const runner = new TestRunner("URL / SAF URIs"); + + for (const joinCase of JOIN_CASES) { + runner.test(joinCase.name, (test) => { + assertJoinCase(test, joinCase); + }); + } + + for (const trailingSlashCase of TRAILING_SLASH_CASES) { + runner.test(trailingSlashCase.name, (test) => { + test.assert( + Url.areSame(trailingSlashCase.a, trailingSlashCase.b), + "Folder URLs differing only by a trailing slash should be same", + ); + }); + } + + runner.test("Android SAF leading slash", (test) => { + assertJoinCase(test, { + ...JOIN_CASES[0], + segment: "/index.html", + }); + }); + + return await runner.run(writeOutput); +} diff --git a/src/theme/preInstalled.js b/src/theme/preInstalled.js index 0389f203f..863202f0b 100644 --- a/src/theme/preInstalled.js +++ b/src/theme/preInstalled.js @@ -45,7 +45,7 @@ oled.activeTextColor = "rgb(255, 255, 255)"; oled.errorTextColor = "rgb(255, 69, 58)"; oled.dangerColor = "rgb(255, 69, 58)"; oled.scrollbarColor = "rgba(255, 255, 255, 0.1)"; -oled.preferredEditorTheme = "ace/theme/terminal"; +oled.preferredEditorTheme = "tokyoNight"; const ocean = createBuiltInTheme("Ocean"); ocean.darkenedPrimaryColor = "rgb(19, 19, 26)"; @@ -61,116 +61,146 @@ ocean.popupBackgroundColor = "rgb(32, 32, 44)"; ocean.popupTextColor = WHITE; ocean.popupActiveColor = "rgb(255, 215, 0)"; ocean.boxShadowColor = "rgba(0, 0, 0, 0.5)"; -ocean.preferredEditorTheme = "ace/theme/solarized_dark"; +ocean.preferredEditorTheme = "solarizedDark"; ocean.preferredFont = "Fira Code"; const bump = createBuiltInTheme("Bump"); -bump.darkenedPrimaryColor = "rgb(28, 33, 38)"; -bump.primaryColor = "rgb(48, 56, 65)"; -bump.primaryTextColor = "rgb(236, 236, 236)"; -bump.secondaryColor = "rgb(48, 71, 94)"; -bump.secondaryTextColor = "rgb(236, 236, 236)"; -bump.activeColor = "rgb(242, 163, 101)"; -bump.linkTextColor = "rgb(181, 180, 233)"; -bump.borderColor = "rgb(107, 120, 136)"; -bump.popupIconColor = "rgb(236, 236, 236)"; -bump.popupBackgroundColor = "rgb(48, 56, 65)"; -bump.popupTextColor = "rgb(236, 236, 236)"; -bump.popupActiveColor = "rgb(255, 215, 0)"; -bump.buttonBackgroundColor = "rgb(242, 163, 101)"; -bump.buttonTextColor = "rgb(236, 236, 236)"; -bump.buttonActiveColor = "rgb(212, 137, 79)"; -bump.preferredEditorTheme = "ace/theme/one_dark"; +bump.darkenedPrimaryColor = "rgb(24, 28, 36)"; +bump.primaryColor = "rgb(36, 40, 52)"; +bump.primaryTextColor = "rgb(230, 232, 238)"; +bump.secondaryColor = "rgb(44, 50, 64)"; +bump.secondaryTextColor = "rgb(175, 180, 192)"; +bump.activeColor = "rgb(240, 113, 103)"; +bump.linkTextColor = "rgb(255, 150, 130)"; +bump.borderColor = "rgba(175, 180, 192, 0.2)"; +bump.popupIconColor = "rgb(230, 232, 238)"; +bump.popupBackgroundColor = "rgb(40, 44, 58)"; +bump.popupTextColor = "rgb(230, 232, 238)"; +bump.popupActiveColor = "rgb(240, 113, 103)"; +bump.buttonBackgroundColor = "rgb(240, 113, 103)"; +bump.buttonTextColor = "rgb(255, 255, 255)"; +bump.buttonActiveColor = "rgb(210, 90, 80)"; +bump.boxShadowColor = "rgba(0, 0, 0, 0.35)"; +bump.activeTextColor = "rgb(255, 255, 255)"; +bump.errorTextColor = "rgb(255, 180, 100)"; +bump.dangerColor = "rgb(240, 70, 60)"; +bump.scrollbarColor = "rgba(230, 232, 238, 0.12)"; +bump.preferredEditorTheme = "one_dark"; const bling = createBuiltInTheme("Bling"); -bling.darkenedPrimaryColor = "rgb(19, 19, 38)"; -bling.primaryColor = "rgb(32, 32, 64)"; -bling.primaryTextColor = "rgb(255, 189, 105)"; -bling.secondaryColor = "rgb(84, 56, 100)"; -bling.secondaryTextColor = "rgb(255, 189, 105)"; -bling.activeColor = "rgb(255, 99, 99)"; -bling.linkTextColor = "rgb(181, 180, 233)"; -bling.borderColor = "rgb(93, 93, 151)"; -bling.popupIconColor = "rgb(255, 189, 105)"; -bling.popupBackgroundColor = "rgb(32, 32, 64)"; -bling.popupTextColor = "rgb(255, 189, 105)"; -bling.popupActiveColor = "rgb(51, 153, 255)"; -bling.buttonBackgroundColor = "rgb(255, 99, 99)"; -bling.buttonTextColor = "rgb(255, 189, 105)"; -bling.buttonActiveColor = "rgb(160, 99, 52)"; -bling.preferredEditorTheme = "ace/theme/tomorrow_night_blue"; +bling.darkenedPrimaryColor = "rgb(16, 12, 28)"; +bling.primaryColor = "rgb(25, 20, 40)"; +bling.primaryTextColor = "rgb(228, 225, 240)"; +bling.secondaryColor = "rgb(35, 28, 55)"; +bling.secondaryTextColor = "rgb(170, 165, 190)"; +bling.activeColor = "rgb(80, 200, 155)"; +bling.linkTextColor = "rgb(120, 220, 180)"; +bling.borderColor = "rgba(80, 200, 155, 0.2)"; +bling.popupIconColor = "rgb(228, 225, 240)"; +bling.popupBackgroundColor = "rgb(30, 24, 48)"; +bling.popupTextColor = "rgb(228, 225, 240)"; +bling.popupActiveColor = "rgb(80, 200, 155)"; +bling.buttonBackgroundColor = "rgb(80, 200, 155)"; +bling.buttonTextColor = "rgb(16, 12, 28)"; +bling.buttonActiveColor = "rgb(55, 170, 130)"; +bling.boxShadowColor = "rgba(0, 0, 0, 0.45)"; +bling.activeTextColor = "rgb(16, 12, 28)"; +bling.errorTextColor = "rgb(255, 170, 100)"; +bling.dangerColor = "rgb(240, 85, 85)"; +bling.scrollbarColor = "rgba(228, 225, 240, 0.1)"; +bling.preferredEditorTheme = "tokyoNight"; const moon = createBuiltInTheme("Moon"); -moon.darkenedPrimaryColor = "rgb(20, 24, 29)"; -moon.primaryColor = "rgb(34, 40, 49)"; -moon.primaryTextColor = "rgb(0, 255, 245)"; -moon.secondaryColor = "rgb(57, 62, 70)"; -moon.secondaryTextColor = "rgb(0, 255, 245)"; -moon.activeColor = "rgb(0, 173, 181)"; -moon.linkTextColor = "rgb(181, 180, 233)"; -moon.borderColor = "rgb(90, 101, 117)"; -moon.popupIconColor = "rgb(0, 255, 245)"; -moon.popupBackgroundColor = "rgb(34, 40, 49)"; -moon.popupTextColor = "rgb(0, 255, 245)"; -moon.popupActiveColor = "rgb(51, 153, 255)"; -moon.buttonBackgroundColor = "rgb(0, 173, 181)"; -moon.buttonTextColor = "rgb(0, 142, 149)"; -moon.buttonActiveColor = "rgb(0, 173, 181)"; -moon.preferredEditorTheme = "ace/theme/one_dark"; +moon.darkenedPrimaryColor = "rgb(16, 20, 26)"; +moon.primaryColor = "rgb(26, 32, 42)"; +moon.primaryTextColor = "rgb(210, 225, 230)"; +moon.secondaryColor = "rgb(34, 42, 54)"; +moon.secondaryTextColor = "rgb(150, 170, 180)"; +moon.activeColor = "rgb(0, 188, 194)"; +moon.linkTextColor = "rgb(80, 220, 225)"; +moon.borderColor = "rgba(0, 188, 194, 0.2)"; +moon.popupIconColor = "rgb(210, 225, 230)"; +moon.popupBackgroundColor = "rgb(30, 38, 48)"; +moon.popupTextColor = "rgb(210, 225, 230)"; +moon.popupActiveColor = "rgb(0, 188, 194)"; +moon.buttonBackgroundColor = "rgb(0, 188, 194)"; +moon.buttonTextColor = "rgb(16, 20, 26)"; +moon.buttonActiveColor = "rgb(0, 155, 160)"; +moon.boxShadowColor = "rgba(0, 0, 0, 0.4)"; +moon.activeTextColor = "rgb(16, 20, 26)"; +moon.errorTextColor = "rgb(255, 170, 105)"; +moon.dangerColor = "rgb(235, 75, 70)"; +moon.scrollbarColor = "rgba(210, 225, 230, 0.12)"; +moon.preferredEditorTheme = "tokyoNight"; const atticus = createBuiltInTheme("Atticus"); -atticus.darkenedPrimaryColor = "rgb(32, 30, 30)"; -atticus.primaryColor = "rgb(54, 51, 51)"; -atticus.primaryTextColor = "rgb(246, 233, 233)"; -atticus.secondaryColor = "rgb(39, 33, 33)"; -atticus.secondaryTextColor = "rgb(246, 233, 233)"; -atticus.activeColor = "rgb(225, 100, 40)"; -atticus.linkTextColor = "rgb(181, 180, 233)"; -atticus.borderColor = "rgb(117, 111, 111)"; -atticus.popupIconColor = "rgb(246, 233, 233)"; -atticus.popupBackgroundColor = "rgb(54, 51, 51)"; -atticus.popupTextColor = "rgb(246, 233, 233)"; -atticus.popupActiveColor = "rgb(51, 153, 255)"; -atticus.buttonBackgroundColor = "rgb(225, 100, 40)"; -atticus.buttonTextColor = "rgb(246, 233, 233)"; -atticus.buttonActiveColor = "rgb(0, 145, 153)"; -atticus.preferredEditorTheme = "ace/theme/pastel_on_dark"; +atticus.darkenedPrimaryColor = "rgb(26, 24, 22)"; +atticus.primaryColor = "rgb(38, 36, 33)"; +atticus.primaryTextColor = "rgb(228, 222, 212)"; +atticus.secondaryColor = "rgb(48, 45, 40)"; +atticus.secondaryTextColor = "rgb(175, 168, 155)"; +atticus.activeColor = "rgb(130, 170, 90)"; +atticus.linkTextColor = "rgb(155, 195, 115)"; +atticus.borderColor = "rgba(130, 170, 90, 0.2)"; +atticus.popupIconColor = "rgb(228, 222, 212)"; +atticus.popupBackgroundColor = "rgb(42, 40, 36)"; +atticus.popupTextColor = "rgb(228, 222, 212)"; +atticus.popupActiveColor = "rgb(130, 170, 90)"; +atticus.buttonBackgroundColor = "rgb(130, 170, 90)"; +atticus.buttonTextColor = "rgb(38, 36, 33)"; +atticus.buttonActiveColor = "rgb(105, 145, 70)"; +atticus.boxShadowColor = "rgba(0, 0, 0, 0.35)"; +atticus.activeTextColor = "rgb(38, 36, 33)"; +atticus.errorTextColor = "rgb(240, 160, 90)"; +atticus.dangerColor = "rgb(210, 65, 55)"; +atticus.scrollbarColor = "rgba(228, 222, 212, 0.12)"; +atticus.preferredEditorTheme = "monokai"; const tomyris = createBuiltInTheme("Tomyris"); -tomyris.darkenedPrimaryColor = "rgb(32, 30, 30)"; -tomyris.primaryColor = "rgb(59, 9, 68)"; -tomyris.primaryTextColor = "rgb(241, 187, 213)"; -tomyris.secondaryColor = "rgb(95, 24, 84)"; -tomyris.secondaryTextColor = "rgb(144, 184, 248)"; -tomyris.activeColor = "rgb(161, 37, 89)"; -tomyris.linkTextColor = "rgb(181, 180, 233)"; -tomyris.borderColor = "rgb(140, 58, 155)"; -tomyris.popupIconColor = "rgb(241, 187, 213)"; -tomyris.popupBackgroundColor = "rgb(59, 9, 68)"; -tomyris.popupTextColor = "rgb(241, 187, 213)"; -tomyris.popupActiveColor = "rgb(51, 153, 255)"; -tomyris.buttonBackgroundColor = "rgb(161, 37, 89)"; -tomyris.buttonTextColor = "rgb(241, 187, 213)"; -tomyris.buttonActiveColor = "rgb(0, 145, 153)"; -tomyris.preferredEditorTheme = "ace/theme/cobalt"; +tomyris.darkenedPrimaryColor = "rgb(22, 12, 20)"; +tomyris.primaryColor = "rgb(32, 18, 28)"; +tomyris.primaryTextColor = "rgb(235, 225, 232)"; +tomyris.secondaryColor = "rgb(45, 26, 38)"; +tomyris.secondaryTextColor = "rgb(185, 170, 178)"; +tomyris.activeColor = "rgb(232, 75, 145)"; +tomyris.linkTextColor = "rgb(250, 130, 180)"; +tomyris.borderColor = "rgba(232, 75, 145, 0.2)"; +tomyris.popupIconColor = "rgb(235, 225, 232)"; +tomyris.popupBackgroundColor = "rgb(38, 22, 33)"; +tomyris.popupTextColor = "rgb(235, 225, 232)"; +tomyris.popupActiveColor = "rgb(232, 75, 145)"; +tomyris.buttonBackgroundColor = "rgb(232, 75, 145)"; +tomyris.buttonTextColor = "rgb(255, 255, 255)"; +tomyris.buttonActiveColor = "rgb(200, 55, 120)"; +tomyris.boxShadowColor = "rgba(0, 0, 0, 0.45)"; +tomyris.activeTextColor = "rgb(255, 255, 255)"; +tomyris.errorTextColor = "rgb(255, 175, 100)"; +tomyris.dangerColor = "rgb(235, 65, 65)"; +tomyris.scrollbarColor = "rgba(235, 225, 232, 0.1)"; +tomyris.preferredEditorTheme = "monokai"; const menes = createBuiltInTheme("Menes"); -menes.darkenedPrimaryColor = "rgb(31, 34, 38)"; -menes.primaryColor = "rgb(53, 57, 65)"; -menes.primaryTextColor = "rgb(144, 184, 248)"; -menes.secondaryColor = "rgb(38, 40, 43)"; -menes.secondaryTextColor = "rgb(144, 184, 248)"; -menes.activeColor = "rgb(95, 133, 219)"; -menes.linkTextColor = "rgb(181, 180, 233)"; -menes.borderColor = "rgb(117, 123, 134)"; -menes.popupIconColor = "rgb(144, 184, 248)"; -menes.popupBackgroundColor = "rgb(54, 59, 78)"; -menes.popupTextColor = "rgb(144, 184, 248)"; -menes.popupActiveColor = "rgb(51, 153, 255)"; -menes.buttonBackgroundColor = "rgb(95, 133, 219)"; -menes.buttonTextColor = "rgb(144, 184, 248)"; -menes.buttonActiveColor = "rgb(0, 145, 153)"; -menes.preferredEditorTheme = "ace/theme/nord_dark"; +menes.darkenedPrimaryColor = "rgb(18, 22, 28)"; +menes.primaryColor = "rgb(28, 32, 40)"; +menes.primaryTextColor = "rgb(225, 230, 240)"; +menes.secondaryColor = "rgb(36, 42, 52)"; +menes.secondaryTextColor = "rgb(140, 155, 175)"; +menes.activeColor = "rgb(72, 210, 120)"; +menes.linkTextColor = "rgb(100, 230, 150)"; +menes.borderColor = "rgba(72, 210, 120, 0.18)"; +menes.popupIconColor = "rgb(225, 230, 240)"; +menes.popupBackgroundColor = "rgb(32, 38, 48)"; +menes.popupTextColor = "rgb(225, 230, 240)"; +menes.popupActiveColor = "rgb(72, 210, 120)"; +menes.buttonBackgroundColor = "rgb(72, 210, 120)"; +menes.buttonTextColor = "rgb(18, 22, 30)"; +menes.buttonActiveColor = "rgb(50, 180, 95)"; +menes.boxShadowColor = "rgba(0, 0, 0, 0.4)"; +menes.activeTextColor = "rgb(18, 22, 30)"; +menes.errorTextColor = "rgb(255, 165, 95)"; +menes.dangerColor = "rgb(240, 75, 65)"; +menes.scrollbarColor = "rgba(225, 230, 240, 0.12)"; +menes.preferredEditorTheme = "one_dark"; const light = createBuiltInTheme("Light", "light"); light.primaryColor = "rgb(255, 255, 255)"; @@ -194,9 +224,9 @@ const system = createBuiltInTheme("System", "dark", "free"); export function getSystemEditorTheme(darkTheme) { if (darkTheme) { - return "ace/theme/clouds_midnight"; + return "one_dark"; } else { - return "ace/theme/crimson_editor"; + return "noctisLilac"; } } @@ -282,7 +312,7 @@ neon.buttonBackgroundColor = "rgb(255, 20, 147)"; neon.buttonTextColor = "rgb(0, 0, 0)"; neon.buttonActiveColor = "rgb(0, 255, 255)"; neon.boxShadowColor = "rgba(10, 255, 200, 0.2)"; -neon.preferredEditorTheme = "ace/theme/monokai"; +neon.preferredEditorTheme = "monokai"; neon.activeTextColor = "rgb(0, 0, 0)"; neon.errorTextColor = "rgb(255, 20, 147)"; neon.dangerColor = "rgb(255, 20, 147)"; @@ -309,7 +339,7 @@ glassDark.activeTextColor = "rgb(255, 255, 255)"; glassDark.errorTextColor = "rgb(248, 113, 113)"; glassDark.dangerColor = "rgb(239, 68, 68)"; glassDark.scrollbarColor = "rgba(255, 255, 255, 0.2)"; -glassDark.preferredEditorTheme = "ace/theme/one_dark"; +glassDark.preferredEditorTheme = "tokyoNight"; const sunset = createBuiltInTheme("Sunset"); sunset.darkenedPrimaryColor = "rgb(251, 243, 235)"; @@ -332,6 +362,167 @@ sunset.errorTextColor = "rgb(185, 28, 28)"; sunset.dangerColor = "rgb(220, 38, 38)"; sunset.scrollbarColor = "rgba(124, 45, 18, 0.2)"; +const obsidian = createBuiltInTheme("Obsidian"); +obsidian.darkenedPrimaryColor = "rgb(18, 17, 21)"; +obsidian.primaryColor = "rgb(28, 27, 31)"; +obsidian.primaryTextColor = "rgb(232, 228, 220)"; +obsidian.secondaryColor = "rgb(38, 37, 42)"; +obsidian.secondaryTextColor = "rgb(185, 180, 172)"; +obsidian.activeColor = "rgb(212, 175, 55)"; +obsidian.linkTextColor = "rgb(230, 200, 120)"; +obsidian.borderColor = "rgba(212, 175, 55, 0.18)"; +obsidian.popupIconColor = "rgb(232, 228, 220)"; +obsidian.popupBackgroundColor = "rgb(32, 31, 36)"; +obsidian.popupTextColor = "rgb(232, 228, 220)"; +obsidian.popupActiveColor = "rgb(212, 175, 55)"; +obsidian.buttonBackgroundColor = "rgb(212, 175, 55)"; +obsidian.buttonTextColor = "rgb(28, 27, 31)"; +obsidian.buttonActiveColor = "rgb(184, 148, 36)"; +obsidian.boxShadowColor = "rgba(0, 0, 0, 0.45)"; +obsidian.activeTextColor = "rgb(28, 27, 31)"; +obsidian.errorTextColor = "rgb(255, 152, 100)"; +obsidian.dangerColor = "rgb(220, 80, 60)"; +obsidian.scrollbarColor = "rgba(212, 175, 55, 0.18)"; +obsidian.preferredEditorTheme = "one_dark"; + +const ember = createBuiltInTheme("Ember"); +ember.darkenedPrimaryColor = "rgb(22, 16, 13)"; +ember.primaryColor = "rgb(32, 24, 20)"; +ember.primaryTextColor = "rgb(240, 228, 210)"; +ember.secondaryColor = "rgb(45, 35, 28)"; +ember.secondaryTextColor = "rgb(200, 185, 165)"; +ember.activeColor = "rgb(217, 130, 60)"; +ember.linkTextColor = "rgb(240, 170, 100)"; +ember.borderColor = "rgba(217, 130, 60, 0.22)"; +ember.popupIconColor = "rgb(240, 228, 210)"; +ember.popupBackgroundColor = "rgb(38, 30, 24)"; +ember.popupTextColor = "rgb(240, 228, 210)"; +ember.popupActiveColor = "rgb(217, 130, 60)"; +ember.buttonBackgroundColor = "rgb(217, 130, 60)"; +ember.buttonTextColor = "rgb(32, 24, 20)"; +ember.buttonActiveColor = "rgb(190, 105, 40)"; +ember.boxShadowColor = "rgba(0, 0, 0, 0.4)"; +ember.activeTextColor = "rgb(32, 24, 20)"; +ember.errorTextColor = "rgb(255, 160, 85)"; +ember.dangerColor = "rgb(220, 60, 50)"; +ember.scrollbarColor = "rgba(240, 228, 210, 0.12)"; +ember.preferredEditorTheme = "monokai"; + +const dusk = createBuiltInTheme("Dusk"); +dusk.darkenedPrimaryColor = "rgb(13, 11, 24)"; +dusk.primaryColor = "rgb(20, 18, 35)"; +dusk.primaryTextColor = "rgb(215, 210, 235)"; +dusk.secondaryColor = "rgb(30, 27, 50)"; +dusk.secondaryTextColor = "rgb(160, 155, 185)"; +dusk.activeColor = "rgb(167, 105, 220)"; +dusk.linkTextColor = "rgb(190, 150, 240)"; +dusk.borderColor = "rgba(167, 105, 220, 0.2)"; +dusk.popupIconColor = "rgb(215, 210, 235)"; +dusk.popupBackgroundColor = "rgb(25, 23, 42)"; +dusk.popupTextColor = "rgb(215, 210, 235)"; +dusk.popupActiveColor = "rgb(167, 105, 220)"; +dusk.buttonBackgroundColor = "rgb(167, 105, 220)"; +dusk.buttonTextColor = "rgb(255, 255, 255)"; +dusk.buttonActiveColor = "rgb(140, 80, 195)"; +dusk.boxShadowColor = "rgba(0, 0, 0, 0.5)"; +dusk.activeTextColor = "rgb(255, 255, 255)"; +dusk.errorTextColor = "rgb(255, 170, 110)"; +dusk.dangerColor = "rgb(235, 80, 100)"; +dusk.scrollbarColor = "rgba(215, 210, 235, 0.12)"; +dusk.preferredEditorTheme = "tokyoNight"; + +const carbon = createBuiltInTheme("Carbon"); +carbon.darkenedPrimaryColor = "rgb(14, 14, 16)"; +carbon.primaryColor = "rgb(22, 22, 24)"; +carbon.primaryTextColor = "rgb(235, 235, 240)"; +carbon.secondaryColor = "rgb(32, 32, 35)"; +carbon.secondaryTextColor = "rgb(155, 155, 165)"; +carbon.activeColor = "rgb(55, 142, 240)"; +carbon.linkTextColor = "rgb(85, 165, 255)"; +carbon.borderColor = "rgba(255, 255, 255, 0.08)"; +carbon.popupIconColor = "rgb(235, 235, 240)"; +carbon.popupBackgroundColor = "rgb(28, 28, 31)"; +carbon.popupTextColor = "rgb(235, 235, 240)"; +carbon.popupActiveColor = "rgb(55, 142, 240)"; +carbon.buttonBackgroundColor = "rgb(55, 142, 240)"; +carbon.buttonTextColor = "rgb(255, 255, 255)"; +carbon.buttonActiveColor = "rgb(38, 118, 210)"; +carbon.boxShadowColor = "rgba(0, 0, 0, 0.5)"; +carbon.activeTextColor = "rgb(255, 255, 255)"; +carbon.errorTextColor = "rgb(255, 140, 100)"; +carbon.dangerColor = "rgb(235, 70, 60)"; +carbon.scrollbarColor = "rgba(255, 255, 255, 0.1)"; +carbon.preferredEditorTheme = "one_dark"; + +const mint = createBuiltInTheme("Mint", "light"); +mint.darkenedPrimaryColor = "rgb(235, 245, 240)"; +mint.primaryColor = "rgb(250, 253, 252)"; +mint.primaryTextColor = "rgb(28, 42, 38)"; +mint.secondaryColor = "rgb(240, 248, 245)"; +mint.secondaryTextColor = "rgb(72, 92, 85)"; +mint.activeColor = "rgb(4, 120, 87)"; +mint.linkTextColor = "rgb(2, 100, 72)"; +mint.borderColor = "rgb(209, 233, 225)"; +mint.popupIconColor = "rgb(28, 42, 38)"; +mint.popupBackgroundColor = "rgb(250, 253, 252)"; +mint.popupTextColor = "rgb(28, 42, 38)"; +mint.popupActiveColor = "rgb(4, 120, 87)"; +mint.buttonBackgroundColor = "rgb(4, 120, 87)"; +mint.buttonTextColor = "rgb(255, 255, 255)"; +mint.buttonActiveColor = "rgb(2, 100, 72)"; +mint.boxShadowColor = "rgba(0, 0, 0, 0.06)"; +mint.activeTextColor = "rgb(255, 255, 255)"; +mint.errorTextColor = "rgb(190, 40, 40)"; +mint.dangerColor = "rgb(220, 38, 38)"; +mint.scrollbarColor = "rgba(28, 42, 38, 0.12)"; +mint.preferredEditorTheme = "noctisLilac"; + +const sandstone = createBuiltInTheme("Sandstone", "light"); +sandstone.darkenedPrimaryColor = "rgb(238, 230, 218)"; +sandstone.primaryColor = "rgb(252, 248, 242)"; +sandstone.primaryTextColor = "rgb(60, 45, 35)"; +sandstone.secondaryColor = "rgb(244, 238, 228)"; +sandstone.secondaryTextColor = "rgb(110, 90, 70)"; +sandstone.activeColor = "rgb(192, 92, 52)"; +sandstone.linkTextColor = "rgb(175, 75, 40)"; +sandstone.borderColor = "rgb(222, 210, 195)"; +sandstone.popupIconColor = "rgb(60, 45, 35)"; +sandstone.popupBackgroundColor = "rgb(252, 248, 242)"; +sandstone.popupTextColor = "rgb(60, 45, 35)"; +sandstone.popupActiveColor = "rgb(192, 92, 52)"; +sandstone.buttonBackgroundColor = "rgb(192, 92, 52)"; +sandstone.buttonTextColor = "rgb(255, 255, 255)"; +sandstone.buttonActiveColor = "rgb(165, 72, 38)"; +sandstone.boxShadowColor = "rgba(0, 0, 0, 0.06)"; +sandstone.activeTextColor = "rgb(255, 255, 255)"; +sandstone.errorTextColor = "rgb(180, 40, 35)"; +sandstone.dangerColor = "rgb(200, 50, 45)"; +sandstone.scrollbarColor = "rgba(60, 45, 35, 0.12)"; +sandstone.preferredEditorTheme = "noctisLilac"; + +const blossom = createBuiltInTheme("Blossom", "light"); +blossom.darkenedPrimaryColor = "rgb(242, 234, 237)"; +blossom.primaryColor = "rgb(254, 250, 251)"; +blossom.primaryTextColor = "rgb(48, 38, 42)"; +blossom.secondaryColor = "rgb(248, 240, 243)"; +blossom.secondaryTextColor = "rgb(100, 80, 88)"; +blossom.activeColor = "rgb(190, 75, 115)"; +blossom.linkTextColor = "rgb(170, 55, 95)"; +blossom.borderColor = "rgb(232, 218, 223)"; +blossom.popupIconColor = "rgb(48, 38, 42)"; +blossom.popupBackgroundColor = "rgb(254, 250, 251)"; +blossom.popupTextColor = "rgb(48, 38, 42)"; +blossom.popupActiveColor = "rgb(190, 75, 115)"; +blossom.buttonBackgroundColor = "rgb(190, 75, 115)"; +blossom.buttonTextColor = "rgb(255, 255, 255)"; +blossom.buttonActiveColor = "rgb(160, 55, 95)"; +blossom.boxShadowColor = "rgba(0, 0, 0, 0.06)"; +blossom.activeTextColor = "rgb(255, 255, 255)"; +blossom.errorTextColor = "rgb(200, 45, 40)"; +blossom.dangerColor = "rgb(210, 50, 45)"; +blossom.scrollbarColor = "rgba(48, 38, 42, 0.12)"; +blossom.preferredEditorTheme = "noctisLilac"; + const custom = createBuiltInTheme("Custom"); custom.autoDarkened = true; @@ -352,5 +543,12 @@ export default [ atticus, tomyris, menes, + obsidian, + ember, + dusk, + carbon, + mint, + sandstone, + blossom, custom, ]; diff --git a/src/utils/Uri.js b/src/utils/Uri.js index 195ab1762..5ce203c79 100644 --- a/src/utils/Uri.js +++ b/src/utils/Uri.js @@ -1,6 +1,15 @@ import escapeStringRegexp from "escape-string-regexp"; import path from "./Path"; +function parseStorageList() { + try { + const storageList = JSON.parse(localStorage.storageList || "[]"); + return Array.isArray(storageList) ? storageList : []; + } catch (_) { + return []; + } +} + export default { /** * Parse content uri to rootUri and docID @@ -81,7 +90,7 @@ export default { */ getVirtualAddress(url) { try { - const storageList = JSON.parse(localStorage.storageList || "[]"); + const storageList = parseStorageList(); const matches = []; for (let storage of storageList) { diff --git a/src/utils/Url.js b/src/utils/Url.js index 34bca3043..948503129 100644 --- a/src/utils/Url.js +++ b/src/utils/Url.js @@ -76,7 +76,7 @@ export default { if (pathnames[1].startsWith("/")) pathnames[1] = pathnames[1].slice(1); const contentUri = Uri.parse(url); let [root, pathname] = contentUri.docId.split(":"); - const newDocId = path.join(pathname, ...pathnames.slice(1)); + let newDocId = path.join(pathname, ...pathnames.slice(1)); if (/^content:\/\/com.termux/.test(url)) { const rootCondition = root.endsWith("/"); const newDocIdCondition = newDocId.startsWith("/"); @@ -87,6 +87,21 @@ export default { } return `${contentUri.rootUri}::${root}${newDocId}${query}`; } + + // if pathname is undefined, meaning a docId/volume (e.g :primary:) + // has not been detected, so no newDocId's ":" will be added. + if (!pathname) { + // Ensure proper path separator between root and newDocId + let separator = ""; + if (root.endsWith("/") && newDocId.startsWith("/")) { + // Both have separator, strip one from newDocId + newDocId = newDocId.slice(1); + } else if (!root.endsWith("/") && !newDocId.startsWith("/")) { + // Neither has separator, add one + separator = "/"; + } + return `${contentUri.rootUri}::${root}${separator}${newDocId}${query}`; + } return `${contentUri.rootUri}::${root}:${newDocId}${query}`; } catch (error) { return null; diff --git a/src/utils/codeHighlight.js b/src/utils/codeHighlight.js new file mode 100644 index 000000000..1b587dfc3 --- /dev/null +++ b/src/utils/codeHighlight.js @@ -0,0 +1,323 @@ +import { classHighlighter, highlightCode } from "@lezer/highlight"; +import { getModeForPath, getModesByName } from "cm/modelist"; +import { getThemeConfig } from "cm/themes"; +import DOMPurify from "dompurify"; +import settings from "lib/settings"; + +const highlightCache = new Map(); +const MAX_CACHE_SIZE = 500; + +let styleElement = null; +let currentThemeId = null; + +export function sanitize(text) { + if (!text) return ""; + return DOMPurify.sanitize(text, { ALLOWED_TAGS: [] }); +} + +function escapeHtml(text) { + return text + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); +} + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); +} + +function addSymbolHighlight(html, symbol) { + if (!symbol) return html; + const escapedSymbol = escapeRegExp(sanitize(symbol)); + const regex = new RegExp(`(${escapedSymbol})`, "gi"); + return html.replace(regex, '$1'); +} + +function setCache(key, value) { + if (highlightCache.size >= MAX_CACHE_SIZE) { + const firstKey = highlightCache.keys().next().value; + highlightCache.delete(firstKey); + } + highlightCache.set(key, value); +} + +/** + * Generates CSS styles for syntax highlighting tokens + * @param {Object} config - Theme config with color values + * @param {string} selector - CSS selector to scope styles + * @param {boolean} includeBackground - Whether to include background/foreground base styles + */ +function generateStyles(config, selector, includeBackground = true) { + const c = config; + const keyword = c.keyword || "#c678dd"; + const string = c.string || "#98c379"; + const number = c.number || "#d19a66"; + const comment = c.comment || "#5c6370"; + const func = c.function || "#61afef"; + const variable = c.variable || "#e06c75"; + const type = c.type || "#e5c07b"; + const className = c.class || type; + const constant = c.constant || number; + const operator = c.operator || keyword; + const invalid = c.invalid || "#ff6b6b"; + const foreground = c.foreground || "#abb2bf"; + const background = c.background || "#282c34"; + + const baseStyles = includeBackground + ? ` +${selector} { + background: ${background}; + color: ${foreground}; +}` + : ""; + + return `${baseStyles} +${selector} .tok-keyword { color: ${keyword}; } +${selector} .tok-operator { color: ${operator}; } +${selector} .tok-number { color: ${number}; } +${selector} .tok-string { color: ${string}; } +${selector} .tok-comment { color: ${comment}; font-style: italic; } +${selector} .tok-variableName { color: ${variable}; } +${selector} .tok-propertyName { color: ${func}; } +${selector} .tok-typeName { color: ${type}; } +${selector} .tok-className { color: ${className}; } +${selector} .tok-function { color: ${func}; } +${selector} .tok-bool { color: ${constant}; } +${selector} .tok-null { color: ${constant}; } +${selector} .tok-punctuation { color: ${foreground}; } +${selector} .tok-definition { color: ${variable}; } +${selector} .tok-labelName { color: ${variable}; } +${selector} .tok-namespace { color: ${type}; } +${selector} .tok-macroName { color: ${keyword}; } +${selector} .tok-atom { color: ${constant}; } +${selector} .tok-meta { color: ${foreground}; } +${selector} .tok-heading { color: ${variable}; font-weight: bold; } +${selector} .tok-link { color: ${func}; text-decoration: underline; } +${selector} .tok-strikethrough { text-decoration: line-through; } +${selector} .tok-emphasis { font-style: italic; } +${selector} .tok-strong { font-weight: bold; } +${selector} .tok-invalid { color: ${invalid}; } +${selector} .tok-name { color: ${variable}; } +${selector} .tok-deleted { color: ${invalid}; } +${selector} .tok-inserted { color: ${string}; } +${selector} .tok-changed { color: ${number}; } +`.trim(); +} + +/** + * Injects dynamic CSS for syntax highlighting based on current editor theme + */ +function injectStyles() { + const themeId = settings?.value?.editorTheme || "one_dark"; + const config = getThemeConfig(themeId); + + // Code blocks need background, references panel uses parent's background + const codeBlockStyles = generateStyles(config, ".cm-highlighted", true); + const refPreviewStyles = generateStyles(config, ".ref-preview", false); + const allStyles = `${codeBlockStyles}\n${refPreviewStyles}`; + + if (!styleElement) { + styleElement = document.createElement("style"); + styleElement.id = "cm-static-highlight-styles"; + document.head.appendChild(styleElement); + } + + styleElement.textContent = allStyles; + currentThemeId = themeId; +} + +/** + * Gets the language parser for a given URI using the modelist + */ +async function getLanguageParser(uri) { + const mode = getModeForPath(uri); + if (!mode?.languageExtension) return null; + + try { + const langExt = await mode.languageExtension(); + if (!langExt) return null; + + const langArray = Array.isArray(langExt) ? langExt : [langExt]; + for (const ext of langArray) { + if (ext && typeof ext === "object" && "language" in ext) { + return ext.language.parser; + } + } + } catch (e) { + console.warn("Failed to get language parser for", uri, e); + } + return null; +} + +/** + * Gets language parser by language name (e.g., "javascript", "python") + * Uses modelist to find the mode and get first valid extension for file matching + */ +async function getParserForLanguage(langName) { + if (!langName) return null; + + const modesByName = getModesByName(); + const normalizedName = langName.toLowerCase(); + + // Try to find mode by name (case-insensitive) + const mode = modesByName[normalizedName]; + if (mode?.languageExtension) { + try { + const langExt = await mode.languageExtension(); + if (!langExt) return null; + + const langArray = Array.isArray(langExt) ? langExt : [langExt]; + for (const ext of langArray) { + if (ext && typeof ext === "object" && "language" in ext) { + return ext.language.parser; + } + } + } catch (e) { + console.warn("Failed to get parser for language:", langName, e); + } + } + + // Fallback: create a fake filename and use getModeForPath + // This handles cases where the language name doesn't match mode name exactly + const fakeUri = `file.${normalizedName}`; + return await getLanguageParser(fakeUri); +} + +/** + * Highlights a single line of code for display in references panel + * @param {string} text - The line of code to highlight + * @param {string} uri - File URI for language detection + * @param {string|null} symbolName - Optional symbol to highlight with special styling + */ +export async function highlightLine(text, uri, symbolName = null) { + if (!text || !text.trim()) return ""; + + const themeId = settings?.value?.editorTheme || "one_dark"; + const cacheKey = `line:${themeId}:${uri}:${text}:${symbolName || ""}`; + + if (highlightCache.has(cacheKey)) { + return highlightCache.get(cacheKey); + } + + const trimmedText = text.trim(); + + try { + const parser = await getLanguageParser(uri); + if (parser) { + const tree = parser.parse(trimmedText); + let result = ""; + + highlightCode( + trimmedText, + tree, + classHighlighter, + (code, classes) => { + if (classes) { + result += `${escapeHtml(code)}`; + } else { + result += escapeHtml(code); + } + }, + () => {}, + ); + + if (result) { + const highlighted = symbolName + ? addSymbolHighlight(result, symbolName) + : result; + setCache(cacheKey, highlighted); + return highlighted; + } + } + } catch (e) { + console.warn("Highlighting failed for", uri, e); + } + + const escaped = escapeHtml(trimmedText); + const highlighted = symbolName + ? addSymbolHighlight(escaped, symbolName) + : escaped; + setCache(cacheKey, highlighted); + return highlighted; +} + +/** + * Highlights a code block for display in markdown/plugin pages + * @param {string} code - The code to highlight + * @param {string} language - Language identifier from markdown fence (e.g., "javascript", "python") + */ +export async function highlightCodeBlock(code, language) { + if (!code) return ""; + + const themeId = settings?.value?.editorTheme || "one_dark"; + const langKey = (language || "text").toLowerCase(); + + const cacheKey = `block:${themeId}:${langKey}:${code}`; + if (highlightCache.has(cacheKey)) { + return highlightCache.get(cacheKey); + } + + try { + const parser = await getParserForLanguage(langKey); + if (parser) { + const tree = parser.parse(code); + let result = ""; + + highlightCode( + code, + tree, + classHighlighter, + (text, classes) => { + if (classes) { + result += `${escapeHtml(text)}`; + } else { + result += escapeHtml(text); + } + }, + () => { + result += "\n"; + }, + ); + + if (result) { + setCache(cacheKey, result); + return result; + } + } + } catch (e) { + console.warn("Code block highlighting failed for", language, e); + } + + const escaped = escapeHtml(code); + setCache(cacheKey, escaped); + return escaped; +} + +export function clearHighlightCache() { + highlightCache.clear(); +} + +/** + * Initializes the static code highlighting system. + * Injects theme-based CSS and sets up listener for theme changes. + */ +export function initHighlighting() { + injectStyles(); + + settings.on("update:editorTheme:after", () => { + const newThemeId = settings?.value?.editorTheme || "one_dark"; + if (newThemeId !== currentThemeId) { + injectStyles(); + highlightCache.clear(); + } + }); +} + +export default { + sanitize, + highlightLine, + highlightCodeBlock, + clearHighlightCache, + initHighlighting, +}; diff --git a/src/utils/color/regex.js b/src/utils/color/regex.js index 5f3fa5061..5b239bcee 100644 --- a/src/utils/color/regex.js +++ b/src/utils/color/regex.js @@ -247,40 +247,46 @@ export const colorRegex = { }; /** - * Select the color at current line and cursor position - * @returns {AceAjax.Range} + * Select the color at current line and cursor position (CodeMirror) + * @returns {{from:number,to:number}|null} */ export function getColorRange() { const { editor } = editorManager; - const copyText = editor.getCopyText(); - if (copyText) { - if (!isValidColor(copyText)) return null; - return editor.selection.getRange(); - } + try { + const sel = editor.state.selection.main; + const from = sel.from; + const to = sel.to; - const { Range } = ace.require("ace/range"); - let range; + // If there is a selection, validate and return it + if (from !== to) { + const text = editor.state.doc.sliceString(from, to); + if (!isValidColor(text)) return null; + return { from, to }; + } - const cursorPos = editor.selection.getCursor(); - /**@type {string} */ - const line = editor.session.getLine(cursorPos.row); + // No selection: find color under cursor in the current line + const head = sel.head; + const line = editor.state.doc.lineAt(head); + const lineText = line.text; + const col = head - line.from; - // match color in current line and get range - const regex = colorRegex.anyGlobal; - let match; + const regex = colorRegex.anyGlobal; + let match; - while ((match = regex.exec(line))) { - const start = match.index + match[1].length; - const end = start + match[2].length; + while ((match = regex.exec(lineText))) { + const startCol = match.index + match[1].length; + const endCol = startCol + match[2].length; - if (cursorPos.column >= start && cursorPos.column <= end) { - range = new Range(cursorPos.row, start, cursorPos.row, end); - break; + if (col >= startCol && col <= endCol) { + return { from: line.from + startCol, to: line.from + endCol }; + } } - } - return range; + return null; + } catch { + return null; + } } export function isValidColor(value) { diff --git a/src/utils/helpers.js b/src/utils/helpers.js index f39c14c40..d9337ef4d 100644 --- a/src/utils/helpers.js +++ b/src/utils/helpers.js @@ -1,7 +1,9 @@ import fsOperation from "fileSystem"; import ajax from "@deadlyjack/ajax"; +import { getModeForPath as getCMModeForPath } from "cm/modelist"; import alert from "dialogs/alert"; import escapeStringRegexp from "escape-string-regexp"; +import adRewards from "lib/adRewards"; import constants from "lib/constants"; import path from "./Path"; import Uri from "./Uri"; @@ -73,11 +75,17 @@ export default { * @param {string} filename */ getIconForFile(filename) { - const { getModeForPath } = ace.require("ace/ext/modelist"); const type = getFileType(filename); - const { name } = getModeForPath(filename); + // Use CodeMirror's modelist to determine mode name + let modeName = "text"; + try { + const mode = getCMModeForPath?.(filename); + modeName = mode?.name || modeName; + } catch (e) { + // fallback to default if CodeMirror modelist isn't available yet + } - const iconForMode = `file_type_${name}`; + const iconForMode = `file_type_${modeName}`; const iconForType = `file_type_${type}`; return `file file_type_default ${iconForMode} ${iconForType}`; @@ -235,7 +243,8 @@ export default { } /**@type {string[]} */ - const storageList = JSON.parse(localStorage.storageList || "[]"); + const storageList = this.parseJSON(localStorage.storageList); + if (!Array.isArray(storageList)) return url; const storageListLen = storageList.length; for (let i = 0; i < storageListLen; ++i) { @@ -279,12 +288,23 @@ export default { editorManager.onupdate("file-delete"); editorManager.emit("update", "file-delete"); }, + canShowAds() { + return Boolean(IS_FREE_VERSION && adRewards.canShowAds()); + }, + async showInterstitialIfReady() { + if (!this.canShowAds()) return false; + if (await window.iad?.isLoaded()) { + window.iad.show(); + return true; + } + return false; + }, /** * Displays ad on the current page */ showAd() { const { ad } = window; - if (IS_FREE_VERSION && innerHeight * devicePixelRatio > 600 && ad) { + if (this.canShowAds() && innerHeight * devicePixelRatio > 600 && ad) { const $page = tag.getAll("wc-page:not(#root)").pop(); if ($page) { ad.active = true; @@ -292,22 +312,6 @@ export default { } } }, - /** - * Hides the ad - * @param {Boolean} [force=false] - */ - hideAd(force = false) { - const { ad } = window; - if (IS_FREE_VERSION && ad?.active) { - const $pages = tag.getAll(".page-replacement"); - const hide = $pages.length === 1; - - if (force || hide) { - ad.active = false; - ad.hide(); - } - } - }, async toInternalUri(uri) { return new Promise((resolve, reject) => { window.resolveLocalFileSystemURL( @@ -398,73 +402,28 @@ export default { const terminalBasePath = isAcodeTerminalPublicSafUri ? decodeURIComponent(treeSegment.split("::")[0] || "") : ""; - - if (isExternalStorageUri) { - baseFolder = decodeURIComponent(currentUri.split("%3A")[1].split("/")[0]); - } else if ( - !(isExternalStorageUri || isTermuxUri || isAcodeTerminalPublicSafUri) - ) { - // Handle nested paths for regular file:// URIs - const pathParts = pathString.split("/").filter(Boolean); - let currentPath = uri; - let firstCreatedPath = null; - let firstCreatedType = null; - - for (let i = 0; i < pathParts.length; i++) { - const isLastPart = i === pathParts.length - 1; - const partName = pathParts[i]; - const newPath = Url.join(currentPath, partName); - - if (isLastPart && isFile) { - // Create file if it's the last part and we're creating a file - if (!(await fsOperation(newPath).exists())) { - await fsOperation(currentPath).createFile(partName); - if (firstCreatedPath === null) { - firstCreatedPath = newPath; - firstCreatedType = "file"; - } - } - } else { - // Create directory for intermediate parts or when creating a folder - if (!(await fsOperation(newPath).exists())) { - await fsOperation(currentPath).createDirectory(partName); - if (firstCreatedPath === null) { - firstCreatedPath = newPath; - firstCreatedType = "folder"; - } - } - } - currentPath = newPath; + const getTargetUri = (baseUri, name, index) => { + if ( + !(isExternalStorageUri || isTermuxUri || isAcodeTerminalPublicSafUri) + ) { + return Url.join(baseUri, name); } - return { - uri: firstCreatedPath || Url.join(uri, pathParts[0]), - type: - firstCreatedType || - (isFile && pathParts.length === 1 ? "file" : "folder"), - }; - } - - for (let i = 0; i < parts.length; i++) { - const isLastElement = i === parts.length - 1; - const name = parts[i]; - let fullUri = currentUri; - - // Adjust URI for special cases + let fullUri = baseUri; if (isExternalStorageUri) { - if (!isSpecialCase && i === 0) { + if (!isSpecialCase && index === 0) { fullUri += `::primary:${baseFolder}/${name}`; } else { fullUri += `/${name}`; } } else if (isTermuxUri) { - if (!isSpecialCase && i === 0) { + if (!isSpecialCase && index === 0) { fullUri += `::/data/data/com.termux/files/home/${name}`; } else { fullUri += `/${name}`; } } else if (isAcodeTerminalPublicSafUri) { - if (!isSpecialCase && i === 0) { + if (!isSpecialCase && index === 0) { const sanitizedBase = terminalBasePath.endsWith("/") ? `${terminalBasePath}${name}` : `${terminalBasePath}/${name}`; @@ -473,41 +432,77 @@ export default { fullUri += `/${name}`; } } - - if (isLastElement && isFile) { - // Create file if it's the last element and isFile is true - if (!(await fsOperation(fullUri).exists())) { - await fsOperation(currentUri).createFile(name); - } else { - return; - } - } else { - // Create directory - if (!(await fsOperation(fullUri).exists())) { - await fsOperation(currentUri).createDirectory(name); - } else { - return; + return fullUri; + }; + const getExpectedType = (isLastPart) => + isLastPart && isFile ? "file" : "folder"; + const ensureEntry = async (baseUri, targetUri, name, expectedType) => { + const entries = await fsOperation(baseUri).lsDir(); + const existingEntry = entries.find((entry) => entry.name === name); + + if (existingEntry) { + const actualType = existingEntry.isDirectory ? "folder" : "file"; + if (actualType !== expectedType) { + throw new Error( + `${name} already exists as a ${actualType}, expected ${expectedType}.`, + ); } + + return { + url: existingEntry.url || existingEntry.uri || targetUri, + created: false, + type: expectedType, + }; } - currentUri = fullUri; + + const createdUrl = + expectedType === "file" + ? await fsOperation(baseUri).createFile(name) + : await fsOperation(baseUri).createDirectory(name); + + return { + url: createdUrl || targetUri, + created: true, + type: expectedType, + }; + }; + let firstCreatedPath = null; + let firstCreatedType = null; + let firstTargetUri = uri; + + if (isExternalStorageUri) { + baseFolder = decodeURIComponent(currentUri.split("%3A")[1].split("/")[0]); } - let tileType; - if (isFile && parts.length === 1) { - tileType = "file"; - } else { - const urlParts = currentUri.split("/"); - const pathParts = pathString.split("/"); - const pathStartIndex = urlParts.findIndex( - (part) => part === pathParts[0], + if (parts[0]) { + firstTargetUri = getTargetUri(uri, parts[0], 0); + } + + for (let i = 0; i < parts.length; i++) { + const isLastElement = i === parts.length - 1; + const name = parts[i]; + const targetUri = getTargetUri(currentUri, name, i); + const expectedType = getExpectedType(isLastElement); + const entry = await ensureEntry( + currentUri, + targetUri, + name, + expectedType, ); - if (pathStartIndex !== -1) { - const pathEndIndex = pathStartIndex + pathParts.length; - urlParts.splice(pathStartIndex + 1, pathEndIndex - pathStartIndex - 1); + + if (entry.created && firstCreatedPath === null) { + firstCreatedPath = entry.url; + firstCreatedType = expectedType; } - currentUri = urlParts.join("/"); - tileType = "folder"; + + currentUri = entry.url; } - return { uri: currentUri, type: tileType }; + + return { + uri: firstCreatedPath || firstTargetUri, + created: Boolean(firstCreatedPath), + type: + firstCreatedType || (isFile && parts.length === 1 ? "file" : "folder"), + }; }, formatDownloadCount(downloadCount) { const units = ["", "K", "M", "B", "T"]; diff --git a/src/views/file-menu.hbs b/src/views/file-menu.hbs index 734e2a5cb..24c4ae047 100644 --- a/src/views/file-menu.hbs +++ b/src/views/file-menu.hbs @@ -1,104 +1,131 @@ -
    • - {{file properties}} - -
    • -
      -
    • - {{rename}} -
    • -{{#is_editor}} -
    • -
      - {{syntax highlighting}} - {{file_mode}} -
      -
    • -
    • -
      - {{encoding}} - {{file_encoding}} -
      -
    • -
    • -
      - {{new line mode}} - {{file_eol}} -
      -
    • -{{/is_editor}} - -{{#is_editor}} -
    • -
      - {{read only}} -
      - -
    • -
    • -
      - {{format}} -
      -
    • -{{/is_editor}} -
      -{{#file_on_disk}} -
    • - {{share}} - -
    • -
    • - {{open with}} - -
    • -
    • - {{edit with}} - -
    • -{{/file_on_disk}} - -{{#is_editor}} -
      -
    • - {{search}} - -
    • -
    • - {{goto}} - -
    • -
      -{{^file_read_only}} -
    • - {{insert color}} - -
    • -
      -{{#copy_text}} -
    • -
      - {{cut}} -
      -
    • -{{/copy_text}} -
    • -
      - {{paste}} -
      -
    • -{{/file_read_only}} -{{#copy_text}} -
    • -
      - {{copy}} -
      -
    • -{{/copy_text}} -
    • -
      - {{select all}} -
      -
    • -{{/is_editor}} +
    • + {{file properties}} + +
    • +
      +
    • + {{rename}} +
    • +{{#is_editor}} +
    • +
      + {{syntax highlighting}} + {{file_mode}} +
      +
    • +
    • +
      + {{encoding}} + {{file_encoding}} +
      +
    • +
    • +
      + {{new line mode}} + {{file_eol}} +
      +
    • +{{/is_editor}} + +{{#is_editor}} +
    • +
      + {{read only}} +
      + +
    • +
    • +
      + {{format}} +
      +
    • +{{#has_lsp_servers}} +
    • + LSP Info + +
    • +{{/has_lsp_servers}} +{{/is_editor}} +
      +{{#file_on_disk}} +
    • + {{share}} + +
    • +
    • + {{open with}} + +
    • +
    • + {{edit with}} + +
    • +
    • + {{add to home screen}} + +
    • +{{/file_on_disk}} + +
    • + {{toggle_pin_tab_text}} + +
    • +
    • + {{close_tabs_to_right_text}} + +
    • +
    • + {{close_tabs_to_left_text}} + +
    • +
    • + {{close_other_tabs_text}} + +
    • + +{{#is_editor}} +
      +
    • + {{search}} + +
    • +
    • + {{goto}} + +
    • +
      +{{^file_read_only}} +
    • + {{insert color}} + +
    • +
      +{{#copy_text}} +
    • +
      + {{cut}} +
      +
    • +{{/copy_text}} +
    • +
      + {{paste}} +
      +
    • +{{/file_read_only}} +{{#copy_text}} +
    • +
      + {{copy}} +
      +
    • +{{/copy_text}} +
    • +
      + {{select all}} +
      +
    • +{{/is_editor}} diff --git a/src/views/menu.hbs b/src/views/menu.hbs index b7b967f9a..fd3d95554 100644 --- a/src/views/menu.hbs +++ b/src/views/menu.hbs @@ -32,7 +32,7 @@
    • {{terminal}} - +

    • diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..d953a0cb2 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "ESNext", + "moduleResolution": "bundler", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "strict": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "declaration": false, + "allowJs": true, + "checkJs": false, + "paths": { + "*": ["./src/*"] + }, + "jsx": "preserve", + "types": ["node"] + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "platforms", "www", "www/js/ace/**/*"] +} diff --git a/utils/code-editor-icon.icomoon.json b/utils/code-editor-icon.icomoon.json new file mode 100644 index 000000000..db9b65ced --- /dev/null +++ b/utils/code-editor-icon.icomoon.json @@ -0,0 +1 @@ +{"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]},"formats":[{"order":0,"mOpen":false,"item":{"tag":"ItemFont","args":[{"addPalettes":false,"classPerGlyph":true,"fontFamily":{"value":"code-editor-icon"},"prefix":{"value":"icon-"},"scss":true}]}}],"glyphs":[{"extras":{"name":"text-search","codePoint":61482},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]},"xmlns:xlink":{"tag":"StringValue","args":["http://www.w3.org/1999/xlink"]}},"children":[{"tag":"Text","args":["\n "]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[21,6],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[3,6]}]}]}]]}]}},"children":[]}]},{"tag":"Text","args":["\n "]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[10,12],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[3,12]}]}]}]]}]}},"children":[]}]},{"tag":"Text","args":["\n "]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[10,18],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[3,18]}]}]}]]}]}},"children":[]}]},{"tag":"Text","args":["\n "]},{"tag":"Element","args":[{"tagName":"circle","attributes":{"cx":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[17]}]}]},"cy":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[15]}]}]},"r":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[3]}]}]}},"children":[]}]},{"tag":"Text","args":["\n "]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[21,19],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[19.1,17.1]}]}]}]]}]}},"children":[]}]},{"tag":"Text","args":["\n"]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"wand","codePoint":61460},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-wand-icon lucide-wand"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[15,4],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[15,2]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[15,16],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[15,14]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[8,9],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[10,9]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[20,9],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[22,9]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[17.8,11.8],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[19,13]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[15,9],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[15.01,9]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[17.8,6.2],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[19,5]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[3,21],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[12,12]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[12.2,6.2],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[11,5]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"wand-sparkles","codePoint":61459},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-wand-sparkles-icon lucide-wand-sparkles"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[21.64,3.64],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[20.36,2.3600000000000003]}]},{"tag":"EllipticArcTo","args":[{"rx":1.21,"ry":1.21,"phi":0,"fA":false,"fS":false,"end":[18.64,2.3600000000000003]}]},{"tag":"LineTo","args":[{"point":[2.36,18.64]}]},{"tag":"EllipticArcTo","args":[{"rx":1.21,"ry":1.21,"phi":0,"fA":false,"fS":false,"end":[2.36,20.36]}]},{"tag":"LineTo","args":[{"point":[3.6399999999999997,21.64]}]},{"tag":"EllipticArcTo","args":[{"rx":1.2,"ry":1.2,"phi":0,"fA":false,"fS":false,"end":[5.359999999999999,21.64]}]},{"tag":"LineTo","args":[{"point":[21.64,5.36]}]},{"tag":"EllipticArcTo","args":[{"rx":1.2,"ry":1.2,"phi":0,"fA":false,"fS":false,"end":[21.64,3.6400000000000006]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[14,7],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[17,10]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[5,6],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[5,10]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[19,14],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[19,18]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[10,2],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[10,4]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[7,8],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[3,8]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[21,16],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[17,16]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[11,3],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[9,3]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"link","codePoint":61458},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-link-icon lucide-link"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[10,13],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":5,"ry":5,"phi":0,"fA":false,"fS":false,"end":[17.54,13.54]}]},{"tag":"LineTo","args":[{"point":[20.54,10.54]}]},{"tag":"EllipticArcTo","args":[{"rx":5,"ry":5,"phi":0,"fA":false,"fS":false,"end":[13.469999999999999,3.469999999999999]}]},{"tag":"LineTo","args":[{"point":[11.749999999999998,5.179999999999999]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[14,11],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":5,"ry":5,"phi":0,"fA":false,"fS":false,"end":[6.46,10.46]}]},{"tag":"LineTo","args":[{"point":[3.46,13.46]}]},{"tag":"EllipticArcTo","args":[{"rx":5,"ry":5,"phi":0,"fA":false,"fS":false,"end":[10.530000000000001,20.53]}]},{"tag":"LineTo","args":[{"point":[12.240000000000002,18.82]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"brain","codePoint":61457},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-brain-icon lucide-brain"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[12,18],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[12,5]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[15,13],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":4.17,"ry":4.17,"phi":0,"fA":false,"fS":true,"end":[12,9]}]},{"tag":"EllipticArcTo","args":[{"rx":4.17,"ry":4.17,"phi":0,"fA":false,"fS":true,"end":[9,13]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[17.598,6.5],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":3,"ry":3,"phi":0,"fA":true,"fS":false,"end":[12,5]}]},{"tag":"EllipticArcTo","args":[{"rx":3,"ry":3,"phi":0,"fA":true,"fS":false,"end":[6.402,6.5]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[17.997,5.125],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":4,"ry":4,"phi":0,"fA":false,"fS":true,"end":[20.523,10.895]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[18,18],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":4,"ry":4,"phi":0,"fA":false,"fS":false,"end":[20,10.536]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[19.967,17.483],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":4,"ry":4,"phi":0,"fA":true,"fS":true,"end":[12,18]}]},{"tag":"EllipticArcTo","args":[{"rx":4,"ry":4,"phi":0,"fA":true,"fS":true,"end":[4.033,17.483]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[6,18],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":4,"ry":4,"phi":0,"fA":false,"fS":true,"end":[4,10.536]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[6.003,5.125],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":4,"ry":4,"phi":0,"fA":false,"fS":false,"end":[3.4770000000000003,10.895]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"paperclip","codePoint":61456},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-paperclip-icon lucide-paperclip"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[16,6],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[7.586,14.586]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":false,"end":[10.415000000000001,17.415]}]},{"tag":"LineTo","args":[{"point":[18.829,8.828999999999999]}]},{"tag":"EllipticArcTo","args":[{"rx":4,"ry":4,"phi":0,"fA":true,"fS":false,"end":[13.172,3.171999999999999]}]},{"tag":"LineTo","args":[{"point":[4.793000000000001,11.722999999999999]}]},{"tag":"EllipticArcTo","args":[{"rx":6,"ry":6,"phi":0,"fA":true,"fS":false,"end":[13.278,20.208]}]},{"tag":"LineTo","args":[{"point":[21.657,11.656999999999998]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"palette","codePoint":61455},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-palette-icon lucide-palette"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[12,22],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":true,"end":[12,2]}]},{"tag":"EllipticArcTo","args":[{"rx":10,"ry":9,"phi":0,"fA":false,"fS":true,"end":[22,11]}]},{"tag":"EllipticArcTo","args":[{"rx":5,"ry":5,"phi":0,"fA":false,"fS":true,"end":[17,16]}]},{"tag":"LineTo","args":[{"point":[14.75,16]}]},{"tag":"EllipticArcTo","args":[{"rx":1.75,"ry":1.75,"phi":0,"fA":false,"fS":false,"end":[13.35,18.8]}]},{"tag":"LineTo","args":[{"point":[13.65,19.2]}]},{"tag":"EllipticArcTo","args":[{"rx":1.75,"ry":1.75,"phi":0,"fA":false,"fS":true,"end":[12.25,22]}]},{"tag":"LineTo","args":[{"point":[12,22]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"circle","attributes":{"cx":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[13.5]}]}]},"cy":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[6.5]}]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"r":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[0.5]}]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"circle","attributes":{"cx":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[17.5]}]}]},"cy":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[10.5]}]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"r":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[0.5]}]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"circle","attributes":{"cx":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[6.5]}]}]},"cy":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[12.5]}]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"r":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[0.5]}]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"circle","attributes":{"cx":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[8.5]}]}]},"cy":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[7.5]}]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"r":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[0.5]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"loader","codePoint":61454},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-loader-icon lucide-loader"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[12,2],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[12,6]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[16.2,7.8],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[19.099999999999998,4.9]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[18,12],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[22,12]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[16.2,16.2],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[19.099999999999998,19.099999999999998]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[12,18],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[12,22]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[4.9,19.1],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[7.800000000000001,16.200000000000003]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[2,12],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[6,12]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[4.9,4.9],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[7.800000000000001,7.800000000000001]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"square-terminal","codePoint":61453},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-square-terminal-icon lucide-square-terminal"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[7,11],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[9,9]}]},{"tag":"LineTo","args":[{"point":[7,7]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[11,13],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[15,13]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"rect","attributes":{"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[18]}]}]},"rx":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"ry":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[18]}]}]},"x":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[3]}]}]},"y":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[3]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"house","codePoint":61452},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-house-icon lucide-house"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[15,21],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[15,13]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":false,"end":[14,12]}]},{"tag":"LineTo","args":[{"point":[10,12]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":false,"end":[9,13]}]},{"tag":"LineTo","args":[{"point":[9,21]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[3,10],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":true,"end":[3.709,8.472]}]},{"tag":"LineTo","args":[{"point":[10.709,2.4719999999999995]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":true,"end":[13.291,2.4719999999999995]}]},{"tag":"LineTo","args":[{"point":[20.291,8.472]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":true,"end":[21,10]}]},{"tag":"LineTo","args":[{"point":[21,19]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":true,"end":[19,21]}]},{"tag":"LineTo","args":[{"point":[5,21]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":true,"end":[3,19]}]},{"tag":"LineTo","args":[{"point":[3,10]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"message-circle","codePoint":61451},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-message-circle-icon lucide-message-circle"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[2.992,16.342],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":true,"end":[3.086,17.509]}]},{"tag":"LineTo","args":[{"point":[2.021,20.799]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":false,"end":[3.2569999999999997,21.967]}]},{"tag":"LineTo","args":[{"point":[6.67,20.968999999999998]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":true,"end":[7.769,21.060999999999996]}]},{"tag":"EllipticArcTo","args":[{"rx":10,"ry":10,"phi":0,"fA":true,"fS":false,"end":[2.992,16.341999999999995]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"user-round","codePoint":61450},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-user-round-icon lucide-user-round"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"circle","attributes":{"cx":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[12]}]}]},"cy":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[8]}]}]},"r":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[5]}]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[20,21],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":8,"ry":8,"phi":0,"fA":false,"fS":false,"end":[4,21]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"funnel","codePoint":61449},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-funnel-icon lucide-funnel"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[10,20],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":false,"end":[10.553,20.895]}]},{"tag":"LineTo","args":[{"point":[12.553,21.895]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":false,"end":[14,21]}]},{"tag":"LineTo","args":[{"point":[14,14]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":true,"end":[14.517,12.659]}]},{"tag":"LineTo","args":[{"point":[21.74,4.67]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":false,"end":[21,3]}]},{"tag":"LineTo","args":[{"point":[3,3]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":false,"end":[2.258,4.67]}]},{"tag":"LineTo","args":[{"point":[9.483,12.658999999999999]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":true,"end":[10,14]}]},{"tag":"LineTo","args":[{"point":[10,20]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"zap","codePoint":61440},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-zap-icon lucide-zap"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[4,14],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":true,"end":[3.2199999999999998,12.370000000000001]}]},{"tag":"LineTo","args":[{"point":[13.120000000000001,2.1700000000000017]}]},{"tag":"EllipticArcTo","args":[{"rx":0.5,"ry":0.5,"phi":0,"fA":false,"fS":true,"end":[13.98,2.6300000000000017]}]},{"tag":"LineTo","args":[{"point":[12.06,8.650000000000002]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":false,"end":[13,10]}]},{"tag":"LineTo","args":[{"point":[20,10]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":true,"end":[20.78,11.629999999999999]}]},{"tag":"LineTo","args":[{"point":[10.88,21.83]}]},{"tag":"EllipticArcTo","args":[{"rx":0.5,"ry":0.5,"phi":0,"fA":false,"fS":true,"end":[10.020000000000001,21.369999999999997]}]},{"tag":"LineTo","args":[{"point":[11.940000000000001,15.349999999999998]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":false,"end":[11,14]}]},{"tag":"LineTo","args":[{"point":[4,14]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"verified","codePoint":61441},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["size-6"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Text","args":["\n "]},{"tag":"Element","args":[{"tagName":"path","attributes":{"clip-rule":{"tag":"Value","args":[{"tag":"FillRule","args":[{"tag":"EvenOdd","args":[]}]}]},"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[8.603,3.799],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":4.49,"ry":4.49,"phi":0,"fA":false,"fS":true,"end":[12,2.25]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[13.357,2.25],"c2":[14.573,2.85],"end":[15.397,3.799]}]}]},{"tag":"EllipticArcTo","args":[{"rx":4.49,"ry":4.49,"phi":0,"fA":false,"fS":true,"end":[18.895,5.106]}]},{"tag":"EllipticArcTo","args":[{"rx":4.491,"ry":4.491,"phi":0,"fA":false,"fS":true,"end":[20.201999999999998,8.603]}]},{"tag":"EllipticArcTo","args":[{"rx":4.49,"ry":4.49,"phi":0,"fA":false,"fS":true,"end":[21.75,12]}]},{"tag":"EllipticArcTo","args":[{"rx":4.49,"ry":4.49,"phi":0,"fA":false,"fS":true,"end":[20.201,15.397]}]},{"tag":"EllipticArcTo","args":[{"rx":4.491,"ry":4.491,"phi":0,"fA":false,"fS":true,"end":[18.894000000000002,18.894]}]},{"tag":"EllipticArcTo","args":[{"rx":4.491,"ry":4.491,"phi":0,"fA":false,"fS":true,"end":[15.397000000000002,20.200999999999997]}]},{"tag":"EllipticArcTo","args":[{"rx":4.49,"ry":4.49,"phi":0,"fA":false,"fS":true,"end":[12,21.75]}]},{"tag":"EllipticArcTo","args":[{"rx":4.49,"ry":4.49,"phi":0,"fA":false,"fS":true,"end":[8.603,20.201]}]},{"tag":"EllipticArcTo","args":[{"rx":4.49,"ry":4.49,"phi":0,"fA":false,"fS":true,"end":[5.1049999999999995,18.895]}]},{"tag":"EllipticArcTo","args":[{"rx":4.491,"ry":4.491,"phi":0,"fA":false,"fS":true,"end":[3.7979999999999996,15.396999999999998]}]},{"tag":"EllipticArcTo","args":[{"rx":4.49,"ry":4.49,"phi":0,"fA":false,"fS":true,"end":[2.25,12]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[2.25,10.643],"c2":[2.85,9.427],"end":[3.799,8.603]}]}]},{"tag":"EllipticArcTo","args":[{"rx":4.49,"ry":4.49,"phi":0,"fA":false,"fS":true,"end":[5.106,5.106]}]},{"tag":"EllipticArcTo","args":[{"rx":4.49,"ry":4.49,"phi":0,"fA":false,"fS":true,"end":[8.603,3.799]}]}]},{"start":[15.61,10.186],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":0.75,"ry":0.75,"phi":0,"fA":true,"fS":false,"end":[14.389999999999999,9.314]}]},{"tag":"LineTo","args":[{"point":[11.153999999999998,13.844000000000001]}]},{"tag":"LineTo","args":[{"point":[9.53,12.22]}]},{"tag":"EllipticArcTo","args":[{"rx":0.75,"ry":0.75,"phi":0,"fA":false,"fS":false,"end":[8.469999999999999,13.280000000000001]}]},{"tag":"LineTo","args":[{"point":[10.719999999999999,15.530000000000001]}]},{"tag":"EllipticArcTo","args":[{"rx":0.75,"ry":0.75,"phi":0,"fA":false,"fS":false,"end":[11.86,15.436000000000002]}]},{"tag":"LineTo","args":[{"point":[15.61,10.186]}]}]}]]}]},"fill-rule":{"tag":"Value","args":[{"tag":"FillRule","args":[{"tag":"EvenOdd","args":[]}]}]}},"children":[]}]},{"tag":"Text","args":["\n"]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"terminal","codePoint":61442},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[1024]}]}]},"version":{"tag":"StringValue","args":["1.1"]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[1024]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Text","args":["\n"]},{"tag":"Text","args":["\n"]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[155.435,173.611],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[140.416,178.902],"c2":[128,196.86399999999998],"end":[128,213.334]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[128,216.747],"c2":[129.237,223.318],"end":[130.773,227.969]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[133.29,235.606],"c2":[144.085,246.956],"end":[249.76999999999998,352.854]}]}]},{"tag":"LineTo","args":[{"point":[366.037,469.334]}]},{"tag":"LineTo","args":[{"point":[249.76999999999998,585.814]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[144.08499999999998,691.713],"c2":[133.28999999999996,703.062],"end":[130.77299999999997,710.699]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[125.26899999999996,727.3389999999999],"c2":[128.89599999999996,743.382],"end":[140.79999999999995,755.286]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[148.42199999999997,762.954],"c2":[158.97599999999994,767.6999999999999],"end":[170.63899999999995,767.6999999999999]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[177.55899999999994,767.6999999999999],"c2":[184.08899999999994,766.0289999999999],"end":[189.84699999999995,763.069]}]}]},{"tag":"LineTo","args":[{"point":[189.61099999999996,763.179]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[195.02999999999997,760.576],"c2":[234.32599999999996,722.304],"end":[330.45399999999995,625.963]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[456.96099999999996,499.24299999999994],"c2":[463.95799999999997,491.904],"end":[466.77399999999994,483.24299999999994]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[468.18299999999994,479.1599999999999],"c2":[468.99699999999996,474.4549999999999],"end":[468.99699999999996,469.55999999999995]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[468.99699999999996,462.57599999999996],"c2":[467.34099999999995,455.97999999999996],"end":[464.4,450.14099999999996]}]}]},{"tag":"LineTo","args":[{"point":[464.513,450.38899999999995]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[461.90999999999997,444.96999999999997],"c2":[423.638,405.717],"end":[327.29699999999997,309.54599999999994]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[205.48399999999998,187.94599999999994],"c2":[192.98199999999997,175.95699999999994],"end":[185.30199999999996,173.43899999999994]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[180.92499999999995,171.84899999999993],"c2":[175.87299999999996,170.92999999999995],"end":[170.60699999999997,170.92999999999995]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[165.16199999999998,170.92999999999995],"c2":[159.94699999999997,171.91199999999995],"end":[155.12899999999996,173.70999999999995]}]}]},{"tag":"LineTo","args":[{"point":[155.435,173.611]}]}]},{"start":[497.664,770.688],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[487.908,774.264],"c2":[480.01599999999996,780.983],"end":[475.033,789.596]}]}]},{"tag":"LineTo","args":[{"point":[474.923,789.802]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[470.87,796.671],"c2":[470.187,799.743],"end":[470.187,810.666]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[470.187,821.589],"c2":[470.87,824.6610000000001],"end":[474.923,831.5300000000001]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[477.526,835.9250000000001],"c2":[482.176,841.5140000000001],"end":[485.291,843.8610000000001]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[498.219,853.7170000000001],"c2":[489.984,853.3330000000001],"end":[682.582,853.3330000000001]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[881.622,853.3330000000001],"c2":[869.718,854.1010000000001],"end":[883.2429999999999,840.5760000000001]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[890.9739999999999,832.9570000000001],"c2":[895.7639999999999,822.3710000000001],"end":[895.7639999999999,810.6670000000001]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[895.7639999999999,798.9630000000002],"c2":[890.9739999999999,788.3770000000002],"end":[883.2479999999999,780.7630000000001]}]}]},{"tag":"LineTo","args":[{"point":[883.2429999999999,780.7580000000002]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[869.718,767.2330000000002],"c2":[881.7499999999999,768.0010000000002],"end":[681.942,768.1290000000001]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[532.225,768.2140000000002],"c2":[503.254,768.6410000000001],"end":[497.664,770.688]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]},{"tag":"Text","args":["\n"]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"tag","codePoint":61443},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[16]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":16,"height":16}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[16]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[1,7.775],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[1,2.75]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[1,1.784],"c2":[1.784,1],"end":[2.75,1]}]}]},{"tag":"LineTo","args":[{"point":[7.775,1]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[8.239,1],"c2":[8.685,1.184],"end":[9.013,1.513]}]}]},{"tag":"LineTo","args":[{"point":[15.263,7.763]}]},{"tag":"EllipticArcTo","args":[{"rx":1.75,"ry":1.75,"phi":0,"fA":false,"fS":true,"end":[15.263,10.237]}]},{"tag":"LineTo","args":[{"point":[10.237,15.263]}]},{"tag":"EllipticArcTo","args":[{"rx":1.75,"ry":1.75,"phi":0,"fA":false,"fS":true,"end":[7.763,15.263]}]},{"tag":"LineTo","args":[{"point":[1.513,9.013]}]},{"tag":"EllipticArcTo","args":[{"rx":1.752,"ry":1.752,"phi":0,"fA":false,"fS":true,"end":[1,7.775]}]}]},{"start":[2.5,7.775],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[2.5,7.841],"c2":[2.526,7.905],"end":[2.573,7.952]}]}]},{"tag":"LineTo","args":[{"point":[8.823,14.202]}]},{"tag":"EllipticArcTo","args":[{"rx":0.25,"ry":0.25,"phi":0,"fA":false,"fS":false,"end":[9.177,14.202]}]},{"tag":"LineTo","args":[{"point":[14.202,9.177]}]},{"tag":"EllipticArcTo","args":[{"rx":0.25,"ry":0.25,"phi":0,"fA":false,"fS":false,"end":[14.202,8.823]}]},{"tag":"LineTo","args":[{"point":[7.952,2.5730000000000004]}]},{"tag":"EllipticArcTo","args":[{"rx":0.25,"ry":0.25,"phi":0,"fA":false,"fS":false,"end":[7.775,2.5000000000000004]}]},{"tag":"LineTo","args":[{"point":[2.75,2.5000000000000004]}]},{"tag":"EllipticArcTo","args":[{"rx":0.25,"ry":0.25,"phi":0,"fA":false,"fS":false,"end":[2.5,2.7500000000000004]}]},{"tag":"LineTo","args":[{"point":[2.5,7.775]}]}]},{"start":[6,5],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":true,"fS":true,"end":[6,7]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":true,"end":[6,5]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"scale","codePoint":61444},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-scale-icon lucide-scale"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[12,3],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[12,21]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[19,8],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[22,16]}]},{"tag":"EllipticArcTo","args":[{"rx":5,"ry":5,"phi":0,"fA":false,"fS":true,"end":[16,16]}]},{"tag":"LineTo","args":[{"point":[19,8]}]}]},{"start":[19,8],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[19,7]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[3,7],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[4,7]}]},{"tag":"EllipticArcTo","args":[{"rx":17,"ry":17,"phi":0,"fA":false,"fS":false,"end":[12,5]}]},{"tag":"EllipticArcTo","args":[{"rx":17,"ry":17,"phi":0,"fA":false,"fS":false,"end":[20,7]}]},{"tag":"LineTo","args":[{"point":[21,7]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[5,8],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[8,16]}]},{"tag":"EllipticArcTo","args":[{"rx":5,"ry":5,"phi":0,"fA":false,"fS":true,"end":[2,16]}]},{"tag":"LineTo","args":[{"point":[5,8]}]}]},{"start":[5,8],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[5,7]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[7,21],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[17,21]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"cart","codePoint":61445},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-shopping-cart-icon lucide-shopping-cart"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"circle","attributes":{"cx":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[8]}]}]},"cy":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[21]}]}]},"r":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[1]}]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"circle","attributes":{"cx":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[19]}]}]},"cy":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[21]}]}]},"r":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[1]}]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[2.05,2.05],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[4.05,2.05]}]},{"tag":"LineTo","args":[{"point":[6.71,14.469999999999999]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":false,"end":[8.71,16.049999999999997]}]},{"tag":"LineTo","args":[{"point":[18.490000000000002,16.049999999999997]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":false,"end":[20.44,14.479999999999997]}]},{"tag":"LineTo","args":[{"point":[22.09,7.049999999999997]}]},{"tag":"LineTo","args":[{"point":[5.12,7.049999999999997]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"lightbulb","codePoint":61446},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-lightbulb-icon lucide-lightbulb"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[15,14],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[15.2,13],"c2":[15.7,12.3],"end":[16.5,11.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[17.5,10.6],"c2":[18,9.3],"end":[18,8]}]}]},{"tag":"EllipticArcTo","args":[{"rx":6,"ry":6,"phi":0,"fA":false,"fS":false,"end":[6,8]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[6,9],"c2":[6.2,10.2],"end":[7.5,11.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"CParams","args":[{"c1":[8.2,12.2],"c2":[8.8,13],"end":[9,14]}]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[9,18],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[15,18]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[10,22],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[14,22]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"pin","codePoint":61447},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-pin-icon lucide-pin"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[12,17],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[12,22]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[9,10.76],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":true,"end":[7.89,12.55]}]},{"tag":"LineTo","args":[{"point":[6.109999999999999,13.450000000000001]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":false,"end":[5,15.24]}]},{"tag":"LineTo","args":[{"point":[5,16]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":false,"end":[6,17]}]},{"tag":"LineTo","args":[{"point":[18,17]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":false,"end":[19,16]}]},{"tag":"LineTo","args":[{"point":[19,15.24]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":false,"end":[17.89,13.45]}]},{"tag":"LineTo","args":[{"point":[16.11,12.549999999999999]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":true,"end":[15,10.76]}]},{"tag":"LineTo","args":[{"point":[15,7]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":true,"end":[16,6]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":false,"end":[16,2]}]},{"tag":"LineTo","args":[{"point":[8,2]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":false,"end":[8,6]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":true,"end":[9,7]}]},{"tag":"LineTo","args":[{"point":[9,10.76]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"pin-off","codePoint":61448},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"class":{"tag":"StringValue","args":["lucide lucide-pin-off-icon lucide-pin-off"]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"NoPaint","args":[]}]}]},"height":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"stroke":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]},"stroke-linecap":{"tag":"Value","args":[{"tag":"StrokeLineCap","args":[{"tag":"RoundCap","args":[]}]}]},"stroke-linejoin":{"tag":"Value","args":[{"tag":"StrokeLineJoin","args":[{"tag":"RoundJoin","args":[]}]}]},"stroke-width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[2]}]}]},"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":24,"height":24}]}]},"width":{"tag":"Value","args":[{"tag":"Length","args":[{"tag":"Px","args":[24]}]}]},"xmlns":{"tag":"StringValue","args":["http://www.w3.org/2000/svg"]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[12,17],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[12,22]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[15,9.34],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[15,7]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":true,"end":[16,6]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":false,"end":[16,2]}]},{"tag":"LineTo","args":[{"point":[7.89,2]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[2,2],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[22,22]}]}]}]]}]}},"children":[]}]},{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[9,9],"endings":{"tag":"Disconnected","args":[{}]},"cmds":[{"tag":"LineTo","args":[{"point":[9,10.76]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":true,"end":[7.89,12.55]}]},{"tag":"LineTo","args":[{"point":[6.109999999999999,13.450000000000001]}]},{"tag":"EllipticArcTo","args":[{"rx":2,"ry":2,"phi":0,"fA":false,"fS":false,"end":[5,15.24]}]},{"tag":"LineTo","args":[{"point":[5,16]}]},{"tag":"EllipticArcTo","args":[{"rx":1,"ry":1,"phi":0,"fA":false,"fS":false,"end":[6,17]}]},{"tag":"LineTo","args":[{"point":[17,17]}]}]}]]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-information","codePoint":59648},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[513,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[513,928]}]},{"tag":"LineTo","args":[{"point":[513,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[497,904],"end":[488.5,875.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,847],"end":[480,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,773],"end":[496,735]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[513,697],"end":[541,669]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[569,641],"end":[607,624]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,608],"end":[688,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[709,608],"end":[729.5,612]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[750,616],"end":[768,624]}]}]},{"tag":"LineTo","args":[{"point":[768,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,320],"end":[563,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,64]}]},{"tag":"LineTo","args":[{"point":[224,64]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[160,128]}]}]},{"tag":"LineTo","args":[{"point":[160,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[224,928]}]}]},{"tag":"LineTo","args":[{"point":[513,928]}]}]},{"start":[768,288],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[576,256]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]}]},{"start":[812.5,940.5],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,889],"end":[864,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,743],"end":[812.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,640],"end":[688,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,640],"end":[563.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,743],"end":[512,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,889],"end":[563.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,992],"end":[688,992]}]}]},{"tag":"LineTo","args":[{"point":[688,992]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,992],"end":[812.5,940.5]}]}]}]},{"start":[704,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[704,864]}]},{"tag":"LineTo","args":[{"point":[736,864]}]},{"tag":"LineTo","args":[{"point":[736,896]}]},{"tag":"LineTo","args":[{"point":[640,896]}]},{"tag":"LineTo","args":[{"point":[640,864]}]},{"tag":"LineTo","args":[{"point":[672,864]}]},{"tag":"LineTo","args":[{"point":[672,832]}]},{"tag":"LineTo","args":[{"point":[640,832]}]},{"tag":"LineTo","args":[{"point":[640,800]}]},{"tag":"LineTo","args":[{"point":[704,800]}]}]},{"start":[704,736],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[704,768]}]},{"tag":"LineTo","args":[{"point":[672,768]}]},{"tag":"LineTo","args":[{"point":[672,736]}]},{"tag":"LineTo","args":[{"point":[704,736]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-information-outline","codePoint":59649},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[552,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[224,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[160,864]}]}]},{"tag":"LineTo","args":[{"point":[160,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[224,64]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]},{"tag":"LineTo","args":[{"point":[768,659]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[811,681],"end":[837.5,723]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,765],"end":[864,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,889],"end":[812.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,992],"end":[688,992]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[647,992],"end":[611.5,974.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,957],"end":[552,928]}]}]},{"tag":"LineTo","args":[{"point":[552,928]}]},{"tag":"LineTo","args":[{"point":[552,928]}]}]},{"start":[531,896],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[531,896]}]},{"tag":"LineTo","args":[{"point":[531,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[522,878],"end":[517,858]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,838],"end":[512,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,743],"end":[563.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,640],"end":[688,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[700,640],"end":[712.5,641.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[725,643],"end":[736,647]}]}]},{"tag":"LineTo","args":[{"point":[736,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[581,320],"end":[562.5,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,96]}]},{"tag":"LineTo","args":[{"point":[224,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,96],"end":[201.5,105.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,115],"end":[192,128]}]}]},{"tag":"LineTo","args":[{"point":[192,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,877],"end":[201.5,886.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,896],"end":[224,896]}]}]},{"tag":"LineTo","args":[{"point":[531,896]}]}]},{"start":[576,112],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[576,256]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[608,288]}]}]},{"tag":"LineTo","args":[{"point":[726,288]}]},{"tag":"LineTo","args":[{"point":[576,112]}]}]},{"start":[790,918],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,876],"end":[832,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,756],"end":[790,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[748,672],"end":[688,672]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[628,672],"end":[586,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,756],"end":[544,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,876],"end":[586,918]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[628,960],"end":[688,960]}]}]},{"tag":"LineTo","args":[{"point":[688,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[748,960],"end":[790,918]}]}]}]},{"start":[704,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[704,864]}]},{"tag":"LineTo","args":[{"point":[736,864]}]},{"tag":"LineTo","args":[{"point":[736,896]}]},{"tag":"LineTo","args":[{"point":[640,896]}]},{"tag":"LineTo","args":[{"point":[640,864]}]},{"tag":"LineTo","args":[{"point":[672,864]}]},{"tag":"LineTo","args":[{"point":[672,832]}]},{"tag":"LineTo","args":[{"point":[640,832]}]},{"tag":"LineTo","args":[{"point":[640,800]}]},{"tag":"LineTo","args":[{"point":[704,800]}]}]},{"start":[704,736],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[704,768]}]},{"tag":"LineTo","args":[{"point":[672,768]}]},{"tag":"LineTo","args":[{"point":[672,736]}]},{"tag":"LineTo","args":[{"point":[704,736]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-forbidden","codePoint":59650},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[825,705],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[577,953]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[600,971],"end":[628,981.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[656,992],"end":[688,992]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,992],"end":[812.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,889],"end":[864,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,784],"end":[853.5,756]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[843,728],"end":[825,705]}]}]}]},{"start":[802,682],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,930]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[534,907],"end":[523,878]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,849],"end":[512,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,743],"end":[563.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,640],"end":[688,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[721,640],"end":[750,651]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[779,662],"end":[802,682]}]}]}]},{"start":[513,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[513,928]}]},{"tag":"LineTo","args":[{"point":[513,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[497,904],"end":[488.5,875.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,847],"end":[480,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,773],"end":[496,735]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[513,697],"end":[541,669]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[569,641],"end":[607,624]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,608],"end":[688,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[709,608],"end":[729.5,612]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[750,616],"end":[768,624]}]}]},{"tag":"LineTo","args":[{"point":[768,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,320],"end":[563,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,64]}]},{"tag":"LineTo","args":[{"point":[224,64]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[160,128]}]}]},{"tag":"LineTo","args":[{"point":[160,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[224,928]}]}]},{"tag":"LineTo","args":[{"point":[513,928]}]}]},{"start":[768,288],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[576,256]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-forbidden-outline","codePoint":59651},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[598,929],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[617,943],"end":[640,951.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[663,960],"end":[688,960]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[748,960],"end":[790,918]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,876],"end":[832,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,790],"end":[823.5,767.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[815,745],"end":[801,726]}]}]},{"tag":"LineTo","args":[{"point":[598,929]}]}]},{"start":[736,680.5],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[713,672],"end":[688,672]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[628,672],"end":[586,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,756],"end":[544,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,842],"end":[552.5,864.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[561,887],"end":[575,906]}]}]},{"tag":"LineTo","args":[{"point":[778,703]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[759,689],"end":[736,680.5]}]}]}]},{"start":[552,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[224,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[160,864]}]}]},{"tag":"LineTo","args":[{"point":[160,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[224,64]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]},{"tag":"LineTo","args":[{"point":[768,659]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[811,681],"end":[837.5,723]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,765],"end":[864,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,889],"end":[812.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,992],"end":[688,992]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[647,992],"end":[611.5,974.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,957],"end":[552,928]}]}]},{"tag":"LineTo","args":[{"point":[552,928]}]},{"tag":"LineTo","args":[{"point":[552,928]}]}]},{"start":[531,896],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[531,896]}]},{"tag":"LineTo","args":[{"point":[531,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[522,878],"end":[517,858]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,838],"end":[512,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,743],"end":[563.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,640],"end":[688,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[700,640],"end":[712.5,641.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[725,643],"end":[736,647]}]}]},{"tag":"LineTo","args":[{"point":[736,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[581,320],"end":[562.5,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,96]}]},{"tag":"LineTo","args":[{"point":[224,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,96],"end":[201.5,105.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,115],"end":[192,128]}]}]},{"tag":"LineTo","args":[{"point":[192,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,877],"end":[201.5,886.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,896],"end":[224,896]}]}]},{"tag":"LineTo","args":[{"point":[531,896]}]}]},{"start":[576,112],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[576,256]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[608,288]}]}]},{"tag":"LineTo","args":[{"point":[726,288]}]},{"tag":"LineTo","args":[{"point":[576,112]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-remove","codePoint":59652},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[513,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[513,928]}]},{"tag":"LineTo","args":[{"point":[513,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[497,904],"end":[488.5,875.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,847],"end":[480,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,773],"end":[496,735]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[513,697],"end":[541,669]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[569,641],"end":[607,624]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,608],"end":[688,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[709,608],"end":[729.5,612]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[750,616],"end":[768,624]}]}]},{"tag":"LineTo","args":[{"point":[768,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,320],"end":[563,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,64]}]},{"tag":"LineTo","args":[{"point":[224,64]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[160,128]}]}]},{"tag":"LineTo","args":[{"point":[160,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[224,928]}]}]},{"tag":"LineTo","args":[{"point":[513,928]}]}]},{"start":[768,288],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[576,256]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]}]},{"start":[812.5,940.5],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,889],"end":[864,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,743],"end":[812.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,640],"end":[688,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,640],"end":[563.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,743],"end":[512,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,889],"end":[563.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,992],"end":[688,992]}]}]},{"tag":"LineTo","args":[{"point":[688,992]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,992],"end":[812.5,940.5]}]}]}]},{"start":[800,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[800,832]}]},{"tag":"LineTo","args":[{"point":[576,832]}]},{"tag":"LineTo","args":[{"point":[576,800]}]},{"tag":"LineTo","args":[{"point":[800,800]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-remove-outline","codePoint":59653},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[552,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[224,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[160,864]}]}]},{"tag":"LineTo","args":[{"point":[160,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[224,64]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]},{"tag":"LineTo","args":[{"point":[768,659]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[811,681],"end":[837.5,723]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,765],"end":[864,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,889],"end":[812.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,992],"end":[688,992]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[647,992],"end":[611.5,974.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,957],"end":[552,928]}]}]},{"tag":"LineTo","args":[{"point":[552,928]}]},{"tag":"LineTo","args":[{"point":[552,928]}]}]},{"start":[531,896],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[531,896]}]},{"tag":"LineTo","args":[{"point":[531,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[522,878],"end":[517,858]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,838],"end":[512,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,743],"end":[563.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,640],"end":[688,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[700,640],"end":[712.5,641.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[725,643],"end":[736,647]}]}]},{"tag":"LineTo","args":[{"point":[736,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[581,320],"end":[562.5,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,96]}]},{"tag":"LineTo","args":[{"point":[224,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,96],"end":[201.5,105.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,115],"end":[192,128]}]}]},{"tag":"LineTo","args":[{"point":[192,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,877],"end":[201.5,886.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,896],"end":[224,896]}]}]},{"tag":"LineTo","args":[{"point":[531,896]}]}]},{"start":[576,112],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[576,256]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[608,288]}]}]},{"tag":"LineTo","args":[{"point":[726,288]}]},{"tag":"LineTo","args":[{"point":[576,112]}]}]},{"start":[790,918],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,876],"end":[832,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,756],"end":[790,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[748,672],"end":[688,672]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[628,672],"end":[586,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,756],"end":[544,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,876],"end":[586,918]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[628,960],"end":[688,960]}]}]},{"tag":"LineTo","args":[{"point":[688,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[748,960],"end":[790,918]}]}]}]},{"start":[800,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[800,832]}]},{"tag":"LineTo","args":[{"point":[576,832]}]},{"tag":"LineTo","args":[{"point":[576,800]}]},{"tag":"LineTo","args":[{"point":[800,800]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-checked","codePoint":59654},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[513,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[513,928]}]},{"tag":"LineTo","args":[{"point":[513,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[497,904],"end":[488.5,875.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,847],"end":[480,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,773],"end":[496,735]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[513,697],"end":[541,669]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[569,641],"end":[607,624]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,608],"end":[688,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[709,608],"end":[729.5,612]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[750,616],"end":[768,624]}]}]},{"tag":"LineTo","args":[{"point":[768,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,320],"end":[563,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,64]}]},{"tag":"LineTo","args":[{"point":[224,64]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[160,128]}]}]},{"tag":"LineTo","args":[{"point":[160,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[224,928]}]}]},{"tag":"LineTo","args":[{"point":[513,928]}]}]},{"start":[768,288],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[576,256]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]}]},{"start":[688,992],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,992],"end":[563.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,889],"end":[512,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,743],"end":[563.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,640],"end":[688,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,640],"end":[812.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,743],"end":[864,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,889],"end":[812.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,992],"end":[688,992]}]}]}]},{"start":[672,904],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[795,780]}]},{"tag":"LineTo","args":[{"point":[772,757]}]},{"tag":"LineTo","args":[{"point":[672,857]}]},{"tag":"LineTo","args":[{"point":[620,805]}]},{"tag":"LineTo","args":[{"point":[597,828]}]},{"tag":"LineTo","args":[{"point":[672,904]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-checked-outline","codePoint":59655},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[552,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[224,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[160,864]}]}]},{"tag":"LineTo","args":[{"point":[160,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[224,64]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]},{"tag":"LineTo","args":[{"point":[768,659]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[811,681],"end":[837.5,723]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,765],"end":[864,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,889],"end":[812.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,992],"end":[688,992]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[647,992],"end":[611.5,974.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,957],"end":[552,928]}]}]},{"tag":"LineTo","args":[{"point":[552,928]}]},{"tag":"LineTo","args":[{"point":[552,928]}]}]},{"start":[531,896],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[531,896]}]},{"tag":"LineTo","args":[{"point":[531,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[522,878],"end":[517,858]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,838],"end":[512,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,743],"end":[563.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,640],"end":[688,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[700,640],"end":[712.5,641.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[725,643],"end":[736,647]}]}]},{"tag":"LineTo","args":[{"point":[736,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[581,320],"end":[562.5,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,96]}]},{"tag":"LineTo","args":[{"point":[224,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,96],"end":[201.5,105.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,115],"end":[192,128]}]}]},{"tag":"LineTo","args":[{"point":[192,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,877],"end":[201.5,886.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,896],"end":[224,896]}]}]},{"tag":"LineTo","args":[{"point":[531,896]}]}]},{"start":[576,112],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[576,256]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[608,288]}]}]},{"tag":"LineTo","args":[{"point":[726,288]}]},{"tag":"LineTo","args":[{"point":[576,112]}]}]},{"start":[790,918],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,876],"end":[832,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,756],"end":[790,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[748,672],"end":[688,672]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[628,672],"end":[586,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,756],"end":[544,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,876],"end":[586,918]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[628,960],"end":[688,960]}]}]},{"tag":"LineTo","args":[{"point":[688,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[748,960],"end":[790,918]}]}]}]},{"start":[672,904],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[795,780]}]},{"tag":"LineTo","args":[{"point":[772,757]}]},{"tag":"LineTo","args":[{"point":[672,857]}]},{"tag":"LineTo","args":[{"point":[620,805]}]},{"tag":"LineTo","args":[{"point":[597,828]}]},{"tag":"LineTo","args":[{"point":[672,904]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-cancel","codePoint":59656},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[756,907],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[779,884]}]},{"tag":"LineTo","args":[{"point":[711,816]}]},{"tag":"LineTo","args":[{"point":[779,748]}]},{"tag":"LineTo","args":[{"point":[756,725]}]},{"tag":"LineTo","args":[{"point":[688,793]}]},{"tag":"LineTo","args":[{"point":[620,725]}]},{"tag":"LineTo","args":[{"point":[597,748]}]},{"tag":"LineTo","args":[{"point":[665,816]}]},{"tag":"LineTo","args":[{"point":[597,884]}]},{"tag":"LineTo","args":[{"point":[620,907]}]},{"tag":"LineTo","args":[{"point":[688,839]}]},{"tag":"LineTo","args":[{"point":[756,907]}]}]},{"start":[513,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[513,928]}]},{"tag":"LineTo","args":[{"point":[513,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[497,904],"end":[488.5,875.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,847],"end":[480,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,773],"end":[496,735]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[513,697],"end":[541,669]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[569,641],"end":[607,624]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,608],"end":[688,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[709,608],"end":[729.5,612]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[750,616],"end":[768,624]}]}]},{"tag":"LineTo","args":[{"point":[768,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,320],"end":[563,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,64]}]},{"tag":"LineTo","args":[{"point":[224,64]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[160,128]}]}]},{"tag":"LineTo","args":[{"point":[160,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[224,928]}]}]},{"tag":"LineTo","args":[{"point":[513,928]}]}]},{"start":[768,288],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[576,256]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]}]},{"start":[688,992],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,992],"end":[563.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,889],"end":[512,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,743],"end":[563.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,640],"end":[688,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,640],"end":[812.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,743],"end":[864,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,889],"end":[812.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,992],"end":[688,992]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-cancel-outline","codePoint":59657},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[756,907],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[779,884]}]},{"tag":"LineTo","args":[{"point":[711,816]}]},{"tag":"LineTo","args":[{"point":[779,748]}]},{"tag":"LineTo","args":[{"point":[756,725]}]},{"tag":"LineTo","args":[{"point":[688,793]}]},{"tag":"LineTo","args":[{"point":[620,725]}]},{"tag":"LineTo","args":[{"point":[597,748]}]},{"tag":"LineTo","args":[{"point":[665,816]}]},{"tag":"LineTo","args":[{"point":[597,884]}]},{"tag":"LineTo","args":[{"point":[620,907]}]},{"tag":"LineTo","args":[{"point":[688,839]}]},{"tag":"LineTo","args":[{"point":[756,907]}]}]},{"start":[552,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[224,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[160,864]}]}]},{"tag":"LineTo","args":[{"point":[160,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[224,64]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]},{"tag":"LineTo","args":[{"point":[768,659]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[811,681],"end":[837.5,723]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,765],"end":[864,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,889],"end":[812.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,992],"end":[688,992]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[647,992],"end":[611.5,974.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,957],"end":[552,928]}]}]},{"tag":"LineTo","args":[{"point":[552,928]}]},{"tag":"LineTo","args":[{"point":[552,928]}]}]},{"start":[531,896],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[531,896]}]},{"tag":"LineTo","args":[{"point":[531,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[522,878],"end":[517,858]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,838],"end":[512,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,743],"end":[563.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,640],"end":[688,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[700,640],"end":[712.5,641.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[725,643],"end":[736,647]}]}]},{"tag":"LineTo","args":[{"point":[736,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[581,320],"end":[562.5,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,96]}]},{"tag":"LineTo","args":[{"point":[224,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,96],"end":[201.5,105.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,115],"end":[192,128]}]}]},{"tag":"LineTo","args":[{"point":[192,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,877],"end":[201.5,886.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,896],"end":[224,896]}]}]},{"tag":"LineTo","args":[{"point":[531,896]}]}]},{"start":[576,112],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[576,256]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[608,288]}]}]},{"tag":"LineTo","args":[{"point":[726,288]}]},{"tag":"LineTo","args":[{"point":[576,112]}]}]},{"start":[790,918],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,876],"end":[832,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,756],"end":[790,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[748,672],"end":[688,672]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[628,672],"end":[586,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,756],"end":[544,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,876],"end":[586,918]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[628,960],"end":[688,960]}]}]},{"tag":"LineTo","args":[{"point":[688,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[748,960],"end":[790,918]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-error","codePoint":59658},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[448,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[656,576]}]},{"tag":"LineTo","args":[{"point":[768,766]}]},{"tag":"LineTo","args":[{"point":[768,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,320],"end":[563,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,64]}]},{"tag":"LineTo","args":[{"point":[224,64]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[160,128]}]}]},{"tag":"LineTo","args":[{"point":[160,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[224,928]}]}]},{"tag":"LineTo","args":[{"point":[448,928]}]}]},{"start":[768,288],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[576,256]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]}]},{"start":[448,992],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[864,992]}]},{"tag":"LineTo","args":[{"point":[656,640]}]},{"tag":"LineTo","args":[{"point":[448,992]}]}]},{"start":[672,768],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[672,864]}]},{"tag":"LineTo","args":[{"point":[640,864]}]},{"tag":"LineTo","args":[{"point":[640,768]}]},{"tag":"LineTo","args":[{"point":[672,768]}]}]},{"start":[672,896],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[672,928]}]},{"tag":"LineTo","args":[{"point":[640,928]}]},{"tag":"LineTo","args":[{"point":[640,896]}]},{"tag":"LineTo","args":[{"point":[672,896]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-error-outline","codePoint":59659},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[768,830],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[864,992]}]},{"tag":"LineTo","args":[{"point":[448,992]}]},{"tag":"LineTo","args":[{"point":[486,928]}]},{"tag":"LineTo","args":[{"point":[224,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[160,864]}]}]},{"tag":"LineTo","args":[{"point":[160,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[224,64]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]},{"tag":"LineTo","args":[{"point":[768,830]}]}]},{"start":[505,896],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[656,640]}]},{"tag":"LineTo","args":[{"point":[736,775]}]},{"tag":"LineTo","args":[{"point":[736,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[581,320],"end":[562.5,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,96]}]},{"tag":"LineTo","args":[{"point":[224,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,96],"end":[201.5,105.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,115],"end":[192,128]}]}]},{"tag":"LineTo","args":[{"point":[192,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,877],"end":[201.5,886.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,896],"end":[224,896]}]}]},{"tag":"LineTo","args":[{"point":[505,896]}]}]},{"start":[576,112],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[576,256]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[608,288]}]}]},{"tag":"LineTo","args":[{"point":[726,288]}]},{"tag":"LineTo","args":[{"point":[576,112]}]}]},{"start":[504,960],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[808,960]}]},{"tag":"LineTo","args":[{"point":[656,704]}]},{"tag":"LineTo","args":[{"point":[504,960]}]}]},{"start":[672,768],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[672,864]}]},{"tag":"LineTo","args":[{"point":[640,864]}]},{"tag":"LineTo","args":[{"point":[640,768]}]},{"tag":"LineTo","args":[{"point":[672,768]}]}]},{"start":[672,896],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[672,928]}]},{"tag":"LineTo","args":[{"point":[640,928]}]},{"tag":"LineTo","args":[{"point":[640,896]}]},{"tag":"LineTo","args":[{"point":[672,896]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-locked","codePoint":59660},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[768,320],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,584]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[757,580],"end":[745,578]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[733,576],"end":[720,576]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[660,576],"end":[618,618.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,661],"end":[576,720]}]}]},{"tag":"LineTo","args":[{"point":[576,739]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[562,744],"end":[553,756]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,768],"end":[544,784]}]}]},{"tag":"LineTo","args":[{"point":[544,928]}]},{"tag":"LineTo","args":[{"point":[224,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[160,864]}]}]},{"tag":"LineTo","args":[{"point":[160,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[224,64]}]}]},{"tag":"LineTo","args":[{"point":[544,64]}]},{"tag":"LineTo","args":[{"point":[544,256]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[563,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,320],"end":[608,320]}]}]},{"tag":"LineTo","args":[{"point":[768,320]}]}]},{"start":[576,64],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,288]}]},{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[576,256]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]}]},{"start":[608,720],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,674],"end":[641,641]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[674,608],"end":[720,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[766,608],"end":[799,641]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,674],"end":[832,720]}]}]},{"tag":"LineTo","args":[{"point":[832,768]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[845,768],"end":[854.5,777.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,787],"end":[864,800]}]}]},{"tag":"LineTo","args":[{"point":[864,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,973],"end":[854.5,982.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[845,992],"end":[832,992]}]}]},{"tag":"LineTo","args":[{"point":[608,992]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,992],"end":[585.5,982.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,973],"end":[576,960]}]}]},{"tag":"LineTo","args":[{"point":[576,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,787],"end":[585.5,777.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,768],"end":[608,768]}]}]},{"tag":"LineTo","args":[{"point":[608,720]}]}]},{"start":[640,768],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[800,768]}]},{"tag":"LineTo","args":[{"point":[800,720]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[800,687],"end":[776.5,663.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[753,640],"end":[720,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[687,640],"end":[663.5,663.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,687],"end":[640,720]}]}]},{"tag":"LineTo","args":[{"point":[640,768]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-locked-outline","codePoint":59661},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[576,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[224,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[160,864]}]}]},{"tag":"LineTo","args":[{"point":[160,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[224,64]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]},{"tag":"LineTo","args":[{"point":[768,619]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[796,632],"end":[814,659.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,687],"end":[832,720]}]}]},{"tag":"LineTo","args":[{"point":[832,768]}]},{"tag":"LineTo","args":[{"point":[832,768]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[845,768],"end":[854.5,777.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,787],"end":[864,800]}]}]},{"tag":"LineTo","args":[{"point":[864,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,973],"end":[854.5,982.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[845,992],"end":[832,992]}]}]},{"tag":"LineTo","args":[{"point":[608,992]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,992],"end":[585.5,982.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,973],"end":[576,960]}]}]},{"tag":"LineTo","args":[{"point":[576,928]}]}]},{"start":[576,896],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[576,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,787],"end":[585.5,777.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,768],"end":[608,768]}]}]},{"tag":"LineTo","args":[{"point":[608,768]}]},{"tag":"LineTo","args":[{"point":[608,720]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,674],"end":[641,641]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[674,608],"end":[720,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[724,608],"end":[728,608.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[732,609],"end":[736,609]}]}]},{"tag":"LineTo","args":[{"point":[736,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[581,320],"end":[562.5,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,96]}]},{"tag":"LineTo","args":[{"point":[224,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,96],"end":[201.5,105.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,115],"end":[192,128]}]}]},{"tag":"LineTo","args":[{"point":[192,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,877],"end":[201.5,886.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,896],"end":[224,896]}]}]},{"tag":"LineTo","args":[{"point":[576,896]}]}]},{"start":[800,768],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[800,720]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[800,687],"end":[776.5,663.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[753,640],"end":[720,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[687,640],"end":[663.5,663.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,687],"end":[640,720]}]}]},{"tag":"LineTo","args":[{"point":[640,768]}]},{"tag":"LineTo","args":[{"point":[800,768]}]}]},{"start":[576,112],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[576,256]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[608,288]}]}]},{"tag":"LineTo","args":[{"point":[726,288]}]},{"tag":"LineTo","args":[{"point":[576,112]}]}]},{"start":[624,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[617,800],"end":[612.5,804.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,809],"end":[608,816]}]}]},{"tag":"LineTo","args":[{"point":[608,944]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,951],"end":[613,955.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,960],"end":[624,960]}]}]},{"tag":"LineTo","args":[{"point":[816,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[823,960],"end":[827.5,955.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,951],"end":[832,944]}]}]},{"tag":"LineTo","args":[{"point":[832,816]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,809],"end":[827,804.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[822,800],"end":[816,800]}]}]},{"tag":"LineTo","args":[{"point":[624,800]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-unlocked","codePoint":59662},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[768,320],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,552]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[757,548],"end":[745,546]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[733,544],"end":[720,544]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[660,544],"end":[618,586]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,628],"end":[576,688]}]}]},{"tag":"LineTo","args":[{"point":[576,744]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[562,753],"end":[553,767.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,782],"end":[544,800]}]}]},{"tag":"LineTo","args":[{"point":[544,928]}]},{"tag":"LineTo","args":[{"point":[224,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[160,864]}]}]},{"tag":"LineTo","args":[{"point":[160,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[224,64]}]}]},{"tag":"LineTo","args":[{"point":[544,64]}]},{"tag":"LineTo","args":[{"point":[544,256]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[563,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,320],"end":[608,320]}]}]},{"tag":"LineTo","args":[{"point":[768,320]}]}]},{"start":[576,64],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,288]}]},{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[576,256]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]}]},{"start":[816,768],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[640,768]}]},{"tag":"LineTo","args":[{"point":[640,688]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,655],"end":[663.5,631.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[687,608],"end":[720,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[753,608],"end":[776.5,631.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[800,655],"end":[800,688]}]}]},{"tag":"LineTo","args":[{"point":[800,704]}]},{"tag":"LineTo","args":[{"point":[832,704]}]},{"tag":"LineTo","args":[{"point":[832,688]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,642],"end":[799,609]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[766,576],"end":[720,576]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[674,576],"end":[641,608.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,641],"end":[608,688]}]}]},{"tag":"LineTo","args":[{"point":[608,768]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,768],"end":[585.5,777.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,787],"end":[576,800]}]}]},{"tag":"LineTo","args":[{"point":[576,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,973],"end":[585.5,982.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,992],"end":[608,992]}]}]},{"tag":"LineTo","args":[{"point":[832,992]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[845,992],"end":[854.5,982.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,973],"end":[864,960]}]}]},{"tag":"LineTo","args":[{"point":[864,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,787],"end":[854.5,777.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[845,768],"end":[832,768]}]}]},{"tag":"LineTo","args":[{"point":[816,768]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-unlocked-outline","codePoint":59663},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[768,587],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,587]}]},{"tag":"LineTo","args":[{"point":[768,587]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[796,600],"end":[814,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,655],"end":[832,688]}]}]},{"tag":"LineTo","args":[{"point":[832,704]}]},{"tag":"LineTo","args":[{"point":[800,704]}]},{"tag":"LineTo","args":[{"point":[800,688]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[800,655],"end":[776.5,631.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[753,608],"end":[720,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[687,608],"end":[663.5,631.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,655],"end":[640,688]}]}]},{"tag":"LineTo","args":[{"point":[640,768]}]},{"tag":"LineTo","args":[{"point":[832,768]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[845,768],"end":[854.5,777.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,787],"end":[864,800]}]}]},{"tag":"LineTo","args":[{"point":[864,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,973],"end":[854.5,982.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[845,992],"end":[832,992]}]}]},{"tag":"LineTo","args":[{"point":[608,992]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,992],"end":[585.5,982.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,973],"end":[576,960]}]}]},{"tag":"LineTo","args":[{"point":[576,928]}]},{"tag":"LineTo","args":[{"point":[224,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[160,864]}]}]},{"tag":"LineTo","args":[{"point":[160,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[224,64]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]},{"tag":"LineTo","args":[{"point":[768,587]}]}]},{"start":[576,896],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[576,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,787],"end":[585.5,777.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,768],"end":[608,768]}]}]},{"tag":"LineTo","args":[{"point":[608,688]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,642],"end":[641,609]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[674,576],"end":[720,576]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[724,576],"end":[728,576.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[732,577],"end":[736,577]}]}]},{"tag":"LineTo","args":[{"point":[736,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[581,320],"end":[562.5,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,96]}]},{"tag":"LineTo","args":[{"point":[224,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,96],"end":[201.5,105.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,115],"end":[192,128]}]}]},{"tag":"LineTo","args":[{"point":[192,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,877],"end":[201.5,886.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,896],"end":[224,896]}]}]},{"tag":"LineTo","args":[{"point":[576,896]}]}]},{"start":[576,112],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[576,256]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[608,288]}]}]},{"tag":"LineTo","args":[{"point":[726,288]}]},{"tag":"LineTo","args":[{"point":[576,112]}]}]},{"start":[624,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[617,800],"end":[612.5,804.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,809],"end":[608,816]}]}]},{"tag":"LineTo","args":[{"point":[608,944]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,951],"end":[613,955.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,960],"end":[624,960]}]}]},{"tag":"LineTo","args":[{"point":[816,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[823,960],"end":[827.5,955.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,951],"end":[832,944]}]}]},{"tag":"LineTo","args":[{"point":[832,816]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,809],"end":[827,804.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[822,800],"end":[816,800]}]}]},{"tag":"LineTo","args":[{"point":[624,800]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-search","codePoint":59664},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[725,876],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[748,853]}]},{"tag":"LineTo","args":[{"point":[577,682]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[591,663],"end":[599.5,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,617],"end":[608,592]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,532],"end":[566,490]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[524,448],"end":[464,448]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[404,448],"end":[362,490]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,532],"end":[320,592]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,652],"end":[362,694]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[404,736],"end":[464,736]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[490,736],"end":[512.5,727.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[535,719],"end":[554,705]}]}]},{"tag":"LineTo","args":[{"point":[725,876]}]}]},{"start":[608,96],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,315],"end":[627,333.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[646,352],"end":[672,352]}]}]},{"tag":"LineTo","args":[{"point":[832,352]}]},{"tag":"LineTo","args":[{"point":[832,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,923],"end":[813.5,941.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[795,960],"end":[768,960]}]}]},{"tag":"LineTo","args":[{"point":[288,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[261,960],"end":[242.5,941]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,922],"end":[224,896]}]}]},{"tag":"LineTo","args":[{"point":[224,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,134],"end":[243,115]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[262,96],"end":[288,96]}]}]},{"tag":"LineTo","args":[{"point":[608,96]}]}]},{"start":[832,320],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[672,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[659,320],"end":[649.5,310.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,301],"end":[640,288]}]}]},{"tag":"LineTo","args":[{"point":[640,96]}]},{"tag":"LineTo","args":[{"point":[832,320]}]}]},{"start":[464,704],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[418,704],"end":[385,671]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[352,638],"end":[352,592]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[352,546],"end":[385,513]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[418,480],"end":[464,480]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[510,480],"end":[543,513]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,546],"end":[576,592]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,638],"end":[543,671]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[510,704],"end":[464,704]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-search-outline","codePoint":59665},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[725,876],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[748,853]}]},{"tag":"LineTo","args":[{"point":[577,682]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[591,663],"end":[599.5,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,617],"end":[608,592]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,532],"end":[566,490]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[524,448],"end":[464,448]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[404,448],"end":[362,490]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,532],"end":[320,592]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,652],"end":[362,694]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[404,736],"end":[464,736]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[490,736],"end":[512.5,727.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[535,719],"end":[554,705]}]}]},{"tag":"LineTo","args":[{"point":[725,876]}]}]},{"start":[624,96],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[288,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[262,96],"end":[243,115]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,134],"end":[224,160]}]}]},{"tag":"LineTo","args":[{"point":[224,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,922],"end":[242.5,941]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[261,960],"end":[288,960]}]}]},{"tag":"LineTo","args":[{"point":[768,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[795,960],"end":[813.5,941.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,923],"end":[832,896]}]}]},{"tag":"LineTo","args":[{"point":[832,320]}]},{"tag":"LineTo","args":[{"point":[640,96]}]},{"tag":"LineTo","args":[{"point":[624,96]}]}]},{"start":[608,128],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,315],"end":[626.5,333.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,352],"end":[672,352]}]}]},{"tag":"LineTo","args":[{"point":[800,352]}]},{"tag":"LineTo","args":[{"point":[800,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[800,909],"end":[790.5,918.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[781,928],"end":[768,928]}]}]},{"tag":"LineTo","args":[{"point":[288,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,928],"end":[265.5,918.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,909],"end":[256,896]}]}]},{"tag":"LineTo","args":[{"point":[256,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,147],"end":[265.5,137.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,128],"end":[288,128]}]}]},{"tag":"LineTo","args":[{"point":[608,128]}]}]},{"start":[640,144],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[790,320]}]},{"tag":"LineTo","args":[{"point":[672,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[659,320],"end":[649.5,310.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,301],"end":[640,288]}]}]},{"tag":"LineTo","args":[{"point":[640,144]}]}]},{"start":[464,704],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[418,704],"end":[385,671]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[352,638],"end":[352,592]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[352,546],"end":[385,513]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[418,480],"end":[464,480]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[510,480],"end":[543,513]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,546],"end":[576,592]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,638],"end":[543,671]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[510,704],"end":[464,704]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-code","codePoint":59666},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[608,96],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[288,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[262,96],"end":[243,115]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,134],"end":[224,160]}]}]},{"tag":"LineTo","args":[{"point":[224,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,922],"end":[242.5,941]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[261,960],"end":[288,960]}]}]},{"tag":"LineTo","args":[{"point":[768,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[795,960],"end":[813.5,941.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,923],"end":[832,896]}]}]},{"tag":"LineTo","args":[{"point":[832,352]}]},{"tag":"LineTo","args":[{"point":[672,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[646,352],"end":[627,333.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,315],"end":[608,288]}]}]},{"tag":"LineTo","args":[{"point":[608,96]}]}]},{"start":[832,320],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[672,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[659,320],"end":[649.5,310.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,301],"end":[640,288]}]}]},{"tag":"LineTo","args":[{"point":[640,96]}]},{"tag":"LineTo","args":[{"point":[832,320]}]}]},{"start":[288,704],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[416,576]}]},{"tag":"LineTo","args":[{"point":[438,598]}]},{"tag":"LineTo","args":[{"point":[333,704]}]},{"tag":"LineTo","args":[{"point":[438,810]}]},{"tag":"LineTo","args":[{"point":[416,832]}]},{"tag":"LineTo","args":[{"point":[288,704]}]}]},{"start":[618,810],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[723,704]}]},{"tag":"LineTo","args":[{"point":[618,598]}]},{"tag":"LineTo","args":[{"point":[640,576]}]},{"tag":"LineTo","args":[{"point":[768,704]}]},{"tag":"LineTo","args":[{"point":[640,832]}]},{"tag":"LineTo","args":[{"point":[618,810]}]}]},{"start":[576,576],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,832]}]},{"tag":"LineTo","args":[{"point":[480,832]}]},{"tag":"LineTo","args":[{"point":[544,576]}]},{"tag":"LineTo","args":[{"point":[576,576]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-code-outline","codePoint":59667},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[624,96],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[288,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[262,96],"end":[243,115]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,134],"end":[224,160]}]}]},{"tag":"LineTo","args":[{"point":[224,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,922],"end":[242.5,941]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[261,960],"end":[288,960]}]}]},{"tag":"LineTo","args":[{"point":[768,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[795,960],"end":[813.5,941.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,923],"end":[832,896]}]}]},{"tag":"LineTo","args":[{"point":[832,320]}]},{"tag":"LineTo","args":[{"point":[640,96]}]},{"tag":"LineTo","args":[{"point":[624,96]}]}]},{"start":[608,128],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,315],"end":[626.5,333.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,352],"end":[672,352]}]}]},{"tag":"LineTo","args":[{"point":[800,352]}]},{"tag":"LineTo","args":[{"point":[800,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[800,909],"end":[790.5,918.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[781,928],"end":[768,928]}]}]},{"tag":"LineTo","args":[{"point":[288,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,928],"end":[265.5,918.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,909],"end":[256,896]}]}]},{"tag":"LineTo","args":[{"point":[256,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,147],"end":[265.5,137.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,128],"end":[288,128]}]}]},{"tag":"LineTo","args":[{"point":[608,128]}]}]},{"start":[640,144],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[790,320]}]},{"tag":"LineTo","args":[{"point":[672,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[659,320],"end":[649.5,310.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,301],"end":[640,288]}]}]},{"tag":"LineTo","args":[{"point":[640,144]}]}]},{"start":[576,576],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,832]}]},{"tag":"LineTo","args":[{"point":[480,832]}]},{"tag":"LineTo","args":[{"point":[544,576]}]},{"tag":"LineTo","args":[{"point":[576,576]}]}]},{"start":[438,778],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[365,704]}]},{"tag":"LineTo","args":[{"point":[438,630]}]},{"tag":"LineTo","args":[{"point":[416,608]}]},{"tag":"LineTo","args":[{"point":[320,704]}]},{"tag":"LineTo","args":[{"point":[416,800]}]},{"tag":"LineTo","args":[{"point":[438,778]}]}]},{"start":[618,778],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[691,704]}]},{"tag":"LineTo","args":[{"point":[618,630]}]},{"tag":"LineTo","args":[{"point":[640,608]}]},{"tag":"LineTo","args":[{"point":[736,704]}]},{"tag":"LineTo","args":[{"point":[640,800]}]},{"tag":"LineTo","args":[{"point":[618,778]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-text","codePoint":59668},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[608,96],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[288,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[262,96],"end":[243,115]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,134],"end":[224,160]}]}]},{"tag":"LineTo","args":[{"point":[224,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,922],"end":[242.5,941]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[261,960],"end":[288,960]}]}]},{"tag":"LineTo","args":[{"point":[768,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[795,960],"end":[813.5,941.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,923],"end":[832,896]}]}]},{"tag":"LineTo","args":[{"point":[832,352]}]},{"tag":"LineTo","args":[{"point":[672,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[646,352],"end":[627,333.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,315],"end":[608,288]}]}]},{"tag":"LineTo","args":[{"point":[608,96]}]}]},{"start":[480,192],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[480,256]}]},{"tag":"LineTo","args":[{"point":[448,256]}]},{"tag":"LineTo","args":[{"point":[448,224]}]},{"tag":"LineTo","args":[{"point":[416,224]}]},{"tag":"LineTo","args":[{"point":[416,352]}]},{"tag":"LineTo","args":[{"point":[384,352]}]},{"tag":"LineTo","args":[{"point":[384,224]}]},{"tag":"LineTo","args":[{"point":[352,224]}]},{"tag":"LineTo","args":[{"point":[352,256]}]},{"tag":"LineTo","args":[{"point":[320,256]}]},{"tag":"LineTo","args":[{"point":[320,192]}]},{"tag":"LineTo","args":[{"point":[480,192]}]}]},{"start":[832,320],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[672,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[659,320],"end":[649.5,310.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,301],"end":[640,288]}]}]},{"tag":"LineTo","args":[{"point":[640,96]}]},{"tag":"LineTo","args":[{"point":[832,320]}]}]},{"start":[736,512],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,544]}]},{"tag":"LineTo","args":[{"point":[320,544]}]},{"tag":"LineTo","args":[{"point":[320,512]}]},{"tag":"LineTo","args":[{"point":[736,512]}]}]},{"start":[736,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,448]}]},{"tag":"LineTo","args":[{"point":[320,448]}]},{"tag":"LineTo","args":[{"point":[320,416]}]},{"tag":"LineTo","args":[{"point":[736,416]}]}]},{"start":[736,608],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,640]}]},{"tag":"LineTo","args":[{"point":[320,640]}]},{"tag":"LineTo","args":[{"point":[320,608]}]},{"tag":"LineTo","args":[{"point":[736,608]}]}]},{"start":[736,704],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,736]}]},{"tag":"LineTo","args":[{"point":[320,736]}]},{"tag":"LineTo","args":[{"point":[320,704]}]},{"tag":"LineTo","args":[{"point":[736,704]}]}]},{"start":[736,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,832]}]},{"tag":"LineTo","args":[{"point":[320,832]}]},{"tag":"LineTo","args":[{"point":[320,800]}]},{"tag":"LineTo","args":[{"point":[736,800]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-text-outline","codePoint":59669},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[624,96],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[288,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[262,96],"end":[243,115]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,134],"end":[224,160]}]}]},{"tag":"LineTo","args":[{"point":[224,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,922],"end":[242.5,941]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[261,960],"end":[288,960]}]}]},{"tag":"LineTo","args":[{"point":[768,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[795,960],"end":[813.5,941.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,923],"end":[832,896]}]}]},{"tag":"LineTo","args":[{"point":[832,320]}]},{"tag":"LineTo","args":[{"point":[640,96]}]},{"tag":"LineTo","args":[{"point":[624,96]}]}]},{"start":[608,128],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,315],"end":[626.5,333.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,352],"end":[672,352]}]}]},{"tag":"LineTo","args":[{"point":[800,352]}]},{"tag":"LineTo","args":[{"point":[800,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[800,909],"end":[790.5,918.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[781,928],"end":[768,928]}]}]},{"tag":"LineTo","args":[{"point":[288,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,928],"end":[265.5,918.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,909],"end":[256,896]}]}]},{"tag":"LineTo","args":[{"point":[256,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,147],"end":[265.5,137.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,128],"end":[288,128]}]}]},{"tag":"LineTo","args":[{"point":[608,128]}]}]},{"start":[640,144],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[790,320]}]},{"tag":"LineTo","args":[{"point":[672,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[659,320],"end":[649.5,310.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,301],"end":[640,288]}]}]},{"tag":"LineTo","args":[{"point":[640,144]}]}]},{"start":[480,192],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[480,256]}]},{"tag":"LineTo","args":[{"point":[448,256]}]},{"tag":"LineTo","args":[{"point":[448,224]}]},{"tag":"LineTo","args":[{"point":[416,224]}]},{"tag":"LineTo","args":[{"point":[416,352]}]},{"tag":"LineTo","args":[{"point":[384,352]}]},{"tag":"LineTo","args":[{"point":[384,224]}]},{"tag":"LineTo","args":[{"point":[352,224]}]},{"tag":"LineTo","args":[{"point":[352,256]}]},{"tag":"LineTo","args":[{"point":[320,256]}]},{"tag":"LineTo","args":[{"point":[320,192]}]},{"tag":"LineTo","args":[{"point":[480,192]}]}]},{"start":[736,512],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,544]}]},{"tag":"LineTo","args":[{"point":[320,544]}]},{"tag":"LineTo","args":[{"point":[320,512]}]},{"tag":"LineTo","args":[{"point":[736,512]}]}]},{"start":[736,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,448]}]},{"tag":"LineTo","args":[{"point":[320,448]}]},{"tag":"LineTo","args":[{"point":[320,416]}]},{"tag":"LineTo","args":[{"point":[736,416]}]}]},{"start":[736,608],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,640]}]},{"tag":"LineTo","args":[{"point":[320,640]}]},{"tag":"LineTo","args":[{"point":[320,608]}]},{"tag":"LineTo","args":[{"point":[736,608]}]}]},{"start":[736,704],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,736]}]},{"tag":"LineTo","args":[{"point":[320,736]}]},{"tag":"LineTo","args":[{"point":[320,704]}]},{"tag":"LineTo","args":[{"point":[736,704]}]}]},{"start":[736,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,832]}]},{"tag":"LineTo","args":[{"point":[320,832]}]},{"tag":"LineTo","args":[{"point":[320,800]}]},{"tag":"LineTo","args":[{"point":[736,800]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"text_format","codePoint":59670},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[592,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[432,491]}]},{"tag":"LineTo","args":[{"point":[512,277]}]},{"tag":"LineTo","args":[{"point":[592,491]}]}]},{"start":[618,567],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[658,661]}]},{"tag":"LineTo","args":[{"point":[746,661]}]},{"tag":"LineTo","args":[{"point":[544,191]}]},{"tag":"LineTo","args":[{"point":[480,191]}]},{"tag":"LineTo","args":[{"point":[278,661]}]},{"tag":"LineTo","args":[{"point":[366,661]}]},{"tag":"LineTo","args":[{"point":[406,567]}]},{"tag":"LineTo","args":[{"point":[618,567]}]}]},{"start":[214,831],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[810,831]}]},{"tag":"LineTo","args":[{"point":[810,747]}]},{"tag":"LineTo","args":[{"point":[214,747]}]},{"tag":"LineTo","args":[{"point":[214,831]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"chat_bubble","codePoint":59671},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[170,107],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,107],"end":[111,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,157],"end":[86,191]}]}]},{"tag":"LineTo","args":[{"point":[86,959]}]},{"tag":"LineTo","args":[{"point":[256,789]}]},{"tag":"LineTo","args":[{"point":[854,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,789],"end":[913,763]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,737],"end":[938,703]}]}]},{"tag":"LineTo","args":[{"point":[938,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,157],"end":[913,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,107],"end":[854,107]}]}]},{"tag":"LineTo","args":[{"point":[170,107]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"movie","codePoint":59672},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[854,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[726,363]}]},{"tag":"LineTo","args":[{"point":[640,191]}]},{"tag":"LineTo","args":[{"point":[554,191]}]},{"tag":"LineTo","args":[{"point":[640,363]}]},{"tag":"LineTo","args":[{"point":[512,363]}]},{"tag":"LineTo","args":[{"point":[426,191]}]},{"tag":"LineTo","args":[{"point":[342,191]}]},{"tag":"LineTo","args":[{"point":[426,363]}]},{"tag":"LineTo","args":[{"point":[298,363]}]},{"tag":"LineTo","args":[{"point":[214,191]}]},{"tag":"LineTo","args":[{"point":[170,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,191],"end":[111,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,243],"end":[86,277]}]}]},{"tag":"LineTo","args":[{"point":[86,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,823],"end":[111,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,875],"end":[170,875]}]}]},{"tag":"LineTo","args":[{"point":[854,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,875],"end":[913,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,823],"end":[938,789]}]}]},{"tag":"LineTo","args":[{"point":[938,191]}]},{"tag":"LineTo","args":[{"point":[768,191]}]},{"tag":"LineTo","args":[{"point":[854,363]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"videocam","codePoint":59673},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[726,319],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,301],"end":[713,289]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[700,277],"end":[682,277]}]}]},{"tag":"LineTo","args":[{"point":[170,277]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[152,277],"end":[140,289]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,301],"end":[128,319]}]}]},{"tag":"LineTo","args":[{"point":[128,747]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,765],"end":[140,777]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[152,789],"end":[170,789]}]}]},{"tag":"LineTo","args":[{"point":[682,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[700,789],"end":[713,777]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,765],"end":[726,747]}]}]},{"tag":"LineTo","args":[{"point":[726,597]}]},{"tag":"LineTo","args":[{"point":[896,767]}]},{"tag":"LineTo","args":[{"point":[896,299]}]},{"tag":"LineTo","args":[{"point":[726,469]}]},{"tag":"LineTo","args":[{"point":[726,319]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-add","codePoint":59674},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[576,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[576,832]}]},{"tag":"LineTo","args":[{"point":[672,832]}]},{"tag":"LineTo","args":[{"point":[672,928]}]},{"tag":"LineTo","args":[{"point":[704,928]}]},{"tag":"LineTo","args":[{"point":[704,832]}]},{"tag":"LineTo","args":[{"point":[800,832]}]},{"tag":"LineTo","args":[{"point":[800,800]}]},{"tag":"LineTo","args":[{"point":[704,800]}]},{"tag":"LineTo","args":[{"point":[704,704]}]},{"tag":"LineTo","args":[{"point":[672,704]}]},{"tag":"LineTo","args":[{"point":[672,800]}]},{"tag":"LineTo","args":[{"point":[576,800]}]}]},{"start":[513,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[513,928]}]},{"tag":"LineTo","args":[{"point":[513,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[497,904],"end":[488.5,875.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,847],"end":[480,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,773],"end":[496,735]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[513,697],"end":[541,669]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[569,641],"end":[607,624]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,608],"end":[688,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[709,608],"end":[729.5,612]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[750,616],"end":[768,624]}]}]},{"tag":"LineTo","args":[{"point":[768,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,320],"end":[563,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,64]}]},{"tag":"LineTo","args":[{"point":[224,64]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[160,128]}]}]},{"tag":"LineTo","args":[{"point":[160,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[224,928]}]}]},{"tag":"LineTo","args":[{"point":[513,928]}]}]},{"start":[768,288],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[576,256]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]}]},{"start":[688,992],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,992],"end":[563.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,889],"end":[512,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,743],"end":[563.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,640],"end":[688,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,640],"end":[812.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,743],"end":[864,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,889],"end":[812.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,992],"end":[688,992]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-add-outline","codePoint":59675},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[576,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[576,832]}]},{"tag":"LineTo","args":[{"point":[672,832]}]},{"tag":"LineTo","args":[{"point":[672,928]}]},{"tag":"LineTo","args":[{"point":[704,928]}]},{"tag":"LineTo","args":[{"point":[704,832]}]},{"tag":"LineTo","args":[{"point":[800,832]}]},{"tag":"LineTo","args":[{"point":[800,800]}]},{"tag":"LineTo","args":[{"point":[704,800]}]},{"tag":"LineTo","args":[{"point":[704,704]}]},{"tag":"LineTo","args":[{"point":[672,704]}]},{"tag":"LineTo","args":[{"point":[672,800]}]},{"tag":"LineTo","args":[{"point":[576,800]}]}]},{"start":[552,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[224,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,928],"end":[178.5,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,890],"end":[160,864]}]}]},{"tag":"LineTo","args":[{"point":[160,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,102],"end":[179,83]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,64],"end":[224,64]}]}]},{"tag":"LineTo","args":[{"point":[576,64]}]},{"tag":"LineTo","args":[{"point":[768,288]}]},{"tag":"LineTo","args":[{"point":[768,659]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[811,681],"end":[837.5,723]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,765],"end":[864,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,889],"end":[812.5,940.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[761,992],"end":[688,992]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[647,992],"end":[611.5,974.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,957],"end":[552,928]}]}]},{"tag":"LineTo","args":[{"point":[552,928]}]},{"tag":"LineTo","args":[{"point":[552,928]}]}]},{"start":[531,896],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[531,896]}]},{"tag":"LineTo","args":[{"point":[531,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[522,878],"end":[517,858]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,838],"end":[512,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,743],"end":[563.5,691.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,640],"end":[688,640]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[700,640],"end":[712.5,641.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[725,643],"end":[736,647]}]}]},{"tag":"LineTo","args":[{"point":[736,320]}]},{"tag":"LineTo","args":[{"point":[608,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[581,320],"end":[562.5,301.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,283],"end":[544,256]}]}]},{"tag":"LineTo","args":[{"point":[544,96]}]},{"tag":"LineTo","args":[{"point":[224,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,96],"end":[201.5,105.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,115],"end":[192,128]}]}]},{"tag":"LineTo","args":[{"point":[192,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,877],"end":[201.5,886.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[211,896],"end":[224,896]}]}]},{"tag":"LineTo","args":[{"point":[531,896]}]}]},{"start":[576,112],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[576,256]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,269],"end":[585.5,278.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,288],"end":[608,288]}]}]},{"tag":"LineTo","args":[{"point":[726,288]}]},{"tag":"LineTo","args":[{"point":[576,112]}]}]},{"start":[790,918],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,876],"end":[832,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,756],"end":[790,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[748,672],"end":[688,672]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[628,672],"end":[586,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,756],"end":[544,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,876],"end":[586,918]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[628,960],"end":[688,960]}]}]},{"tag":"LineTo","args":[{"point":[688,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[748,960],"end":[790,918]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"documents","codePoint":59676},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[736,864],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,987],"end":[717.5,1005.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[699,1024],"end":[672,1024]}]}]},{"tag":"LineTo","args":[{"point":[192,1024]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[165,1024],"end":[146.5,1005]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,986],"end":[128,960]}]}]},{"tag":"LineTo","args":[{"point":[128,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,198],"end":[147,179]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[166,160],"end":[192,160]}]}]},{"tag":"LineTo","args":[{"point":[512,160]}]},{"tag":"LineTo","args":[{"point":[512,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,379],"end":[531,397.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[550,416],"end":[576,416]}]}]},{"tag":"LineTo","args":[{"point":[736,416]}]},{"tag":"LineTo","args":[{"point":[736,864]}]},{"tag":"LineTo","args":[{"point":[768,864]}]},{"tag":"LineTo","args":[{"point":[768,371]}]},{"tag":"LineTo","args":[{"point":[560,128]}]},{"tag":"LineTo","args":[{"point":[320,128]}]},{"tag":"LineTo","args":[{"point":[320,64]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,38],"end":[339,19]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[358,0],"end":[384,0]}]}]},{"tag":"LineTo","args":[{"point":[704,0]}]},{"tag":"LineTo","args":[{"point":[704,192]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,219],"end":[723,237.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[742,256],"end":[768,256]}]}]},{"tag":"LineTo","args":[{"point":[928,256]}]},{"tag":"LineTo","args":[{"point":[928,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,827],"end":[909.5,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[891,864],"end":[864,864]}]}]},{"tag":"LineTo","args":[{"point":[736,864]}]}]},{"start":[928,224],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[755,224],"end":[745.5,214.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,205],"end":[736,192]}]}]},{"tag":"LineTo","args":[{"point":[736,0]}]},{"tag":"LineTo","args":[{"point":[928,224]}]}]},{"start":[736,384],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[576,384]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[563,384],"end":[553.5,374.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,365],"end":[544,352]}]}]},{"tag":"LineTo","args":[{"point":[544,160]}]},{"tag":"LineTo","args":[{"point":[736,384]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"documents-outline","codePoint":59677},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[736,384],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[544,160]}]},{"tag":"LineTo","args":[{"point":[352,160]}]},{"tag":"LineTo","args":[{"point":[352,64]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[352,51],"end":[361.5,41.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[371,32],"end":[384,32]}]}]},{"tag":"LineTo","args":[{"point":[704,32]}]},{"tag":"LineTo","args":[{"point":[704,192]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,219],"end":[722.5,237.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[741,256],"end":[768,256]}]}]},{"tag":"LineTo","args":[{"point":[896,256]}]},{"tag":"LineTo","args":[{"point":[896,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,813],"end":[886.5,822.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[877,832],"end":[864,832]}]}]},{"tag":"LineTo","args":[{"point":[736,832]}]},{"tag":"LineTo","args":[{"point":[736,400]}]},{"tag":"LineTo","args":[{"point":[736,384]}]}]},{"start":[320,160],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[192,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[166,160],"end":[147,179]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,198],"end":[128,224]}]}]},{"tag":"LineTo","args":[{"point":[128,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,986],"end":[146.5,1005]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[165,1024],"end":[192,1024]}]}]},{"tag":"LineTo","args":[{"point":[672,1024]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[699,1024],"end":[717.5,1005.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,987],"end":[736,960]}]}]},{"tag":"LineTo","args":[{"point":[736,864]}]},{"tag":"LineTo","args":[{"point":[864,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[891,864],"end":[909.5,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,827],"end":[928,800]}]}]},{"tag":"LineTo","args":[{"point":[928,224]}]},{"tag":"LineTo","args":[{"point":[736,0]}]},{"tag":"LineTo","args":[{"point":[384,0]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[358,0],"end":[339,19]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,38],"end":[320,64]}]}]},{"tag":"LineTo","args":[{"point":[320,160]}]}]},{"start":[736,48],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[886,224]}]},{"tag":"LineTo","args":[{"point":[768,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[755,224],"end":[745.5,214.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,205],"end":[736,192]}]}]},{"tag":"LineTo","args":[{"point":[736,48]}]}]},{"start":[512,192],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,379],"end":[530.5,397.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[549,416],"end":[576,416]}]}]},{"tag":"LineTo","args":[{"point":[704,416]}]},{"tag":"LineTo","args":[{"point":[704,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,973],"end":[694.5,982.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[685,992],"end":[672,992]}]}]},{"tag":"LineTo","args":[{"point":[192,992]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[179,992],"end":[169.5,982.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,973],"end":[160,960]}]}]},{"tag":"LineTo","args":[{"point":[160,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,211],"end":[169.5,201.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[179,192],"end":[192,192]}]}]},{"tag":"LineTo","args":[{"point":[512,192]}]}]},{"start":[544,208],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[694,384]}]},{"tag":"LineTo","args":[{"point":[576,384]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[563,384],"end":[553.5,374.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,365],"end":[544,352]}]}]},{"tag":"LineTo","args":[{"point":[544,208]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder-information","codePoint":59678},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[673,832],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[673,832]}]},{"tag":"LineTo","args":[{"point":[673,832]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[657,808],"end":[648.5,779.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,751],"end":[640,720]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,677],"end":[656,639]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[673,601],"end":[701,573]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[729,545],"end":[767,528]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[805,512],"end":[848,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[869,512],"end":[889.5,516]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[910,520],"end":[928,528]}]}]},{"tag":"LineTo","args":[{"point":[928,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,293],"end":[909,274.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[890,256],"end":[864,256]}]}]},{"tag":"LineTo","args":[{"point":[480,256]}]},{"tag":"LineTo","args":[{"point":[416,128]}]},{"tag":"LineTo","args":[{"point":[64,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[38,128],"end":[19,146.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,165],"end":[0,192]}]}]},{"tag":"LineTo","args":[{"point":[0,768]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,795],"end":[19,813.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[38,832],"end":[64,832]}]}]},{"tag":"LineTo","args":[{"point":[673,832]}]}]},{"start":[928,384],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[928,416]}]},{"tag":"LineTo","args":[{"point":[0,416]}]},{"tag":"LineTo","args":[{"point":[0,384]}]},{"tag":"LineTo","args":[{"point":[928,384]}]}]},{"start":[972.5,844.5],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,793],"end":[1024,720]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,647],"end":[972.5,595.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[921,544],"end":[848,544]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[775,544],"end":[723.5,595.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,647],"end":[672,720]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,793],"end":[723.5,844.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[775,896],"end":[848,896]}]}]},{"tag":"LineTo","args":[{"point":[848,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[921,896],"end":[972.5,844.5]}]}]}]},{"start":[864,704],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[864,768]}]},{"tag":"LineTo","args":[{"point":[896,768]}]},{"tag":"LineTo","args":[{"point":[896,800]}]},{"tag":"LineTo","args":[{"point":[800,800]}]},{"tag":"LineTo","args":[{"point":[800,768]}]},{"tag":"LineTo","args":[{"point":[832,768]}]},{"tag":"LineTo","args":[{"point":[832,736]}]},{"tag":"LineTo","args":[{"point":[800,736]}]},{"tag":"LineTo","args":[{"point":[800,704]}]},{"tag":"LineTo","args":[{"point":[864,704]}]}]},{"start":[864,640],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[864,672]}]},{"tag":"LineTo","args":[{"point":[832,672]}]},{"tag":"LineTo","args":[{"point":[832,640]}]},{"tag":"LineTo","args":[{"point":[864,640]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder-information-outline","codePoint":59679},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[64,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[51,800],"end":[41.5,790.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,781],"end":[32,768]}]}]},{"tag":"LineTo","args":[{"point":[32,416]}]},{"tag":"LineTo","args":[{"point":[896,416]}]},{"tag":"LineTo","args":[{"point":[896,551]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[885,547],"end":[872.5,545.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[860,544],"end":[848,544]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[775,544],"end":[723.5,595.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,647],"end":[672,720]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,742],"end":[677,762]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,782],"end":[691,800]}]}]},{"tag":"LineTo","args":[{"point":[691,800]}]},{"tag":"LineTo","args":[{"point":[64,800]}]}]},{"start":[712,832],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[712,832]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,861],"end":[771.5,878.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[807,896],"end":[848,896]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[921,896],"end":[972.5,844.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,793],"end":[1024,720]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,669],"end":[997.5,627]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[971,585],"end":[928,563]}]}]},{"tag":"LineTo","args":[{"point":[928,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,293],"end":[909,274.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[890,256],"end":[864,256]}]}]},{"tag":"LineTo","args":[{"point":[480,256]}]},{"tag":"LineTo","args":[{"point":[416,128]}]},{"tag":"LineTo","args":[{"point":[64,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[38,128],"end":[19,146.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,165],"end":[0,192]}]}]},{"tag":"LineTo","args":[{"point":[0,768]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,795],"end":[19,813.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[38,832],"end":[64,832]}]}]},{"tag":"LineTo","args":[{"point":[712,832]}]}]},{"start":[32,384],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[32,192]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,179],"end":[41.5,169.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[51,160],"end":[64,160]}]}]},{"tag":"LineTo","args":[{"point":[397,160]}]},{"tag":"LineTo","args":[{"point":[460,288]}]},{"tag":"LineTo","args":[{"point":[864,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[877,288],"end":[886.5,297.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,307],"end":[896,320]}]}]},{"tag":"LineTo","args":[{"point":[896,384]}]},{"tag":"LineTo","args":[{"point":[32,384]}]}]},{"start":[848,864],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[788,864],"end":[746,822]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,780],"end":[704,720]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,660],"end":[746,618]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[788,576],"end":[848,576]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[908,576],"end":[950,618]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[992,660],"end":[992,720]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[992,780],"end":[950,822]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[908,864],"end":[848,864]}]}]}]},{"start":[864,640],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[864,672]}]},{"tag":"LineTo","args":[{"point":[832,672]}]},{"tag":"LineTo","args":[{"point":[832,640]}]},{"tag":"LineTo","args":[{"point":[864,640]}]}]},{"start":[864,704],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[864,768]}]},{"tag":"LineTo","args":[{"point":[896,768]}]},{"tag":"LineTo","args":[{"point":[896,800]}]},{"tag":"LineTo","args":[{"point":[800,800]}]},{"tag":"LineTo","args":[{"point":[800,768]}]},{"tag":"LineTo","args":[{"point":[832,768]}]},{"tag":"LineTo","args":[{"point":[832,736]}]},{"tag":"LineTo","args":[{"point":[800,736]}]},{"tag":"LineTo","args":[{"point":[800,704]}]},{"tag":"LineTo","args":[{"point":[864,704]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder-remove","codePoint":59680},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[673,864],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[673,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[657,840],"end":[648.5,811.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,783],"end":[640,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,709],"end":[656,671]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[673,633],"end":[701,605]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[729,577],"end":[767,560]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[805,544],"end":[848,544]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[869,544],"end":[889.5,548]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[910,552],"end":[928,560]}]}]},{"tag":"LineTo","args":[{"point":[928,448]}]},{"tag":"LineTo","args":[{"point":[0,448]}]},{"tag":"LineTo","args":[{"point":[0,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,827],"end":[19,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[38,864],"end":[64,864]}]}]},{"tag":"LineTo","args":[{"point":[673,864]}]}]},{"start":[928,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[928,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,325],"end":[909,306.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[890,288],"end":[864,288]}]}]},{"tag":"LineTo","args":[{"point":[480,288]}]},{"tag":"LineTo","args":[{"point":[416,160]}]},{"tag":"LineTo","args":[{"point":[64,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[38,160],"end":[19,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,197],"end":[0,224]}]}]},{"tag":"LineTo","args":[{"point":[0,416]}]},{"tag":"LineTo","args":[{"point":[928,416]}]}]},{"start":[972.5,876.5],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,825],"end":[1024,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,679],"end":[972.5,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[921,576],"end":[848,576]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[775,576],"end":[723.5,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,679],"end":[672,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,825],"end":[723.5,876.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[775,928],"end":[848,928]}]}]},{"tag":"LineTo","args":[{"point":[848,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[921,928],"end":[972.5,876.5]}]}]}]},{"start":[960,736],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[960,768]}]},{"tag":"LineTo","args":[{"point":[736,768]}]},{"tag":"LineTo","args":[{"point":[736,736]}]},{"tag":"LineTo","args":[{"point":[960,736]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder-remove-outline","codePoint":59681},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[64,832],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[51,832],"end":[41.5,822.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,813],"end":[32,800]}]}]},{"tag":"LineTo","args":[{"point":[32,448]}]},{"tag":"LineTo","args":[{"point":[896,448]}]},{"tag":"LineTo","args":[{"point":[896,583]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[885,579],"end":[872.5,577.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[860,576],"end":[848,576]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[775,576],"end":[723.5,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,679],"end":[672,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,774],"end":[677,794]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,814],"end":[691,832]}]}]},{"tag":"LineTo","args":[{"point":[691,832]}]},{"tag":"LineTo","args":[{"point":[64,832]}]}]},{"start":[712,864],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[712,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,893],"end":[771.5,910.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[807,928],"end":[848,928]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[921,928],"end":[972.5,876.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,825],"end":[1024,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,701],"end":[997.5,659]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[971,617],"end":[928,595]}]}]},{"tag":"LineTo","args":[{"point":[928,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,325],"end":[909,306.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[890,288],"end":[864,288]}]}]},{"tag":"LineTo","args":[{"point":[480,288]}]},{"tag":"LineTo","args":[{"point":[416,160]}]},{"tag":"LineTo","args":[{"point":[64,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[38,160],"end":[19,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,197],"end":[0,224]}]}]},{"tag":"LineTo","args":[{"point":[0,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,827],"end":[19,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[38,864],"end":[64,864]}]}]},{"tag":"LineTo","args":[{"point":[712,864]}]}]},{"start":[32,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[32,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,211],"end":[41.5,201.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[51,192],"end":[64,192]}]}]},{"tag":"LineTo","args":[{"point":[397,192]}]},{"tag":"LineTo","args":[{"point":[460,320]}]},{"tag":"LineTo","args":[{"point":[864,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[877,320],"end":[886.5,329.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,339],"end":[896,352]}]}]},{"tag":"LineTo","args":[{"point":[896,416]}]},{"tag":"LineTo","args":[{"point":[32,416]}]}]},{"start":[848,896],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[788,896],"end":[746,854]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,812],"end":[704,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,692],"end":[746,650]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[788,608],"end":[848,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[908,608],"end":[950,650]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[992,692],"end":[992,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[992,812],"end":[950,854]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[908,896],"end":[848,896]}]}]}]},{"start":[960,736],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[960,768]}]},{"tag":"LineTo","args":[{"point":[736,768]}]},{"tag":"LineTo","args":[{"point":[736,736]}]},{"tag":"LineTo","args":[{"point":[960,736]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder-add","codePoint":59682},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[832,864],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[864,864]}]},{"tag":"LineTo","args":[{"point":[864,768]}]},{"tag":"LineTo","args":[{"point":[960,768]}]},{"tag":"LineTo","args":[{"point":[960,736]}]},{"tag":"LineTo","args":[{"point":[864,736]}]},{"tag":"LineTo","args":[{"point":[864,640]}]},{"tag":"LineTo","args":[{"point":[832,640]}]},{"tag":"LineTo","args":[{"point":[832,736]}]},{"tag":"LineTo","args":[{"point":[736,736]}]},{"tag":"LineTo","args":[{"point":[736,768]}]},{"tag":"LineTo","args":[{"point":[832,768]}]},{"tag":"LineTo","args":[{"point":[832,864]}]}]},{"start":[673,864],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[673,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[657,840],"end":[648.5,811.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,783],"end":[640,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,709],"end":[656,671]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[673,633],"end":[701,605]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[729,577],"end":[767,560]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[805,544],"end":[848,544]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[869,544],"end":[889.5,548]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[910,552],"end":[928,560]}]}]},{"tag":"LineTo","args":[{"point":[928,448]}]},{"tag":"LineTo","args":[{"point":[0,448]}]},{"tag":"LineTo","args":[{"point":[0,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,827],"end":[19,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[38,864],"end":[64,864]}]}]},{"tag":"LineTo","args":[{"point":[673,864]}]}]},{"start":[928,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[928,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,325],"end":[909,306.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[890,288],"end":[864,288]}]}]},{"tag":"LineTo","args":[{"point":[480,288]}]},{"tag":"LineTo","args":[{"point":[416,160]}]},{"tag":"LineTo","args":[{"point":[64,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[38,160],"end":[19,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,197],"end":[0,224]}]}]},{"tag":"LineTo","args":[{"point":[0,416]}]},{"tag":"LineTo","args":[{"point":[928,416]}]}]},{"start":[848,928],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[775,928],"end":[723.5,876.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,825],"end":[672,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,679],"end":[723.5,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[775,576],"end":[848,576]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[921,576],"end":[972.5,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,679],"end":[1024,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,825],"end":[972.5,876.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[921,928],"end":[848,928]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder-add-outline","codePoint":59683},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[736,736],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,768]}]},{"tag":"LineTo","args":[{"point":[832,768]}]},{"tag":"LineTo","args":[{"point":[832,864]}]},{"tag":"LineTo","args":[{"point":[864,864]}]},{"tag":"LineTo","args":[{"point":[864,768]}]},{"tag":"LineTo","args":[{"point":[960,768]}]},{"tag":"LineTo","args":[{"point":[960,736]}]},{"tag":"LineTo","args":[{"point":[864,736]}]},{"tag":"LineTo","args":[{"point":[864,640]}]},{"tag":"LineTo","args":[{"point":[832,640]}]},{"tag":"LineTo","args":[{"point":[832,736]}]},{"tag":"LineTo","args":[{"point":[736,736]}]}]},{"start":[64,832],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[51,832],"end":[41.5,822.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,813],"end":[32,800]}]}]},{"tag":"LineTo","args":[{"point":[32,448]}]},{"tag":"LineTo","args":[{"point":[896,448]}]},{"tag":"LineTo","args":[{"point":[896,583]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[885,579],"end":[872.5,577.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[860,576],"end":[848,576]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[775,576],"end":[723.5,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,679],"end":[672,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,774],"end":[677,794]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,814],"end":[691,832]}]}]},{"tag":"LineTo","args":[{"point":[691,832]}]},{"tag":"LineTo","args":[{"point":[64,832]}]}]},{"start":[712,864],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[712,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,893],"end":[771.5,910.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[807,928],"end":[848,928]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[921,928],"end":[972.5,876.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,825],"end":[1024,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,701],"end":[997.5,659]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[971,617],"end":[928,595]}]}]},{"tag":"LineTo","args":[{"point":[928,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,325],"end":[909,306.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[890,288],"end":[864,288]}]}]},{"tag":"LineTo","args":[{"point":[480,288]}]},{"tag":"LineTo","args":[{"point":[416,160]}]},{"tag":"LineTo","args":[{"point":[64,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[38,160],"end":[19,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,197],"end":[0,224]}]}]},{"tag":"LineTo","args":[{"point":[0,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,827],"end":[19,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[38,864],"end":[64,864]}]}]},{"tag":"LineTo","args":[{"point":[712,864]}]}]},{"start":[32,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[32,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,211],"end":[41.5,201.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[51,192],"end":[64,192]}]}]},{"tag":"LineTo","args":[{"point":[397,192]}]},{"tag":"LineTo","args":[{"point":[460,320]}]},{"tag":"LineTo","args":[{"point":[864,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[877,320],"end":[886.5,329.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,339],"end":[896,352]}]}]},{"tag":"LineTo","args":[{"point":[896,416]}]},{"tag":"LineTo","args":[{"point":[32,416]}]}]},{"start":[848,896],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[788,896],"end":[746,854]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,812],"end":[704,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,692],"end":[746,650]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[788,608],"end":[848,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[908,608],"end":[950,650]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[992,692],"end":[992,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[992,812],"end":[950,854]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[908,896],"end":[848,896]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder-upload","codePoint":59684},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[480,864],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[480,576]}]},{"tag":"LineTo","args":[{"point":[376,680]}]},{"tag":"LineTo","args":[{"point":[352,656]}]},{"tag":"LineTo","args":[{"point":[496,512]}]},{"tag":"LineTo","args":[{"point":[640,656]}]},{"tag":"LineTo","args":[{"point":[616,680]}]},{"tag":"LineTo","args":[{"point":[512,576]}]},{"tag":"LineTo","args":[{"point":[512,864]}]},{"tag":"LineTo","args":[{"point":[896,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[923,864],"end":[941.5,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,827],"end":[960,800]}]}]},{"tag":"LineTo","args":[{"point":[960,448]}]},{"tag":"LineTo","args":[{"point":[32,448]}]},{"tag":"LineTo","args":[{"point":[32,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,827],"end":[51,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,864],"end":[96,864]}]}]},{"tag":"LineTo","args":[{"point":[480,864]}]}]},{"start":[960,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[960,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,325],"end":[941,306.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[922,288],"end":[896,288]}]}]},{"tag":"LineTo","args":[{"point":[512,288]}]},{"tag":"LineTo","args":[{"point":[448,160]}]},{"tag":"LineTo","args":[{"point":[96,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,160],"end":[51,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,197],"end":[32,224]}]}]},{"tag":"LineTo","args":[{"point":[32,416]}]},{"tag":"LineTo","args":[{"point":[960,416]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder-upload-outline","codePoint":59685},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[480,544],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[376,648]}]},{"tag":"LineTo","args":[{"point":[352,624]}]},{"tag":"LineTo","args":[{"point":[496,480]}]},{"tag":"LineTo","args":[{"point":[640,624]}]},{"tag":"LineTo","args":[{"point":[616,648]}]},{"tag":"LineTo","args":[{"point":[512,544]}]},{"tag":"LineTo","args":[{"point":[512,832]}]},{"tag":"LineTo","args":[{"point":[896,832]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[909,832],"end":[918.5,822.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,813],"end":[928,800]}]}]},{"tag":"LineTo","args":[{"point":[928,448]}]},{"tag":"LineTo","args":[{"point":[64,448]}]},{"tag":"LineTo","args":[{"point":[64,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[64,813],"end":[73.5,822.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[83,832],"end":[96,832]}]}]},{"tag":"LineTo","args":[{"point":[480,832]}]},{"tag":"LineTo","args":[{"point":[480,544]}]}]},{"start":[928,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[928,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,339],"end":[918.5,329.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[909,320],"end":[896,320]}]}]},{"tag":"LineTo","args":[{"point":[492,320]}]},{"tag":"LineTo","args":[{"point":[429,192]}]},{"tag":"LineTo","args":[{"point":[96,192]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[83,192],"end":[73.5,201.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[64,211],"end":[64,224]}]}]},{"tag":"LineTo","args":[{"point":[64,416]}]},{"tag":"LineTo","args":[{"point":[928,416]}]}]},{"start":[512,288],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[896,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[922,288],"end":[941,306.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,325],"end":[960,352]}]}]},{"tag":"LineTo","args":[{"point":[960,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,827],"end":[941.5,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[923,864],"end":[896,864]}]}]},{"tag":"LineTo","args":[{"point":[96,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,864],"end":[51,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,827],"end":[32,800]}]}]},{"tag":"LineTo","args":[{"point":[32,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,197],"end":[51,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,160],"end":[96,160]}]}]},{"tag":"LineTo","args":[{"point":[448,160]}]},{"tag":"LineTo","args":[{"point":[512,288]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder-download","codePoint":59686},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,448],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,738]}]},{"tag":"LineTo","args":[{"point":[616,634]}]},{"tag":"LineTo","args":[{"point":[640,658]}]},{"tag":"LineTo","args":[{"point":[496,802]}]},{"tag":"LineTo","args":[{"point":[352,658]}]},{"tag":"LineTo","args":[{"point":[376,634]}]},{"tag":"LineTo","args":[{"point":[480,738]}]},{"tag":"LineTo","args":[{"point":[480,448]}]},{"tag":"LineTo","args":[{"point":[32,448]}]},{"tag":"LineTo","args":[{"point":[32,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,827],"end":[51,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,864],"end":[96,864]}]}]},{"tag":"LineTo","args":[{"point":[896,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[923,864],"end":[941.5,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,827],"end":[960,800]}]}]},{"tag":"LineTo","args":[{"point":[960,448]}]},{"tag":"LineTo","args":[{"point":[512,448]}]}]},{"start":[960,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[960,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,325],"end":[941,306.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[922,288],"end":[896,288]}]}]},{"tag":"LineTo","args":[{"point":[512,288]}]},{"tag":"LineTo","args":[{"point":[448,160]}]},{"tag":"LineTo","args":[{"point":[96,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,160],"end":[51,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,197],"end":[32,224]}]}]},{"tag":"LineTo","args":[{"point":[32,416]}]},{"tag":"LineTo","args":[{"point":[960,416]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder-download-outline","codePoint":59687},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,448],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,738]}]},{"tag":"LineTo","args":[{"point":[616,634]}]},{"tag":"LineTo","args":[{"point":[640,658]}]},{"tag":"LineTo","args":[{"point":[496,802]}]},{"tag":"LineTo","args":[{"point":[352,658]}]},{"tag":"LineTo","args":[{"point":[376,634]}]},{"tag":"LineTo","args":[{"point":[480,738]}]},{"tag":"LineTo","args":[{"point":[480,448]}]},{"tag":"LineTo","args":[{"point":[64,448]}]},{"tag":"LineTo","args":[{"point":[64,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[64,813],"end":[73.5,822.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[83,832],"end":[96,832]}]}]},{"tag":"LineTo","args":[{"point":[896,832]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[909,832],"end":[918.5,822.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,813],"end":[928,800]}]}]},{"tag":"LineTo","args":[{"point":[928,448]}]},{"tag":"LineTo","args":[{"point":[512,448]}]}]},{"start":[928,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[928,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,339],"end":[918.5,329.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[909,320],"end":[896,320]}]}]},{"tag":"LineTo","args":[{"point":[492,320]}]},{"tag":"LineTo","args":[{"point":[429,192]}]},{"tag":"LineTo","args":[{"point":[96,192]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[83,192],"end":[73.5,201.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[64,211],"end":[64,224]}]}]},{"tag":"LineTo","args":[{"point":[64,416]}]},{"tag":"LineTo","args":[{"point":[928,416]}]}]},{"start":[512,288],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[896,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[922,288],"end":[941,306.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,325],"end":[960,352]}]}]},{"tag":"LineTo","args":[{"point":[960,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,827],"end":[941.5,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[923,864],"end":[896,864]}]}]},{"tag":"LineTo","args":[{"point":[96,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,864],"end":[51,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,827],"end":[32,800]}]}]},{"tag":"LineTo","args":[{"point":[32,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,197],"end":[51,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,160],"end":[96,160]}]}]},{"tag":"LineTo","args":[{"point":[448,160]}]},{"tag":"LineTo","args":[{"point":[512,288]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder-search","codePoint":59688},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[693,812],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[716,789]}]},{"tag":"LineTo","args":[{"point":[545,618]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[559,599],"end":[567.5,576]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,553],"end":[576,528]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,468],"end":[534,426]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[492,384],"end":[432,384]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,384],"end":[330,426]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[288,468],"end":[288,528]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[288,588],"end":[330,630]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,672],"end":[432,672]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[458,672],"end":[480.5,663.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[503,655],"end":[522,641]}]}]},{"tag":"LineTo","args":[{"point":[693,812]}]}]},{"start":[512,288],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[896,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[922,288],"end":[941,306.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,325],"end":[960,352]}]}]},{"tag":"LineTo","args":[{"point":[960,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,827],"end":[941.5,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[923,864],"end":[896,864]}]}]},{"tag":"LineTo","args":[{"point":[96,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,864],"end":[51,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,827],"end":[32,800]}]}]},{"tag":"LineTo","args":[{"point":[32,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,197],"end":[51,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,160],"end":[96,160]}]}]},{"tag":"LineTo","args":[{"point":[448,160]}]},{"tag":"LineTo","args":[{"point":[512,288]}]}]},{"start":[432,640],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[386,640],"end":[353,607]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,574],"end":[320,528]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,482],"end":[353,449]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[386,416],"end":[432,416]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,416],"end":[511,449]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,482],"end":[544,528]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,574],"end":[511,607]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,640],"end":[432,640]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder-search-outline","codePoint":59689},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[693,812],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[716,789]}]},{"tag":"LineTo","args":[{"point":[545,618]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[559,599],"end":[567.5,576]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,553],"end":[576,528]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,468],"end":[534,426]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[492,384],"end":[432,384]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,384],"end":[330,426]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[288,468],"end":[288,528]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[288,588],"end":[330,630]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,672],"end":[432,672]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[458,672],"end":[480.5,663.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[503,655],"end":[522,641]}]}]},{"tag":"LineTo","args":[{"point":[693,812]}]}]},{"start":[448,160],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[96,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,160],"end":[51,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,197],"end":[32,224]}]}]},{"tag":"LineTo","args":[{"point":[32,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,827],"end":[51,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,864],"end":[96,864]}]}]},{"tag":"LineTo","args":[{"point":[896,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[923,864],"end":[941.5,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,827],"end":[960,800]}]}]},{"tag":"LineTo","args":[{"point":[960,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,325],"end":[941,306.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[922,288],"end":[896,288]}]}]},{"tag":"LineTo","args":[{"point":[512,288]}]},{"tag":"LineTo","args":[{"point":[448,160]}]}]},{"start":[492,320],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[896,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[909,320],"end":[918.5,329.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,339],"end":[928,352]}]}]},{"tag":"LineTo","args":[{"point":[928,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,813],"end":[918.5,822.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[909,832],"end":[896,832]}]}]},{"tag":"LineTo","args":[{"point":[96,832]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[83,832],"end":[73.5,822.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[64,813],"end":[64,800]}]}]},{"tag":"LineTo","args":[{"point":[64,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[64,211],"end":[73.5,201.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[83,192],"end":[96,192]}]}]},{"tag":"LineTo","args":[{"point":[429,192]}]},{"tag":"LineTo","args":[{"point":[492,320]}]}]},{"start":[432,640],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[386,640],"end":[353,607]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,574],"end":[320,528]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,482],"end":[353,449]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[386,416],"end":[432,416]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,416],"end":[511,449]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,482],"end":[544,528]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,574],"end":[511,607]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,640],"end":[432,640]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder","codePoint":59690},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[960,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[960,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,325],"end":[941,306.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[922,288],"end":[896,288]}]}]},{"tag":"LineTo","args":[{"point":[512,288]}]},{"tag":"LineTo","args":[{"point":[448,160]}]},{"tag":"LineTo","args":[{"point":[96,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,160],"end":[51,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,197],"end":[32,224]}]}]},{"tag":"LineTo","args":[{"point":[32,416]}]},{"tag":"LineTo","args":[{"point":[960,416]}]}]},{"start":[32,448],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[960,448]}]},{"tag":"LineTo","args":[{"point":[960,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,827],"end":[941.5,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[923,864],"end":[896,864]}]}]},{"tag":"LineTo","args":[{"point":[96,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,864],"end":[51,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,827],"end":[32,800]}]}]},{"tag":"LineTo","args":[{"point":[32,448]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder-outline","codePoint":59691},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[928,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[928,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,339],"end":[918.5,329.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[909,320],"end":[896,320]}]}]},{"tag":"LineTo","args":[{"point":[492,320]}]},{"tag":"LineTo","args":[{"point":[429,192]}]},{"tag":"LineTo","args":[{"point":[96,192]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[83,192],"end":[73.5,201.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[64,211],"end":[64,224]}]}]},{"tag":"LineTo","args":[{"point":[64,416]}]},{"tag":"LineTo","args":[{"point":[928,416]}]}]},{"start":[64,448],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[64,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[64,813],"end":[73.5,822.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[83,832],"end":[96,832]}]}]},{"tag":"LineTo","args":[{"point":[896,832]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[909,832],"end":[918.5,822.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,813],"end":[928,800]}]}]},{"tag":"LineTo","args":[{"point":[928,448]}]},{"tag":"LineTo","args":[{"point":[64,448]}]}]},{"start":[512,288],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[896,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[922,288],"end":[941,306.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,325],"end":[960,352]}]}]},{"tag":"LineTo","args":[{"point":[960,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,827],"end":[941.5,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[923,864],"end":[896,864]}]}]},{"tag":"LineTo","args":[{"point":[96,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,864],"end":[51,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,827],"end":[32,800]}]}]},{"tag":"LineTo","args":[{"point":[32,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,197],"end":[51,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,160],"end":[96,160]}]}]},{"tag":"LineTo","args":[{"point":[448,160]}]},{"tag":"LineTo","args":[{"point":[512,288]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder2","codePoint":59692},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,288],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[896,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[922,288],"end":[941,306.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,325],"end":[960,352]}]}]},{"tag":"LineTo","args":[{"point":[960,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,827],"end":[941.5,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[923,864],"end":[896,864]}]}]},{"tag":"LineTo","args":[{"point":[96,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,864],"end":[51,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,827],"end":[32,800]}]}]},{"tag":"LineTo","args":[{"point":[32,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,197],"end":[51,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,160],"end":[96,160]}]}]},{"tag":"LineTo","args":[{"point":[448,160]}]},{"tag":"LineTo","args":[{"point":[512,288]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder2-outline","codePoint":59693},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[448,160],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[96,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,160],"end":[51,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,197],"end":[32,224]}]}]},{"tag":"LineTo","args":[{"point":[32,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,827],"end":[51,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[70,864],"end":[96,864]}]}]},{"tag":"LineTo","args":[{"point":[896,864]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[923,864],"end":[941.5,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,827],"end":[960,800]}]}]},{"tag":"LineTo","args":[{"point":[960,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[960,325],"end":[941,306.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[922,288],"end":[896,288]}]}]},{"tag":"LineTo","args":[{"point":[512,288]}]},{"tag":"LineTo","args":[{"point":[448,160]}]}]},{"start":[492,320],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[896,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[909,320],"end":[918.5,329.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,339],"end":[928,352]}]}]},{"tag":"LineTo","args":[{"point":[928,800]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[928,813],"end":[918.5,822.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[909,832],"end":[896,832]}]}]},{"tag":"LineTo","args":[{"point":[96,832]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[83,832],"end":[73.5,822.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[64,813],"end":[64,800]}]}]},{"tag":"LineTo","args":[{"point":[64,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[64,211],"end":[73.5,201.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[83,192],"end":[96,192]}]}]},{"tag":"LineTo","args":[{"point":[429,192]}]},{"tag":"LineTo","args":[{"point":[492,320]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"android","codePoint":59694},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[945,393],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[945,393]}]},{"tag":"LineTo","args":[{"point":[945,658]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[945,684],"end":[926.5,702.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[908,721],"end":[882,721]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[856,721],"end":[837.5,702.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[819,684],"end":[819,658]}]}]},{"tag":"LineTo","args":[{"point":[819,394]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[819,368],"end":[837.5,349.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[856,331],"end":[882,331]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[908,331],"end":[926.5,349.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[945,368],"end":[945,394]}]}]},{"tag":"LineTo","args":[{"point":[945,393]}]}]},{"start":[230,343],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[793,342]}]},{"tag":"LineTo","args":[{"point":[793,753]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[793,781],"end":[773,800.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[753,820],"end":[726,820]}]}]},{"tag":"LineTo","args":[{"point":[680,820]}]},{"tag":"LineTo","args":[{"point":[680,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,987],"end":[661.5,1005.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[643,1024],"end":[616,1024]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[590,1024],"end":[572,1005.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,987],"end":[554,961]}]}]},{"tag":"LineTo","args":[{"point":[554,821]}]},{"tag":"LineTo","args":[{"point":[469,821]}]},{"tag":"LineTo","args":[{"point":[469,961]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[468,987],"end":[449.5,1005]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[431,1023],"end":[405,1023]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,1023],"end":[361.5,1004.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[343,986],"end":[343,960]}]}]},{"tag":"LineTo","args":[{"point":[343,820]}]},{"tag":"LineTo","args":[{"point":[297,820]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[270,820],"end":[250,800.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[230,781],"end":[230,752]}]}]},{"tag":"LineTo","args":[{"point":[230,343]}]}]},{"start":[659,211],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[666,204],"end":[666,194]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[666,184],"end":[659,177]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,170],"end":[642,170]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[632,170],"end":[625,177]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,184],"end":[618,194]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,204],"end":[625,211]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[632,218],"end":[642,218]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,218],"end":[659,211]}]}]}]},{"start":[383,218],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[393,218],"end":[400,211]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[407,204],"end":[407,194]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[407,184],"end":[400,177]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[393,170],"end":[383,170]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[373,170],"end":[366,177]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[359,184],"end":[359,194]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[359,204],"end":[366,211]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[373,218],"end":[383,218]}]}]}]},{"start":[651,93],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[716,126],"end":[756,186.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[796,247],"end":[796,320]}]}]},{"tag":"LineTo","args":[{"point":[228,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[228,247],"end":[268,186.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[308,126],"end":[373,93]}]}]},{"tag":"LineTo","args":[{"point":[329,13]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[327,10],"end":[328,6.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[329,3],"end":[332,1]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[335,-1],"end":[338.5,0]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,1],"end":[344,4]}]}]},{"tag":"LineTo","args":[{"point":[388,86]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[416,73],"end":[447,66.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,60],"end":[512,60]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[545,60],"end":[576,67]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[607,74],"end":[635,87]}]}]},{"tag":"LineTo","args":[{"point":[680,6]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,2],"end":[685,1]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,0],"end":[692,2]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[695,4],"end":[696,7.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[697,11],"end":[695,14]}]}]},{"tag":"LineTo","args":[{"point":[651,95]}]},{"tag":"LineTo","args":[{"point":[651,93]}]}]},{"start":[143,331],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[168,331],"end":[186.5,349.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[205,368],"end":[205,394]}]}]},{"tag":"LineTo","args":[{"point":[205,658]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[205,684],"end":[186.5,702.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[168,721],"end":[142,721]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[116,721],"end":[97.5,702.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[79,684],"end":[79,658]}]}]},{"tag":"LineTo","args":[{"point":[79,394]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[79,367],"end":[97.5,348.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[116,330],"end":[142,330]}]}]},{"tag":"LineTo","args":[{"point":[143,331]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"angular","codePoint":59695},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,330],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[600,540]}]},{"tag":"LineTo","args":[{"point":[424,540]}]},{"tag":"LineTo","args":[{"point":[512,330]}]}]},{"start":[512,0],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[994,170]}]},{"tag":"LineTo","args":[{"point":[921,800]}]},{"tag":"LineTo","args":[{"point":[512,1024]}]},{"tag":"LineTo","args":[{"point":[103,800]}]},{"tag":"LineTo","args":[{"point":[29,170]}]},{"tag":"LineTo","args":[{"point":[512,0]}]}]},{"start":[512,113],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,781]}]},{"tag":"LineTo","args":[{"point":[323,781]}]},{"tag":"LineTo","args":[{"point":[384,632]}]},{"tag":"LineTo","args":[{"point":[640,632]}]},{"tag":"LineTo","args":[{"point":[701,781]}]},{"tag":"LineTo","args":[{"point":[813,781]}]},{"tag":"LineTo","args":[{"point":[512,113]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"css3","codePoint":59696},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[64,0],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[146,920]}]},{"tag":"LineTo","args":[{"point":[511,1024]}]},{"tag":"LineTo","args":[{"point":[879,920]}]},{"tag":"LineTo","args":[{"point":[960,0]}]},{"tag":"LineTo","args":[{"point":[64,0]}]}]},{"start":[793,188],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[741,758]}]},{"tag":"LineTo","args":[{"point":[512,823]}]},{"tag":"LineTo","args":[{"point":[279,750]}]},{"tag":"LineTo","args":[{"point":[266,586]}]},{"tag":"LineTo","args":[{"point":[378,586]}]},{"tag":"LineTo","args":[{"point":[386,676]}]},{"tag":"LineTo","args":[{"point":[512,710]}]},{"tag":"LineTo","args":[{"point":[636,676]}]},{"tag":"LineTo","args":[{"point":[652,526]}]},{"tag":"LineTo","args":[{"point":[388,526]}]},{"tag":"LineTo","args":[{"point":[378,416]}]},{"tag":"LineTo","args":[{"point":[661,416]}]},{"tag":"LineTo","args":[{"point":[672,300]}]},{"tag":"LineTo","args":[{"point":[240,300]}]},{"tag":"LineTo","args":[{"point":[231,188]}]},{"tag":"LineTo","args":[{"point":[793,188]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"dev-dot-to","codePoint":59697},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[317,429],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[325,436],"end":[327,448.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[329,461],"end":[329,522]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[329,581],"end":[327.5,594.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[326,608],"end":[318,616]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[311,622],"end":[303.5,624.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[296,627],"end":[282,627]}]}]},{"tag":"LineTo","args":[{"point":[259,628]}]},{"tag":"LineTo","args":[{"point":[257,523]}]},{"tag":"LineTo","args":[{"point":[256,419]}]},{"tag":"LineTo","args":[{"point":[281,419]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[293,419],"end":[302,421.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[311,424],"end":[317,429]}]}]}]},{"start":[1024,211],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[1024,813]}]},{"tag":"LineTo","args":[{"point":[0,813]}]},{"tag":"LineTo","args":[{"point":[0,211]}]},{"tag":"LineTo","args":[{"point":[1024,211]}]}]},{"start":[365,653],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,635],"end":[383.5,609]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[387,583],"end":[385,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,449],"end":[382,432.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,416],"end":[372,402]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[358,379],"end":[336,371.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[314,364],"end":[261,364]}]}]},{"tag":"LineTo","args":[{"point":[201,364]}]},{"tag":"LineTo","args":[{"point":[201,686]}]},{"tag":"LineTo","args":[{"point":[257,686]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[304,686],"end":[327.5,678.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[351,671],"end":[365,653]}]}]}]},{"start":[582,420],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[582,364]}]},{"tag":"LineTo","args":[{"point":[512,364]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[460,364],"end":[450,366]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[440,368],"end":[432,378]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[425,387],"end":[423.5,408]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[422,429],"end":[422,526]}]}]},{"tag":"LineTo","args":[{"point":[422,661]}]},{"tag":"LineTo","args":[{"point":[434,673]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[443,682],"end":[454,684]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[465,686],"end":[514,686]}]}]},{"tag":"LineTo","args":[{"point":[582,686]}]},{"tag":"LineTo","args":[{"point":[582,631]}]},{"tag":"LineTo","args":[{"point":[531,629]}]},{"tag":"LineTo","args":[{"point":[479,628]}]},{"tag":"LineTo","args":[{"point":[479,553]}]},{"tag":"LineTo","args":[{"point":[511,551]}]},{"tag":"LineTo","args":[{"point":[542,550]}]},{"tag":"LineTo","args":[{"point":[542,495]}]},{"tag":"LineTo","args":[{"point":[477,495]}]},{"tag":"LineTo","args":[{"point":[477,419]}]},{"tag":"LineTo","args":[{"point":[582,419]}]},{"tag":"LineTo","args":[{"point":[582,420]}]}]},{"start":[782,652],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[784,647],"end":[796,603]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[808,559],"end":[822,507]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[836,455],"end":[847,412]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[858,369],"end":[858,367]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[858,366],"end":[849,365.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[840,365],"end":[827,365]}]}]},{"tag":"LineTo","args":[{"point":[796,367]}]},{"tag":"LineTo","args":[{"point":[768,474]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[754,526],"end":[746,551.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[738,577],"end":[736,573]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[735,568],"end":[726,536]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[718,503],"end":[708,466]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[698,429],"end":[690,398]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[683,367],"end":[683,367]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[683,366],"end":[673,365]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[663,364],"end":[651,364]}]}]},{"tag":"LineTo","args":[{"point":[618,364]}]},{"tag":"LineTo","args":[{"point":[637,436]}]},{"tag":"LineTo","args":[{"point":[676,580]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,627],"end":[694.5,643]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[701,659],"end":[711,669]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[718,677],"end":[726,681.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[734,686],"end":[739,686]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[751,686],"end":[764,676]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[777,666],"end":[782,652]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"facebook","codePoint":59698},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[1024,512],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,608],"end":[991,693]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[958,779],"end":[900,846.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[842,914],"end":[763,958]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[684,1003],"end":[592,1018]}]}]},{"tag":"LineTo","args":[{"point":[592,660]}]},{"tag":"LineTo","args":[{"point":[711,660]}]},{"tag":"LineTo","args":[{"point":[734,512]}]},{"tag":"LineTo","args":[{"point":[592,512]}]},{"tag":"LineTo","args":[{"point":[592,416]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[592,386],"end":[610,361]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[628,336],"end":[675,336]}]}]},{"tag":"LineTo","args":[{"point":[740,336]}]},{"tag":"LineTo","args":[{"point":[740,210]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[740,210],"end":[703.5,205]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[667,200],"end":[625,200]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[538,200],"end":[485,251.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[432,303],"end":[432,399]}]}]},{"tag":"LineTo","args":[{"point":[432,512]}]},{"tag":"LineTo","args":[{"point":[302,512]}]},{"tag":"LineTo","args":[{"point":[302,660]}]},{"tag":"LineTo","args":[{"point":[432,660]}]},{"tag":"LineTo","args":[{"point":[432,1018]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[340,1003],"end":[261,958]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[182,914],"end":[124,846.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[66,779],"end":[33,693]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,608],"end":[0,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,406],"end":[40,313]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[80,219],"end":[149.5,149.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[219,80],"end":[313,40]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[406,0],"end":[512,0]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,0],"end":[711,40]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[804,80],"end":[873.5,149.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[943,219],"end":[984,313]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,406],"end":[1024,512]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"git","codePoint":59699},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[1005,466],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,486],"end":[1024,513]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,540],"end":[1005,560]}]}]},{"tag":"LineTo","args":[{"point":[560,1005]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[540,1024],"end":[513,1024]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[486,1024],"end":[466,1005]}]}]},{"tag":"LineTo","args":[{"point":[19,558]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,538],"end":[0,511]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,484],"end":[19,464]}]}]},{"tag":"LineTo","args":[{"point":[326,158]}]},{"tag":"LineTo","args":[{"point":[442,274]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[433,295],"end":[437,318.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[441,342],"end":[458,360]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[464,366],"end":[470.5,370]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[477,374],"end":[484,377]}]}]},{"tag":"LineTo","args":[{"point":[484,658]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[477,661],"end":[470.5,665.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[464,670],"end":[458,675]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[435,698],"end":[435,730.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[435,763],"end":[458,786]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[481,809],"end":[514,809]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[547,809],"end":[570,786]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[592,763],"end":[592,730.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[592,698],"end":[570,675]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[565,671],"end":[559.5,667]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,663],"end":[549,660]}]}]},{"tag":"LineTo","args":[{"point":[549,382]}]},{"tag":"LineTo","args":[{"point":[655,488]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[646,509],"end":[650.5,532.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[655,556],"end":[672,573]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[695,596],"end":[727.5,596]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[760,596],"end":[783,573]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[806,550],"end":[806,517.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[806,485],"end":[783,462]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[767,445],"end":[745,440.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[723,436],"end":[702,443]}]}]},{"tag":"LineTo","args":[{"point":[589,330]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[596,309],"end":[591,287]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[586,265],"end":[570,249]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,232],"end":[532,227.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[510,223],"end":[489,230]}]}]},{"tag":"LineTo","args":[{"point":[372,112]}]},{"tag":"LineTo","args":[{"point":[464,19]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[484,0],"end":[511,0]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[538,0],"end":[558,19]}]}]},{"tag":"LineTo","args":[{"point":[1005,466]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"github","codePoint":59700},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,13],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,13],"end":[711,53]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[805,93],"end":[874.5,162.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[944,232],"end":[984,325]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,419],"end":[1024,525]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,609],"end":[998,686]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[972,763],"end":[925,826.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[878,890],"end":[814,937]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[749,985],"end":[673,1010]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[653,1014],"end":[645,1005]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[637,996],"end":[637,985]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[637,973],"end":[637.5,935]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[638,897],"end":[638,845]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[638,809],"end":[627.5,785.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[617,762],"end":[603,751]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[646,746],"end":[688,733]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[730,721],"end":[763,693.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[796,666],"end":[817,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[837,572],"end":[837,498]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[837,456],"end":[823,421.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[809,387],"end":[785,361]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[788,351],"end":[794,314.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[800,278],"end":[779,225]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[779,225],"end":[745.5,226.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[712,228],"end":[639,278]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[609,269],"end":[576.5,264.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,260],"end":[511,260]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[479,260],"end":[446.5,264.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[414,269],"end":[383,278]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[310,228],"end":[276.5,226.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[243,225],"end":[243,225]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,278],"end":[228,314.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[234,351],"end":[238,361]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[213,387],"end":[199,421.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[185,456],"end":[185,498]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[185,571],"end":[206,618]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[226,665],"end":[259,693]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[292,721],"end":[334,734]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[376,746],"end":[419,751]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[408,761],"end":[399,778]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[390,795],"end":[386,819]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[364,829],"end":[317.5,832.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[271,836],"end":[237,777]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[237,777],"end":[217,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,727],"end":[159,724]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[159,724],"end":[139.5,727.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[120,731],"end":[155,755]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[155,755],"end":[174.5,770.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[194,786],"end":[212,830]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[212,830],"end":[245,876]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[278,922],"end":[384,899]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[385,931],"end":[385,954]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[385,977],"end":[385,986]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[385,996],"end":[377,1005]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[369,1014],"end":[350,1010]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[274,985],"end":[210,938]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[145,891],"end":[98.5,827.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[52,764],"end":[26,687]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,610],"end":[0,525]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,419],"end":[40,325]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[80,232],"end":[149.5,162.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[219,93],"end":[313,53]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[406,13],"end":[512,13]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"gmail","codePoint":59701},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[1024,192],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,178],"end":[1019,166.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1014,155],"end":[1006,146]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[997,138],"end":[985.5,133]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[974,128],"end":[960,128]}]}]},{"tag":"LineTo","args":[{"point":[939,128]}]},{"tag":"LineTo","args":[{"point":[512,437]}]},{"tag":"LineTo","args":[{"point":[85,128]}]},{"tag":"LineTo","args":[{"point":[64,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[50,128],"end":[38.5,133]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[27,138],"end":[18,146]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[10,155],"end":[5,166.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,178],"end":[0,192]}]}]},{"tag":"LineTo","args":[{"point":[0,832]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,859],"end":[18.5,877.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[37,896],"end":[64,896]}]}]},{"tag":"LineTo","args":[{"point":[128,896]}]},{"tag":"LineTo","args":[{"point":[128,315]}]},{"tag":"LineTo","args":[{"point":[512,591]}]},{"tag":"LineTo","args":[{"point":[896,315]}]},{"tag":"LineTo","args":[{"point":[896,896]}]},{"tag":"LineTo","args":[{"point":[960,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[987,896],"end":[1005.5,877.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,859],"end":[1024,832]}]}]},{"tag":"LineTo","args":[{"point":[1024,192]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"googlechrome","codePoint":59702},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[692,371],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[691,370]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[699,379],"end":[705,389]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[711,399],"end":[717,410]}]}]},{"tag":"LineTo","args":[{"point":[716,408]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[728,432],"end":[734.5,458.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[741,485],"end":[741,513]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[741,540],"end":[735,565]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[729,590],"end":[719,612]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[712,627],"end":[702.5,640.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[693,654],"end":[681,666]}]}]},{"tag":"LineTo","args":[{"point":[472,1023]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[482,1023],"end":[491.5,1023.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[501,1024],"end":[511,1024]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[616,1024],"end":[710,983]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[803,943],"end":[873,873]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[943,803],"end":[983,710]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,616],"end":[1024,511]}]}]},{"tag":"LineTo","args":[{"point":[1024,511]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,453],"end":[1012,399.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1000,346],"end":[978,299]}]}]},{"tag":"LineTo","args":[{"point":[692,371]}]}]},{"start":[554,737],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[522,743],"end":[489,740]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[456,737],"end":[424,725]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[362,701],"end":[330.5,650.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[299,600],"end":[293,583]}]}]},{"tag":"LineTo","args":[{"point":[87,225]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[44,289],"end":[22,362]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,435],"end":[0,511]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,610],"end":[36,698]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[71,787],"end":[133.5,855.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[196,924],"end":[281,968]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[365,1012],"end":[463,1022]}]}]},{"tag":"LineTo","args":[{"point":[554,737]}]}]},{"start":[511,325],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[511,325]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[511,325],"end":[511.5,325]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,325],"end":[512,325]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[534,325],"end":[554,329.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[574,334],"end":[591,343]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[646,368],"end":[676,424.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[706,481],"end":[698,540]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[691,588],"end":[659.5,628]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[628,668],"end":[583,687]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[532,707],"end":[476,696]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[420,685],"end":[381,647]}]}]},{"tag":"LineTo","args":[{"point":[381,647]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[355,621],"end":[340,586]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[325,551],"end":[325,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[325,502],"end":[326,492.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[327,483],"end":[328,475]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[341,412],"end":[394,369]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[447,326],"end":[511,325]}]}]}]},{"start":[301,425],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[301,424]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[310,402],"end":[323.5,382.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[337,363],"end":[354,347]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[385,317],"end":[431.5,299]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,281],"end":[536,285]}]}]},{"tag":"LineTo","args":[{"point":[972,285]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[939,219],"end":[891,167]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[842,114],"end":[782,77]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[722,40],"end":[654,20]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[585,0],"end":[512,0]}]}]},{"tag":"LineTo","args":[{"point":[512,0]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[448,0],"end":[388,15]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[329,30],"end":[276,57.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[223,85],"end":[177,124]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[132,163],"end":[96,212]}]}]},{"tag":"LineTo","args":[{"point":[301,425]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"googledrive","codePoint":59703},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[189,956],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[853,956]}]},{"tag":"LineTo","args":[{"point":[1024,660]}]},{"tag":"LineTo","args":[{"point":[360,660]}]},{"tag":"LineTo","args":[{"point":[189,956]}]}]},{"start":[341,660],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[503,380]}]},{"tag":"LineTo","args":[{"point":[332,84]}]},{"tag":"LineTo","args":[{"point":[0,660]}]},{"tag":"LineTo","args":[{"point":[171,956]}]},{"tag":"LineTo","args":[{"point":[341,660]}]}]},{"start":[1015,644],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[683,68]}]},{"tag":"LineTo","args":[{"point":[341,68]}]},{"tag":"LineTo","args":[{"point":[673,644]}]},{"tag":"LineTo","args":[{"point":[1015,644]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"googleplay","codePoint":59704},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[544,508],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[57,1024]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[53,1020],"end":[51,1015.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[49,1011],"end":[49,1004]}]}]},{"tag":"LineTo","args":[{"point":[49,13]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[49,9],"end":[50,6]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[51,3],"end":[52,0]}]}]},{"tag":"LineTo","args":[{"point":[544,508]}]}]},{"start":[577,542],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[169,977]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[216,950],"end":[277,915]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[339,880],"end":[393.5,848.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[448,817],"end":[486,796]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[523,775],"end":[523,775]}]}]},{"tag":"LineTo","args":[{"point":[703,672]}]},{"tag":"LineTo","args":[{"point":[577,542]}]}]},{"start":[611,507],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[748,362]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[757,368],"end":[788,386]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[820,404],"end":[855,424.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[890,445],"end":[920,462]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[950,479],"end":[958,483]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[974,491],"end":[974.5,504]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[975,517],"end":[957,528]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[948,533],"end":[917,550]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[886,568],"end":[850.5,588]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[815,608],"end":[785,625]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[754,643],"end":[746,647]}]}]},{"tag":"LineTo","args":[{"point":[611,507]}]}]},{"start":[577,473],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[128,8]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[165,29],"end":[231,67]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,105],"end":[362.5,142]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[427,179],"end":[475,206]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[523,234],"end":[523,234]}]}]},{"tag":"LineTo","args":[{"point":[704,337]}]},{"tag":"LineTo","args":[{"point":[577,473]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"html5","codePoint":59705},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[64,0],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[146,920]}]},{"tag":"LineTo","args":[{"point":[511,1024]}]},{"tag":"LineTo","args":[{"point":[879,920]}]},{"tag":"LineTo","args":[{"point":[960,0]}]},{"tag":"LineTo","args":[{"point":[64,0]}]}]},{"start":[364,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[773,416]}]},{"tag":"LineTo","args":[{"point":[742,764]}]},{"tag":"LineTo","args":[{"point":[512,826]}]},{"tag":"LineTo","args":[{"point":[281,764]}]},{"tag":"LineTo","args":[{"point":[267,586]}]},{"tag":"LineTo","args":[{"point":[378,586]}]},{"tag":"LineTo","args":[{"point":[386,676]}]},{"tag":"LineTo","args":[{"point":[512,710]}]},{"tag":"LineTo","args":[{"point":[636,676]}]},{"tag":"LineTo","args":[{"point":[650,530]}]},{"tag":"LineTo","args":[{"point":[261,530]}]},{"tag":"LineTo","args":[{"point":[231,188]}]},{"tag":"LineTo","args":[{"point":[793,188]}]},{"tag":"LineTo","args":[{"point":[783,300]}]},{"tag":"LineTo","args":[{"point":[354,300]}]},{"tag":"LineTo","args":[{"point":[364,416]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"instagram","codePoint":59706},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,0],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[616,0],"end":[649,0.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,1],"end":[723,3]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[764,5],"end":[793.5,11]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[823,17],"end":[847,27]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[873,37],"end":[895,51]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[917,65],"end":[938,86]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[959,107],"end":[973,129]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[987,151],"end":[997,177]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1007,201],"end":[1013,230.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1019,260],"end":[1021,301]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1023,342],"end":[1023.5,375]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,408],"end":[1024,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,616],"end":[1023.5,649]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1023,682],"end":[1021,723]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1019,764],"end":[1013,793.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1007,823],"end":[997,847]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[987,873],"end":[973,895]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[959,917],"end":[938,938]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[917,959],"end":[895,973]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[873,987],"end":[847,997]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[823,1007],"end":[793.5,1013]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[764,1019],"end":[723,1021]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,1023],"end":[649,1023.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[616,1024],"end":[512,1024]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[408,1024],"end":[375,1023.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,1023],"end":[301,1021]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[260,1019],"end":[230.5,1013]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[201,1007],"end":[177,997]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[151,987],"end":[129,973]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[107,959],"end":[86,938]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[65,917],"end":[51,895]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[37,873],"end":[27,847]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[17,823],"end":[11,793.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[5,764],"end":[3,723]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1,682],"end":[0.5,649]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,616],"end":[0,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,408],"end":[0.5,375]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1,342],"end":[3,301]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[5,260],"end":[11,230.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[17,201],"end":[27,177]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[37,151],"end":[51,129]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[65,107],"end":[86,86]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[107,65],"end":[129,51]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[151,37],"end":[177,27]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[201,17],"end":[230.5,11]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[260,5],"end":[301,3]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,1],"end":[375,0.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[408,0],"end":[512,0]}]}]}]},{"start":[512,92],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[510,91]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[407,91],"end":[375.5,91.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[344,92],"end":[303,93]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[265,95],"end":[243,100.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[221,106],"end":[208,111]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[190,118],"end":[176.5,127]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[163,136],"end":[149,150]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,163],"end":[126.5,176.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[117,190],"end":[111,209]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[105,222],"end":[100,244.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[95,267],"end":[93,304]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[91,345],"end":[90.5,377]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[90,409],"end":[90,511]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[90,614],"end":[90.5,646]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[91,678],"end":[93,718]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[95,755],"end":[100,777.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[105,800],"end":[111,813]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[117,831],"end":[126.5,845]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,859],"end":[149,872]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[163,886],"end":[176.5,894.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[190,903],"end":[208,911]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[221,916],"end":[243.5,921.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[266,927],"end":[303,929]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[344,930],"end":[376,931]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[408,932],"end":[511,932]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[613,932],"end":[645,931.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[677,931],"end":[718,929]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[755,927],"end":[777.5,921.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[800,916],"end":[813,911]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[831,904],"end":[845,895]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[859,886],"end":[872,873]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[886,859],"end":[894.5,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[903,832],"end":[911,814]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[916,800],"end":[921.5,778]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[927,756],"end":[929,719]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[930,678],"end":[931,646.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[932,615],"end":[932,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[932,409],"end":[931.5,377.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[931,346],"end":[929,305]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[927,268],"end":[921.5,246]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[916,224],"end":[911,210]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[904,192],"end":[895,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[886,165],"end":[873,151]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[859,138],"end":[845.5,129]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,120],"end":[814,113]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[800,108],"end":[778,102.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[756,97],"end":[719,95]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[678,93],"end":[646,92.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[614,92],"end":[512,92]}]}]}]},{"start":[614,270],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[614,270]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[662,290],"end":[698,326]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[734,362],"end":[754,410]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[775,458],"end":[775,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[775,566],"end":[754,614]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[734,662],"end":[698,698]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[662,734],"end":[614,754]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[566,775],"end":[512,775]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[458,775],"end":[410,754]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[362,734],"end":[326,698]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,662],"end":[270,614]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[249,566],"end":[249,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[249,458],"end":[270,410]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,362],"end":[326,326]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[362,290],"end":[410,270]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[458,249],"end":[512,249]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[566,249],"end":[614,270]}]}]}]},{"start":[633,633],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[683,583],"end":[683,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[683,441],"end":[633,391]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[583,341],"end":[512,341]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[441,341],"end":[391,391]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[341,441],"end":[341,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[341,583],"end":[391,633]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[441,683],"end":[512,683]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[583,683],"end":[633,633]}]}]}]},{"start":[847,239],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[847,213],"end":[829,195]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[811,177],"end":[785,177]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[760,177],"end":[742,195]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[724,213],"end":[724,239]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[724,264],"end":[742,282]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[760,300],"end":[785,300]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[811,300],"end":[829,282]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[847,264],"end":[847,239]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"ionic","codePoint":59707},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[978,300],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1001,350],"end":[1012.5,403.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,457],"end":[1024,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,618],"end":[984,711]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[943,804],"end":[873.5,873.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[804,943],"end":[711,984]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,1024],"end":[512,1024]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[406,1024],"end":[313,984]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[220,943],"end":[150.5,873.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[81,804],"end":[40,711]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,618],"end":[0,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,406],"end":[40,313]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[81,220],"end":[150.5,150.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[220,81],"end":[313,40]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[406,0],"end":[512,0]}]}]},{"tag":"LineTo","args":[{"point":[512,0]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,0],"end":[512.5,0]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[513,0],"end":[513,0]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[577,0],"end":[636.5,15]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[696,30],"end":[747,57]}]}]},{"tag":"LineTo","args":[{"point":[756,62]}]},{"tag":"LineTo","args":[{"point":[748,69]}]},{"tag":"LineTo","args":[{"point":[748,69]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[733,81],"end":[721,96.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[709,112],"end":[701,131]}]}]},{"tag":"LineTo","args":[{"point":[698,137]}]},{"tag":"LineTo","args":[{"point":[691,134]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[649,114],"end":[604,104]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[559,94],"end":[512,94]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,94],"end":[349,127]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[273,159],"end":[216.5,216]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[160,273],"end":[127,349]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[94,426],"end":[94,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[94,598],"end":[127,675]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[159,751],"end":[216,807.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[273,864],"end":[349,897]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[425,930],"end":[512,930]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,930],"end":[675,897]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[751,864],"end":[807.5,807.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,751],"end":[897,674]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[930,598],"end":[930,512]}]}]},{"tag":"LineTo","args":[{"point":[930,512]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[930,512],"end":[930,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[930,512],"end":[930,511]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[930,468],"end":[921.5,427.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[913,387],"end":[898,351]}]}]},{"tag":"LineTo","args":[{"point":[895,345]}]},{"tag":"LineTo","args":[{"point":[902,342]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[921,335],"end":[937,324]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[953,313],"end":[966,298]}]}]},{"tag":"LineTo","args":[{"point":[974,290]}]},{"tag":"LineTo","args":[{"point":[978,300]}]}]},{"start":[512,279],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,279]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[560,279],"end":[603,297]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,315],"end":[677,347]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[709,379],"end":[727,421]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[745,464],"end":[745,512]}]}]},{"tag":"LineTo","args":[{"point":[745,512]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[745,560],"end":[727,603]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[709,645],"end":[677,677]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,709],"end":[603,727]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[560,745],"end":[512,745]}]}]},{"tag":"LineTo","args":[{"point":[512,745]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[464,745],"end":[421,727]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[379,709],"end":[347,677]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[315,645],"end":[297,603]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[279,560],"end":[279,512]}]}]},{"tag":"LineTo","args":[{"point":[279,512]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[279,464],"end":[297,421]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[315,379],"end":[347,347]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[379,315],"end":[421,297]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[464,279],"end":[512,279]}]}]}]},{"start":[953,193],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[953,149],"end":[922,118]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[891,87],"end":[847,87]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[803,87],"end":[772,118]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[741,149],"end":[741,193]}]}]},{"tag":"LineTo","args":[{"point":[741,193]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[741,237],"end":[772,268]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[803,299],"end":[847,299]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[891,299],"end":[922,268]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[953,237],"end":[953,193]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"javascript","codePoint":59708},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[0,1024],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[1024,1024]}]},{"tag":"LineTo","args":[{"point":[1024,0]}]},{"tag":"LineTo","args":[{"point":[0,0]}]},{"tag":"LineTo","args":[{"point":[0,1024]}]}]},{"start":[940,780],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[938,777]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[943,807],"end":[939.5,825.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[936,844],"end":[935,847]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[923,890],"end":[886,913]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[849,935],"end":[804,939.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[759,944],"end":[714,931]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[670,918],"end":[642,890]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[630,877],"end":[622,867.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[614,858],"end":[607,843]}]}]},{"tag":"LineTo","args":[{"point":[685,798]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[701,822],"end":[717.5,835.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[734,849],"end":[760,855]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[795,859],"end":[823.5,845.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[852,832],"end":[844,795]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[836,764],"end":[785,748.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[734,733],"end":[690,701]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[646,671],"end":[637.5,611]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[629,551],"end":[666,510]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[678,495],"end":[697.5,483.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[717,472],"end":[739,467]}]}]},{"tag":"LineTo","args":[{"point":[769,463]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[812,462],"end":[840.5,473.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[869,485],"end":[890,507]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[895,513],"end":[900.5,520]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[906,527],"end":[915,541]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[891,555],"end":[882,561]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[873,567],"end":[840,589]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,573],"end":[821,563.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[810,554],"end":[798,550]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[779,545],"end":[758.5,551.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[738,558],"end":[733,578]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[731,585],"end":[731.5,591.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[732,598],"end":[735,609]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[743,626],"end":[765.5,636]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[788,646],"end":[812,657]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[880,685],"end":[907.5,715]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[935,745],"end":[940,780]}]}]}]},{"start":[557,471],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[557,473]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[557,539],"end":[557,605]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[557,671],"end":[557,737]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[557,778],"end":[556.5,814]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[556,850],"end":[540,879]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[528,902],"end":[508,917]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[488,932],"end":[462,940]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[424,948],"end":[388.5,943.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[353,939],"end":[326,922]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[307,911],"end":[293,894.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[279,878],"end":[269,858]}]}]},{"tag":"LineTo","args":[{"point":[347,810]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[348,810],"end":[349,812.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[350,815],"end":[352,818]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[360,830],"end":[367.5,839]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[375,848],"end":[388,854]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[400,858],"end":[422,857]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[444,856],"end":[455,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[461,823],"end":[461,790.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[461,758],"end":[461,718]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[461,656],"end":[461,594.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[461,533],"end":[461,471]}]}]},{"tag":"LineTo","args":[{"point":[557,471]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"jekyll","codePoint":59709},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[344,1024],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[344,1024]}]},{"tag":"LineTo","args":[{"point":[345,1024]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[379,1024],"end":[408,1005.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[437,987],"end":[453,957]}]}]},{"tag":"LineTo","args":[{"point":[454,957]}]},{"tag":"LineTo","args":[{"point":[755,171]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[758,165],"end":[769.5,152.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[781,140],"end":[791,131]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[793,130],"end":[794.5,128]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[796,126],"end":[797,124]}]}]},{"tag":"LineTo","args":[{"point":[798,123]}]},{"tag":"LineTo","args":[{"point":[799,122]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[804,110],"end":[796,97.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[788,85],"end":[769,70]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[753,58],"end":[730.5,46]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[708,34],"end":[682,24]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,13],"end":[623.5,6.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,0],"end":[574,0]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[556,0],"end":[545,4.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[534,9],"end":[531,19]}]}]},{"tag":"LineTo","args":[{"point":[530,20]}]},{"tag":"LineTo","args":[{"point":[530,20]}]},{"tag":"LineTo","args":[{"point":[530,20]}]},{"tag":"LineTo","args":[{"point":[530,21]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[529,24],"end":[529,26.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[529,29],"end":[529,32]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[531,43],"end":[531.5,60]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[532,77],"end":[529,86]}]}]},{"tag":"LineTo","args":[{"point":[230,861]}]},{"tag":"LineTo","args":[{"point":[227,871]}]},{"tag":"LineTo","args":[{"point":[227,871]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[215,915],"end":[236,957]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[257,999],"end":[301,1016]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[312,1020],"end":[322.5,1022]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[333,1024],"end":[344,1024]}]}]}]},{"start":[251,865],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[548,92]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,77],"end":[552,54]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[550,31],"end":[550,27]}]}]},{"tag":"LineTo","args":[{"point":[550,26]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[550,24],"end":[555,22]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[560,20],"end":[573,20]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[592,20],"end":[619,26.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[646,33],"end":[674,43]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[698,53],"end":[719,64]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[740,75],"end":[755,86]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[771,98],"end":[775,105]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[779,112],"end":[779,114]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[779,114],"end":[778.5,114.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[778,115],"end":[778,115]}]}]},{"tag":"LineTo","args":[{"point":[777,116]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[773,120],"end":[756.5,136]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[740,152],"end":[736,164]}]}]},{"tag":"LineTo","args":[{"point":[439,936]}]},{"tag":"LineTo","args":[{"point":[438,939]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,968],"end":[400.5,985.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[375,1003],"end":[344,1003]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[335,1003],"end":[326,1001.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[317,1000],"end":[308,996]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[270,982],"end":[253,944]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[236,906],"end":[250,867]}]}]},{"tag":"LineTo","args":[{"point":[251,865]}]}]},{"start":[633,374],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[418,933]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[407,963],"end":[376.5,976.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[346,990],"end":[316,978]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[285,966],"end":[270.5,935.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,905],"end":[268,875]}]}]},{"tag":"LineTo","args":[{"point":[405,518]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[405,518],"end":[417.5,502]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[430,486],"end":[455,471]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[481,456],"end":[503.5,454]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[526,452],"end":[554,439]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,426],"end":[607.5,400]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[633,374],"end":[633,374]}]}]}]},{"start":[418,805.5],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[417,809],"end":[418,812]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[419,815],"end":[422.5,816.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,818],"end":[429,816]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[433,815],"end":[434,811.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[435,808],"end":[434,805]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[433,802],"end":[429.5,800.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,799],"end":[423,800]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[419,802],"end":[418,805.5]}]}]}]},{"start":[379,723],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[385,721],"end":[386.5,716]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,711],"end":[386,707]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,702],"end":[379,700]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[374,698],"end":[369,700]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[364,702],"end":[362,707]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[360,712],"end":[362,717]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[364,722],"end":[369,724]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[374,726],"end":[379,724]}]}]},{"tag":"LineTo","args":[{"point":[379,723]}]}]},{"start":[392,677],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[391,677]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[395,686],"end":[404.5,689.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[414,693],"end":[424,689]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[433,685],"end":[436.5,675.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[440,666],"end":[436,657]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[431,647],"end":[422,643.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[413,640],"end":[404,644]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[395,649],"end":[391.5,658.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,668],"end":[392,677]}]}]}]},{"start":[495,580],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[495,580]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[490,582],"end":[488,587]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[486,592],"end":[488,597]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[490,602],"end":[495.5,604]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[501,606],"end":[506,604]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[510,602],"end":[512,597]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[514,592],"end":[512,587]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[510,582],"end":[505,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[500,578],"end":[495,580]}]}]}]},{"start":[440,522],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[437,523],"end":[435.5,526.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[434,530],"end":[435,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[437,536],"end":[440,537.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[443,539],"end":[447,537]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[450,536],"end":[451.5,532.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[453,529],"end":[451,526]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[450,523],"end":[446.5,521.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[443,520],"end":[440,522]}]}]}]},{"start":[584,49],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[584,49]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[580,57],"end":[600.5,71.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[621,86],"end":[653,99]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[685,111],"end":[710,114]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[735,117],"end":[738,108]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[742,100],"end":[721.5,85.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[701,71],"end":[669,58]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[637,46],"end":[612,43]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[587,40],"end":[584,49]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"linkedin","codePoint":59710},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[872,873],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[872,604]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[872,506],"end":[839,439]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[806,372],"end":[690,372]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[635,372],"end":[598.5,397]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[562,422],"end":[547,451]}]}]},{"tag":"LineTo","args":[{"point":[545,451]}]},{"tag":"LineTo","args":[{"point":[545,384]}]},{"tag":"LineTo","args":[{"point":[399,384]}]},{"tag":"LineTo","args":[{"point":[399,873]}]},{"tag":"LineTo","args":[{"point":[551,873]}]},{"tag":"LineTo","args":[{"point":[551,631]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[551,583],"end":[566.5,544]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,505],"end":[642,505]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[700,505],"end":[710.5,549]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[721,593],"end":[721,635]}]}]},{"tag":"LineTo","args":[{"point":[721,873]}]},{"tag":"LineTo","args":[{"point":[872,873]}]}]},{"start":[228,317],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[264,317],"end":[290,291]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[316,265],"end":[316,229]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[316,193],"end":[290,167]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[264,141],"end":[228,141]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[191,141],"end":[165.5,167]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[140,193],"end":[140,229]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[140,265],"end":[165.5,291]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[191,317],"end":[228,317]}]}]}]},{"start":[304,384],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[152,384]}]},{"tag":"LineTo","args":[{"point":[152,873]}]},{"tag":"LineTo","args":[{"point":[304,873]}]},{"tag":"LineTo","args":[{"point":[304,384]}]}]},{"start":[948,0],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[948,0]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[979,0],"end":[1001.5,21.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,43],"end":[1024,74]}]}]},{"tag":"LineTo","args":[{"point":[1024,950]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,981],"end":[1001.5,1002.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[979,1024],"end":[948,1024]}]}]},{"tag":"LineTo","args":[{"point":[76,1024]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[44,1024],"end":[22,1002.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,981],"end":[0,950]}]}]},{"tag":"LineTo","args":[{"point":[0,74]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,43],"end":[22,21.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[44,0],"end":[76,0]}]}]},{"tag":"LineTo","args":[{"point":[948,0]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"markdown","codePoint":59711},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[950,827],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[950,827]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[981,827],"end":[1002.5,805.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,784],"end":[1024,753]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,753],"end":[1024,753]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,753],"end":[1024,753]}]}]},{"tag":"LineTo","args":[{"point":[1024,271]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,240],"end":[1002.5,218.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[981,197],"end":[950,197]}]}]},{"tag":"LineTo","args":[{"point":[74,197]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[43,197],"end":[21.5,218.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,240],"end":[0,271]}]}]},{"tag":"LineTo","args":[{"point":[0,753]}]},{"tag":"LineTo","args":[{"point":[0,753]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,784],"end":[21.5,805.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[43,827],"end":[74,827]}]}]},{"tag":"LineTo","args":[{"point":[950,827]}]}]},{"start":[148,679],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[148,345]}]},{"tag":"LineTo","args":[{"point":[246,345]}]},{"tag":"LineTo","args":[{"point":[345,468]}]},{"tag":"LineTo","args":[{"point":[443,345]}]},{"tag":"LineTo","args":[{"point":[542,345]}]},{"tag":"LineTo","args":[{"point":[542,679]}]},{"tag":"LineTo","args":[{"point":[443,679]}]},{"tag":"LineTo","args":[{"point":[443,487]}]},{"tag":"LineTo","args":[{"point":[345,610]}]},{"tag":"LineTo","args":[{"point":[246,487]}]},{"tag":"LineTo","args":[{"point":[246,679]}]},{"tag":"LineTo","args":[{"point":[148,679]}]}]},{"start":[758,684],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[610,512]}]},{"tag":"LineTo","args":[{"point":[709,512]}]},{"tag":"LineTo","args":[{"point":[709,345]}]},{"tag":"LineTo","args":[{"point":[807,345]}]},{"tag":"LineTo","args":[{"point":[807,512]}]},{"tag":"LineTo","args":[{"point":[906,512]}]},{"tag":"LineTo","args":[{"point":[758,684]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"npm","codePoint":59712},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[1024,313],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[1024,654]}]},{"tag":"LineTo","args":[{"point":[512,654]}]},{"tag":"LineTo","args":[{"point":[512,711]}]},{"tag":"LineTo","args":[{"point":[284,711]}]},{"tag":"LineTo","args":[{"point":[284,654]}]},{"tag":"LineTo","args":[{"point":[0,654]}]},{"tag":"LineTo","args":[{"point":[0,313]}]},{"tag":"LineTo","args":[{"point":[1024,313]}]}]},{"start":[284,370],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[57,370]}]},{"tag":"LineTo","args":[{"point":[57,597]}]},{"tag":"LineTo","args":[{"point":[171,597]}]},{"tag":"LineTo","args":[{"point":[171,427]}]},{"tag":"LineTo","args":[{"point":[228,427]}]},{"tag":"LineTo","args":[{"point":[228,597]}]},{"tag":"LineTo","args":[{"point":[284,597]}]},{"tag":"LineTo","args":[{"point":[284,370]}]}]},{"start":[569,597],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[569,370]}]},{"tag":"LineTo","args":[{"point":[341,370]}]},{"tag":"LineTo","args":[{"point":[341,654]}]},{"tag":"LineTo","args":[{"point":[455,654]}]},{"tag":"LineTo","args":[{"point":[455,597]}]},{"tag":"LineTo","args":[{"point":[569,597]}]}]},{"start":[967,597],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[967,370]}]},{"tag":"LineTo","args":[{"point":[626,370]}]},{"tag":"LineTo","args":[{"point":[626,597]}]},{"tag":"LineTo","args":[{"point":[740,597]}]},{"tag":"LineTo","args":[{"point":[740,427]}]},{"tag":"LineTo","args":[{"point":[796,427]}]},{"tag":"LineTo","args":[{"point":[796,597]}]},{"tag":"LineTo","args":[{"point":[853,597]}]},{"tag":"LineTo","args":[{"point":[853,427]}]},{"tag":"LineTo","args":[{"point":[910,427]}]},{"tag":"LineTo","args":[{"point":[910,597]}]},{"tag":"LineTo","args":[{"point":[967,597]}]}]},{"start":[455,540],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,540]}]},{"tag":"LineTo","args":[{"point":[512,427]}]},{"tag":"LineTo","args":[{"point":[455,427]}]},{"tag":"LineTo","args":[{"point":[455,540]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"python","codePoint":59713},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[611,8],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[565,2]}]},{"tag":"LineTo","args":[{"point":[511,0]}]},{"tag":"LineTo","args":[{"point":[475,1]}]},{"tag":"LineTo","args":[{"point":[442,3]}]},{"tag":"LineTo","args":[{"point":[412,5]}]},{"tag":"LineTo","args":[{"point":[384,9]}]},{"tag":"LineTo","args":[{"point":[360,15]}]},{"tag":"LineTo","args":[{"point":[338,21]}]},{"tag":"LineTo","args":[{"point":[319,29]}]},{"tag":"LineTo","args":[{"point":[303,37]}]},{"tag":"LineTo","args":[{"point":[290,47]}]},{"tag":"LineTo","args":[{"point":[279,58]}]},{"tag":"LineTo","args":[{"point":[272,70]}]},{"tag":"LineTo","args":[{"point":[267,83]}]},{"tag":"LineTo","args":[{"point":[265,98]}]},{"tag":"LineTo","args":[{"point":[266,113]}]},{"tag":"LineTo","args":[{"point":[266,231]}]},{"tag":"LineTo","args":[{"point":[515,231]}]},{"tag":"LineTo","args":[{"point":[515,266]}]},{"tag":"LineTo","args":[{"point":[167,266]}]},{"tag":"LineTo","args":[{"point":[165,266]}]},{"tag":"LineTo","args":[{"point":[158,266]}]},{"tag":"LineTo","args":[{"point":[148,266]}]},{"tag":"LineTo","args":[{"point":[134,268]}]},{"tag":"LineTo","args":[{"point":[119,273]}]},{"tag":"LineTo","args":[{"point":[102,279]}]},{"tag":"LineTo","args":[{"point":[84,290]}]},{"tag":"LineTo","args":[{"point":[66,304]}]},{"tag":"LineTo","args":[{"point":[49,323]}]},{"tag":"LineTo","args":[{"point":[33,347]}]},{"tag":"LineTo","args":[{"point":[20,377]}]},{"tag":"LineTo","args":[{"point":[9,414]}]},{"tag":"LineTo","args":[{"point":[3,459]}]},{"tag":"LineTo","args":[{"point":[0,511]}]},{"tag":"LineTo","args":[{"point":[2,563]}]},{"tag":"LineTo","args":[{"point":[8,608]}]},{"tag":"LineTo","args":[{"point":[17,646]}]},{"tag":"LineTo","args":[{"point":[29,677]}]},{"tag":"LineTo","args":[{"point":[43,702]}]},{"tag":"LineTo","args":[{"point":[58,721]}]},{"tag":"LineTo","args":[{"point":[73,737]}]},{"tag":"LineTo","args":[{"point":[88,748]}]},{"tag":"LineTo","args":[{"point":[103,756]}]},{"tag":"LineTo","args":[{"point":[117,761]}]},{"tag":"LineTo","args":[{"point":[129,764]}]},{"tag":"LineTo","args":[{"point":[138,765]}]},{"tag":"LineTo","args":[{"point":[233,765]}]},{"tag":"LineTo","args":[{"point":[233,634]}]},{"tag":"LineTo","args":[{"point":[234,625]}]},{"tag":"LineTo","args":[{"point":[236,614]}]},{"tag":"LineTo","args":[{"point":[239,600]}]},{"tag":"LineTo","args":[{"point":[243,585]}]},{"tag":"LineTo","args":[{"point":[249,570]}]},{"tag":"LineTo","args":[{"point":[258,554]}]},{"tag":"LineTo","args":[{"point":[269,539]}]},{"tag":"LineTo","args":[{"point":[283,526]}]},{"tag":"LineTo","args":[{"point":[301,514]}]},{"tag":"LineTo","args":[{"point":[322,505]}]},{"tag":"LineTo","args":[{"point":[347,499]}]},{"tag":"LineTo","args":[{"point":[377,497]}]},{"tag":"LineTo","args":[{"point":[631,497]}]},{"tag":"LineTo","args":[{"point":[640,496]}]},{"tag":"LineTo","args":[{"point":[652,494]}]},{"tag":"LineTo","args":[{"point":[664,491]}]},{"tag":"LineTo","args":[{"point":[678,487]}]},{"tag":"LineTo","args":[{"point":[693,481]}]},{"tag":"LineTo","args":[{"point":[708,473]}]},{"tag":"LineTo","args":[{"point":[722,462]}]},{"tag":"LineTo","args":[{"point":[735,449]}]},{"tag":"LineTo","args":[{"point":[746,433]}]},{"tag":"LineTo","args":[{"point":[755,413]}]},{"tag":"LineTo","args":[{"point":[761,390]}]},{"tag":"LineTo","args":[{"point":[763,363]}]},{"tag":"LineTo","args":[{"point":[763,135]}]},{"tag":"LineTo","args":[{"point":[763,129]}]},{"tag":"LineTo","args":[{"point":[762,121]}]},{"tag":"LineTo","args":[{"point":[761,110]}]},{"tag":"LineTo","args":[{"point":[756,97]}]},{"tag":"LineTo","args":[{"point":[750,83]}]},{"tag":"LineTo","args":[{"point":[739,68]}]},{"tag":"LineTo","args":[{"point":[724,54]}]},{"tag":"LineTo","args":[{"point":[705,40]}]},{"tag":"LineTo","args":[{"point":[680,27]}]},{"tag":"LineTo","args":[{"point":[649,16]}]},{"tag":"LineTo","args":[{"point":[611,8]}]}]},{"start":[356,83],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[373,79]}]},{"tag":"LineTo","args":[{"point":[391,83]}]},{"tag":"LineTo","args":[{"point":[405,92]}]},{"tag":"LineTo","args":[{"point":[415,106]}]},{"tag":"LineTo","args":[{"point":[418,124]}]},{"tag":"LineTo","args":[{"point":[415,141]}]},{"tag":"LineTo","args":[{"point":[405,156]}]},{"tag":"LineTo","args":[{"point":[391,165]}]},{"tag":"LineTo","args":[{"point":[373,169]}]},{"tag":"LineTo","args":[{"point":[356,165]}]},{"tag":"LineTo","args":[{"point":[342,156]}]},{"tag":"LineTo","args":[{"point":[332,141]}]},{"tag":"LineTo","args":[{"point":[329,124]}]},{"tag":"LineTo","args":[{"point":[332,106]}]},{"tag":"LineTo","args":[{"point":[342,92]}]},{"tag":"LineTo","args":[{"point":[356,83]}]}]},{"start":[900,261],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[891,259]}]},{"tag":"LineTo","args":[{"point":[885,259]}]},{"tag":"LineTo","args":[{"point":[796,259]}]},{"tag":"LineTo","args":[{"point":[796,390]}]},{"tag":"LineTo","args":[{"point":[795,399]}]},{"tag":"LineTo","args":[{"point":[794,410]}]},{"tag":"LineTo","args":[{"point":[791,424]}]},{"tag":"LineTo","args":[{"point":[786,439]}]},{"tag":"LineTo","args":[{"point":[780,454]}]},{"tag":"LineTo","args":[{"point":[771,470]}]},{"tag":"LineTo","args":[{"point":[760,485]}]},{"tag":"LineTo","args":[{"point":[746,498]}]},{"tag":"LineTo","args":[{"point":[728,510]}]},{"tag":"LineTo","args":[{"point":[707,519]}]},{"tag":"LineTo","args":[{"point":[682,525]}]},{"tag":"LineTo","args":[{"point":[652,527]}]},{"tag":"LineTo","args":[{"point":[403,527]}]},{"tag":"LineTo","args":[{"point":[398,528]}]},{"tag":"LineTo","args":[{"point":[389,529]}]},{"tag":"LineTo","args":[{"point":[378,530]}]},{"tag":"LineTo","args":[{"point":[365,533]}]},{"tag":"LineTo","args":[{"point":[351,537]}]},{"tag":"LineTo","args":[{"point":[336,543]}]},{"tag":"LineTo","args":[{"point":[321,552]}]},{"tag":"LineTo","args":[{"point":[307,562]}]},{"tag":"LineTo","args":[{"point":[294,576]}]},{"tag":"LineTo","args":[{"point":[283,592]}]},{"tag":"LineTo","args":[{"point":[274,611]}]},{"tag":"LineTo","args":[{"point":[268,634]}]},{"tag":"LineTo","args":[{"point":[266,662]}]},{"tag":"LineTo","args":[{"point":[266,890]}]},{"tag":"LineTo","args":[{"point":[266,895]}]},{"tag":"LineTo","args":[{"point":[267,904]}]},{"tag":"LineTo","args":[{"point":[268,914]}]},{"tag":"LineTo","args":[{"point":[273,927]}]},{"tag":"LineTo","args":[{"point":[279,941]}]},{"tag":"LineTo","args":[{"point":[290,956]}]},{"tag":"LineTo","args":[{"point":[305,970]}]},{"tag":"LineTo","args":[{"point":[324,984]}]},{"tag":"LineTo","args":[{"point":[349,997]}]},{"tag":"LineTo","args":[{"point":[380,1008]}]},{"tag":"LineTo","args":[{"point":[419,1016]}]},{"tag":"LineTo","args":[{"point":[464,1022]}]},{"tag":"LineTo","args":[{"point":[518,1024]}]},{"tag":"LineTo","args":[{"point":[554,1024]}]},{"tag":"LineTo","args":[{"point":[587,1022]}]},{"tag":"LineTo","args":[{"point":[617,1019]}]},{"tag":"LineTo","args":[{"point":[645,1015]}]},{"tag":"LineTo","args":[{"point":[669,1009]}]},{"tag":"LineTo","args":[{"point":[691,1003]}]},{"tag":"LineTo","args":[{"point":[710,996]}]},{"tag":"LineTo","args":[{"point":[726,987]}]},{"tag":"LineTo","args":[{"point":[739,977]}]},{"tag":"LineTo","args":[{"point":[750,966]}]},{"tag":"LineTo","args":[{"point":[757,954]}]},{"tag":"LineTo","args":[{"point":[762,941]}]},{"tag":"LineTo","args":[{"point":[764,926]}]},{"tag":"LineTo","args":[{"point":[763,911]}]},{"tag":"LineTo","args":[{"point":[763,793]}]},{"tag":"LineTo","args":[{"point":[514,793]}]},{"tag":"LineTo","args":[{"point":[514,758]}]},{"tag":"LineTo","args":[{"point":[864,758]}]},{"tag":"LineTo","args":[{"point":[871,759]}]},{"tag":"LineTo","args":[{"point":[881,758]}]},{"tag":"LineTo","args":[{"point":[895,756]}]},{"tag":"LineTo","args":[{"point":[911,752]}]},{"tag":"LineTo","args":[{"point":[928,745]}]},{"tag":"LineTo","args":[{"point":[945,735]}]},{"tag":"LineTo","args":[{"point":[963,721]}]},{"tag":"LineTo","args":[{"point":[980,701]}]},{"tag":"LineTo","args":[{"point":[996,677]}]},{"tag":"LineTo","args":[{"point":[1009,647]}]},{"tag":"LineTo","args":[{"point":[1020,610]}]},{"tag":"LineTo","args":[{"point":[1027,566]}]},{"tag":"LineTo","args":[{"point":[1029,513]}]},{"tag":"LineTo","args":[{"point":[1027,461]}]},{"tag":"LineTo","args":[{"point":[1021,416]}]},{"tag":"LineTo","args":[{"point":[1012,379]}]},{"tag":"LineTo","args":[{"point":[1000,348]}]},{"tag":"LineTo","args":[{"point":[986,323]}]},{"tag":"LineTo","args":[{"point":[972,303]}]},{"tag":"LineTo","args":[{"point":[956,288]}]},{"tag":"LineTo","args":[{"point":[941,276]}]},{"tag":"LineTo","args":[{"point":[926,268]}]},{"tag":"LineTo","args":[{"point":[912,263]}]},{"tag":"LineTo","args":[{"point":[900,261]}]}]},{"start":[638,859],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[656,855]}]},{"tag":"LineTo","args":[{"point":[673,859]}]},{"tag":"LineTo","args":[{"point":[687,869]}]},{"tag":"LineTo","args":[{"point":[697,883]}]},{"tag":"LineTo","args":[{"point":[701,900]}]},{"tag":"LineTo","args":[{"point":[697,918]}]},{"tag":"LineTo","args":[{"point":[687,932]}]},{"tag":"LineTo","args":[{"point":[673,942]}]},{"tag":"LineTo","args":[{"point":[656,945]}]},{"tag":"LineTo","args":[{"point":[638,942]}]},{"tag":"LineTo","args":[{"point":[624,932]}]},{"tag":"LineTo","args":[{"point":[614,918]}]},{"tag":"LineTo","args":[{"point":[611,900]}]},{"tag":"LineTo","args":[{"point":[614,883]}]},{"tag":"LineTo","args":[{"point":[624,869]}]},{"tag":"LineTo","args":[{"point":[638,859]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"react","codePoint":59714},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,421],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[550,421],"end":[576.5,447.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[603,474],"end":[603,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[603,550],"end":[576.5,576.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[550,603],"end":[512,603]}]}]},{"tag":"LineTo","args":[{"point":[512,603]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[474,603],"end":[447.5,576.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[421,550],"end":[421,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[421,474],"end":[447.5,447.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[474,421],"end":[512,421]}]}]}]},{"start":[256,694],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[262,674]}]},{"tag":"LineTo","args":[{"point":[264,667]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,627],"end":[289.5,590]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[304,553],"end":[320,521]}]}]},{"tag":"LineTo","args":[{"point":[324,512]}]},{"tag":"LineTo","args":[{"point":[320,503]}]},{"tag":"LineTo","args":[{"point":[323,509]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[305,472],"end":[290,433.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,395],"end":[262,350]}]}]},{"tag":"LineTo","args":[{"point":[256,330]}]},{"tag":"LineTo","args":[{"point":[236,335]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[124,364],"end":[62,410]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,456],"end":[0,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,568],"end":[62,614]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[124,660],"end":[236,688]}]}]},{"tag":"LineTo","args":[{"point":[256,694]}]}]},{"start":[227,382],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[229,389]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[240,423],"end":[252.5,454]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[265,485],"end":[277,512]}]}]},{"tag":"LineTo","args":[{"point":[280,505]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[265,537],"end":[252,570]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[239,603],"end":[227,642]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[141,618],"end":[92,583]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[43,548],"end":[43,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[43,475],"end":[92,440.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[141,406],"end":[227,382]}]}]}]},{"start":[768,694],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[788,688]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[900,660],"end":[962,614]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,568],"end":[1024,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,456],"end":[962,410]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[900,364],"end":[788,335]}]}]},{"tag":"LineTo","args":[{"point":[768,330]}]},{"tag":"LineTo","args":[{"point":[762,350]}]},{"tag":"LineTo","args":[{"point":[760,357]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[748,396],"end":[734,433.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[720,471],"end":[704,503]}]}]},{"tag":"LineTo","args":[{"point":[699,512]}]},{"tag":"LineTo","args":[{"point":[704,521]}]},{"tag":"LineTo","args":[{"point":[701,515]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[719,551],"end":[734,590]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[749,629],"end":[762,674]}]}]},{"tag":"LineTo","args":[{"point":[768,694]}]}]},{"start":[747,512],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[744,518]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[759,487],"end":[772,454]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[785,421],"end":[797,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[883,406],"end":[932,440.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[981,475],"end":[981,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[981,548],"end":[932,583]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[883,618],"end":[797,642]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[787,610],"end":[774.5,577.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[762,545],"end":[747,512]}]}]}]},{"start":[227,382],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[247,377]}]},{"tag":"LineTo","args":[{"point":[240,378]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[280,368],"end":[321.5,361]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[363,354],"end":[408,351]}]}]},{"tag":"LineTo","args":[{"point":[418,350]}]},{"tag":"LineTo","args":[{"point":[424,341]}]},{"tag":"LineTo","args":[{"point":[426,338]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[449,305],"end":[474.5,274]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[500,243],"end":[527,215]}]}]},{"tag":"LineTo","args":[{"point":[542,200]}]},{"tag":"LineTo","args":[{"point":[527,185]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[447,103],"end":[375,72.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[303,42],"end":[256,69]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[208,97],"end":[198.5,173.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[189,250],"end":[221,362]}]}]},{"tag":"LineTo","args":[{"point":[227,382]}]}]},{"start":[307,99],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[341,99],"end":[386.5,125.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[432,152],"end":[482,200]}]}]},{"tag":"LineTo","args":[{"point":[483,200]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[460,225],"end":[438,252]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[416,279],"end":[395,309]}]}]},{"tag":"LineTo","args":[{"point":[390,309]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[354,313],"end":[320,318]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[286,323],"end":[257,330]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[235,244],"end":[240.5,184]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[246,124],"end":[277,106]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[284,102],"end":[291.5,100.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[299,99],"end":[307,99]}]}]}]},{"start":[717,968],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[717,968]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[717,968],"end":[717.5,968]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[718,968],"end":[718,968]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[732,968],"end":[744.5,964.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[757,961],"end":[768,954]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[816,927],"end":[825.5,850]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[835,773],"end":[803,662]}]}]},{"tag":"LineTo","args":[{"point":[797,642]}]},{"tag":"LineTo","args":[{"point":[777,647]}]},{"tag":"LineTo","args":[{"point":[784,646]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[744,656],"end":[702.5,662.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[661,669],"end":[616,673]}]}]},{"tag":"LineTo","args":[{"point":[606,674]}]},{"tag":"LineTo","args":[{"point":[600,682]}]},{"tag":"LineTo","args":[{"point":[598,685]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[575,718],"end":[549.5,749]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[524,780],"end":[497,809]}]}]},{"tag":"LineTo","args":[{"point":[482,824]}]},{"tag":"LineTo","args":[{"point":[497,839]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[557,901],"end":[614,934.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[671,968],"end":[717,968]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[717,968],"end":[717,968]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[717,968],"end":[717,968]}]}]}]},{"start":[542,823],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[541,824]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,799],"end":[586,772]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,745],"end":[629,715]}]}]},{"tag":"LineTo","args":[{"point":[633,714]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[669,711],"end":[703.5,705.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[738,700],"end":[767,693]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[789,779],"end":[783.5,839]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[778,899],"end":[747,918]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[740,921],"end":[732.5,923]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[725,925],"end":[717,925]}]}]},{"tag":"LineTo","args":[{"point":[717,925]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[683,925],"end":[637.5,898.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[592,872],"end":[542,823]}]}]}]},{"start":[803,362],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[835,250],"end":[825.5,173.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[816,97],"end":[768,69]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[720,42],"end":[648,72.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,103],"end":[497,185]}]}]},{"tag":"LineTo","args":[{"point":[482,200]}]},{"tag":"LineTo","args":[{"point":[497,215]}]},{"tag":"LineTo","args":[{"point":[496,215]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[524,243],"end":[549.5,274.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[575,306],"end":[600,341]}]}]},{"tag":"LineTo","args":[{"point":[606,350]}]},{"tag":"LineTo","args":[{"point":[616,351]}]},{"tag":"LineTo","args":[{"point":[619,351]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[662,354],"end":[702,361]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[742,368],"end":[777,377]}]}]},{"tag":"LineTo","args":[{"point":[797,382]}]},{"tag":"LineTo","args":[{"point":[803,362]}]}]},{"start":[629,309],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[627,306]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[607,278],"end":[585.5,251.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,225],"end":[542,200]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[604,139],"end":[659.5,113.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[715,88],"end":[747,106]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[778,124],"end":[783.5,184]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[789,244],"end":[767,330]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[735,323],"end":[700.5,317.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[666,312],"end":[629,309]}]}]}]},{"start":[307,968],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[353,968],"end":[409.5,934.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[466,901],"end":[527,839]}]}]},{"tag":"LineTo","args":[{"point":[542,824]}]},{"tag":"LineTo","args":[{"point":[527,809]}]},{"tag":"LineTo","args":[{"point":[528,809]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[500,780],"end":[474,749]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[448,718],"end":[424,682]}]}]},{"tag":"LineTo","args":[{"point":[418,674]}]},{"tag":"LineTo","args":[{"point":[408,673]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[365,669],"end":[324.5,662.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[284,656],"end":[247,647]}]}]},{"tag":"LineTo","args":[{"point":[227,642]}]},{"tag":"LineTo","args":[{"point":[221,662]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[189,773],"end":[198.5,850]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[208,927],"end":[256,954]}]}]},{"tag":"LineTo","args":[{"point":[256,954]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[267,961],"end":[279.5,964.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[292,968],"end":[306,968]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[306,968],"end":[306.5,968]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[307,968],"end":[307,968]}]}]}]},{"start":[257,693],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[250,692]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[284,700],"end":[320,705.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[356,711],"end":[395,715]}]}]},{"tag":"LineTo","args":[{"point":[397,718]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[417,746],"end":[438.5,772.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[460,799],"end":[482,823]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[420,884],"end":[364.5,910]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[309,936],"end":[277,918]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[246,899],"end":[240.5,839]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[235,779],"end":[257,693]}]}]}]},{"start":[512,720],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[538,720],"end":[565,719]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[592,718],"end":[619,716]}]}]},{"tag":"LineTo","args":[{"point":[629,715]}]},{"tag":"LineTo","args":[{"point":[635,707]}]},{"tag":"LineTo","args":[{"point":[632,711]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[663,668],"end":[690,621]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[717,574],"end":[742,521]}]}]},{"tag":"LineTo","args":[{"point":[747,512]}]},{"tag":"LineTo","args":[{"point":[742,503]}]},{"tag":"LineTo","args":[{"point":[739,495]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[716,447],"end":[689.5,402]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[663,357],"end":[635,317]}]}]},{"tag":"LineTo","args":[{"point":[629,309]}]},{"tag":"LineTo","args":[{"point":[619,308]}]},{"tag":"LineTo","args":[{"point":[624,308]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[596,306],"end":[568,305]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[540,304],"end":[512,304]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[484,304],"end":[456.5,305]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[429,306],"end":[405,308]}]}]},{"tag":"LineTo","args":[{"point":[395,309]}]},{"tag":"LineTo","args":[{"point":[389,317]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[373,339],"end":[359,362]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[345,385],"end":[331,408]}]}]},{"tag":"LineTo","args":[{"point":[335,402]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[321,424],"end":[308.5,448.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[296,473],"end":[282,503]}]}]},{"tag":"LineTo","args":[{"point":[277,512]}]},{"tag":"LineTo","args":[{"point":[282,521]}]},{"tag":"LineTo","args":[{"point":[285,529]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[296,553],"end":[308,575.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,598],"end":[331,616]}]}]},{"tag":"LineTo","args":[{"point":[335,622]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[348,645],"end":[362,666.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[376,688],"end":[389,707]}]}]},{"tag":"LineTo","args":[{"point":[395,715]}]},{"tag":"LineTo","args":[{"point":[405,716]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[432,718],"end":[459,719]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[486,720],"end":[512,720]}]}]}]},{"start":[418,674],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[421,678]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[395,640],"end":[371,599.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[347,559],"end":[325,512]}]}]},{"tag":"LineTo","args":[{"point":[328,505]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[348,463],"end":[371,424]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[394,385],"end":[418,350]}]}]},{"tag":"LineTo","args":[{"point":[414,350]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[438,348],"end":[462.5,347]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[487,346],"end":[512,346]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[537,346],"end":[561,347]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[585,348],"end":[606,350]}]}]},{"tag":"LineTo","args":[{"point":[603,346]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[629,383],"end":[653,424]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[677,465],"end":[699,512]}]}]},{"tag":"LineTo","args":[{"point":[696,519]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[676,561],"end":[653,600]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[630,639],"end":[606,674]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[558,677],"end":[512,677]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[466,677],"end":[418,674]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"stackexchange","codePoint":59715},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[927,665],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[97,665]}]},{"tag":"LineTo","args":[{"point":[97,709]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[97,765],"end":[136,804.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[175,844],"end":[229,844]}]}]},{"tag":"LineTo","args":[{"point":[582,844]}]},{"tag":"LineTo","args":[{"point":[582,1024]}]},{"tag":"LineTo","args":[{"point":[756,844]}]},{"tag":"LineTo","args":[{"point":[795,844]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[849,844],"end":[888,804.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[927,765],"end":[927,709]}]}]},{"tag":"LineTo","args":[{"point":[927,665]}]}]},{"start":[97,446],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[97,616]}]},{"tag":"LineTo","args":[{"point":[922,616]}]},{"tag":"LineTo","args":[{"point":[922,446]}]},{"tag":"LineTo","args":[{"point":[97,446]}]}]},{"start":[97,227],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[97,397]}]},{"tag":"LineTo","args":[{"point":[922,397]}]},{"tag":"LineTo","args":[{"point":[922,227]}]},{"tag":"LineTo","args":[{"point":[97,227]}]}]},{"start":[793,0],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[229,0]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[175,0],"end":[136,39.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[97,79],"end":[97,136]}]}]},{"tag":"LineTo","args":[{"point":[97,180]}]},{"tag":"LineTo","args":[{"point":[922,180]}]},{"tag":"LineTo","args":[{"point":[922,136]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[922,79],"end":[884,39.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[846,0],"end":[793,0]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"stackoverflow","codePoint":59716},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[810,933],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[170,933]}]},{"tag":"LineTo","args":[{"point":[170,660]}]},{"tag":"LineTo","args":[{"point":[79,660]}]},{"tag":"LineTo","args":[{"point":[79,1024]}]},{"tag":"LineTo","args":[{"point":[901,1024]}]},{"tag":"LineTo","args":[{"point":[901,660]}]},{"tag":"LineTo","args":[{"point":[810,660]}]},{"tag":"LineTo","args":[{"point":[810,933]}]}]},{"start":[261,751],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[719,751]}]},{"tag":"LineTo","args":[{"point":[719,842]}]},{"tag":"LineTo","args":[{"point":[261,842]}]},{"tag":"LineTo","args":[{"point":[261,751]}]}]},{"start":[272,635],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[291,547]}]},{"tag":"LineTo","args":[{"point":[738,640]}]},{"tag":"LineTo","args":[{"point":[719,728]}]},{"tag":"LineTo","args":[{"point":[272,635]}]}]},{"start":[330,419],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[368,336]}]},{"tag":"LineTo","args":[{"point":[782,529]}]},{"tag":"LineTo","args":[{"point":[744,612]}]},{"tag":"LineTo","args":[{"point":[330,419]}]}]},{"start":[446,215],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[446,215]}]},{"tag":"LineTo","args":[{"point":[504,146]}]},{"tag":"LineTo","args":[{"point":[854,438]}]},{"tag":"LineTo","args":[{"point":[796,507]}]},{"tag":"LineTo","args":[{"point":[446,215]}]}]},{"start":[945,367],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[871,422]}]},{"tag":"LineTo","args":[{"point":[598,55]}]},{"tag":"LineTo","args":[{"point":[672,0]}]},{"tag":"LineTo","args":[{"point":[945,367]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"telegram","codePoint":59717},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[1020,161],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1032,114],"end":[1008.5,94]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[985,74],"end":[954,87]}]}]},{"tag":"LineTo","args":[{"point":[47,437]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1,456],"end":[0,478.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[-1,501],"end":[36,512]}]}]},{"tag":"LineTo","args":[{"point":[269,585]}]},{"tag":"LineTo","args":[{"point":[350,849]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[358,870],"end":[360.5,879.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[363,889],"end":[386,889]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[403,889],"end":[413,882]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[423,875],"end":[433,865]}]}]},{"tag":"LineTo","args":[{"point":[546,756]}]},{"tag":"LineTo","args":[{"point":[781,929]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[813,947],"end":[835.5,937.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[858,928],"end":[866,889]}]}]},{"tag":"LineTo","args":[{"point":[1020,162]}]},{"tag":"LineTo","args":[{"point":[1020,161]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"twitter","codePoint":59718},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[1022,195],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[1024,196]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1003,227],"end":[976.5,254.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[950,282],"end":[919,305]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[920,311],"end":[920,318]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[920,325],"end":[920,331]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[920,435],"end":[881,541]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[842,648],"end":[766,734]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[690,820],"end":[579,874]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[467,928],"end":[322,928]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[278,928],"end":[235,922]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,915],"end":[151.5,903]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[111,891],"end":[73,874]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[35,856],"end":[0,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[13,835],"end":[25,836]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[37,837],"end":[50,837]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[123,837],"end":[190,813]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[257,789],"end":[310,747]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[241,746],"end":[187.5,705]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[134,664],"end":[114,601]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[123,603],"end":[133,604]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[143,605],"end":[153,605]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[167,605],"end":[181,603]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[195,601],"end":[208,598]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,583],"end":[88,525.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[40,468],"end":[40,392]}]}]},{"tag":"LineTo","args":[{"point":[40,389]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[61,401],"end":[85,407.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[109,414],"end":[135,415]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[93,387],"end":[67.5,341]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[42,295],"end":[42,240]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[42,211],"end":[49,184.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[56,158],"end":[70,135]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[109,182],"end":[157,221]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[205,260],"end":[260,288.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[315,317],"end":[376,334]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[437,350],"end":[503,354]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[500,342],"end":[498.5,330]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[497,318],"end":[497,306]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[497,262],"end":[514,224]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[530,186],"end":[558.5,157.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[587,129],"end":[625,112]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[664,96],"end":[707,96]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[753,96],"end":[792.5,114]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,132],"end":[860,162]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,155],"end":[929.5,142.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[963,130],"end":[994,112]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[982,149],"end":[958,178.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[934,208],"end":[902,228]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[933,224],"end":[963.5,215.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[994,207],"end":[1022,195]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"visualstudiocode","codePoint":59719},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[768,0],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,831]}]},{"tag":"LineTo","args":[{"point":[0,765]}]},{"tag":"LineTo","args":[{"point":[0,789]}]},{"tag":"LineTo","args":[{"point":[768,1024]}]},{"tag":"LineTo","args":[{"point":[1024,917]}]},{"tag":"LineTo","args":[{"point":[1024,107]}]},{"tag":"LineTo","args":[{"point":[768,0]}]}]},{"start":[103,595],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[250,484]}]},{"tag":"LineTo","args":[{"point":[512,725]}]},{"tag":"LineTo","args":[{"point":[640,663]}]},{"tag":"LineTo","args":[{"point":[640,190]}]},{"tag":"LineTo","args":[{"point":[512,128]}]},{"tag":"LineTo","args":[{"point":[250,369]}]},{"tag":"LineTo","args":[{"point":[103,259]}]},{"tag":"LineTo","args":[{"point":[43,294]}]},{"tag":"LineTo","args":[{"point":[187,427]}]},{"tag":"LineTo","args":[{"point":[43,559]}]},{"tag":"LineTo","args":[{"point":[103,595]}]}]},{"start":[512,287],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,567]}]},{"tag":"LineTo","args":[{"point":[326,427]}]},{"tag":"LineTo","args":[{"point":[512,287]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"webpack","codePoint":59720},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[897,773],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[757,693]}]},{"tag":"LineTo","args":[{"point":[527,819]}]},{"tag":"LineTo","args":[{"point":[527,981]}]},{"tag":"LineTo","args":[{"point":[897,773]}]}]},{"start":[922,750],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[787,673]}]},{"tag":"LineTo","args":[{"point":[787,393]}]},{"tag":"LineTo","args":[{"point":[922,315]}]},{"tag":"LineTo","args":[{"point":[922,750]}]}]},{"start":[125,773],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[264,693]}]},{"tag":"LineTo","args":[{"point":[495,819]}]},{"tag":"LineTo","args":[{"point":[495,981]}]},{"tag":"LineTo","args":[{"point":[125,773]}]}]},{"start":[100,750],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[235,673]}]},{"tag":"LineTo","args":[{"point":[235,393]}]},{"tag":"LineTo","args":[{"point":[100,315]}]},{"tag":"LineTo","args":[{"point":[100,750]}]}]},{"start":[115,287],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[250,364]}]},{"tag":"LineTo","args":[{"point":[495,230]}]},{"tag":"LineTo","args":[{"point":[495,73]}]},{"tag":"LineTo","args":[{"point":[115,287]}]}]},{"start":[906,287],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[772,364]}]},{"tag":"LineTo","args":[{"point":[527,230]}]},{"tag":"LineTo","args":[{"point":[527,73]}]},{"tag":"LineTo","args":[{"point":[906,287]}]}]},{"start":[495,782],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[495,542]}]},{"tag":"LineTo","args":[{"point":[267,411]}]},{"tag":"LineTo","args":[{"point":[267,658]}]},{"tag":"LineTo","args":[{"point":[495,782]}]}]},{"start":[527,782],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[527,542]}]},{"tag":"LineTo","args":[{"point":[754,411]}]},{"tag":"LineTo","args":[{"point":[754,658]}]},{"tag":"LineTo","args":[{"point":[527,782]}]}]},{"start":[283,383],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[511,514]}]},{"tag":"LineTo","args":[{"point":[739,383]}]},{"tag":"LineTo","args":[{"point":[511,258]}]},{"tag":"LineTo","args":[{"point":[283,383]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"yarn","codePoint":59721},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[711,40],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[711,40]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[805,80],"end":[874.5,149.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[944,219],"end":[984,313]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,406],"end":[1024,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,618],"end":[984,711]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[944,805],"end":[874.5,874.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[805,944],"end":[711,984]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,1024],"end":[512,1024]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[406,1024],"end":[313,984]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[219,944],"end":[149.5,874.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[80,805],"end":[40,711]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,618],"end":[0,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,406],"end":[40,313]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[80,219],"end":[149.5,149.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[219,80],"end":[313,40]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[406,0],"end":[512,0]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,0],"end":[711,40]}]}]}]},{"start":[545,175],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[545,175]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[541,175],"end":[537.5,175.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[534,176],"end":[531,178]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[518,182],"end":[507.5,194]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[497,206],"end":[487,227]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[485,231],"end":[484,234]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[483,237],"end":[482,240]}]}]},{"tag":"LineTo","args":[{"point":[481,240]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[452,242],"end":[427,254]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[402,266],"end":[384,287]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,290],"end":[374.5,292.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[369,295],"end":[363,298]}]}]},{"tag":"LineTo","args":[{"point":[363,298]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[350,302],"end":[342.5,313.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[335,325],"end":[328,344]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[318,371],"end":[325,396]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[332,421],"end":[342,438]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[328,451],"end":[312,470]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[296,489],"end":[286,512]}]}]},{"tag":"LineTo","args":[{"point":[286,511]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[278,532],"end":[273,554.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[268,577],"end":[268,601]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[268,603],"end":[268,605]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[268,607],"end":[268,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[258,619],"end":[245.5,638.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[233,658],"end":[231,681]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[228,714],"end":[236.5,735]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[245,756],"end":[250,764]}]}]},{"tag":"LineTo","args":[{"point":[250,765]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[252,767],"end":[253.5,769]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[255,771],"end":[257,773]}]}]},{"tag":"LineTo","args":[{"point":[257,772]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,774],"end":[256,776.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,779],"end":[256,781]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,794],"end":[263,805]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[270,816],"end":[281,822]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[301,832],"end":[326,835]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[351,838],"end":[372,828]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,836],"end":[394.5,842.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[409,849],"end":[434,849]}]}]},{"tag":"LineTo","args":[{"point":[436,849]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[442,849],"end":[501,845]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[560,841],"end":[584,835]}]}]},{"tag":"LineTo","args":[{"point":[584,835]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[593,833],"end":[600,829.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[607,826],"end":[614,821]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[629,816],"end":[666,801.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[703,787],"end":[742,761]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[770,743],"end":[784.5,736.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[799,730],"end":[820,725]}]}]},{"tag":"LineTo","args":[{"point":[820,725]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[838,721],"end":[849.5,707]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[861,693],"end":[861,674]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[861,672],"end":[861,670.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[861,669],"end":[860,667]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[858,646],"end":[841.5,633]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[825,620],"end":[803,620]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,621],"end":[740.5,634.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[713,648],"end":[694,660]}]}]},{"tag":"LineTo","args":[{"point":[695,659]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[689,663],"end":[682.5,666.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[676,670],"end":[668,674]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[669,657],"end":[667,635]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[665,613],"end":[656,588]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,558],"end":[632,539.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[619,521],"end":[609,510]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[621,492],"end":[635,466]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[649,440],"end":[657,400]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[664,366],"end":[661,321]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[658,276],"end":[643,246]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,240],"end":[634.5,236]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[629,232],"end":[623,230]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[620,230],"end":[614.5,229]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[609,228],"end":[599,231]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[584,200],"end":[577.5,192.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[571,185],"end":[567,182]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[562,179],"end":[556.5,177]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[551,175],"end":[545,175]}]}]}]},{"start":[545,205],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[545,205]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[545,205],"end":[545,205]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[545,205],"end":[545,205]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[547,205],"end":[548.5,205.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[550,206],"end":[552,207]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[557,211],"end":[571,240.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[585,270],"end":[585,270]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[585,270],"end":[599.5,262.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[614,255],"end":[617,260]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[629,285],"end":[631.5,325.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[634,366],"end":[628,394]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[619,442],"end":[600,469.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[581,497],"end":[571,513]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[569,517],"end":[590,533.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[611,550],"end":[629,598]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,643],"end":[638.5,675.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[632,708],"end":[634,712]}]}]},{"tag":"LineTo","args":[{"point":[635,714]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[635,714],"end":[653.5,711]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,708],"end":[709,685]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[729,673],"end":[752.5,661.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[776,650],"end":[803,650]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[829,650],"end":[831,670.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[833,691],"end":[813,696]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[790,702],"end":[773,709.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[756,717],"end":[727,736]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[681,766],"end":[640,780]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[599,794],"end":[599,794]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[599,794],"end":[594,798.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[589,803],"end":[577,806]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[556,811],"end":[499.5,815]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[443,819],"end":[436,819]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[417,819],"end":[405,814.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[393,810],"end":[390,802]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,778],"end":[394.5,767]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[409,756],"end":[409,756]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[409,756],"end":[405,753.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[401,751],"end":[398,748]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[395,745],"end":[392.5,741]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[390,737],"end":[389,739]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[385,749],"end":[381.5,766.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[378,784],"end":[368,794]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[355,808],"end":[333,806]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[311,804],"end":[295,796]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[279,787],"end":[288,771.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[297,756],"end":[297,756]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[297,756],"end":[289.5,758]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[282,760],"end":[275,749]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[269,739],"end":[264,722]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[259,705],"end":[261,684]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[262,660],"end":[280.5,640.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[299,621],"end":[299,621]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[299,621],"end":[298.5,591]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,561],"end":[313,524]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[327,491],"end":[355,467.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[383,444],"end":[383,444]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[383,444],"end":[363.5,415]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[344,386],"end":[356,354]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[364,334],"end":[367.5,330.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[371,327],"end":[374,326]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[383,322],"end":[391,318]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[399,314],"end":[406,307]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[438,273],"end":[470,271.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[502,270],"end":[502,270]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[502,270],"end":[515.5,238]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[529,206],"end":[545,205]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"youtube","codePoint":59722},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[1002,265],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[1001,257]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1012,316],"end":[1018,377.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,439],"end":[1024,502]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,505],"end":[1024,507.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,510],"end":[1024,512]}]}]},{"tag":"LineTo","args":[{"point":[1024,512]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,514],"end":[1024,516.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,519],"end":[1024,521]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,584],"end":[1018.5,645]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1013,706],"end":[1002,759]}]}]},{"tag":"LineTo","args":[{"point":[1002,760]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[993,792],"end":[969.5,815.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[946,839],"end":[913,848]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[883,856],"end":[817,861]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[750,865],"end":[682.5,867]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,869],"end":[564,869]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,870],"end":[512,870]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,870],"end":[461,869]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[410,869],"end":[342,867]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[274,865],"end":[208,861]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[141,856],"end":[112,848]}]}]},{"tag":"LineTo","args":[{"point":[111,848]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[79,839],"end":[55.5,815.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,792],"end":[22,759]}]}]},{"tag":"LineTo","args":[{"point":[24,767]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[12,707],"end":[6,644]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,581],"end":[0,516]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,515],"end":[0,514]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,513],"end":[0,512]}]}]},{"tag":"LineTo","args":[{"point":[0,513]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,511],"end":[0,510]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,509],"end":[0,507]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,443],"end":[6,381]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[12,319],"end":[22,265]}]}]},{"tag":"LineTo","args":[{"point":[23,264]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[32,232],"end":[55.5,208.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[79,185],"end":[112,176]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[142,167],"end":[208,163]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,159],"end":[342.5,157]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[410,155],"end":[461,155]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,154],"end":[512,154]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[512,154],"end":[564,155]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[615,155],"end":[683,157]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[751,159],"end":[817,163]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[883,168],"end":[913,176]}]}]},{"tag":"LineTo","args":[{"point":[914,176]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[946,185],"end":[969.5,208.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[993,232],"end":[1002,265]}]}]}]},{"start":[677,512],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[410,359]}]},{"tag":"LineTo","args":[{"point":[410,666]}]},{"tag":"LineTo","args":[{"point":[677,512]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"error","codePoint":59723},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[470,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,319]}]},{"tag":"LineTo","args":[{"point":[554,319]}]},{"tag":"LineTo","args":[{"point":[554,575]}]},{"tag":"LineTo","args":[{"point":[470,575]}]}]},{"start":[470,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,661]}]},{"tag":"LineTo","args":[{"point":[554,661]}]},{"tag":"LineTo","args":[{"point":[554,747]}]},{"tag":"LineTo","args":[{"point":[470,747]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"error_outline","codePoint":59724},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]},{"start":[470,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,575]}]},{"tag":"LineTo","args":[{"point":[554,319]}]},{"tag":"LineTo","args":[{"point":[470,319]}]},{"tag":"LineTo","args":[{"point":[470,575]}]}]},{"start":[470,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,747]}]},{"tag":"LineTo","args":[{"point":[554,661]}]},{"tag":"LineTo","args":[{"point":[470,661]}]},{"tag":"LineTo","args":[{"point":[470,747]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"warningreport_problem","codePoint":59725},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[470,619],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,447]}]},{"tag":"LineTo","args":[{"point":[554,447]}]},{"tag":"LineTo","args":[{"point":[554,619]}]},{"tag":"LineTo","args":[{"point":[470,619]}]}]},{"start":[470,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,703]}]},{"tag":"LineTo","args":[{"point":[554,703]}]},{"tag":"LineTo","args":[{"point":[554,789]}]},{"tag":"LineTo","args":[{"point":[470,789]}]}]},{"start":[982,917],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,107]}]},{"tag":"LineTo","args":[{"point":[42,917]}]},{"tag":"LineTo","args":[{"point":[982,917]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"library_addqueueadd_to_photos","codePoint":59726},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[640,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[640,661]}]},{"tag":"LineTo","args":[{"point":[554,661]}]},{"tag":"LineTo","args":[{"point":[554,491]}]},{"tag":"LineTo","args":[{"point":[384,491]}]},{"tag":"LineTo","args":[{"point":[384,405]}]},{"tag":"LineTo","args":[{"point":[554,405]}]},{"tag":"LineTo","args":[{"point":[554,235]}]},{"tag":"LineTo","args":[{"point":[640,235]}]},{"tag":"LineTo","args":[{"point":[640,405]}]},{"tag":"LineTo","args":[{"point":[810,405]}]},{"tag":"LineTo","args":[{"point":[810,491]}]},{"tag":"LineTo","args":[{"point":[640,491]}]}]},{"start":[342,107],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[308,107],"end":[282,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,157],"end":[256,191]}]}]},{"tag":"LineTo","args":[{"point":[256,703]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,737],"end":[282,763]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[308,789],"end":[342,789]}]}]},{"tag":"LineTo","args":[{"point":[854,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,789],"end":[913,763]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,737],"end":[938,703]}]}]},{"tag":"LineTo","args":[{"point":[938,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,157],"end":[913,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,107],"end":[854,107]}]}]},{"tag":"LineTo","args":[{"point":[342,107]}]}]},{"start":[86,277],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[86,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,909],"end":[111,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,959],"end":[170,959]}]}]},{"tag":"LineTo","args":[{"point":[768,959]}]},{"tag":"LineTo","args":[{"point":[768,875]}]},{"tag":"LineTo","args":[{"point":[170,875]}]},{"tag":"LineTo","args":[{"point":[170,277]}]},{"tag":"LineTo","args":[{"point":[86,277]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"library_music","codePoint":59727},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[86,277],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[86,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,909],"end":[111,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,959],"end":[170,959]}]}]},{"tag":"LineTo","args":[{"point":[768,959]}]},{"tag":"LineTo","args":[{"point":[768,875]}]},{"tag":"LineTo","args":[{"point":[170,875]}]},{"tag":"LineTo","args":[{"point":[170,277]}]},{"tag":"LineTo","args":[{"point":[86,277]}]}]},{"start":[640,319],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[640,555]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,599],"end":[609,630]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[578,661],"end":[534,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[490,661],"end":[458,630]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,599],"end":[426,555]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,511],"end":[458,479]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[490,447],"end":[534,447]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[570,447],"end":[598,469]}]}]},{"tag":"LineTo","args":[{"point":[598,235]}]},{"tag":"LineTo","args":[{"point":[768,235]}]},{"tag":"LineTo","args":[{"point":[768,319]}]},{"tag":"LineTo","args":[{"point":[640,319]}]}]},{"start":[342,107],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[308,107],"end":[282,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,157],"end":[256,191]}]}]},{"tag":"LineTo","args":[{"point":[256,703]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,737],"end":[282,763]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[308,789],"end":[342,789]}]}]},{"tag":"LineTo","args":[{"point":[854,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,789],"end":[913,763]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,737],"end":[938,703]}]}]},{"tag":"LineTo","args":[{"point":[938,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,157],"end":[913,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,107],"end":[854,107]}]}]},{"tag":"LineTo","args":[{"point":[342,107]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"new_releases","codePoint":59728},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[470,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,319]}]},{"tag":"LineTo","args":[{"point":[554,319]}]},{"tag":"LineTo","args":[{"point":[554,575]}]},{"tag":"LineTo","args":[{"point":[470,575]}]}]},{"start":[470,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,661]}]},{"tag":"LineTo","args":[{"point":[554,661]}]},{"tag":"LineTo","args":[{"point":[554,747]}]},{"tag":"LineTo","args":[{"point":[470,747]}]}]},{"start":[878,415],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[892,257]}]},{"tag":"LineTo","args":[{"point":[738,223]}]},{"tag":"LineTo","args":[{"point":[658,87]}]},{"tag":"LineTo","args":[{"point":[512,149]}]},{"tag":"LineTo","args":[{"point":[366,87]}]},{"tag":"LineTo","args":[{"point":[286,223]}]},{"tag":"LineTo","args":[{"point":[132,257]}]},{"tag":"LineTo","args":[{"point":[146,413]}]},{"tag":"LineTo","args":[{"point":[42,533]}]},{"tag":"LineTo","args":[{"point":[146,651]}]},{"tag":"LineTo","args":[{"point":[132,809]}]},{"tag":"LineTo","args":[{"point":[286,845]}]},{"tag":"LineTo","args":[{"point":[366,979]}]},{"tag":"LineTo","args":[{"point":[512,917]}]},{"tag":"LineTo","args":[{"point":[658,979]}]},{"tag":"LineTo","args":[{"point":[738,843]}]},{"tag":"LineTo","args":[{"point":[892,809]}]},{"tag":"LineTo","args":[{"point":[878,651]}]},{"tag":"LineTo","args":[{"point":[982,533]}]},{"tag":"LineTo","args":[{"point":[878,415]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"not_interesteddo_not_disturb","codePoint":59729},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[302,263],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[340,233],"end":[402,212]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[464,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,653],"end":[782,743]}]}]},{"tag":"LineTo","args":[{"point":[302,263]}]}]},{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,413],"end":[242,323]}]}]},{"tag":"LineTo","args":[{"point":[722,803]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[684,833],"end":[622,854]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[560,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"pause","codePoint":59730},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[598,831],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,831]}]},{"tag":"LineTo","args":[{"point":[768,235]}]},{"tag":"LineTo","args":[{"point":[598,235]}]},{"tag":"LineTo","args":[{"point":[598,831]}]}]},{"start":[426,831],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,235]}]},{"tag":"LineTo","args":[{"point":[256,235]}]},{"tag":"LineTo","args":[{"point":[256,831]}]},{"tag":"LineTo","args":[{"point":[426,831]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"pause_circle_filled","codePoint":59731},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[554,703],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,363]}]},{"tag":"LineTo","args":[{"point":[640,363]}]},{"tag":"LineTo","args":[{"point":[640,703]}]},{"tag":"LineTo","args":[{"point":[554,703]}]}]},{"start":[384,703],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[384,363]}]},{"tag":"LineTo","args":[{"point":[470,363]}]},{"tag":"LineTo","args":[{"point":[470,703]}]},{"tag":"LineTo","args":[{"point":[384,703]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"pause_circle_outline","codePoint":59732},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[640,703],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[640,363]}]},{"tag":"LineTo","args":[{"point":[554,363]}]},{"tag":"LineTo","args":[{"point":[554,703]}]},{"tag":"LineTo","args":[{"point":[640,703]}]}]},{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]},{"start":[470,703],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,363]}]},{"tag":"LineTo","args":[{"point":[384,363]}]},{"tag":"LineTo","args":[{"point":[384,703]}]},{"tag":"LineTo","args":[{"point":[470,703]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"play_arrow","codePoint":59733},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[342,831],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[810,533]}]},{"tag":"LineTo","args":[{"point":[342,235]}]},{"tag":"LineTo","args":[{"point":[342,831]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"play_circle_filled","codePoint":59734},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[426,341],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,533]}]},{"tag":"LineTo","args":[{"point":[426,725]}]},{"tag":"LineTo","args":[{"point":[426,341]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"play_circle_outline","codePoint":59735},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]},{"start":[682,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,341]}]},{"tag":"LineTo","args":[{"point":[426,725]}]},{"tag":"LineTo","args":[{"point":[682,533]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"repeat","codePoint":59736},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[298,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[298,619]}]},{"tag":"LineTo","args":[{"point":[128,789]}]},{"tag":"LineTo","args":[{"point":[298,959]}]},{"tag":"LineTo","args":[{"point":[298,831]}]},{"tag":"LineTo","args":[{"point":[810,831]}]},{"tag":"LineTo","args":[{"point":[810,575]}]},{"tag":"LineTo","args":[{"point":[726,575]}]},{"tag":"LineTo","args":[{"point":[726,747]}]},{"tag":"LineTo","args":[{"point":[298,747]}]}]},{"start":[726,319],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[726,447]}]},{"tag":"LineTo","args":[{"point":[896,277]}]},{"tag":"LineTo","args":[{"point":[726,107]}]},{"tag":"LineTo","args":[{"point":[726,235]}]},{"tag":"LineTo","args":[{"point":[214,235]}]},{"tag":"LineTo","args":[{"point":[214,491]}]},{"tag":"LineTo","args":[{"point":[298,491]}]},{"tag":"LineTo","args":[{"point":[298,319]}]},{"tag":"LineTo","args":[{"point":[726,319]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"repeat_one","codePoint":59737},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[554,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,405]}]},{"tag":"LineTo","args":[{"point":[426,447]}]},{"tag":"LineTo","args":[{"point":[426,491]}]},{"tag":"LineTo","args":[{"point":[490,491]}]},{"tag":"LineTo","args":[{"point":[490,661]}]},{"tag":"LineTo","args":[{"point":[554,661]}]},{"tag":"LineTo","args":[{"point":[554,405]}]}]},{"start":[298,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[298,619]}]},{"tag":"LineTo","args":[{"point":[128,789]}]},{"tag":"LineTo","args":[{"point":[298,959]}]},{"tag":"LineTo","args":[{"point":[298,831]}]},{"tag":"LineTo","args":[{"point":[810,831]}]},{"tag":"LineTo","args":[{"point":[810,575]}]},{"tag":"LineTo","args":[{"point":[726,575]}]},{"tag":"LineTo","args":[{"point":[726,747]}]},{"tag":"LineTo","args":[{"point":[298,747]}]}]},{"start":[726,319],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[726,447]}]},{"tag":"LineTo","args":[{"point":[896,277]}]},{"tag":"LineTo","args":[{"point":[726,107]}]},{"tag":"LineTo","args":[{"point":[726,235]}]},{"tag":"LineTo","args":[{"point":[214,235]}]},{"tag":"LineTo","args":[{"point":[214,491]}]},{"tag":"LineTo","args":[{"point":[298,491]}]},{"tag":"LineTo","args":[{"point":[298,319]}]},{"tag":"LineTo","args":[{"point":[726,319]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"replay","codePoint":59738},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,63],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[298,277]}]},{"tag":"LineTo","args":[{"point":[512,491]}]},{"tag":"LineTo","args":[{"point":[512,319]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,319],"end":[693,394]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,469],"end":[768,575]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,681],"end":[693,756]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,831],"end":[512,831]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[406,831],"end":[331,756]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,681],"end":[256,575]}]}]},{"tag":"LineTo","args":[{"point":[170,575]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,717],"end":[271,817]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,917],"end":[512,917]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,917],"end":[753,817]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,717],"end":[854,575]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,435],"end":[754,335]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[654,235],"end":[512,235]}]}]},{"tag":"LineTo","args":[{"point":[512,63]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"shuffle","codePoint":59739},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[572,653],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[706,787]}]},{"tag":"LineTo","args":[{"point":[618,875]}]},{"tag":"LineTo","args":[{"point":[854,875]}]},{"tag":"LineTo","args":[{"point":[854,639]}]},{"tag":"LineTo","args":[{"point":[766,727]}]},{"tag":"LineTo","args":[{"point":[632,593]}]},{"tag":"LineTo","args":[{"point":[572,653]}]}]},{"start":[706,279],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[170,815]}]},{"tag":"LineTo","args":[{"point":[230,875]}]},{"tag":"LineTo","args":[{"point":[766,339]}]},{"tag":"LineTo","args":[{"point":[854,427]}]},{"tag":"LineTo","args":[{"point":[854,191]}]},{"tag":"LineTo","args":[{"point":[618,191]}]},{"tag":"LineTo","args":[{"point":[706,279]}]}]},{"start":[230,191],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[170,251]}]},{"tag":"LineTo","args":[{"point":[392,473]}]},{"tag":"LineTo","args":[{"point":[452,413]}]},{"tag":"LineTo","args":[{"point":[230,191]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"skip_next","codePoint":59740},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[682,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,789]}]},{"tag":"LineTo","args":[{"point":[768,277]}]},{"tag":"LineTo","args":[{"point":[682,277]}]},{"tag":"LineTo","args":[{"point":[682,789]}]}]},{"start":[618,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[256,277]}]},{"tag":"LineTo","args":[{"point":[256,789]}]},{"tag":"LineTo","args":[{"point":[618,533]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"skip_previous","codePoint":59741},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[768,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,277]}]},{"tag":"LineTo","args":[{"point":[406,533]}]},{"tag":"LineTo","args":[{"point":[768,789]}]}]},{"start":[256,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[342,789]}]},{"tag":"LineTo","args":[{"point":[342,277]}]},{"tag":"LineTo","args":[{"point":[256,277]}]},{"tag":"LineTo","args":[{"point":[256,789]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"emailmailmarkunreadlocal_post_office","codePoint":59742},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[170,363]}]},{"tag":"LineTo","args":[{"point":[170,277]}]},{"tag":"LineTo","args":[{"point":[512,491]}]},{"tag":"LineTo","args":[{"point":[854,277]}]},{"tag":"LineTo","args":[{"point":[854,363]}]},{"tag":"LineTo","args":[{"point":[512,575]}]}]},{"start":[170,191],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,191],"end":[111,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,243],"end":[86,277]}]}]},{"tag":"LineTo","args":[{"point":[86,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,823],"end":[111,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,875],"end":[170,875]}]}]},{"tag":"LineTo","args":[{"point":[854,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,875],"end":[913,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,823],"end":[938,789]}]}]},{"tag":"LineTo","args":[{"point":[938,277]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,243],"end":[913,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,191],"end":[854,191]}]}]},{"tag":"LineTo","args":[{"point":[170,191]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"vpn_key","codePoint":59743},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[239,593],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[239,593]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,567],"end":[214,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,499],"end":[239,473]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[264,447],"end":[298,447]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[332,447],"end":[358,473]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,499],"end":[384,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,567],"end":[358,593]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[332,619],"end":[298,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[264,619],"end":[239,593]}]}]}]},{"start":[443,327],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[443,327]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,277],"end":[298,277]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,277],"end":[117,352]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[42,427],"end":[42,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[42,639],"end":[117,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,789],"end":[298,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,789],"end":[443,739]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[514,689],"end":[540,619]}]}]},{"tag":"LineTo","args":[{"point":[726,619]}]},{"tag":"LineTo","args":[{"point":[726,789]}]},{"tag":"LineTo","args":[{"point":[896,789]}]},{"tag":"LineTo","args":[{"point":[896,619]}]},{"tag":"LineTo","args":[{"point":[982,619]}]},{"tag":"LineTo","args":[{"point":[982,447]}]},{"tag":"LineTo","args":[{"point":[540,447]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[514,377],"end":[443,327]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"add","codePoint":59744},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[810,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,491]}]},{"tag":"LineTo","args":[{"point":[554,235]}]},{"tag":"LineTo","args":[{"point":[470,235]}]},{"tag":"LineTo","args":[{"point":[470,491]}]},{"tag":"LineTo","args":[{"point":[214,491]}]},{"tag":"LineTo","args":[{"point":[214,575]}]},{"tag":"LineTo","args":[{"point":[470,575]}]},{"tag":"LineTo","args":[{"point":[470,831]}]},{"tag":"LineTo","args":[{"point":[554,831]}]},{"tag":"LineTo","args":[{"point":[554,575]}]},{"tag":"LineTo","args":[{"point":[810,575]}]},{"tag":"LineTo","args":[{"point":[810,491]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"add_box","codePoint":59745},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[554,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,747]}]},{"tag":"LineTo","args":[{"point":[470,747]}]},{"tag":"LineTo","args":[{"point":[470,575]}]},{"tag":"LineTo","args":[{"point":[298,575]}]},{"tag":"LineTo","args":[{"point":[298,491]}]},{"tag":"LineTo","args":[{"point":[470,491]}]},{"tag":"LineTo","args":[{"point":[470,319]}]},{"tag":"LineTo","args":[{"point":[554,319]}]},{"tag":"LineTo","args":[{"point":[554,491]}]},{"tag":"LineTo","args":[{"point":[726,491]}]},{"tag":"LineTo","args":[{"point":[726,575]}]},{"tag":"LineTo","args":[{"point":[554,575]}]}]},{"start":[214,149],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,149],"end":[153,174]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,199],"end":[128,235]}]}]},{"tag":"LineTo","args":[{"point":[128,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,867],"end":[153,892]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,917],"end":[214,917]}]}]},{"tag":"LineTo","args":[{"point":[810,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,917],"end":[870,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,865],"end":[896,831]}]}]},{"tag":"LineTo","args":[{"point":[896,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,201],"end":[870,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,149],"end":[810,149]}]}]},{"tag":"LineTo","args":[{"point":[214,149]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"add_circle","codePoint":59746},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[554,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,747]}]},{"tag":"LineTo","args":[{"point":[470,747]}]},{"tag":"LineTo","args":[{"point":[470,575]}]},{"tag":"LineTo","args":[{"point":[298,575]}]},{"tag":"LineTo","args":[{"point":[298,491]}]},{"tag":"LineTo","args":[{"point":[470,491]}]},{"tag":"LineTo","args":[{"point":[470,319]}]},{"tag":"LineTo","args":[{"point":[554,319]}]},{"tag":"LineTo","args":[{"point":[554,491]}]},{"tag":"LineTo","args":[{"point":[726,491]}]},{"tag":"LineTo","args":[{"point":[726,575]}]},{"tag":"LineTo","args":[{"point":[554,575]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"add_circle_outlinecontrol_point","codePoint":59747},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]},{"start":[470,319],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,491]}]},{"tag":"LineTo","args":[{"point":[298,491]}]},{"tag":"LineTo","args":[{"point":[298,575]}]},{"tag":"LineTo","args":[{"point":[470,575]}]},{"tag":"LineTo","args":[{"point":[470,747]}]},{"tag":"LineTo","args":[{"point":[554,747]}]},{"tag":"LineTo","args":[{"point":[554,575]}]},{"tag":"LineTo","args":[{"point":[726,575]}]},{"tag":"LineTo","args":[{"point":[726,491]}]},{"tag":"LineTo","args":[{"point":[554,491]}]},{"tag":"LineTo","args":[{"point":[554,319]}]},{"tag":"LineTo","args":[{"point":[470,319]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"block","codePoint":59748},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[302,803],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[302,803]}]},{"tag":"LineTo","args":[{"point":[782,323]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[812,361],"end":[833,423]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,485],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[392,875],"end":[302,803]}]}]}]},{"start":[271,292],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,292]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[632,191],"end":[722,263]}]}]},{"tag":"LineTo","args":[{"point":[242,743]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[212,705],"end":[191,643]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,581],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"clearclose","codePoint":59749},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[750,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,473]}]},{"tag":"LineTo","args":[{"point":[274,235]}]},{"tag":"LineTo","args":[{"point":[214,295]}]},{"tag":"LineTo","args":[{"point":[452,533]}]},{"tag":"LineTo","args":[{"point":[214,771]}]},{"tag":"LineTo","args":[{"point":[274,831]}]},{"tag":"LineTo","args":[{"point":[512,593]}]},{"tag":"LineTo","args":[{"point":[750,831]}]},{"tag":"LineTo","args":[{"point":[810,771]}]},{"tag":"LineTo","args":[{"point":[572,533]}]},{"tag":"LineTo","args":[{"point":[810,295]}]},{"tag":"LineTo","args":[{"point":[750,235]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"copy","codePoint":59750},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[342,917],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[342,319]}]},{"tag":"LineTo","args":[{"point":[810,319]}]},{"tag":"LineTo","args":[{"point":[810,917]}]},{"tag":"LineTo","args":[{"point":[342,917]}]}]},{"start":[342,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[308,235],"end":[282,260]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,285],"end":[256,319]}]}]},{"tag":"LineTo","args":[{"point":[256,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,951],"end":[282,977]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[308,1003],"end":[342,1003]}]}]},{"tag":"LineTo","args":[{"point":[810,1003]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,1003],"end":[870,977]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,951],"end":[896,917]}]}]},{"tag":"LineTo","args":[{"point":[896,319]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,285],"end":[870,260]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,235],"end":[810,235]}]}]},{"tag":"LineTo","args":[{"point":[342,235]}]}]},{"start":[170,63],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,63],"end":[111,89]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,115],"end":[86,149]}]}]},{"tag":"LineTo","args":[{"point":[86,747]}]},{"tag":"LineTo","args":[{"point":[170,747]}]},{"tag":"LineTo","args":[{"point":[170,149]}]},{"tag":"LineTo","args":[{"point":[682,149]}]},{"tag":"LineTo","args":[{"point":[682,63]}]},{"tag":"LineTo","args":[{"point":[170,63]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"cut","codePoint":59751},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[554,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[640,491]}]},{"tag":"LineTo","args":[{"point":[938,191]}]},{"tag":"LineTo","args":[{"point":[938,149]}]},{"tag":"LineTo","args":[{"point":[810,149]}]},{"tag":"LineTo","args":[{"point":[554,405]}]}]},{"start":[490,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[490,533]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[490,511],"end":[512,511]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[534,511],"end":[534,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[534,555],"end":[512,555]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[490,555],"end":[490,533]}]}]}]},{"start":[196,850],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[196,850]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,825],"end":[170,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,753],"end":[196,728]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,703],"end":[256,703]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,703],"end":[316,728]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,753],"end":[342,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,825],"end":[316,850]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,875],"end":[256,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,875],"end":[196,850]}]}]}]},{"start":[196,338],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[196,338]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,313],"end":[170,277]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,241],"end":[196,216]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,191],"end":[256,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,191],"end":[316,216]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,241],"end":[342,277]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,313],"end":[316,338]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,363],"end":[256,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,363],"end":[196,338]}]}]}]},{"start":[426,277],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,277]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,207],"end":[376,157]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[326,107],"end":[256,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[186,107],"end":[136,157]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,207],"end":[86,277]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,347],"end":[136,397]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[186,447],"end":[256,447]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[296,447],"end":[326,433]}]}]},{"tag":"LineTo","args":[{"point":[426,533]}]},{"tag":"LineTo","args":[{"point":[326,633]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[296,619],"end":[256,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[186,619],"end":[136,669]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,719],"end":[86,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,859],"end":[136,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[186,959],"end":[256,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[326,959],"end":[376,909]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,859],"end":[426,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,749],"end":[412,719]}]}]},{"tag":"LineTo","args":[{"point":[512,619]}]},{"tag":"LineTo","args":[{"point":[810,917]}]},{"tag":"LineTo","args":[{"point":[938,917]}]},{"tag":"LineTo","args":[{"point":[938,875]}]},{"tag":"LineTo","args":[{"point":[412,347]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,317],"end":[426,277]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"paste","codePoint":59752},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[214,875],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[214,191]}]},{"tag":"LineTo","args":[{"point":[298,191]}]},{"tag":"LineTo","args":[{"point":[298,319]}]},{"tag":"LineTo","args":[{"point":[726,319]}]},{"tag":"LineTo","args":[{"point":[726,191]}]},{"tag":"LineTo","args":[{"point":[810,191]}]},{"tag":"LineTo","args":[{"point":[810,875]}]},{"tag":"LineTo","args":[{"point":[214,875]}]}]},{"start":[542,119],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[542,119]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,131],"end":[554,149]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,167],"end":[542,179]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[530,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[494,191],"end":[482,179]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[470,167],"end":[470,149]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[470,131],"end":[482,119]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[494,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[530,107],"end":[542,119]}]}]}]},{"start":[632,107],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,69],"end":[586,45]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,21],"end":[512,21]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[470,21],"end":[438,45]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[406,69],"end":[392,107]}]}]},{"tag":"LineTo","args":[{"point":[214,107]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,107],"end":[154,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,157],"end":[128,191]}]}]},{"tag":"LineTo","args":[{"point":[128,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,909],"end":[154,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,959],"end":[214,959]}]}]},{"tag":"LineTo","args":[{"point":[810,959]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,959],"end":[870,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,909],"end":[896,875]}]}]},{"tag":"LineTo","args":[{"point":[896,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,157],"end":[870,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,107],"end":[810,107]}]}]},{"tag":"LineTo","args":[{"point":[632,107]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"edit","codePoint":59753},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[896,291],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[896,291]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,273],"end":[884,261]}]}]},{"tag":"LineTo","args":[{"point":[784,161]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[772,149],"end":[754,149]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,149],"end":[724,161]}]}]},{"tag":"LineTo","args":[{"point":[646,239]}]},{"tag":"LineTo","args":[{"point":[806,399]}]},{"tag":"LineTo","args":[{"point":[884,321]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,309],"end":[896,291]}]}]}]},{"start":[128,917],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[288,917]}]},{"tag":"LineTo","args":[{"point":[760,445]}]},{"tag":"LineTo","args":[{"point":[600,285]}]},{"tag":"LineTo","args":[{"point":[128,757]}]},{"tag":"LineTo","args":[{"point":[128,917]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"drafts","codePoint":59754},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[160,355],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,149]}]},{"tag":"LineTo","args":[{"point":[864,355]}]},{"tag":"LineTo","args":[{"point":[512,575]}]},{"tag":"LineTo","args":[{"point":[160,355]}]}]},{"start":[898,289],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[898,289]}]},{"tag":"LineTo","args":[{"point":[512,63]}]},{"tag":"LineTo","args":[{"point":[126,289]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,313],"end":[86,363]}]}]},{"tag":"LineTo","args":[{"point":[86,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,823],"end":[111,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,875],"end":[170,875]}]}]},{"tag":"LineTo","args":[{"point":[854,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,875],"end":[913,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,823],"end":[938,789]}]}]},{"tag":"LineTo","args":[{"point":[938,363]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,313],"end":[898,289]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"forward","codePoint":59755},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[170,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[170,703]}]},{"tag":"LineTo","args":[{"point":[512,703]}]},{"tag":"LineTo","args":[{"point":[512,875]}]},{"tag":"LineTo","args":[{"point":[854,533]}]},{"tag":"LineTo","args":[{"point":[512,191]}]},{"tag":"LineTo","args":[{"point":[512,363]}]},{"tag":"LineTo","args":[{"point":[170,363]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"remove","codePoint":59756},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[810,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[214,491]}]},{"tag":"LineTo","args":[{"point":[214,575]}]},{"tag":"LineTo","args":[{"point":[810,575]}]},{"tag":"LineTo","args":[{"point":[810,491]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"remove_circledo_not_disturb_on","codePoint":59757},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[298,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[298,491]}]},{"tag":"LineTo","args":[{"point":[726,491]}]},{"tag":"LineTo","args":[{"point":[726,575]}]},{"tag":"LineTo","args":[{"point":[298,575]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"remove_circle_outline","codePoint":59758},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]},{"start":[298,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[726,575]}]},{"tag":"LineTo","args":[{"point":[726,491]}]},{"tag":"LineTo","args":[{"point":[298,491]}]},{"tag":"LineTo","args":[{"point":[298,575]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"send","codePoint":59759},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[982,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[86,149]}]},{"tag":"LineTo","args":[{"point":[86,447]}]},{"tag":"LineTo","args":[{"point":[726,533]}]},{"tag":"LineTo","args":[{"point":[86,619]}]},{"tag":"LineTo","args":[{"point":[86,917]}]},{"tag":"LineTo","args":[{"point":[982,533]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"undo","codePoint":59760},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[238,473],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[238,473]}]},{"tag":"LineTo","args":[{"point":[86,319]}]},{"tag":"LineTo","args":[{"point":[86,703]}]},{"tag":"LineTo","args":[{"point":[470,703]}]},{"tag":"LineTo","args":[{"point":[314,549]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[410,469],"end":[534,469]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[646,469],"end":[735,534]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[824,599],"end":[858,703]}]}]},{"tag":"LineTo","args":[{"point":[958,671]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[912,535],"end":[796,449]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,363],"end":[534,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[364,363],"end":[238,473]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"save_alt","codePoint":59761},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[554,149],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,149]}]},{"tag":"LineTo","args":[{"point":[470,561]}]},{"tag":"LineTo","args":[{"point":[358,451]}]},{"tag":"LineTo","args":[{"point":[298,511]}]},{"tag":"LineTo","args":[{"point":[512,725]}]},{"tag":"LineTo","args":[{"point":[726,511]}]},{"tag":"LineTo","args":[{"point":[666,451]}]},{"tag":"LineTo","args":[{"point":[554,561]}]},{"tag":"LineTo","args":[{"point":[554,149]}]}]},{"start":[810,831],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[214,831]}]},{"tag":"LineTo","args":[{"point":[214,533]}]},{"tag":"LineTo","args":[{"point":[128,533]}]},{"tag":"LineTo","args":[{"point":[128,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,865],"end":[154,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,917],"end":[214,917]}]}]},{"tag":"LineTo","args":[{"point":[810,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,917],"end":[870,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,865],"end":[896,831]}]}]},{"tag":"LineTo","args":[{"point":[896,533]}]},{"tag":"LineTo","args":[{"point":[810,533]}]},{"tag":"LineTo","args":[{"point":[810,831]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"file_copy","codePoint":59762},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[598,299],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[832,533]}]},{"tag":"LineTo","args":[{"point":[598,533]}]},{"tag":"LineTo","args":[{"point":[598,299]}]}]},{"start":[342,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[308,235],"end":[282,260]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,285],"end":[256,319]}]}]},{"tag":"LineTo","args":[{"point":[256,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,951],"end":[281,977]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[306,1003],"end":[340,1003]}]}]},{"tag":"LineTo","args":[{"point":[810,1003]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,1003],"end":[870,977]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,951],"end":[896,917]}]}]},{"tag":"LineTo","args":[{"point":[896,491]}]},{"tag":"LineTo","args":[{"point":[640,235]}]},{"tag":"LineTo","args":[{"point":[342,235]}]}]},{"start":[170,63],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,63],"end":[111,89]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,115],"end":[86,149]}]}]},{"tag":"LineTo","args":[{"point":[86,747]}]},{"tag":"LineTo","args":[{"point":[170,747]}]},{"tag":"LineTo","args":[{"point":[170,149]}]},{"tag":"LineTo","args":[{"point":[682,149]}]},{"tag":"LineTo","args":[{"point":[682,63]}]},{"tag":"LineTo","args":[{"point":[170,63]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"sd_storagesd_card","codePoint":59763},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[682,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,191]}]},{"tag":"LineTo","args":[{"point":[768,191]}]},{"tag":"LineTo","args":[{"point":[768,363]}]},{"tag":"LineTo","args":[{"point":[682,363]}]}]},{"start":[554,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,191]}]},{"tag":"LineTo","args":[{"point":[640,191]}]},{"tag":"LineTo","args":[{"point":[640,363]}]},{"tag":"LineTo","args":[{"point":[554,363]}]}]},{"start":[426,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,191]}]},{"tag":"LineTo","args":[{"point":[512,191]}]},{"tag":"LineTo","args":[{"point":[512,363]}]},{"tag":"LineTo","args":[{"point":[426,363]}]}]},{"start":[426,107],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[172,363]}]},{"tag":"LineTo","args":[{"point":[170,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,909],"end":[196,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,959],"end":[256,959]}]}]},{"tag":"LineTo","args":[{"point":[768,959]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[802,959],"end":[828,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,909],"end":[854,875]}]}]},{"tag":"LineTo","args":[{"point":[854,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,157],"end":[828,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[802,107],"end":[768,107]}]}]},{"tag":"LineTo","args":[{"point":[426,107]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"attach_file","codePoint":59764},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[704,767],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,837],"end":[654,888]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[604,939],"end":[534,939]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[464,939],"end":[413,888]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[362,837],"end":[362,767]}]}]},{"tag":"LineTo","args":[{"point":[362,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[362,191],"end":[394,159]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,127],"end":[470,127]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[514,127],"end":[545,159]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,191],"end":[576,235]}]}]},{"tag":"LineTo","args":[{"point":[576,683]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,701],"end":[564,713]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[552,725],"end":[534,725]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[516,725],"end":[503,713]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[490,701],"end":[490,683]}]}]},{"tag":"LineTo","args":[{"point":[490,277]}]},{"tag":"LineTo","args":[{"point":[426,277]}]},{"tag":"LineTo","args":[{"point":[426,683]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,727],"end":[458,758]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[490,789],"end":[534,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[578,789],"end":[609,758]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,727],"end":[640,683]}]}]},{"tag":"LineTo","args":[{"point":[640,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,165],"end":[590,114]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[540,63],"end":[470,63]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[400,63],"end":[349,114]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,165],"end":[298,235]}]}]},{"tag":"LineTo","args":[{"point":[298,767]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,865],"end":[367,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,1003],"end":[534,1003]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[632,1003],"end":[700,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,865],"end":[768,767]}]}]},{"tag":"LineTo","args":[{"point":[768,277]}]},{"tag":"LineTo","args":[{"point":[704,277]}]},{"tag":"LineTo","args":[{"point":[704,767]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"attach_money","codePoint":59765},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[376,395],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[376,395]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[376,359],"end":[407,337]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[438,315],"end":[490,315]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[594,315],"end":[598,405]}]}]},{"tag":"LineTo","args":[{"point":[692,405]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[690,347],"end":[655,303]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[620,259],"end":[554,243]}]}]},{"tag":"LineTo","args":[{"point":[554,149]}]},{"tag":"LineTo","args":[{"point":[426,149]}]},{"tag":"LineTo","args":[{"point":[426,241]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[362,255],"end":[320,296]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[278,337],"end":[278,395]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[278,525],"end":[478,571]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[606,603],"end":[606,675]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[606,705],"end":[579,728]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[552,751],"end":[490,751]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,751],"end":[364,661]}]}]},{"tag":"LineTo","args":[{"point":[270,661]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[274,727],"end":[317,769]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[360,811],"end":[426,825]}]}]},{"tag":"LineTo","args":[{"point":[426,917]}]},{"tag":"LineTo","args":[{"point":[554,917]}]},{"tag":"LineTo","args":[{"point":[554,825]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[622,813],"end":[663,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,735],"end":[704,673]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,629],"end":[687,597]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[670,565],"end":[638,544]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[606,523],"end":[577,511]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[548,499],"end":[504,487]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[376,453],"end":[376,395]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"format_bold","codePoint":59766},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[426,683],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,555]}]},{"tag":"LineTo","args":[{"point":[576,555]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[604,555],"end":[622,574]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,593],"end":[640,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,645],"end":[622,664]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[604,683],"end":[576,683]}]}]},{"tag":"LineTo","args":[{"point":[426,683]}]}]},{"start":[554,299],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[580,299],"end":[599,318]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,337],"end":[618,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,389],"end":[599,408]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[580,427],"end":[554,427]}]}]},{"tag":"LineTo","args":[{"point":[426,427]}]},{"tag":"LineTo","args":[{"point":[426,299]}]},{"tag":"LineTo","args":[{"point":[554,299]}]}]},{"start":[736,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,363]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,291],"end":[687,241]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[638,191],"end":[566,191]}]}]},{"tag":"LineTo","args":[{"point":[298,191]}]},{"tag":"LineTo","args":[{"point":[298,789]}]},{"tag":"LineTo","args":[{"point":[600,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[668,789],"end":[713,742]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[758,695],"end":[758,627]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[758,523],"end":[666,481]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,435],"end":[736,363]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"format_color_fill","codePoint":59767},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[0,1045],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[1024,1045]}]},{"tag":"LineTo","args":[{"point":[1024,875]}]},{"tag":"LineTo","args":[{"point":[0,875]}]},{"tag":"LineTo","args":[{"point":[0,1045]}]}]},{"start":[788,537],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,561],"end":[747,599]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,637],"end":[726,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,695],"end":[751,721]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[776,747],"end":[810,747]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,747],"end":[870,721]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,695],"end":[896,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,605],"end":[810,511]}]}]},{"tag":"LineTo","args":[{"point":[788,537]}]}]},{"start":[426,243],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[632,447]}]},{"tag":"LineTo","args":[{"point":[222,447]}]},{"tag":"LineTo","args":[{"point":[426,243]}]}]},{"start":[326,21],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[264,81]}]},{"tag":"LineTo","args":[{"point":[366,183]}]},{"tag":"LineTo","args":[{"point":[146,403]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,421],"end":[128,447]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,475],"end":[146,493]}]}]},{"tag":"LineTo","args":[{"point":[382,727]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[402,747],"end":[426,747]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[452,747],"end":[472,727]}]}]},{"tag":"LineTo","args":[{"point":[706,493]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,475],"end":[726,449]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,423],"end":[706,403]}]}]},{"tag":"LineTo","args":[{"point":[326,21]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"music_video","codePoint":59768},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[380,751],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[380,751]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[418,789],"end":[470,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[522,789],"end":[560,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,715],"end":[598,663]}]}]},{"tag":"LineTo","args":[{"point":[598,363]}]},{"tag":"LineTo","args":[{"point":[726,363]}]},{"tag":"LineTo","args":[{"point":[726,277]}]},{"tag":"LineTo","args":[{"point":[512,277]}]},{"tag":"LineTo","args":[{"point":[512,541]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[484,533],"end":[470,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[418,533],"end":[380,571]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,609],"end":[342,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,713],"end":[380,751]}]}]}]},{"start":[128,831],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[128,235]}]},{"tag":"LineTo","args":[{"point":[896,235]}]},{"tag":"LineTo","args":[{"point":[896,831]}]},{"tag":"LineTo","args":[{"point":[128,831]}]}]},{"start":[128,149],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[94,149],"end":[68,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[42,201],"end":[42,235]}]}]},{"tag":"LineTo","args":[{"point":[42,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[42,865],"end":[68,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[94,917],"end":[128,917]}]}]},{"tag":"LineTo","args":[{"point":[896,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[930,917],"end":[956,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[982,865],"end":[982,831]}]}]},{"tag":"LineTo","args":[{"point":[982,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[982,201],"end":[956,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[930,149],"end":[896,149]}]}]},{"tag":"LineTo","args":[{"point":[128,149]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"format_size","codePoint":59769},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[256,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[256,831]}]},{"tag":"LineTo","args":[{"point":[384,831]}]},{"tag":"LineTo","args":[{"point":[384,533]}]},{"tag":"LineTo","args":[{"point":[512,533]}]},{"tag":"LineTo","args":[{"point":[512,405]}]},{"tag":"LineTo","args":[{"point":[128,405]}]},{"tag":"LineTo","args":[{"point":[128,533]}]},{"tag":"LineTo","args":[{"point":[256,533]}]}]},{"start":[384,319],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[598,319]}]},{"tag":"LineTo","args":[{"point":[598,831]}]},{"tag":"LineTo","args":[{"point":[726,831]}]},{"tag":"LineTo","args":[{"point":[726,319]}]},{"tag":"LineTo","args":[{"point":[938,319]}]},{"tag":"LineTo","args":[{"point":[938,191]}]},{"tag":"LineTo","args":[{"point":[384,191]}]},{"tag":"LineTo","args":[{"point":[384,319]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"format_underlined","codePoint":59770},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[214,917],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[810,917]}]},{"tag":"LineTo","args":[{"point":[810,831]}]},{"tag":"LineTo","args":[{"point":[214,831]}]},{"tag":"LineTo","args":[{"point":[214,917]}]}]},{"start":[693,672],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[693,672]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,597],"end":[768,491]}]}]},{"tag":"LineTo","args":[{"point":[768,149]}]},{"tag":"LineTo","args":[{"point":[662,149]}]},{"tag":"LineTo","args":[{"point":[662,491]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[662,553],"end":[618,596]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[574,639],"end":[512,639]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[450,639],"end":[406,596]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[362,553],"end":[362,491]}]}]},{"tag":"LineTo","args":[{"point":[362,149]}]},{"tag":"LineTo","args":[{"point":[256,149]}]},{"tag":"LineTo","args":[{"point":[256,491]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,597],"end":[331,672]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[406,747],"end":[512,747]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,747],"end":[693,672]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"insert_chartpollassessment","codePoint":59771},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[640,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[640,575]}]},{"tag":"LineTo","args":[{"point":[726,575]}]},{"tag":"LineTo","args":[{"point":[726,747]}]},{"tag":"LineTo","args":[{"point":[640,747]}]}]},{"start":[470,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,319]}]},{"tag":"LineTo","args":[{"point":[554,319]}]},{"tag":"LineTo","args":[{"point":[554,747]}]},{"tag":"LineTo","args":[{"point":[470,747]}]}]},{"start":[298,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[298,447]}]},{"tag":"LineTo","args":[{"point":[384,447]}]},{"tag":"LineTo","args":[{"point":[384,747]}]},{"tag":"LineTo","args":[{"point":[298,747]}]}]},{"start":[214,149],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,149],"end":[154,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,201],"end":[128,235]}]}]},{"tag":"LineTo","args":[{"point":[128,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,865],"end":[154,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,917],"end":[214,917]}]}]},{"tag":"LineTo","args":[{"point":[810,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,917],"end":[870,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,865],"end":[896,831]}]}]},{"tag":"LineTo","args":[{"point":[896,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,201],"end":[870,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,149],"end":[810,149]}]}]},{"tag":"LineTo","args":[{"point":[214,149]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"insert_emoticontag_facesmood","codePoint":59772},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[645,726],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[645,726]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,685],"end":[730,619]}]}]},{"tag":"LineTo","args":[{"point":[294,619]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,685],"end":[379,726]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[438,767],"end":[512,767]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[586,767],"end":[645,726]}]}]}]},{"start":[407,472],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[407,472]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,453],"end":[426,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,401],"end":[407,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,363],"end":[362,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,363],"end":[317,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,401],"end":[298,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,453],"end":[317,472]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,491],"end":[362,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,491],"end":[407,472]}]}]}]},{"start":[707,472],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[707,472]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,453],"end":[726,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,401],"end":[707,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,363],"end":[662,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,363],"end":[617,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,401],"end":[598,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,453],"end":[617,472]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,491],"end":[662,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,491],"end":[707,472]}]}]}]},{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"insert_invitationevent","codePoint":59773},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[214,831],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[214,363]}]},{"tag":"LineTo","args":[{"point":[810,363]}]},{"tag":"LineTo","args":[{"point":[810,831]}]},{"tag":"LineTo","args":[{"point":[214,831]}]}]},{"start":[682,149],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[342,149]}]},{"tag":"LineTo","args":[{"point":[342,63]}]},{"tag":"LineTo","args":[{"point":[256,63]}]},{"tag":"LineTo","args":[{"point":[256,149]}]},{"tag":"LineTo","args":[{"point":[214,149]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,149],"end":[153,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,201],"end":[128,235]}]}]},{"tag":"LineTo","args":[{"point":[128,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,867],"end":[153,892]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,917],"end":[214,917]}]}]},{"tag":"LineTo","args":[{"point":[810,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,917],"end":[870,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,865],"end":[896,831]}]}]},{"tag":"LineTo","args":[{"point":[896,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,201],"end":[870,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,149],"end":[810,149]}]}]},{"tag":"LineTo","args":[{"point":[768,149]}]},{"tag":"LineTo","args":[{"point":[768,63]}]},{"tag":"LineTo","args":[{"point":[682,63]}]},{"tag":"LineTo","args":[{"point":[682,149]}]}]},{"start":[512,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,747]}]},{"tag":"LineTo","args":[{"point":[726,747]}]},{"tag":"LineTo","args":[{"point":[726,533]}]},{"tag":"LineTo","args":[{"point":[512,533]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"image","codePoint":59774},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[470,725],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[618,533]}]},{"tag":"LineTo","args":[{"point":[810,789]}]},{"tag":"LineTo","args":[{"point":[214,789]}]},{"tag":"LineTo","args":[{"point":[362,597]}]},{"tag":"LineTo","args":[{"point":[470,725]}]}]},{"start":[896,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,201],"end":[870,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,149],"end":[810,149]}]}]},{"tag":"LineTo","args":[{"point":[214,149]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,149],"end":[154,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,201],"end":[128,235]}]}]},{"tag":"LineTo","args":[{"point":[128,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,865],"end":[154,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,917],"end":[214,917]}]}]},{"tag":"LineTo","args":[{"point":[810,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,917],"end":[870,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,865],"end":[896,831]}]}]},{"tag":"LineTo","args":[{"point":[896,235]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"publish","codePoint":59775},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[384,619],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[384,875]}]},{"tag":"LineTo","args":[{"point":[640,875]}]},{"tag":"LineTo","args":[{"point":[640,619]}]},{"tag":"LineTo","args":[{"point":[810,619]}]},{"tag":"LineTo","args":[{"point":[512,319]}]},{"tag":"LineTo","args":[{"point":[214,619]}]},{"tag":"LineTo","args":[{"point":[384,619]}]}]},{"start":[214,277],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[810,277]}]},{"tag":"LineTo","args":[{"point":[810,191]}]},{"tag":"LineTo","args":[{"point":[214,191]}]},{"tag":"LineTo","args":[{"point":[214,277]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"vertical_align_bottom","codePoint":59776},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[170,917],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[854,917]}]},{"tag":"LineTo","args":[{"point":[854,831]}]},{"tag":"LineTo","args":[{"point":[170,831]}]},{"tag":"LineTo","args":[{"point":[170,917]}]}]},{"start":[554,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,149]}]},{"tag":"LineTo","args":[{"point":[470,149]}]},{"tag":"LineTo","args":[{"point":[470,575]}]},{"tag":"LineTo","args":[{"point":[342,575]}]},{"tag":"LineTo","args":[{"point":[512,747]}]},{"tag":"LineTo","args":[{"point":[682,575]}]},{"tag":"LineTo","args":[{"point":[554,575]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"vertical_align_top","codePoint":59777},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[170,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[854,235]}]},{"tag":"LineTo","args":[{"point":[854,149]}]},{"tag":"LineTo","args":[{"point":[170,149]}]},{"tag":"LineTo","args":[{"point":[170,235]}]}]},{"start":[470,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,917]}]},{"tag":"LineTo","args":[{"point":[554,917]}]},{"tag":"LineTo","args":[{"point":[554,491]}]},{"tag":"LineTo","args":[{"point":[682,491]}]},{"tag":"LineTo","args":[{"point":[512,319]}]},{"tag":"LineTo","args":[{"point":[342,491]}]},{"tag":"LineTo","args":[{"point":[470,491]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"monetization_on","codePoint":59778},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[572,875],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[458,875]}]},{"tag":"LineTo","args":[{"point":[458,791]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[324,761],"end":[318,647]}]}]},{"tag":"LineTo","args":[{"point":[402,647]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[410,727],"end":[516,727]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[572,727],"end":[595,706]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,685],"end":[618,659]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,593],"end":[504,567]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[326,523],"end":[326,411]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[326,357],"end":[363,322]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[400,287],"end":[458,275]}]}]},{"tag":"LineTo","args":[{"point":[458,191]}]},{"tag":"LineTo","args":[{"point":[572,191]}]},{"tag":"LineTo","args":[{"point":[572,275]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[690,305],"end":[694,419]}]}]},{"tag":"LineTo","args":[{"point":[610,419]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[606,339],"end":[516,339]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[468,339],"end":[441,359]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[414,379],"end":[414,409]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[414,463],"end":[526,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[706,537],"end":[706,659]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[706,767],"end":[572,793]}]}]},{"tag":"LineTo","args":[{"point":[572,875]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"cloud","codePoint":59779},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[713,267],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[713,267]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[620,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[422,191],"end":[346,239]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[270,287],"end":[228,365]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[134,375],"end":[67,450]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,525],"end":[0,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,725],"end":[75,800]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[150,875],"end":[256,875]}]}]},{"tag":"LineTo","args":[{"point":[810,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[898,875],"end":[961,812]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,749],"end":[1024,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,577],"end":[966,516]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[908,455],"end":[826,449]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[806,343],"end":[713,267]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"cloud_done","codePoint":59780},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[278,597],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[338,537]}]},{"tag":"LineTo","args":[{"point":[426,625]}]},{"tag":"LineTo","args":[{"point":[648,405]}]},{"tag":"LineTo","args":[{"point":[708,465]}]},{"tag":"LineTo","args":[{"point":[426,747]}]},{"tag":"LineTo","args":[{"point":[278,597]}]}]},{"start":[713,267],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[713,267]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[620,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[422,191],"end":[346,239]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[270,287],"end":[228,365]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[134,375],"end":[67,450]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,525],"end":[0,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,725],"end":[75,800]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[150,875],"end":[256,875]}]}]},{"tag":"LineTo","args":[{"point":[810,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[898,875],"end":[961,812]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,749],"end":[1024,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,577],"end":[966,516]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[908,455],"end":[826,449]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[806,343],"end":[713,267]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"cloud_download","codePoint":59781},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[298,575]}]},{"tag":"LineTo","args":[{"point":[426,575]}]},{"tag":"LineTo","args":[{"point":[426,405]}]},{"tag":"LineTo","args":[{"point":[598,405]}]},{"tag":"LineTo","args":[{"point":[598,575]}]},{"tag":"LineTo","args":[{"point":[726,575]}]},{"tag":"LineTo","args":[{"point":[512,789]}]}]},{"start":[713,267],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[713,267]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[620,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[422,191],"end":[346,239]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[270,287],"end":[228,365]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[134,375],"end":[67,450]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,525],"end":[0,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,725],"end":[75,800]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[150,875],"end":[256,875]}]}]},{"tag":"LineTo","args":[{"point":[810,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[898,875],"end":[961,812]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,749],"end":[1024,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,577],"end":[966,516]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[908,455],"end":[826,449]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[806,343],"end":[713,267]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"cloud_uploadbackup","codePoint":59782},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[598,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,747]}]},{"tag":"LineTo","args":[{"point":[426,575]}]},{"tag":"LineTo","args":[{"point":[298,575]}]},{"tag":"LineTo","args":[{"point":[512,363]}]},{"tag":"LineTo","args":[{"point":[726,575]}]},{"tag":"LineTo","args":[{"point":[598,575]}]},{"tag":"LineTo","args":[{"point":[598,747]}]}]},{"start":[713,267],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[713,267]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[620,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[422,191],"end":[346,239]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[270,287],"end":[228,365]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[134,375],"end":[67,450]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,525],"end":[0,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,725],"end":[75,800]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[150,875],"end":[256,875]}]}]},{"tag":"LineTo","args":[{"point":[810,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[898,875],"end":[961,812]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,749],"end":[1024,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,577],"end":[966,516]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[908,455],"end":[826,449]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[806,343],"end":[713,267]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"file_downloadget_app","codePoint":59783},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[214,875],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[810,875]}]},{"tag":"LineTo","args":[{"point":[810,789]}]},{"tag":"LineTo","args":[{"point":[214,789]}]},{"tag":"LineTo","args":[{"point":[214,875]}]}]},{"start":[640,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[640,149]}]},{"tag":"LineTo","args":[{"point":[384,149]}]},{"tag":"LineTo","args":[{"point":[384,405]}]},{"tag":"LineTo","args":[{"point":[214,405]}]},{"tag":"LineTo","args":[{"point":[512,703]}]},{"tag":"LineTo","args":[{"point":[810,405]}]},{"tag":"LineTo","args":[{"point":[640,405]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"file_upload","codePoint":59784},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[214,875],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[810,875]}]},{"tag":"LineTo","args":[{"point":[810,789]}]},{"tag":"LineTo","args":[{"point":[214,789]}]},{"tag":"LineTo","args":[{"point":[214,875]}]}]},{"start":[640,703],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[640,447]}]},{"tag":"LineTo","args":[{"point":[810,447]}]},{"tag":"LineTo","args":[{"point":[512,149]}]},{"tag":"LineTo","args":[{"point":[214,447]}]},{"tag":"LineTo","args":[{"point":[384,447]}]},{"tag":"LineTo","args":[{"point":[384,703]}]},{"tag":"LineTo","args":[{"point":[640,703]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"audiotrack","codePoint":59785},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,545],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[476,533],"end":[448,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[368,533],"end":[312,589]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,645],"end":[256,725]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,805],"end":[312,861]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[368,917],"end":[448,917]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[522,917],"end":[576,868]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[630,819],"end":[638,747]}]}]},{"tag":"LineTo","args":[{"point":[640,747]}]},{"tag":"LineTo","args":[{"point":[640,277]}]},{"tag":"LineTo","args":[{"point":[810,277]}]},{"tag":"LineTo","args":[{"point":[810,149]}]},{"tag":"LineTo","args":[{"point":[512,149]}]},{"tag":"LineTo","args":[{"point":[512,545]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"music_note","codePoint":59786},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,599],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[468,575],"end":[426,575]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[356,575],"end":[306,626]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,677],"end":[256,747]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,817],"end":[306,867]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[356,917],"end":[426,917]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[496,917],"end":[547,867]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,817],"end":[598,747]}]}]},{"tag":"LineTo","args":[{"point":[598,319]}]},{"tag":"LineTo","args":[{"point":[768,319]}]},{"tag":"LineTo","args":[{"point":[768,149]}]},{"tag":"LineTo","args":[{"point":[512,149]}]},{"tag":"LineTo","args":[{"point":[512,599]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"movie_filter","codePoint":59787},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[682,619],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[642,531]}]},{"tag":"LineTo","args":[{"point":[554,491]}]},{"tag":"LineTo","args":[{"point":[642,451]}]},{"tag":"LineTo","args":[{"point":[682,363]}]},{"tag":"LineTo","args":[{"point":[722,451]}]},{"tag":"LineTo","args":[{"point":[810,491]}]},{"tag":"LineTo","args":[{"point":[722,531]}]},{"tag":"LineTo","args":[{"point":[682,619]}]}]},{"start":[426,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[374,671]}]},{"tag":"LineTo","args":[{"point":[256,619]}]},{"tag":"LineTo","args":[{"point":[374,565]}]},{"tag":"LineTo","args":[{"point":[426,447]}]},{"tag":"LineTo","args":[{"point":[480,565]}]},{"tag":"LineTo","args":[{"point":[598,619]}]},{"tag":"LineTo","args":[{"point":[480,671]}]},{"tag":"LineTo","args":[{"point":[426,789]}]}]},{"start":[854,319],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[726,319]}]},{"tag":"LineTo","args":[{"point":[640,191]}]},{"tag":"LineTo","args":[{"point":[554,191]}]},{"tag":"LineTo","args":[{"point":[640,319]}]},{"tag":"LineTo","args":[{"point":[512,319]}]},{"tag":"LineTo","args":[{"point":[426,191]}]},{"tag":"LineTo","args":[{"point":[342,191]}]},{"tag":"LineTo","args":[{"point":[426,319]}]},{"tag":"LineTo","args":[{"point":[298,319]}]},{"tag":"LineTo","args":[{"point":[214,191]}]},{"tag":"LineTo","args":[{"point":[170,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,191],"end":[111,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,243],"end":[86,277]}]}]},{"tag":"LineTo","args":[{"point":[86,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,823],"end":[111,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,875],"end":[170,875]}]}]},{"tag":"LineTo","args":[{"point":[854,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,875],"end":[913,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,823],"end":[938,789]}]}]},{"tag":"LineTo","args":[{"point":[938,191]}]},{"tag":"LineTo","args":[{"point":[768,191]}]},{"tag":"LineTo","args":[{"point":[854,319]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"local_moviestheaters","codePoint":59788},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[682,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,319]}]},{"tag":"LineTo","args":[{"point":[768,319]}]},{"tag":"LineTo","args":[{"point":[768,405]}]},{"tag":"LineTo","args":[{"point":[682,405]}]}]},{"start":[682,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,491]}]},{"tag":"LineTo","args":[{"point":[768,491]}]},{"tag":"LineTo","args":[{"point":[768,575]}]},{"tag":"LineTo","args":[{"point":[682,575]}]}]},{"start":[682,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,661]}]},{"tag":"LineTo","args":[{"point":[768,661]}]},{"tag":"LineTo","args":[{"point":[768,747]}]},{"tag":"LineTo","args":[{"point":[682,747]}]}]},{"start":[256,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[256,319]}]},{"tag":"LineTo","args":[{"point":[342,319]}]},{"tag":"LineTo","args":[{"point":[342,405]}]},{"tag":"LineTo","args":[{"point":[256,405]}]}]},{"start":[256,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[256,491]}]},{"tag":"LineTo","args":[{"point":[342,491]}]},{"tag":"LineTo","args":[{"point":[342,575]}]},{"tag":"LineTo","args":[{"point":[256,575]}]}]},{"start":[256,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[256,661]}]},{"tag":"LineTo","args":[{"point":[342,661]}]},{"tag":"LineTo","args":[{"point":[342,747]}]},{"tag":"LineTo","args":[{"point":[256,747]}]}]},{"start":[768,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,235]}]},{"tag":"LineTo","args":[{"point":[682,149]}]},{"tag":"LineTo","args":[{"point":[342,149]}]},{"tag":"LineTo","args":[{"point":[342,235]}]},{"tag":"LineTo","args":[{"point":[256,235]}]},{"tag":"LineTo","args":[{"point":[256,149]}]},{"tag":"LineTo","args":[{"point":[170,149]}]},{"tag":"LineTo","args":[{"point":[170,917]}]},{"tag":"LineTo","args":[{"point":[256,917]}]},{"tag":"LineTo","args":[{"point":[256,831]}]},{"tag":"LineTo","args":[{"point":[342,831]}]},{"tag":"LineTo","args":[{"point":[342,917]}]},{"tag":"LineTo","args":[{"point":[682,917]}]},{"tag":"LineTo","args":[{"point":[682,831]}]},{"tag":"LineTo","args":[{"point":[768,831]}]},{"tag":"LineTo","args":[{"point":[768,917]}]},{"tag":"LineTo","args":[{"point":[854,917]}]},{"tag":"LineTo","args":[{"point":[854,149]}]},{"tag":"LineTo","args":[{"point":[768,149]}]},{"tag":"LineTo","args":[{"point":[768,235]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"keyboard_arrow_down","codePoint":59789},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[256,447],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,703]}]},{"tag":"LineTo","args":[{"point":[768,447]}]},{"tag":"LineTo","args":[{"point":[708,387]}]},{"tag":"LineTo","args":[{"point":[512,583]}]},{"tag":"LineTo","args":[{"point":[316,387]}]},{"tag":"LineTo","args":[{"point":[256,447]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"keyboard_arrow_left","codePoint":59790},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[462,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[658,337]}]},{"tag":"LineTo","args":[{"point":[598,277]}]},{"tag":"LineTo","args":[{"point":[342,533]}]},{"tag":"LineTo","args":[{"point":[598,789]}]},{"tag":"LineTo","args":[{"point":[658,729]}]},{"tag":"LineTo","args":[{"point":[462,533]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"keyboard_arrow_right","codePoint":59791},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[426,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,533]}]},{"tag":"LineTo","args":[{"point":[426,277]}]},{"tag":"LineTo","args":[{"point":[366,337]}]},{"tag":"LineTo","args":[{"point":[562,533]}]},{"tag":"LineTo","args":[{"point":[366,729]}]},{"tag":"LineTo","args":[{"point":[426,789]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"keyboard_arrow_up","codePoint":59792},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,483],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[708,679]}]},{"tag":"LineTo","args":[{"point":[768,619]}]},{"tag":"LineTo","args":[{"point":[512,363]}]},{"tag":"LineTo","args":[{"point":[256,619]}]},{"tag":"LineTo","args":[{"point":[316,679]}]},{"tag":"LineTo","args":[{"point":[512,483]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"keyboard_backspace","codePoint":59793},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[292,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[444,337]}]},{"tag":"LineTo","args":[{"point":[384,277]}]},{"tag":"LineTo","args":[{"point":[128,533]}]},{"tag":"LineTo","args":[{"point":[384,789]}]},{"tag":"LineTo","args":[{"point":[444,729]}]},{"tag":"LineTo","args":[{"point":[292,575]}]},{"tag":"LineTo","args":[{"point":[896,575]}]},{"tag":"LineTo","args":[{"point":[896,491]}]},{"tag":"LineTo","args":[{"point":[292,491]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"keyboard_capslock","codePoint":59794},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[768,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,703]}]},{"tag":"LineTo","args":[{"point":[256,703]}]},{"tag":"LineTo","args":[{"point":[256,789]}]},{"tag":"LineTo","args":[{"point":[768,789]}]}]},{"start":[708,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,515]}]},{"tag":"LineTo","args":[{"point":[512,259]}]},{"tag":"LineTo","args":[{"point":[256,515]}]},{"tag":"LineTo","args":[{"point":[316,575]}]},{"tag":"LineTo","args":[{"point":[512,379]}]},{"tag":"LineTo","args":[{"point":[708,575]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"keyboard_hide","codePoint":59795},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[682,831],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[342,831]}]},{"tag":"LineTo","args":[{"point":[512,1003]}]},{"tag":"LineTo","args":[{"point":[682,831]}]}]},{"start":[726,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[726,277]}]},{"tag":"LineTo","args":[{"point":[810,277]}]},{"tag":"LineTo","args":[{"point":[810,363]}]},{"tag":"LineTo","args":[{"point":[726,363]}]}]},{"start":[726,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[726,405]}]},{"tag":"LineTo","args":[{"point":[810,405]}]},{"tag":"LineTo","args":[{"point":[810,491]}]},{"tag":"LineTo","args":[{"point":[726,491]}]}]},{"start":[598,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[598,277]}]},{"tag":"LineTo","args":[{"point":[682,277]}]},{"tag":"LineTo","args":[{"point":[682,363]}]},{"tag":"LineTo","args":[{"point":[598,363]}]}]},{"start":[598,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[598,405]}]},{"tag":"LineTo","args":[{"point":[682,405]}]},{"tag":"LineTo","args":[{"point":[682,491]}]},{"tag":"LineTo","args":[{"point":[598,491]}]}]},{"start":[342,661],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[342,575]}]},{"tag":"LineTo","args":[{"point":[682,575]}]},{"tag":"LineTo","args":[{"point":[682,661]}]},{"tag":"LineTo","args":[{"point":[342,661]}]}]},{"start":[214,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[214,277]}]},{"tag":"LineTo","args":[{"point":[298,277]}]},{"tag":"LineTo","args":[{"point":[298,363]}]},{"tag":"LineTo","args":[{"point":[214,363]}]}]},{"start":[214,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[214,405]}]},{"tag":"LineTo","args":[{"point":[298,405]}]},{"tag":"LineTo","args":[{"point":[298,491]}]},{"tag":"LineTo","args":[{"point":[214,491]}]}]},{"start":[426,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,491]}]},{"tag":"LineTo","args":[{"point":[342,491]}]},{"tag":"LineTo","args":[{"point":[342,405]}]},{"tag":"LineTo","args":[{"point":[426,405]}]}]},{"start":[426,277],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,363]}]},{"tag":"LineTo","args":[{"point":[342,363]}]},{"tag":"LineTo","args":[{"point":[342,277]}]},{"tag":"LineTo","args":[{"point":[426,277]}]}]},{"start":[554,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,491]}]},{"tag":"LineTo","args":[{"point":[470,491]}]},{"tag":"LineTo","args":[{"point":[470,405]}]},{"tag":"LineTo","args":[{"point":[554,405]}]}]},{"start":[554,277],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,363]}]},{"tag":"LineTo","args":[{"point":[470,363]}]},{"tag":"LineTo","args":[{"point":[470,277]}]},{"tag":"LineTo","args":[{"point":[554,277]}]}]},{"start":[170,149],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,149],"end":[111,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,201],"end":[86,235]}]}]},{"tag":"LineTo","args":[{"point":[86,661]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,695],"end":[111,721]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,747],"end":[170,747]}]}]},{"tag":"LineTo","args":[{"point":[854,747]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,747],"end":[913,721]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,695],"end":[938,661]}]}]},{"tag":"LineTo","args":[{"point":[938,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,201],"end":[913,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,149],"end":[854,149]}]}]},{"tag":"LineTo","args":[{"point":[170,149]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"keyboard_tab","codePoint":59796},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[854,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[938,789]}]},{"tag":"LineTo","args":[{"point":[938,277]}]},{"tag":"LineTo","args":[{"point":[854,277]}]},{"tag":"LineTo","args":[{"point":[854,789]}]}]},{"start":[648,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[42,491]}]},{"tag":"LineTo","args":[{"point":[42,575]}]},{"tag":"LineTo","args":[{"point":[648,575]}]},{"tag":"LineTo","args":[{"point":[494,729]}]},{"tag":"LineTo","args":[{"point":[554,789]}]},{"tag":"LineTo","args":[{"point":[810,533]}]},{"tag":"LineTo","args":[{"point":[554,277]}]},{"tag":"LineTo","args":[{"point":[494,337]}]},{"tag":"LineTo","args":[{"point":[648,491]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"keyboard_voice","codePoint":59797},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[671,689],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[671,689]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[604,751],"end":[512,751]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[420,751],"end":[353,689]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[286,627],"end":[286,533]}]}]},{"tag":"LineTo","args":[{"point":[214,533]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,641],"end":[289,722]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[364,803],"end":[470,819]}]}]},{"tag":"LineTo","args":[{"point":[470,959]}]},{"tag":"LineTo","args":[{"point":[554,959]}]},{"tag":"LineTo","args":[{"point":[554,819]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[660,803],"end":[735,722]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[810,641],"end":[810,533]}]}]},{"tag":"LineTo","args":[{"point":[738,533]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[738,627],"end":[671,689]}]}]}]},{"start":[602,623],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[602,623]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,585],"end":[640,533]}]}]},{"tag":"LineTo","args":[{"point":[640,277]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,225],"end":[602,187]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,149],"end":[512,149]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[460,149],"end":[422,187]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,225],"end":[384,277]}]}]},{"tag":"LineTo","args":[{"point":[384,533]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,585],"end":[422,623]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[460,661],"end":[512,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,661],"end":[602,623]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"laptop_chromebook","codePoint":59798},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[170,661],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[170,235]}]},{"tag":"LineTo","args":[{"point":[854,235]}]},{"tag":"LineTo","args":[{"point":[854,661]}]},{"tag":"LineTo","args":[{"point":[170,661]}]}]},{"start":[426,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,747]}]},{"tag":"LineTo","args":[{"point":[598,747]}]},{"tag":"LineTo","args":[{"point":[598,789]}]},{"tag":"LineTo","args":[{"point":[426,789]}]}]},{"start":[938,149],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[86,149]}]},{"tag":"LineTo","args":[{"point":[86,789]}]},{"tag":"LineTo","args":[{"point":[0,789]}]},{"tag":"LineTo","args":[{"point":[0,875]}]},{"tag":"LineTo","args":[{"point":[1024,875]}]},{"tag":"LineTo","args":[{"point":[1024,789]}]},{"tag":"LineTo","args":[{"point":[938,789]}]},{"tag":"LineTo","args":[{"point":[938,149]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"laptop_mac","codePoint":59799},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[482,819],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[482,819]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[470,807],"end":[470,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[470,771],"end":[482,759]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[494,747],"end":[512,747]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[530,747],"end":[542,759]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,771],"end":[554,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,807],"end":[542,819]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[530,831],"end":[512,831]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[494,831],"end":[482,819]}]}]}]},{"start":[854,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[854,703]}]},{"tag":"LineTo","args":[{"point":[170,703]}]},{"tag":"LineTo","args":[{"point":[170,235]}]},{"tag":"LineTo","args":[{"point":[854,235]}]}]},{"start":[913,763],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[913,763]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,737],"end":[938,703]}]}]},{"tag":"LineTo","args":[{"point":[938,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,201],"end":[913,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,149],"end":[854,149]}]}]},{"tag":"LineTo","args":[{"point":[170,149]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,149],"end":[111,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,201],"end":[86,235]}]}]},{"tag":"LineTo","args":[{"point":[86,703]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,737],"end":[111,763]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,789],"end":[170,789]}]}]},{"tag":"LineTo","args":[{"point":[0,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,823],"end":[26,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[52,875],"end":[86,875]}]}]},{"tag":"LineTo","args":[{"point":[938,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[972,875],"end":[998,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,823],"end":[1024,789]}]}]},{"tag":"LineTo","args":[{"point":[854,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,789],"end":[913,763]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"laptop_windows","codePoint":59800},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[854,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[854,661]}]},{"tag":"LineTo","args":[{"point":[170,661]}]},{"tag":"LineTo","args":[{"point":[170,235]}]},{"tag":"LineTo","args":[{"point":[854,235]}]}]},{"start":[854,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,747],"end":[913,721]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,695],"end":[938,661]}]}]},{"tag":"LineTo","args":[{"point":[938,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,201],"end":[913,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,149],"end":[854,149]}]}]},{"tag":"LineTo","args":[{"point":[170,149]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,149],"end":[111,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,201],"end":[86,235]}]}]},{"tag":"LineTo","args":[{"point":[86,661]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,695],"end":[111,721]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,747],"end":[170,747]}]}]},{"tag":"LineTo","args":[{"point":[170,789]}]},{"tag":"LineTo","args":[{"point":[0,789]}]},{"tag":"LineTo","args":[{"point":[0,875]}]},{"tag":"LineTo","args":[{"point":[1024,875]}]},{"tag":"LineTo","args":[{"point":[1024,789]}]},{"tag":"LineTo","args":[{"point":[854,789]}]},{"tag":"LineTo","args":[{"point":[854,747]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"phone_android","codePoint":59801},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[288,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[288,191]}]},{"tag":"LineTo","args":[{"point":[736,191]}]},{"tag":"LineTo","args":[{"point":[736,789]}]},{"tag":"LineTo","args":[{"point":[288,789]}]}]},{"start":[426,917],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,875]}]},{"tag":"LineTo","args":[{"point":[598,875]}]},{"tag":"LineTo","args":[{"point":[598,917]}]},{"tag":"LineTo","args":[{"point":[426,917]}]}]},{"start":[342,63],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,63],"end":[252,101]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,139],"end":[214,191]}]}]},{"tag":"LineTo","args":[{"point":[214,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,927],"end":[252,965]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,1003],"end":[342,1003]}]}]},{"tag":"LineTo","args":[{"point":[682,1003]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[734,1003],"end":[772,965]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[810,927],"end":[810,875]}]}]},{"tag":"LineTo","args":[{"point":[810,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[810,139],"end":[772,101]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[734,63],"end":[682,63]}]}]},{"tag":"LineTo","args":[{"point":[342,63]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"phone_iphone","codePoint":59802},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[298,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[298,191]}]},{"tag":"LineTo","args":[{"point":[682,191]}]},{"tag":"LineTo","args":[{"point":[682,789]}]},{"tag":"LineTo","args":[{"point":[298,789]}]}]},{"start":[445,940],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[445,940]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,921],"end":[426,895]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,869],"end":[445,850]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[464,831],"end":[490,831]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[516,831],"end":[535,850]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,869],"end":[554,895]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,921],"end":[535,940]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[516,959],"end":[490,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[464,959],"end":[445,940]}]}]}]},{"start":[320,63],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[276,63],"end":[245,95]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,127],"end":[214,171]}]}]},{"tag":"LineTo","args":[{"point":[214,895]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,939],"end":[245,971]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[276,1003],"end":[320,1003]}]}]},{"tag":"LineTo","args":[{"point":[662,1003]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[706,1003],"end":[737,971]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,939],"end":[768,895]}]}]},{"tag":"LineTo","args":[{"point":[768,171]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,127],"end":[737,95]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[706,63],"end":[662,63]}]}]},{"tag":"LineTo","args":[{"point":[320,63]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"color_lenspalette","codePoint":59803},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[701,515],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[701,515]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,497],"end":[682,469]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,441],"end":[701,423]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[720,405],"end":[746,405]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[772,405],"end":[791,423]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[810,441],"end":[810,469]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[810,497],"end":[791,515]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[772,533],"end":[746,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[720,533],"end":[701,515]}]}]}]},{"start":[573,344],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[573,344]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,325],"end":[554,299]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,273],"end":[573,254]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[592,235],"end":[618,235]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[644,235],"end":[663,254]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,273],"end":[682,299]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,325],"end":[663,344]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[644,363],"end":[618,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[592,363],"end":[573,344]}]}]}]},{"start":[361,344],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[361,344]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,325],"end":[342,299]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,273],"end":[361,254]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,235],"end":[406,235]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[432,235],"end":[451,254]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[470,273],"end":[470,299]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[470,325],"end":[451,344]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[432,363],"end":[406,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,363],"end":[361,344]}]}]}]},{"start":[233,515],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[233,515]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,497],"end":[214,469]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,441],"end":[233,423]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[252,405],"end":[278,405]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[304,405],"end":[323,423]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,441],"end":[342,469]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,497],"end":[323,515]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[304,533],"end":[278,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[252,533],"end":[233,515]}]}]}]},{"start":[240,261],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[240,261]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,373],"end":[128,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,693],"end":[240,805]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[352,917],"end":[512,917]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[540,917],"end":[558,899]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,881],"end":[576,853]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,829],"end":[560,809]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,789],"end":[544,767]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,741],"end":[562,722]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[580,703],"end":[608,703]}]}]},{"tag":"LineTo","args":[{"point":[682,703]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[770,703],"end":[833,641]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,579],"end":[896,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,349],"end":[783,249]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[670,149],"end":[512,149]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[352,149],"end":[240,261]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"colorize","codePoint":59804},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[214,749],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[558,405]}]},{"tag":"LineTo","args":[{"point":[640,487]}]},{"tag":"LineTo","args":[{"point":[296,831]}]},{"tag":"LineTo","args":[{"point":[214,749]}]}]},{"start":[784,161],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[772,149],"end":[754,149]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,149],"end":[724,161]}]}]},{"tag":"LineTo","args":[{"point":[590,295]}]},{"tag":"LineTo","args":[{"point":[508,213]}]},{"tag":"LineTo","args":[{"point":[448,273]}]},{"tag":"LineTo","args":[{"point":[508,333]}]},{"tag":"LineTo","args":[{"point":[128,715]}]},{"tag":"LineTo","args":[{"point":[128,917]}]},{"tag":"LineTo","args":[{"point":[330,917]}]},{"tag":"LineTo","args":[{"point":[712,537]}]},{"tag":"LineTo","args":[{"point":[772,597]}]},{"tag":"LineTo","args":[{"point":[832,537]}]},{"tag":"LineTo","args":[{"point":[750,455]}]},{"tag":"LineTo","args":[{"point":[884,321]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[914,291],"end":[884,261]}]}]},{"tag":"LineTo","args":[{"point":[784,161]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"navigate_beforechevron_left","codePoint":59805},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[598,277],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[342,533]}]},{"tag":"LineTo","args":[{"point":[598,789]}]},{"tag":"LineTo","args":[{"point":[658,729]}]},{"tag":"LineTo","args":[{"point":[462,533]}]},{"tag":"LineTo","args":[{"point":[658,337]}]},{"tag":"LineTo","args":[{"point":[598,277]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"navigate_nextchevron_right","codePoint":59806},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[366,337],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[562,533]}]},{"tag":"LineTo","args":[{"point":[366,729]}]},{"tag":"LineTo","args":[{"point":[426,789]}]},{"tag":"LineTo","args":[{"point":[682,533]}]},{"tag":"LineTo","args":[{"point":[426,277]}]},{"tag":"LineTo","args":[{"point":[366,337]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"remove_red_eyevisibility","codePoint":59807},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[422,443],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[422,443]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,481],"end":[384,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,585],"end":[422,623]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[460,661],"end":[512,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,661],"end":[602,623]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,585],"end":[640,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,481],"end":[602,443]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,405],"end":[512,405]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[460,405],"end":[422,443]}]}]}]},{"start":[361,684],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[361,684]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,621],"end":[298,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,445],"end":[361,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[424,319],"end":[512,319]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[600,319],"end":[663,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,445],"end":[726,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,621],"end":[663,684]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[600,747],"end":[512,747]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[424,747],"end":[361,684]}]}]}]},{"start":[226,301],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[226,301]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[98,389],"end":[42,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[98,677],"end":[226,765]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[354,853],"end":[512,853]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[670,853],"end":[798,765]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[926,677],"end":[982,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[926,389],"end":[798,301]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[670,213],"end":[512,213]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[354,213],"end":[226,301]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"tune","codePoint":59808},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[726,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[726,319]}]},{"tag":"LineTo","args":[{"point":[896,319]}]},{"tag":"LineTo","args":[{"point":[896,235]}]},{"tag":"LineTo","args":[{"point":[726,235]}]},{"tag":"LineTo","args":[{"point":[726,149]}]},{"tag":"LineTo","args":[{"point":[640,149]}]},{"tag":"LineTo","args":[{"point":[640,405]}]},{"tag":"LineTo","args":[{"point":[726,405]}]}]},{"start":[896,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,491]}]},{"tag":"LineTo","args":[{"point":[470,575]}]},{"tag":"LineTo","args":[{"point":[896,575]}]},{"tag":"LineTo","args":[{"point":[896,491]}]}]},{"start":[298,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[128,491]}]},{"tag":"LineTo","args":[{"point":[128,575]}]},{"tag":"LineTo","args":[{"point":[298,575]}]},{"tag":"LineTo","args":[{"point":[298,661]}]},{"tag":"LineTo","args":[{"point":[384,661]}]},{"tag":"LineTo","args":[{"point":[384,405]}]},{"tag":"LineTo","args":[{"point":[298,405]}]},{"tag":"LineTo","args":[{"point":[298,491]}]}]},{"start":[554,831],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[896,831]}]},{"tag":"LineTo","args":[{"point":[896,747]}]},{"tag":"LineTo","args":[{"point":[554,747]}]},{"tag":"LineTo","args":[{"point":[554,661]}]},{"tag":"LineTo","args":[{"point":[470,661]}]},{"tag":"LineTo","args":[{"point":[470,917]}]},{"tag":"LineTo","args":[{"point":[554,917]}]},{"tag":"LineTo","args":[{"point":[554,831]}]}]},{"start":[128,319],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,319]}]},{"tag":"LineTo","args":[{"point":[554,235]}]},{"tag":"LineTo","args":[{"point":[128,235]}]},{"tag":"LineTo","args":[{"point":[128,319]}]}]},{"start":[128,831],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[384,831]}]},{"tag":"LineTo","args":[{"point":[384,747]}]},{"tag":"LineTo","args":[{"point":[128,747]}]},{"tag":"LineTo","args":[{"point":[128,831]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"add_photo_alternate","codePoint":59809},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[342,661],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,789]}]},{"tag":"LineTo","args":[{"point":[554,619]}]},{"tag":"LineTo","args":[{"point":[726,831]}]},{"tag":"LineTo","args":[{"point":[214,831]}]},{"tag":"LineTo","args":[{"point":[342,661]}]}]},{"start":[682,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,363]}]},{"tag":"LineTo","args":[{"point":[554,235]}]},{"tag":"LineTo","args":[{"point":[214,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,235],"end":[154,260]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,285],"end":[128,319]}]}]},{"tag":"LineTo","args":[{"point":[128,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,865],"end":[154,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,917],"end":[214,917]}]}]},{"tag":"LineTo","args":[{"point":[726,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[760,917],"end":[785,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[810,865],"end":[810,831]}]}]},{"tag":"LineTo","args":[{"point":[810,491]}]},{"tag":"LineTo","args":[{"point":[682,491]}]},{"tag":"LineTo","args":[{"point":[682,363]}]}]},{"start":[938,319],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[938,235]}]},{"tag":"LineTo","args":[{"point":[810,235]}]},{"tag":"LineTo","args":[{"point":[810,107]}]},{"tag":"LineTo","args":[{"point":[726,107]}]},{"tag":"LineTo","args":[{"point":[726,235]}]},{"tag":"LineTo","args":[{"point":[598,235]}]},{"tag":"LineTo","args":[{"point":[598,319]}]},{"tag":"LineTo","args":[{"point":[726,319]}]},{"tag":"LineTo","args":[{"point":[726,447]}]},{"tag":"LineTo","args":[{"point":[810,447]}]},{"tag":"LineTo","args":[{"point":[810,319]}]},{"tag":"LineTo","args":[{"point":[938,319]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"image_search","codePoint":59810},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[586,374],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[586,374]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,343],"end":[554,299]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,255],"end":[586,223]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,191],"end":[662,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[706,191],"end":[737,223]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,255],"end":[768,299]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,343],"end":[737,374]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[706,405],"end":[662,405]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,405],"end":[586,374]}]}]}]},{"start":[854,299],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[854,299]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,219],"end":[798,163]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[742,107],"end":[662,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,107],"end":[526,163]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[470,219],"end":[470,299]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[470,379],"end":[525,435]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[580,491],"end":[660,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[712,491],"end":[762,461]}]}]},{"tag":"LineTo","args":[{"point":[896,593]}]},{"tag":"LineTo","args":[{"point":[956,533]}]},{"tag":"LineTo","args":[{"point":[824,401]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,351],"end":[854,299]}]}]}]},{"start":[552,589],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[436,739]}]},{"tag":"LineTo","args":[{"point":[352,639]}]},{"tag":"LineTo","args":[{"point":[234,789]}]},{"tag":"LineTo","args":[{"point":[704,789]}]},{"tag":"LineTo","args":[{"point":[552,589]}]}]},{"start":[768,875],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[170,875]}]},{"tag":"LineTo","args":[{"point":[170,277]}]},{"tag":"LineTo","args":[{"point":[384,277]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[386,233],"end":[406,191]}]}]},{"tag":"LineTo","args":[{"point":[170,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,191],"end":[111,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,243],"end":[86,277]}]}]},{"tag":"LineTo","args":[{"point":[86,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,909],"end":[111,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,959],"end":[170,959]}]}]},{"tag":"LineTo","args":[{"point":[768,959]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[802,959],"end":[828,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,909],"end":[854,875]}]}]},{"tag":"LineTo","args":[{"point":[854,661]}]},{"tag":"LineTo","args":[{"point":[768,575]}]},{"tag":"LineTo","args":[{"point":[768,875]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"beenhere","codePoint":59811},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[214,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[274,431]}]},{"tag":"LineTo","args":[{"point":[426,583]}]},{"tag":"LineTo","args":[{"point":[750,259]}]},{"tag":"LineTo","args":[{"point":[810,319]}]},{"tag":"LineTo","args":[{"point":[426,703]}]},{"tag":"LineTo","args":[{"point":[214,491]}]}]},{"start":[214,63],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,63],"end":[154,89]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,115],"end":[128,149]}]}]},{"tag":"LineTo","args":[{"point":[128,701]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,743],"end":[166,771]}]}]},{"tag":"LineTo","args":[{"point":[512,1003]}]},{"tag":"LineTo","args":[{"point":[858,771]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,743],"end":[896,701]}]}]},{"tag":"LineTo","args":[{"point":[896,149]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,115],"end":[870,89]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,63],"end":[810,63]}]}]},{"tag":"LineTo","args":[{"point":[214,63]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"apps","codePoint":59812},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[854,875],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[854,703]}]},{"tag":"LineTo","args":[{"point":[682,703]}]},{"tag":"LineTo","args":[{"point":[682,875]}]},{"tag":"LineTo","args":[{"point":[854,875]}]}]},{"start":[854,619],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[854,447]}]},{"tag":"LineTo","args":[{"point":[682,447]}]},{"tag":"LineTo","args":[{"point":[682,619]}]},{"tag":"LineTo","args":[{"point":[854,619]}]}]},{"start":[598,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[598,191]}]},{"tag":"LineTo","args":[{"point":[426,191]}]},{"tag":"LineTo","args":[{"point":[426,363]}]},{"tag":"LineTo","args":[{"point":[598,363]}]}]},{"start":[682,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[854,363]}]},{"tag":"LineTo","args":[{"point":[854,191]}]},{"tag":"LineTo","args":[{"point":[682,191]}]},{"tag":"LineTo","args":[{"point":[682,363]}]}]},{"start":[598,619],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[598,447]}]},{"tag":"LineTo","args":[{"point":[426,447]}]},{"tag":"LineTo","args":[{"point":[426,619]}]},{"tag":"LineTo","args":[{"point":[598,619]}]}]},{"start":[342,619],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[342,447]}]},{"tag":"LineTo","args":[{"point":[170,447]}]},{"tag":"LineTo","args":[{"point":[170,619]}]},{"tag":"LineTo","args":[{"point":[342,619]}]}]},{"start":[342,875],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[342,703]}]},{"tag":"LineTo","args":[{"point":[170,703]}]},{"tag":"LineTo","args":[{"point":[170,875]}]},{"tag":"LineTo","args":[{"point":[342,875]}]}]},{"start":[598,875],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[598,703]}]},{"tag":"LineTo","args":[{"point":[426,703]}]},{"tag":"LineTo","args":[{"point":[426,875]}]},{"tag":"LineTo","args":[{"point":[598,875]}]}]},{"start":[342,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[342,191]}]},{"tag":"LineTo","args":[{"point":[170,191]}]},{"tag":"LineTo","args":[{"point":[170,363]}]},{"tag":"LineTo","args":[{"point":[342,363]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"arrow_back","codePoint":59813},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[334,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[572,251]}]},{"tag":"LineTo","args":[{"point":[512,191]}]},{"tag":"LineTo","args":[{"point":[170,533]}]},{"tag":"LineTo","args":[{"point":[512,875]}]},{"tag":"LineTo","args":[{"point":[572,815]}]},{"tag":"LineTo","args":[{"point":[334,575]}]},{"tag":"LineTo","args":[{"point":[854,575]}]},{"tag":"LineTo","args":[{"point":[854,491]}]},{"tag":"LineTo","args":[{"point":[334,491]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"arrow_drop_down","codePoint":59814},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,661],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[726,447]}]},{"tag":"LineTo","args":[{"point":[298,447]}]},{"tag":"LineTo","args":[{"point":[512,661]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"arrow_drop_down_circle","codePoint":59815},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[342,447],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,447]}]},{"tag":"LineTo","args":[{"point":[512,619]}]},{"tag":"LineTo","args":[{"point":[342,447]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"arrow_drop_up","codePoint":59816},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[726,619],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,405]}]},{"tag":"LineTo","args":[{"point":[298,619]}]},{"tag":"LineTo","args":[{"point":[726,619]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"arrow_forward","codePoint":59817},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[452,251],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[690,491]}]},{"tag":"LineTo","args":[{"point":[170,491]}]},{"tag":"LineTo","args":[{"point":[170,575]}]},{"tag":"LineTo","args":[{"point":[690,575]}]},{"tag":"LineTo","args":[{"point":[452,815]}]},{"tag":"LineTo","args":[{"point":[512,875]}]},{"tag":"LineTo","args":[{"point":[854,533]}]},{"tag":"LineTo","args":[{"point":[512,191]}]},{"tag":"LineTo","args":[{"point":[452,251]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"cancel","codePoint":59818},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[666,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,593]}]},{"tag":"LineTo","args":[{"point":[358,747]}]},{"tag":"LineTo","args":[{"point":[298,687]}]},{"tag":"LineTo","args":[{"point":[452,533]}]},{"tag":"LineTo","args":[{"point":[298,379]}]},{"tag":"LineTo","args":[{"point":[358,319]}]},{"tag":"LineTo","args":[{"point":[512,473]}]},{"tag":"LineTo","args":[{"point":[666,319]}]},{"tag":"LineTo","args":[{"point":[726,379]}]},{"tag":"LineTo","args":[{"point":[572,533]}]},{"tag":"LineTo","args":[{"point":[726,687]}]},{"tag":"LineTo","args":[{"point":[666,747]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"check","codePoint":59819},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[206,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[146,593]}]},{"tag":"LineTo","args":[{"point":[384,831]}]},{"tag":"LineTo","args":[{"point":[896,319]}]},{"tag":"LineTo","args":[{"point":[836,259]}]},{"tag":"LineTo","args":[{"point":[384,711]}]},{"tag":"LineTo","args":[{"point":[206,533]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"expand_less","codePoint":59820},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[256,619],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[316,679]}]},{"tag":"LineTo","args":[{"point":[512,483]}]},{"tag":"LineTo","args":[{"point":[708,679]}]},{"tag":"LineTo","args":[{"point":[768,619]}]},{"tag":"LineTo","args":[{"point":[512,363]}]},{"tag":"LineTo","args":[{"point":[256,619]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"expand_more","codePoint":59821},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,583],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[316,387]}]},{"tag":"LineTo","args":[{"point":[256,447]}]},{"tag":"LineTo","args":[{"point":[512,703]}]},{"tag":"LineTo","args":[{"point":[768,447]}]},{"tag":"LineTo","args":[{"point":[708,387]}]},{"tag":"LineTo","args":[{"point":[512,583]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"fullscreen","codePoint":59822},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[598,319],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[726,319]}]},{"tag":"LineTo","args":[{"point":[726,447]}]},{"tag":"LineTo","args":[{"point":[810,447]}]},{"tag":"LineTo","args":[{"point":[810,235]}]},{"tag":"LineTo","args":[{"point":[598,235]}]},{"tag":"LineTo","args":[{"point":[598,319]}]}]},{"start":[598,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[598,831]}]},{"tag":"LineTo","args":[{"point":[810,831]}]},{"tag":"LineTo","args":[{"point":[810,619]}]},{"tag":"LineTo","args":[{"point":[726,619]}]},{"tag":"LineTo","args":[{"point":[726,747]}]},{"tag":"LineTo","args":[{"point":[598,747]}]}]},{"start":[298,447],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[298,319]}]},{"tag":"LineTo","args":[{"point":[426,319]}]},{"tag":"LineTo","args":[{"point":[426,235]}]},{"tag":"LineTo","args":[{"point":[214,235]}]},{"tag":"LineTo","args":[{"point":[214,447]}]},{"tag":"LineTo","args":[{"point":[298,447]}]}]},{"start":[214,619],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[214,831]}]},{"tag":"LineTo","args":[{"point":[426,831]}]},{"tag":"LineTo","args":[{"point":[426,747]}]},{"tag":"LineTo","args":[{"point":[298,747]}]},{"tag":"LineTo","args":[{"point":[298,619]}]},{"tag":"LineTo","args":[{"point":[214,619]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"fullscreen_exit","codePoint":59823},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[682,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[598,235]}]},{"tag":"LineTo","args":[{"point":[598,447]}]},{"tag":"LineTo","args":[{"point":[810,447]}]},{"tag":"LineTo","args":[{"point":[810,363]}]},{"tag":"LineTo","args":[{"point":[682,363]}]},{"tag":"LineTo","args":[{"point":[682,235]}]}]},{"start":[682,831],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,703]}]},{"tag":"LineTo","args":[{"point":[810,703]}]},{"tag":"LineTo","args":[{"point":[810,619]}]},{"tag":"LineTo","args":[{"point":[598,619]}]},{"tag":"LineTo","args":[{"point":[598,831]}]},{"tag":"LineTo","args":[{"point":[682,831]}]}]},{"start":[214,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[214,447]}]},{"tag":"LineTo","args":[{"point":[426,447]}]},{"tag":"LineTo","args":[{"point":[426,235]}]},{"tag":"LineTo","args":[{"point":[342,235]}]},{"tag":"LineTo","args":[{"point":[342,363]}]},{"tag":"LineTo","args":[{"point":[214,363]}]}]},{"start":[342,703],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[342,831]}]},{"tag":"LineTo","args":[{"point":[426,831]}]},{"tag":"LineTo","args":[{"point":[426,619]}]},{"tag":"LineTo","args":[{"point":[214,619]}]},{"tag":"LineTo","args":[{"point":[214,703]}]},{"tag":"LineTo","args":[{"point":[342,703]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"menu","codePoint":59824},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[128,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[896,363]}]},{"tag":"LineTo","args":[{"point":[896,277]}]},{"tag":"LineTo","args":[{"point":[128,277]}]},{"tag":"LineTo","args":[{"point":[128,363]}]}]},{"start":[896,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[896,491]}]},{"tag":"LineTo","args":[{"point":[128,491]}]},{"tag":"LineTo","args":[{"point":[128,575]}]},{"tag":"LineTo","args":[{"point":[896,575]}]}]},{"start":[896,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[896,703]}]},{"tag":"LineTo","args":[{"point":[128,703]}]},{"tag":"LineTo","args":[{"point":[128,789]}]},{"tag":"LineTo","args":[{"point":[896,789]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"keyboard_control","codePoint":59825},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[452,473],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[452,473]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,499],"end":[426,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,567],"end":[452,593]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,619],"end":[512,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,619],"end":[572,593]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,567],"end":[598,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,499],"end":[572,473]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,447],"end":[512,447]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,447],"end":[452,473]}]}]}]},{"start":[708,473],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[708,473]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,499],"end":[682,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,567],"end":[708,593]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[734,619],"end":[768,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[802,619],"end":[828,593]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,567],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,499],"end":[828,473]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[802,447],"end":[768,447]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[734,447],"end":[708,473]}]}]}]},{"start":[196,473],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[196,473]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,499],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,567],"end":[196,593]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,619],"end":[256,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,619],"end":[316,593]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,567],"end":[342,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,499],"end":[316,473]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,447],"end":[256,447]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,447],"end":[196,473]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"more_vert","codePoint":59826},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[452,729],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[452,729]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,755],"end":[426,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,823],"end":[452,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,875],"end":[572,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,823],"end":[598,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,755],"end":[572,729]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,703],"end":[512,703]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,703],"end":[452,729]}]}]}]},{"start":[452,473],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[452,473]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,499],"end":[426,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,567],"end":[452,593]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,619],"end":[512,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,619],"end":[572,593]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,567],"end":[598,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,499],"end":[572,473]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,447],"end":[512,447]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,447],"end":[452,473]}]}]}]},{"start":[572,337],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[572,337]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,311],"end":[598,277]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,243],"end":[572,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,191],"end":[452,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,243],"end":[426,277]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,311],"end":[452,337]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,363],"end":[512,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,363],"end":[572,337]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"refresh","codePoint":59827},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[643,220],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[643,220]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[572,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[272,291]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[172,391],"end":[172,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[172,675],"end":[272,775]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[630,875],"end":[722,803]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[814,731],"end":[842,619]}]}]},{"tag":"LineTo","args":[{"point":[754,619]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[728,689],"end":[657,739]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[586,789],"end":[512,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[406,789],"end":[331,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,639],"end":[256,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,427],"end":[331,352]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[406,277],"end":[512,277]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[616,277],"end":[692,353]}]}]},{"tag":"LineTo","args":[{"point":[554,491]}]},{"tag":"LineTo","args":[{"point":[854,491]}]},{"tag":"LineTo","args":[{"point":[854,191]}]},{"tag":"LineTo","args":[{"point":[754,291]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[714,249],"end":[643,220]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"unfold_less","codePoint":59828},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[648,191],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,327]}]},{"tag":"LineTo","args":[{"point":[376,191]}]},{"tag":"LineTo","args":[{"point":[316,251]}]},{"tag":"LineTo","args":[{"point":[512,447]}]},{"tag":"LineTo","args":[{"point":[708,251]}]},{"tag":"LineTo","args":[{"point":[648,191]}]}]},{"start":[376,875],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,739]}]},{"tag":"LineTo","args":[{"point":[648,875]}]},{"tag":"LineTo","args":[{"point":[708,815]}]},{"tag":"LineTo","args":[{"point":[512,619]}]},{"tag":"LineTo","args":[{"point":[316,815]}]},{"tag":"LineTo","args":[{"point":[376,875]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"unfold_more","codePoint":59829},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[376,661],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[316,721]}]},{"tag":"LineTo","args":[{"point":[512,917]}]},{"tag":"LineTo","args":[{"point":[708,721]}]},{"tag":"LineTo","args":[{"point":[648,661]}]},{"tag":"LineTo","args":[{"point":[512,797]}]},{"tag":"LineTo","args":[{"point":[376,661]}]}]},{"start":[648,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[708,345]}]},{"tag":"LineTo","args":[{"point":[512,149]}]},{"tag":"LineTo","args":[{"point":[316,345]}]},{"tag":"LineTo","args":[{"point":[376,405]}]},{"tag":"LineTo","args":[{"point":[512,269]}]},{"tag":"LineTo","args":[{"point":[648,405]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"arrow_upward","codePoint":59830},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[230,593],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,355]}]},{"tag":"LineTo","args":[{"point":[470,875]}]},{"tag":"LineTo","args":[{"point":[554,875]}]},{"tag":"LineTo","args":[{"point":[554,355]}]},{"tag":"LineTo","args":[{"point":[792,593]}]},{"tag":"LineTo","args":[{"point":[854,533]}]},{"tag":"LineTo","args":[{"point":[512,191]}]},{"tag":"LineTo","args":[{"point":[170,533]}]},{"tag":"LineTo","args":[{"point":[230,593]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"subdirectory_arrow_left","codePoint":59831},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[214,661],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,917]}]},{"tag":"LineTo","args":[{"point":[530,857]}]},{"tag":"LineTo","args":[{"point":[376,703]}]},{"tag":"LineTo","args":[{"point":[854,703]}]},{"tag":"LineTo","args":[{"point":[854,191]}]},{"tag":"LineTo","args":[{"point":[768,191]}]},{"tag":"LineTo","args":[{"point":[768,619]}]},{"tag":"LineTo","args":[{"point":[376,619]}]},{"tag":"LineTo","args":[{"point":[530,465]}]},{"tag":"LineTo","args":[{"point":[470,405]}]},{"tag":"LineTo","args":[{"point":[214,661]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"subdirectory_arrow_right","codePoint":59832},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[554,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[494,465]}]},{"tag":"LineTo","args":[{"point":[648,619]}]},{"tag":"LineTo","args":[{"point":[256,619]}]},{"tag":"LineTo","args":[{"point":[256,191]}]},{"tag":"LineTo","args":[{"point":[170,191]}]},{"tag":"LineTo","args":[{"point":[170,703]}]},{"tag":"LineTo","args":[{"point":[648,703]}]},{"tag":"LineTo","args":[{"point":[494,857]}]},{"tag":"LineTo","args":[{"point":[554,917]}]},{"tag":"LineTo","args":[{"point":[810,661]}]},{"tag":"LineTo","args":[{"point":[554,405]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"arrow_downward","codePoint":59833},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[794,473],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,711]}]},{"tag":"LineTo","args":[{"point":[554,191]}]},{"tag":"LineTo","args":[{"point":[470,191]}]},{"tag":"LineTo","args":[{"point":[470,711]}]},{"tag":"LineTo","args":[{"point":[232,473]}]},{"tag":"LineTo","args":[{"point":[170,533]}]},{"tag":"LineTo","args":[{"point":[512,875]}]},{"tag":"LineTo","args":[{"point":[854,533]}]},{"tag":"LineTo","args":[{"point":[794,473]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"first_page","codePoint":59834},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[256,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[342,789]}]},{"tag":"LineTo","args":[{"point":[342,277]}]},{"tag":"LineTo","args":[{"point":[256,277]}]},{"tag":"LineTo","args":[{"point":[256,789]}]}]},{"start":[590,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[786,337]}]},{"tag":"LineTo","args":[{"point":[726,277]}]},{"tag":"LineTo","args":[{"point":[470,533]}]},{"tag":"LineTo","args":[{"point":[726,789]}]},{"tag":"LineTo","args":[{"point":[786,729]}]},{"tag":"LineTo","args":[{"point":[590,533]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"last_page","codePoint":59835},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[682,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,789]}]},{"tag":"LineTo","args":[{"point":[768,277]}]},{"tag":"LineTo","args":[{"point":[682,277]}]},{"tag":"LineTo","args":[{"point":[682,789]}]}]},{"start":[434,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[238,729]}]},{"tag":"LineTo","args":[{"point":[298,789]}]},{"tag":"LineTo","args":[{"point":[554,533]}]},{"tag":"LineTo","args":[{"point":[298,277]}]},{"tag":"LineTo","args":[{"point":[238,337]}]},{"tag":"LineTo","args":[{"point":[434,533]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"arrow_left","codePoint":59836},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[384,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[598,747]}]},{"tag":"LineTo","args":[{"point":[598,319]}]},{"tag":"LineTo","args":[{"point":[384,533]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"arrow_right","codePoint":59837},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[640,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,319]}]},{"tag":"LineTo","args":[{"point":[426,747]}]},{"tag":"LineTo","args":[{"point":[640,533]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"arrow_back_ios","codePoint":59838},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[422,111],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[0,533]}]},{"tag":"LineTo","args":[{"point":[422,955]}]},{"tag":"LineTo","args":[{"point":[498,879]}]},{"tag":"LineTo","args":[{"point":[152,533]}]},{"tag":"LineTo","args":[{"point":[498,187]}]},{"tag":"LineTo","args":[{"point":[422,111]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"arrow_forward_ios","codePoint":59839},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[588,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[250,869]}]},{"tag":"LineTo","args":[{"point":[342,959]}]},{"tag":"LineTo","args":[{"point":[768,533]}]},{"tag":"LineTo","args":[{"point":[342,107]}]},{"tag":"LineTo","args":[{"point":[250,197]}]},{"tag":"LineTo","args":[{"point":[588,533]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder_special","codePoint":59840},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[640,673],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[514,747]}]},{"tag":"LineTo","args":[{"point":[548,605]}]},{"tag":"LineTo","args":[{"point":[438,509]}]},{"tag":"LineTo","args":[{"point":[582,497]}]},{"tag":"LineTo","args":[{"point":[640,363]}]},{"tag":"LineTo","args":[{"point":[698,497]}]},{"tag":"LineTo","args":[{"point":[842,509]}]},{"tag":"LineTo","args":[{"point":[732,605]}]},{"tag":"LineTo","args":[{"point":[766,747]}]},{"tag":"LineTo","args":[{"point":[640,673]}]}]},{"start":[512,277],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,191]}]},{"tag":"LineTo","args":[{"point":[170,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,191],"end":[111,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,243],"end":[86,277]}]}]},{"tag":"LineTo","args":[{"point":[86,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,823],"end":[111,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,875],"end":[170,875]}]}]},{"tag":"LineTo","args":[{"point":[854,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,875],"end":[913,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,823],"end":[938,789]}]}]},{"tag":"LineTo","args":[{"point":[938,363]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,329],"end":[913,303]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,277],"end":[854,277]}]}]},{"tag":"LineTo","args":[{"point":[512,277]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"priority_high","codePoint":59841},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[426,661],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[598,661]}]},{"tag":"LineTo","args":[{"point":[598,149]}]},{"tag":"LineTo","args":[{"point":[426,149]}]},{"tag":"LineTo","args":[{"point":[426,661]}]}]},{"start":[451,892],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[451,892]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[476,917],"end":[512,917]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[548,917],"end":[573,892]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,867],"end":[598,831]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,795],"end":[573,771]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[548,747],"end":[512,747]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[476,747],"end":[451,771]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,795],"end":[426,831]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,867],"end":[451,892]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"notifications","codePoint":59842},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[768,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,391],"end":[717,317]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[666,243],"end":[576,221]}]}]},{"tag":"LineTo","args":[{"point":[576,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,165],"end":[558,146]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[540,127],"end":[512,127]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[484,127],"end":[466,146]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[448,165],"end":[448,191]}]}]},{"tag":"LineTo","args":[{"point":[448,221]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[358,243],"end":[307,317]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,391],"end":[256,491]}]}]},{"tag":"LineTo","args":[{"point":[256,703]}]},{"tag":"LineTo","args":[{"point":[170,789]}]},{"tag":"LineTo","args":[{"point":[170,831]}]},{"tag":"LineTo","args":[{"point":[854,831]}]},{"tag":"LineTo","args":[{"point":[854,789]}]},{"tag":"LineTo","args":[{"point":[768,703]}]},{"tag":"LineTo","args":[{"point":[768,491]}]}]},{"start":[572,934],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[572,934]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,909],"end":[598,875]}]}]},{"tag":"LineTo","args":[{"point":[426,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,911],"end":[451,935]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[476,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,959],"end":[572,934]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"notifications_none","codePoint":59843},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[342,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[342,491]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,409],"end":[388,354]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[434,299],"end":[512,299]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[590,299],"end":[636,354]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,409],"end":[682,491]}]}]},{"tag":"LineTo","args":[{"point":[682,747]}]},{"tag":"LineTo","args":[{"point":[342,747]}]}]},{"start":[768,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,391],"end":[717,317]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[666,243],"end":[576,221]}]}]},{"tag":"LineTo","args":[{"point":[576,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,165],"end":[558,146]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[540,127],"end":[512,127]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[484,127],"end":[466,146]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[448,165],"end":[448,191]}]}]},{"tag":"LineTo","args":[{"point":[448,221]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[358,243],"end":[307,317]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,391],"end":[256,491]}]}]},{"tag":"LineTo","args":[{"point":[256,703]}]},{"tag":"LineTo","args":[{"point":[170,789]}]},{"tag":"LineTo","args":[{"point":[170,831]}]},{"tag":"LineTo","args":[{"point":[854,831]}]},{"tag":"LineTo","args":[{"point":[854,789]}]},{"tag":"LineTo","args":[{"point":[768,703]}]},{"tag":"LineTo","args":[{"point":[768,491]}]}]},{"start":[572,934],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[572,934]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,909],"end":[598,875]}]}]},{"tag":"LineTo","args":[{"point":[426,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,909],"end":[452,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,959],"end":[572,934]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"person","codePoint":59844},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[287,666],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[287,666]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,713],"end":[170,789]}]}]},{"tag":"LineTo","args":[{"point":[170,875]}]},{"tag":"LineTo","args":[{"point":[854,875]}]},{"tag":"LineTo","args":[{"point":[854,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,713],"end":[737,666]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[620,619],"end":[512,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[404,619],"end":[287,666]}]}]}]},{"start":[632,483],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[632,483]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,433],"end":[682,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,293],"end":[632,242]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[442,191],"end":[392,242]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,293],"end":[342,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,433],"end":[392,483]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[442,533],"end":[512,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,533],"end":[632,483]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"public","codePoint":59845},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[682,703],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,703]}]},{"tag":"LineTo","args":[{"point":[640,703]}]},{"tag":"LineTo","args":[{"point":[640,575]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,557],"end":[628,545]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[616,533],"end":[598,533]}]}]},{"tag":"LineTo","args":[{"point":[342,533]}]},{"tag":"LineTo","args":[{"point":[342,447]}]},{"tag":"LineTo","args":[{"point":[426,447]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[444,447],"end":[457,435]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[470,423],"end":[470,405]}]}]},{"tag":"LineTo","args":[{"point":[470,319]}]},{"tag":"LineTo","args":[{"point":[554,319]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[588,319],"end":[614,294]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,269],"end":[640,235]}]}]},{"tag":"LineTo","args":[{"point":[640,217]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,255],"end":[795,341]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,427],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,667],"end":[764,763]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[742,703],"end":[682,703]}]}]}]},{"start":[257,759],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[257,759]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,663],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,497],"end":[180,457]}]}]},{"tag":"LineTo","args":[{"point":[384,661]}]},{"tag":"LineTo","args":[{"point":[384,703]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,737],"end":[410,763]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,789],"end":[470,789]}]}]},{"tag":"LineTo","args":[{"point":[470,871]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[344,855],"end":[257,759]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"share","codePoint":59846},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[684,739],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[684,739]}]},{"tag":"LineTo","args":[{"point":[380,563]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,543],"end":[384,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,523],"end":[380,503]}]}]},{"tag":"LineTo","args":[{"point":[680,327]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[720,363],"end":[768,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[820,363],"end":[858,325]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,287],"end":[896,235]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,183],"end":[858,145]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[820,107],"end":[768,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[716,107],"end":[678,145]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,183],"end":[640,235]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,245],"end":[644,265]}]}]},{"tag":"LineTo","args":[{"point":[344,439]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[306,405],"end":[256,405]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[204,405],"end":[166,443]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,481],"end":[128,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,585],"end":[166,623]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[204,661],"end":[256,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[306,661],"end":[344,627]}]}]},{"tag":"LineTo","args":[{"point":[646,803]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[644,811],"end":[644,831]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[644,883],"end":[681,920]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[718,957],"end":[768,957]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[818,957],"end":[855,920]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[892,883],"end":[892,831]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[892,781],"end":[856,744]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[820,707],"end":[768,707]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[720,707],"end":[684,739]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"sentiment_dissatisfied","codePoint":59847},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[596,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[596,747]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,743],"end":[617,722]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,701],"end":[640,699]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[580,661],"end":[512,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[440,661],"end":[384,699]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[404,721],"end":[406,723]}]}]},{"tag":"LineTo","args":[{"point":[428,747]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[468,725],"end":[512,725]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[558,725],"end":[596,747]}]}]}]},{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]},{"start":[317,472],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[317,472]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,491],"end":[362,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,491],"end":[407,472]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,453],"end":[426,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,401],"end":[407,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,363],"end":[362,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,363],"end":[317,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,401],"end":[298,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,453],"end":[317,472]}]}]}]},{"start":[617,472],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[617,472]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,491],"end":[662,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,491],"end":[707,472]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,453],"end":[726,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,401],"end":[707,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,363],"end":[662,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,363],"end":[617,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,401],"end":[598,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,453],"end":[617,472]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"sentiment_neutral","codePoint":59848},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]},{"start":[317,472],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[317,472]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,491],"end":[362,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,491],"end":[407,472]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,453],"end":[426,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,401],"end":[407,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,363],"end":[362,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,363],"end":[317,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,401],"end":[298,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,453],"end":[317,472]}]}]}]},{"start":[617,472],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[617,472]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,491],"end":[662,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,491],"end":[707,472]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,453],"end":[726,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,401],"end":[707,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,363],"end":[662,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,363],"end":[617,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,401],"end":[598,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,453],"end":[617,472]}]}]}]},{"start":[384,725],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[640,725]}]},{"tag":"LineTo","args":[{"point":[640,683]}]},{"tag":"LineTo","args":[{"point":[384,683]}]},{"tag":"LineTo","args":[{"point":[384,725]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"sentiment_satisfied","codePoint":59849},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[428,681],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[428,681]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[410,699],"end":[386,731]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[444,767],"end":[512,767]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,767],"end":[640,731]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[634,725],"end":[596,681]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[556,703],"end":[512,703]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[466,703],"end":[428,681]}]}]}]},{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]},{"start":[317,472],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[317,472]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,491],"end":[362,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,491],"end":[407,472]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,453],"end":[426,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,401],"end":[407,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,363],"end":[362,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,363],"end":[317,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,401],"end":[298,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,453],"end":[317,472]}]}]}]},{"start":[617,472],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[617,472]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,491],"end":[662,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,491],"end":[707,472]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,453],"end":[726,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,401],"end":[707,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,363],"end":[662,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,363],"end":[617,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,401],"end":[598,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,453],"end":[617,472]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"sentiment_very_dissatisfied","codePoint":59850},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[379,660],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[379,660]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,701],"end":[294,767]}]}]},{"tag":"LineTo","args":[{"point":[364,767]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[414,683],"end":[512,683]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[610,683],"end":[660,767]}]}]},{"tag":"LineTo","args":[{"point":[730,767]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,701],"end":[645,660]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[586,619],"end":[512,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[438,619],"end":[379,660]}]}]}]},{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]},{"start":[317,472],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[317,472]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,491],"end":[362,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,491],"end":[407,472]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,453],"end":[426,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,401],"end":[407,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,363],"end":[362,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,363],"end":[317,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,401],"end":[298,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,453],"end":[317,472]}]}]}]},{"start":[617,472],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[617,472]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,491],"end":[662,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,491],"end":[707,472]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,453],"end":[726,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,401],"end":[707,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,363],"end":[662,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,363],"end":[617,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,401],"end":[598,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,453],"end":[617,472]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"sentiment_very_satisfied","codePoint":59851},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[382,742],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[382,742]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[440,789],"end":[512,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[584,789],"end":[642,742]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[700,695],"end":[726,619]}]}]},{"tag":"LineTo","args":[{"point":[298,619]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[324,695],"end":[382,742]}]}]}]},{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]},{"start":[317,472],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[317,472]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,491],"end":[362,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,491],"end":[407,472]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,453],"end":[426,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,401],"end":[407,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,363],"end":[362,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,363],"end":[317,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,401],"end":[298,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,453],"end":[317,472]}]}]}]},{"start":[617,472],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[617,472]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,491],"end":[662,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,491],"end":[707,472]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,453],"end":[726,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,401],"end":[707,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,363],"end":[662,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,363],"end":[617,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,401],"end":[598,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,453],"end":[617,472]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"stargrade","codePoint":59852},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[776,917],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[706,617]}]},{"tag":"LineTo","args":[{"point":[938,415]}]},{"tag":"LineTo","args":[{"point":[632,389]}]},{"tag":"LineTo","args":[{"point":[512,107]}]},{"tag":"LineTo","args":[{"point":[392,389]}]},{"tag":"LineTo","args":[{"point":[86,415]}]},{"tag":"LineTo","args":[{"point":[318,617]}]},{"tag":"LineTo","args":[{"point":[248,917]}]},{"tag":"LineTo","args":[{"point":[512,757]}]},{"tag":"LineTo","args":[{"point":[776,917]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"star_half","codePoint":59853},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,281],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[584,453]}]},{"tag":"LineTo","args":[{"point":[772,469]}]},{"tag":"LineTo","args":[{"point":[630,593]}]},{"tag":"LineTo","args":[{"point":[672,775]}]},{"tag":"LineTo","args":[{"point":[512,679]}]},{"tag":"LineTo","args":[{"point":[512,281]}]}]},{"start":[632,389],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,107]}]},{"tag":"LineTo","args":[{"point":[392,389]}]},{"tag":"LineTo","args":[{"point":[86,415]}]},{"tag":"LineTo","args":[{"point":[318,617]}]},{"tag":"LineTo","args":[{"point":[248,917]}]},{"tag":"LineTo","args":[{"point":[512,757]}]},{"tag":"LineTo","args":[{"point":[776,917]}]},{"tag":"LineTo","args":[{"point":[706,617]}]},{"tag":"LineTo","args":[{"point":[938,415]}]},{"tag":"LineTo","args":[{"point":[632,389]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"star_outline","codePoint":59854},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[352,775],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[394,593]}]},{"tag":"LineTo","args":[{"point":[252,469]}]},{"tag":"LineTo","args":[{"point":[440,453]}]},{"tag":"LineTo","args":[{"point":[512,281]}]},{"tag":"LineTo","args":[{"point":[584,453]}]},{"tag":"LineTo","args":[{"point":[772,469]}]},{"tag":"LineTo","args":[{"point":[630,593]}]},{"tag":"LineTo","args":[{"point":[672,775]}]},{"tag":"LineTo","args":[{"point":[512,679]}]},{"tag":"LineTo","args":[{"point":[352,775]}]}]},{"start":[632,389],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,107]}]},{"tag":"LineTo","args":[{"point":[392,389]}]},{"tag":"LineTo","args":[{"point":[86,415]}]},{"tag":"LineTo","args":[{"point":[318,617]}]},{"tag":"LineTo","args":[{"point":[248,917]}]},{"tag":"LineTo","args":[{"point":[512,757]}]},{"tag":"LineTo","args":[{"point":[776,917]}]},{"tag":"LineTo","args":[{"point":[706,617]}]},{"tag":"LineTo","args":[{"point":[938,415]}]},{"tag":"LineTo","args":[{"point":[632,389]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"account_box","codePoint":59855},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[344,652],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[344,652]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[432,615],"end":[512,615]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[592,615],"end":[680,652]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,689],"end":[768,747]}]}]},{"tag":"LineTo","args":[{"point":[768,789]}]},{"tag":"LineTo","args":[{"point":[256,789]}]},{"tag":"LineTo","args":[{"point":[256,747]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,689],"end":[344,652]}]}]}]},{"start":[602,495],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[602,495]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,533],"end":[512,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[460,533],"end":[422,495]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,457],"end":[384,405]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,353],"end":[422,315]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[460,277],"end":[512,277]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,277],"end":[602,315]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,353],"end":[640,405]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,457],"end":[602,495]}]}]}]},{"start":[128,831],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,867],"end":[153,892]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,917],"end":[214,917]}]}]},{"tag":"LineTo","args":[{"point":[810,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,917],"end":[870,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,865],"end":[896,831]}]}]},{"tag":"LineTo","args":[{"point":[896,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,201],"end":[870,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,149],"end":[810,149]}]}]},{"tag":"LineTo","args":[{"point":[214,149]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,149],"end":[153,174]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,199],"end":[128,235]}]}]},{"tag":"LineTo","args":[{"point":[128,831]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"account_circle","codePoint":59856},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[369,801],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[369,801]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[294,761],"end":[256,703]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[258,645],"end":[346,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[434,571],"end":[512,571]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[590,571],"end":[678,609]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[766,647],"end":[768,703]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[730,761],"end":[655,801]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[580,841],"end":[512,841]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[444,841],"end":[369,801]}]}]}]},{"start":[602,273],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[602,273]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,311],"end":[640,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,415],"end":[602,453]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,491],"end":[512,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[460,491],"end":[422,453]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,415],"end":[384,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,311],"end":[422,273]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[460,235],"end":[512,235]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,235],"end":[602,273]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"android-full","codePoint":59857},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[598,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[598,191]}]},{"tag":"LineTo","args":[{"point":[640,191]}]},{"tag":"LineTo","args":[{"point":[640,235]}]},{"tag":"LineTo","args":[{"point":[598,235]}]}]},{"start":[384,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[384,191]}]},{"tag":"LineTo","args":[{"point":[426,191]}]},{"tag":"LineTo","args":[{"point":[426,235]}]},{"tag":"LineTo","args":[{"point":[384,235]}]}]},{"start":[718,57],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[732,41],"end":[718,27]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,13],"end":[688,27]}]}]},{"tag":"LineTo","args":[{"point":[624,91]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,63],"end":[512,63]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[450,63],"end":[398,91]}]}]},{"tag":"LineTo","args":[{"point":[334,27]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,13],"end":[304,27]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[288,41],"end":[304,57]}]}]},{"tag":"LineTo","args":[{"point":[360,113]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[316,145],"end":[286,205]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,265],"end":[256,319]}]}]},{"tag":"LineTo","args":[{"point":[768,319]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,189],"end":[662,113]}]}]},{"tag":"LineTo","args":[{"point":[718,57]}]}]},{"start":[829,382],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[829,382]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[810,401],"end":[810,427]}]}]},{"tag":"LineTo","args":[{"point":[810,725]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[810,753],"end":[829,771]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[848,789],"end":[874,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[900,789],"end":[919,771]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,753],"end":[938,725]}]}]},{"tag":"LineTo","args":[{"point":[938,427]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,401],"end":[919,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[900,363],"end":[874,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[848,363],"end":[829,382]}]}]}]},{"start":[105,382],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[105,382]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,401],"end":[86,427]}]}]},{"tag":"LineTo","args":[{"point":[86,725]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,753],"end":[105,771]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[124,789],"end":[150,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[176,789],"end":[195,771]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,753],"end":[214,725]}]}]},{"tag":"LineTo","args":[{"point":[214,427]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,401],"end":[195,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[176,363],"end":[150,363]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[124,363],"end":[105,382]}]}]}]},{"start":[268,819],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[268,819]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[280,831],"end":[298,831]}]}]},{"tag":"LineTo","args":[{"point":[342,831]}]},{"tag":"LineTo","args":[{"point":[342,981]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,1009],"end":[361,1027]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,1045],"end":[406,1045]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[432,1045],"end":[451,1027]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[470,1009],"end":[470,981]}]}]},{"tag":"LineTo","args":[{"point":[470,831]}]},{"tag":"LineTo","args":[{"point":[554,831]}]},{"tag":"LineTo","args":[{"point":[554,981]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,1009],"end":[573,1027]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[592,1045],"end":[618,1045]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[644,1045],"end":[663,1027]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,1009],"end":[682,981]}]}]},{"tag":"LineTo","args":[{"point":[682,831]}]},{"tag":"LineTo","args":[{"point":[726,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[744,831],"end":[756,819]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,807],"end":[768,789]}]}]},{"tag":"LineTo","args":[{"point":[768,363]}]},{"tag":"LineTo","args":[{"point":[256,363]}]},{"tag":"LineTo","args":[{"point":[256,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,807],"end":[268,819]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"autorenew","codePoint":59858},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[738,413],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,473],"end":[768,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,639],"end":[693,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,789],"end":[512,789]}]}]},{"tag":"LineTo","args":[{"point":[512,661]}]},{"tag":"LineTo","args":[{"point":[342,831]}]},{"tag":"LineTo","args":[{"point":[512,1003]}]},{"tag":"LineTo","args":[{"point":[512,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,433],"end":[800,351]}]}]},{"tag":"LineTo","args":[{"point":[738,413]}]}]},{"start":[512,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,235]}]},{"tag":"LineTo","args":[{"point":[512,63]}]},{"tag":"LineTo","args":[{"point":[512,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,633],"end":[224,715]}]}]},{"tag":"LineTo","args":[{"point":[286,653]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,597],"end":[256,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,427],"end":[331,352]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[406,277],"end":[512,277]}]}]},{"tag":"LineTo","args":[{"point":[512,405]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"cached","codePoint":59859},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[331,352],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[331,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[406,277],"end":[512,277]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[578,277],"end":[632,307]}]}]},{"tag":"LineTo","args":[{"point":[694,245]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[612,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[170,533]}]}]},{"tag":"LineTo","args":[{"point":[42,533]}]},{"tag":"LineTo","args":[{"point":[214,703]}]},{"tag":"LineTo","args":[{"point":[384,533]}]},{"tag":"LineTo","args":[{"point":[256,533]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,427],"end":[331,352]}]}]}]},{"start":[640,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,533]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,639],"end":[693,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,789],"end":[512,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[448,789],"end":[392,759]}]}]},{"tag":"LineTo","args":[{"point":[330,821]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[412,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[854,533]}]}]},{"tag":"LineTo","args":[{"point":[982,533]}]},{"tag":"LineTo","args":[{"point":[810,363]}]},{"tag":"LineTo","args":[{"point":[640,533]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"check_circle","codePoint":59860},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[214,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[274,473]}]},{"tag":"LineTo","args":[{"point":[426,625]}]},{"tag":"LineTo","args":[{"point":[750,301]}]},{"tag":"LineTo","args":[{"point":[810,363]}]},{"tag":"LineTo","args":[{"point":[426,747]}]},{"tag":"LineTo","args":[{"point":[214,533]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"code","codePoint":59861},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[682,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[938,533]}]},{"tag":"LineTo","args":[{"point":[682,277]}]},{"tag":"LineTo","args":[{"point":[622,337]}]},{"tag":"LineTo","args":[{"point":[820,533]}]},{"tag":"LineTo","args":[{"point":[622,729]}]},{"tag":"LineTo","args":[{"point":[682,789]}]}]},{"start":[204,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[402,337]}]},{"tag":"LineTo","args":[{"point":[342,277]}]},{"tag":"LineTo","args":[{"point":[86,533]}]},{"tag":"LineTo","args":[{"point":[342,789]}]},{"tag":"LineTo","args":[{"point":[402,729]}]},{"tag":"LineTo","args":[{"point":[204,533]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"delete","codePoint":59862},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[662,191],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[618,149]}]},{"tag":"LineTo","args":[{"point":[406,149]}]},{"tag":"LineTo","args":[{"point":[362,191]}]},{"tag":"LineTo","args":[{"point":[214,191]}]},{"tag":"LineTo","args":[{"point":[214,277]}]},{"tag":"LineTo","args":[{"point":[810,277]}]},{"tag":"LineTo","args":[{"point":[810,191]}]},{"tag":"LineTo","args":[{"point":[662,191]}]}]},{"start":[282,891],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[282,891]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[308,917],"end":[342,917]}]}]},{"tag":"LineTo","args":[{"point":[682,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[716,917],"end":[742,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,865],"end":[768,831]}]}]},{"tag":"LineTo","args":[{"point":[768,319]}]},{"tag":"LineTo","args":[{"point":[256,319]}]},{"tag":"LineTo","args":[{"point":[256,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,865],"end":[282,891]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"exit_to_app","codePoint":59863},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[214,149],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,149],"end":[153,174]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,199],"end":[128,235]}]}]},{"tag":"LineTo","args":[{"point":[128,405]}]},{"tag":"LineTo","args":[{"point":[214,405]}]},{"tag":"LineTo","args":[{"point":[214,235]}]},{"tag":"LineTo","args":[{"point":[810,235]}]},{"tag":"LineTo","args":[{"point":[810,831]}]},{"tag":"LineTo","args":[{"point":[214,831]}]},{"tag":"LineTo","args":[{"point":[214,661]}]},{"tag":"LineTo","args":[{"point":[128,661]}]},{"tag":"LineTo","args":[{"point":[128,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,867],"end":[153,892]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,917],"end":[214,917]}]}]},{"tag":"LineTo","args":[{"point":[810,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,917],"end":[870,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,865],"end":[896,831]}]}]},{"tag":"LineTo","args":[{"point":[896,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,201],"end":[870,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,149],"end":[810,149]}]}]},{"tag":"LineTo","args":[{"point":[214,149]}]}]},{"start":[490,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[704,533]}]},{"tag":"LineTo","args":[{"point":[490,319]}]},{"tag":"LineTo","args":[{"point":[430,379]}]},{"tag":"LineTo","args":[{"point":[540,491]}]},{"tag":"LineTo","args":[{"point":[128,491]}]},{"tag":"LineTo","args":[{"point":[128,575]}]},{"tag":"LineTo","args":[{"point":[540,575]}]},{"tag":"LineTo","args":[{"point":[430,687]}]},{"tag":"LineTo","args":[{"point":[490,747]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"extension","codePoint":59864},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[810,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[810,319]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[810,285],"end":[785,260]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[760,235],"end":[726,235]}]}]},{"tag":"LineTo","args":[{"point":[554,235]}]},{"tag":"LineTo","args":[{"point":[554,171]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,127],"end":[523,95]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[492,63],"end":[448,63]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[404,63],"end":[373,95]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,127],"end":[342,171]}]}]},{"tag":"LineTo","args":[{"point":[342,235]}]},{"tag":"LineTo","args":[{"point":[170,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,235],"end":[111,260]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,285],"end":[86,319]}]}]},{"tag":"LineTo","args":[{"point":[86,481]}]},{"tag":"LineTo","args":[{"point":[150,481]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,481],"end":[231,515]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[264,549],"end":[264,597]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[264,645],"end":[231,679]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,713],"end":[150,713]}]}]},{"tag":"LineTo","args":[{"point":[86,713]}]},{"tag":"LineTo","args":[{"point":[86,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,909],"end":[111,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,959],"end":[170,959]}]}]},{"tag":"LineTo","args":[{"point":[332,959]}]},{"tag":"LineTo","args":[{"point":[332,895]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[332,847],"end":[366,814]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[400,781],"end":[448,781]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[496,781],"end":[530,814]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,847],"end":[564,895]}]}]},{"tag":"LineTo","args":[{"point":[564,959]}]},{"tag":"LineTo","args":[{"point":[726,959]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[760,959],"end":[785,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[810,909],"end":[810,875]}]}]},{"tag":"LineTo","args":[{"point":[810,703]}]},{"tag":"LineTo","args":[{"point":[874,703]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[918,703],"end":[950,672]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[982,641],"end":[982,597]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[982,553],"end":[950,522]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[918,491],"end":[874,491]}]}]},{"tag":"LineTo","args":[{"point":[810,491]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"favorite","codePoint":59865},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[574,877],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[712,753],"end":[773,691]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[834,629],"end":[886,545]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,461],"end":[938,383]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,285],"end":[871,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[804,149],"end":[704,149]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[588,149],"end":[512,239]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,149],"end":[320,149]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[220,149],"end":[153,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,285],"end":[86,383]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,441],"end":[108,496]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[130,551],"end":[189,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[248,687],"end":[296,733]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[344,779],"end":[450,875]}]}]},{"tag":"LineTo","args":[{"point":[512,931]}]},{"tag":"LineTo","args":[{"point":[574,877]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"favorite_outline","codePoint":59866},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,817],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[508,813]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[412,727],"end":[366,683]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[320,639],"end":[266,579]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[212,519],"end":[191,473]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,427],"end":[170,383]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,319],"end":[213,277]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,235],"end":[320,235]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[370,235],"end":[413,263]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[456,291],"end":[472,335]}]}]},{"tag":"LineTo","args":[{"point":[552,335]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[568,291],"end":[611,263]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[654,235],"end":[704,235]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,235],"end":[811,277]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,319],"end":[854,383]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,427],"end":[833,473]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[812,519],"end":[758,579]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,639],"end":[658,683]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[612,727],"end":[516,813]}]}]},{"tag":"LineTo","args":[{"point":[512,817]}]}]},{"start":[512,239],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,239]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,149],"end":[320,149]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[220,149],"end":[153,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,285],"end":[86,383]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,461],"end":[138,545]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[190,629],"end":[251,691]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[312,753],"end":[450,877]}]}]},{"tag":"LineTo","args":[{"point":[512,931]}]},{"tag":"LineTo","args":[{"point":[574,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,779],"end":[728,733]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[776,687],"end":[835,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[894,551],"end":[916,496]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,441],"end":[938,383]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,285],"end":[871,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[804,149],"end":[704,149]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[588,149],"end":[512,239]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"help","codePoint":59867},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[604,541],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,595],"end":[554,661]}]}]},{"tag":"LineTo","args":[{"point":[470,661]}]},{"tag":"LineTo","args":[{"point":[470,639]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[470,573],"end":[520,519]}]}]},{"tag":"LineTo","args":[{"point":[572,465]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,439],"end":[598,405]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,371],"end":[572,345]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,319],"end":[512,319]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,319],"end":[452,345]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,371],"end":[426,405]}]}]},{"tag":"LineTo","args":[{"point":[342,405]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,335],"end":[392,285]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[442,235],"end":[512,235]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,235],"end":[632,285]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,335],"end":[682,405]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,461],"end":[642,501]}]}]},{"tag":"LineTo","args":[{"point":[604,541]}]}]},{"start":[470,831],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,747]}]},{"tag":"LineTo","args":[{"point":[554,747]}]},{"tag":"LineTo","args":[{"point":[554,831]}]},{"tag":"LineTo","args":[{"point":[470,831]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"highlight_remove","codePoint":59868},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]},{"start":[512,473],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[402,363]}]},{"tag":"LineTo","args":[{"point":[342,423]}]},{"tag":"LineTo","args":[{"point":[452,533]}]},{"tag":"LineTo","args":[{"point":[342,643]}]},{"tag":"LineTo","args":[{"point":[402,703]}]},{"tag":"LineTo","args":[{"point":[512,593]}]},{"tag":"LineTo","args":[{"point":[622,703]}]},{"tag":"LineTo","args":[{"point":[682,643]}]},{"tag":"LineTo","args":[{"point":[572,533]}]},{"tag":"LineTo","args":[{"point":[682,423]}]},{"tag":"LineTo","args":[{"point":[622,363]}]},{"tag":"LineTo","args":[{"point":[512,473]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"historyrestore","codePoint":59869},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[694,685]}]},{"tag":"LineTo","args":[{"point":[726,633]}]},{"tag":"LineTo","args":[{"point":[576,543]}]},{"tag":"LineTo","args":[{"point":[576,363]}]},{"tag":"LineTo","args":[{"point":[512,363]}]},{"tag":"LineTo","args":[{"point":[512,575]}]}]},{"start":[283,261],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[283,261]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,373],"end":[170,533]}]}]},{"tag":"LineTo","args":[{"point":[42,533]}]},{"tag":"LineTo","args":[{"point":[208,699]}]},{"tag":"LineTo","args":[{"point":[212,705]}]},{"tag":"LineTo","args":[{"point":[384,533]}]},{"tag":"LineTo","args":[{"point":[256,533]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,409],"end":[343,322]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[430,235],"end":[554,235]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[678,235],"end":[766,322]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,409],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,657],"end":[766,744]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[678,831],"end":[554,831]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[432,831],"end":[344,743]}]}]},{"tag":"LineTo","args":[{"point":[284,805]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[330,851],"end":[409,884]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[488,917],"end":[554,917]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[712,917],"end":[825,805]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,693],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,373],"end":[825,261]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[712,149],"end":[554,149]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[396,149],"end":[283,261]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"home","codePoint":59870},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[426,619],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[598,619]}]},{"tag":"LineTo","args":[{"point":[598,875]}]},{"tag":"LineTo","args":[{"point":[810,875]}]},{"tag":"LineTo","args":[{"point":[810,533]}]},{"tag":"LineTo","args":[{"point":[938,533]}]},{"tag":"LineTo","args":[{"point":[512,149]}]},{"tag":"LineTo","args":[{"point":[86,533]}]},{"tag":"LineTo","args":[{"point":[214,533]}]},{"tag":"LineTo","args":[{"point":[214,875]}]},{"tag":"LineTo","args":[{"point":[426,875]}]},{"tag":"LineTo","args":[{"point":[426,619]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"httpslock","codePoint":59871},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[380,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[380,277]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,223],"end":[419,184]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[458,145],"end":[512,145]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[566,145],"end":[605,184]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[644,223],"end":[644,277]}]}]},{"tag":"LineTo","args":[{"point":[644,363]}]},{"tag":"LineTo","args":[{"point":[380,363]}]}]},{"start":[452,721],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[452,721]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,695],"end":[426,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,627],"end":[452,601]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,575],"end":[512,575]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,575],"end":[572,601]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,627],"end":[598,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,695],"end":[572,721]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,747],"end":[512,747]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,747],"end":[452,721]}]}]}]},{"start":[726,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[726,277]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,189],"end":[663,126]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[600,63],"end":[512,63]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[424,63],"end":[361,126]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,189],"end":[298,277]}]}]},{"tag":"LineTo","args":[{"point":[298,363]}]},{"tag":"LineTo","args":[{"point":[256,363]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,363],"end":[196,388]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,413],"end":[170,447]}]}]},{"tag":"LineTo","args":[{"point":[170,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,909],"end":[196,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,959],"end":[256,959]}]}]},{"tag":"LineTo","args":[{"point":[768,959]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[802,959],"end":[828,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,909],"end":[854,875]}]}]},{"tag":"LineTo","args":[{"point":[854,447]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,413],"end":[828,388]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[802,363],"end":[768,363]}]}]},{"tag":"LineTo","args":[{"point":[726,363]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"info","codePoint":59872},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[470,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,319]}]},{"tag":"LineTo","args":[{"point":[554,319]}]},{"tag":"LineTo","args":[{"point":[554,405]}]},{"tag":"LineTo","args":[{"point":[470,405]}]}]},{"start":[470,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,491]}]},{"tag":"LineTo","args":[{"point":[554,491]}]},{"tag":"LineTo","args":[{"point":[554,747]}]},{"tag":"LineTo","args":[{"point":[470,747]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"info_outline","codePoint":59873},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[554,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,319]}]},{"tag":"LineTo","args":[{"point":[470,319]}]},{"tag":"LineTo","args":[{"point":[470,405]}]},{"tag":"LineTo","args":[{"point":[554,405]}]}]},{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]},{"start":[554,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,491]}]},{"tag":"LineTo","args":[{"point":[470,491]}]},{"tag":"LineTo","args":[{"point":[470,747]}]},{"tag":"LineTo","args":[{"point":[554,747]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"input","codePoint":59874},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[640,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,363]}]},{"tag":"LineTo","args":[{"point":[470,491]}]},{"tag":"LineTo","args":[{"point":[42,491]}]},{"tag":"LineTo","args":[{"point":[42,575]}]},{"tag":"LineTo","args":[{"point":[470,575]}]},{"tag":"LineTo","args":[{"point":[470,703]}]},{"tag":"LineTo","args":[{"point":[640,533]}]}]},{"start":[128,149],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[94,149],"end":[68,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[42,201],"end":[42,235]}]}]},{"tag":"LineTo","args":[{"point":[42,405]}]},{"tag":"LineTo","args":[{"point":[128,405]}]},{"tag":"LineTo","args":[{"point":[128,233]}]},{"tag":"LineTo","args":[{"point":[896,233]}]},{"tag":"LineTo","args":[{"point":[896,833]}]},{"tag":"LineTo","args":[{"point":[128,833]}]},{"tag":"LineTo","args":[{"point":[128,661]}]},{"tag":"LineTo","args":[{"point":[42,661]}]},{"tag":"LineTo","args":[{"point":[42,833]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[42,867],"end":[68,892]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[94,917],"end":[128,917]}]}]},{"tag":"LineTo","args":[{"point":[896,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[930,917],"end":[956,892]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[982,867],"end":[982,833]}]}]},{"tag":"LineTo","args":[{"point":[982,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[982,199],"end":[957,174]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[932,149],"end":[896,149]}]}]},{"tag":"LineTo","args":[{"point":[128,149]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"label","codePoint":59875},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[682,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,235]}]},{"tag":"LineTo","args":[{"point":[214,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,235],"end":[154,260]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,285],"end":[128,319]}]}]},{"tag":"LineTo","args":[{"point":[128,747]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,781],"end":[154,806]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,831],"end":[214,831]}]}]},{"tag":"LineTo","args":[{"point":[682,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,831],"end":[752,795]}]}]},{"tag":"LineTo","args":[{"point":[938,533]}]},{"tag":"LineTo","args":[{"point":[752,271]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,235],"end":[682,235]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"label_outline","codePoint":59876},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[214,747],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[214,319]}]},{"tag":"LineTo","args":[{"point":[682,319]}]},{"tag":"LineTo","args":[{"point":[834,533]}]},{"tag":"LineTo","args":[{"point":[682,747]}]},{"tag":"LineTo","args":[{"point":[214,747]}]}]},{"start":[682,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,235]}]},{"tag":"LineTo","args":[{"point":[214,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,235],"end":[154,260]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,285],"end":[128,319]}]}]},{"tag":"LineTo","args":[{"point":[128,747]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,781],"end":[154,806]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,831],"end":[214,831]}]}]},{"tag":"LineTo","args":[{"point":[682,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,831],"end":[752,795]}]}]},{"tag":"LineTo","args":[{"point":[938,533]}]},{"tag":"LineTo","args":[{"point":[752,271]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,235],"end":[682,235]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"perm_media","codePoint":59877},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[490,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[640,597]}]},{"tag":"LineTo","args":[{"point":[746,469]}]},{"tag":"LineTo","args":[{"point":[896,661]}]},{"tag":"LineTo","args":[{"point":[298,661]}]},{"tag":"LineTo","args":[{"point":[490,405]}]}]},{"start":[598,191],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,107]}]},{"tag":"LineTo","args":[{"point":[256,107]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,107],"end":[197,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[172,157],"end":[172,191]}]}]},{"tag":"LineTo","args":[{"point":[170,703]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,737],"end":[196,763]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,789],"end":[256,789]}]}]},{"tag":"LineTo","args":[{"point":[938,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[972,789],"end":[998,763]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,737],"end":[1024,703]}]}]},{"tag":"LineTo","args":[{"point":[1024,277]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,243],"end":[998,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[972,191],"end":[938,191]}]}]},{"tag":"LineTo","args":[{"point":[598,191]}]}]},{"start":[0,277],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[0,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,909],"end":[26,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[52,959],"end":[86,959]}]}]},{"tag":"LineTo","args":[{"point":[854,959]}]},{"tag":"LineTo","args":[{"point":[854,875]}]},{"tag":"LineTo","args":[{"point":[86,875]}]},{"tag":"LineTo","args":[{"point":[86,277]}]},{"tag":"LineTo","args":[{"point":[0,277]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"power_settings_new","codePoint":59878},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[700,303],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[746,339],"end":[778,407]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[810,475],"end":[810,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[810,657],"end":[723,744]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,831],"end":[512,831]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,831],"end":[301,744]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,657],"end":[214,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,475],"end":[246,407]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[278,339],"end":[324,301]}]}]},{"tag":"LineTo","args":[{"point":[264,241]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[208,289],"end":[168,375]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,461],"end":[128,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,693],"end":[240,805]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[352,917],"end":[512,917]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,917],"end":[784,805]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,693],"end":[896,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,357],"end":[760,241]}]}]},{"tag":"LineTo","args":[{"point":[700,303]}]}]},{"start":[470,149],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,575]}]},{"tag":"LineTo","args":[{"point":[554,575]}]},{"tag":"LineTo","args":[{"point":[554,149]}]},{"tag":"LineTo","args":[{"point":[470,149]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"search","codePoint":59879},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[270,563],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[270,563]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,507],"end":[214,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,347],"end":[270,291]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[326,235],"end":[406,235]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[486,235],"end":[542,291]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,347],"end":[598,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,507],"end":[542,563]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[486,619],"end":[406,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[326,619],"end":[270,563]}]}]}]},{"start":[628,619],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[616,607]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[642,575],"end":[662,522]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,469],"end":[682,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,311],"end":[602,230]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[522,149],"end":[406,149]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,149],"end":[209,230]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,311],"end":[128,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,543],"end":[209,623]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,703],"end":[406,703]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[510,703],"end":[586,637]}]}]},{"tag":"LineTo","args":[{"point":[598,649]}]},{"tag":"LineTo","args":[{"point":[598,683]}]},{"tag":"LineTo","args":[{"point":[810,895]}]},{"tag":"LineTo","args":[{"point":[874,831]}]},{"tag":"LineTo","args":[{"point":[662,619]}]},{"tag":"LineTo","args":[{"point":[628,619]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"settings","codePoint":59880},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[406,639],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[406,639]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[362,595],"end":[362,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[362,471],"end":[406,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[450,383],"end":[512,383]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[574,383],"end":[618,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[662,471],"end":[662,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[662,595],"end":[618,639]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[574,683],"end":[512,683]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[450,683],"end":[406,639]}]}]}]},{"start":[832,533],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[832,533]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,505],"end":[830,491]}]}]},{"tag":"LineTo","args":[{"point":[920,421]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[934,411],"end":[924,393]}]}]},{"tag":"LineTo","args":[{"point":[838,245]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[830,231],"end":[812,237]}]}]},{"tag":"LineTo","args":[{"point":[706,279]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,253],"end":[634,237]}]}]},{"tag":"LineTo","args":[{"point":[618,125]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[614,107],"end":[598,107]}]}]},{"tag":"LineTo","args":[{"point":[426,107]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[410,107],"end":[406,125]}]}]},{"tag":"LineTo","args":[{"point":[390,237]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[360,249],"end":[318,279]}]}]},{"tag":"LineTo","args":[{"point":[212,237]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[194,231],"end":[186,245]}]}]},{"tag":"LineTo","args":[{"point":[100,393]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[90,411],"end":[104,421]}]}]},{"tag":"LineTo","args":[{"point":[194,491]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,505],"end":[192,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[192,561],"end":[194,575]}]}]},{"tag":"LineTo","args":[{"point":[104,645]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[90,655],"end":[100,673]}]}]},{"tag":"LineTo","args":[{"point":[186,821]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[194,835],"end":[212,829]}]}]},{"tag":"LineTo","args":[{"point":[318,787]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[352,813],"end":[390,829]}]}]},{"tag":"LineTo","args":[{"point":[406,941]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[410,959],"end":[426,959]}]}]},{"tag":"LineTo","args":[{"point":[598,959]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[614,959],"end":[618,941]}]}]},{"tag":"LineTo","args":[{"point":[634,829]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[664,817],"end":[706,787]}]}]},{"tag":"LineTo","args":[{"point":[812,829]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[830,835],"end":[838,821]}]}]},{"tag":"LineTo","args":[{"point":[924,673]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[934,655],"end":[920,645]}]}]},{"tag":"LineTo","args":[{"point":[830,575]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,561],"end":[832,533]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"settings_applications","codePoint":59881},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[734,563],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[734,563]}]},{"tag":"LineTo","args":[{"point":[798,611]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[808,619],"end":[800,631]}]}]},{"tag":"LineTo","args":[{"point":[740,733]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[732,745],"end":[722,741]}]}]},{"tag":"LineTo","args":[{"point":[648,711]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[630,725],"end":[598,739]}]}]},{"tag":"LineTo","args":[{"point":[586,819]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[584,831],"end":[572,831]}]}]},{"tag":"LineTo","args":[{"point":[452,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[442,831],"end":[438,819]}]}]},{"tag":"LineTo","args":[{"point":[426,741]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[402,731],"end":[376,711]}]}]},{"tag":"LineTo","args":[{"point":[302,741]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,745],"end":[284,735]}]}]},{"tag":"LineTo","args":[{"point":[224,631]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,629],"end":[222,623]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,613],"end":[226,611]}]}]},{"tag":"LineTo","args":[{"point":[290,563]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[288,553],"end":[288,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[288,513],"end":[290,503]}]}]},{"tag":"LineTo","args":[{"point":[226,455]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,453],"end":[222,443]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[222,437],"end":[224,435]}]}]},{"tag":"LineTo","args":[{"point":[284,333]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[292,321],"end":[302,325]}]}]},{"tag":"LineTo","args":[{"point":[376,355]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[394,341],"end":[426,327]}]}]},{"tag":"LineTo","args":[{"point":[438,247]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[440,235],"end":[452,235]}]}]},{"tag":"LineTo","args":[{"point":[572,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,235],"end":[586,247]}]}]},{"tag":"LineTo","args":[{"point":[598,325]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[622,335],"end":[648,355]}]}]},{"tag":"LineTo","args":[{"point":[722,325]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[734,321],"end":[740,331]}]}]},{"tag":"LineTo","args":[{"point":[800,435]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[808,447],"end":[798,455]}]}]},{"tag":"LineTo","args":[{"point":[734,503]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,513],"end":[736,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,553],"end":[734,563]}]}]}]},{"start":[214,149],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,149],"end":[153,174]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,199],"end":[128,235]}]}]},{"tag":"LineTo","args":[{"point":[128,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,867],"end":[153,892]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,917],"end":[214,917]}]}]},{"tag":"LineTo","args":[{"point":[810,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[846,917],"end":[871,892]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,867],"end":[896,831]}]}]},{"tag":"LineTo","args":[{"point":[896,235]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,199],"end":[871,174]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[846,149],"end":[810,149]}]}]},{"tag":"LineTo","args":[{"point":[214,149]}]}]},{"start":[452,473],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[452,473]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,499],"end":[426,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,567],"end":[452,593]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,619],"end":[512,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,619],"end":[572,593]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,567],"end":[598,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[598,499],"end":[572,473]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,447],"end":[512,447]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,447],"end":[452,473]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"shop","codePoint":59882},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[384,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[704,575]}]},{"tag":"LineTo","args":[{"point":[384,789]}]},{"tag":"LineTo","args":[{"point":[384,405]}]}]},{"start":[598,191],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[598,277]}]},{"tag":"LineTo","args":[{"point":[426,277]}]},{"tag":"LineTo","args":[{"point":[426,191]}]},{"tag":"LineTo","args":[{"point":[598,191]}]}]},{"start":[682,191],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,155],"end":[658,131]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[634,107],"end":[598,107]}]}]},{"tag":"LineTo","args":[{"point":[426,107]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[390,107],"end":[366,131]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,155],"end":[342,191]}]}]},{"tag":"LineTo","args":[{"point":[342,277]}]},{"tag":"LineTo","args":[{"point":[86,277]}]},{"tag":"LineTo","args":[{"point":[86,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,867],"end":[110,892]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[134,917],"end":[170,917]}]}]},{"tag":"LineTo","args":[{"point":[854,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[890,917],"end":[914,892]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,867],"end":[938,831]}]}]},{"tag":"LineTo","args":[{"point":[938,277]}]},{"tag":"LineTo","args":[{"point":[682,277]}]},{"tag":"LineTo","args":[{"point":[682,191]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"spellcheck","codePoint":59883},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[576,861],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[420,703]}]},{"tag":"LineTo","args":[{"point":[360,763]}]},{"tag":"LineTo","args":[{"point":[576,981]}]},{"tag":"LineTo","args":[{"point":[982,575]}]},{"tag":"LineTo","args":[{"point":[922,515]}]},{"tag":"LineTo","args":[{"point":[576,861]}]}]},{"start":[362,255],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[450,491]}]},{"tag":"LineTo","args":[{"point":[274,491]}]},{"tag":"LineTo","args":[{"point":[362,255]}]}]},{"start":[620,703],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[402,149]}]},{"tag":"LineTo","args":[{"point":[322,149]}]},{"tag":"LineTo","args":[{"point":[104,703]}]},{"tag":"LineTo","args":[{"point":[194,703]}]},{"tag":"LineTo","args":[{"point":[242,575]}]},{"tag":"LineTo","args":[{"point":[482,575]}]},{"tag":"LineTo","args":[{"point":[532,703]}]},{"tag":"LineTo","args":[{"point":[620,703]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"stars","codePoint":59884},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,681],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[332,789]}]},{"tag":"LineTo","args":[{"point":[380,583]}]},{"tag":"LineTo","args":[{"point":[220,445]}]},{"tag":"LineTo","args":[{"point":[430,429]}]},{"tag":"LineTo","args":[{"point":[512,235]}]},{"tag":"LineTo","args":[{"point":[594,427]}]},{"tag":"LineTo","args":[{"point":[804,445]}]},{"tag":"LineTo","args":[{"point":[644,583]}]},{"tag":"LineTo","args":[{"point":[692,789]}]},{"tag":"LineTo","args":[{"point":[512,681]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"translate","codePoint":59885},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[746,561],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[816,747]}]},{"tag":"LineTo","args":[{"point":[678,747]}]},{"tag":"LineTo","args":[{"point":[746,561]}]}]},{"start":[704,447],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,959]}]},{"tag":"LineTo","args":[{"point":[598,959]}]},{"tag":"LineTo","args":[{"point":[646,831]}]},{"tag":"LineTo","args":[{"point":[848,831]}]},{"tag":"LineTo","args":[{"point":[896,959]}]},{"tag":"LineTo","args":[{"point":[982,959]}]},{"tag":"LineTo","args":[{"point":[790,447]}]},{"tag":"LineTo","args":[{"point":[704,447]}]}]},{"start":[440,557],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[442,555]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[488,503],"end":[534,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[580,341],"end":[600,277]}]}]},{"tag":"LineTo","args":[{"point":[726,277]}]},{"tag":"LineTo","args":[{"point":[726,191]}]},{"tag":"LineTo","args":[{"point":[426,191]}]},{"tag":"LineTo","args":[{"point":[426,107]}]},{"tag":"LineTo","args":[{"point":[342,107]}]},{"tag":"LineTo","args":[{"point":[342,191]}]},{"tag":"LineTo","args":[{"point":[42,191]}]},{"tag":"LineTo","args":[{"point":[42,277]}]},{"tag":"LineTo","args":[{"point":[520,277]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[476,403],"end":[384,505]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[328,443],"end":[286,363]}]}]},{"tag":"LineTo","args":[{"point":[200,363]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[248,469],"end":[328,557]}]}]},{"tag":"LineTo","args":[{"point":[110,771]}]},{"tag":"LineTo","args":[{"point":[170,831]}]},{"tag":"LineTo","args":[{"point":[384,619]}]},{"tag":"LineTo","args":[{"point":[516,751]}]},{"tag":"LineTo","args":[{"point":[550,663]}]},{"tag":"LineTo","args":[{"point":[440,557]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"visibility_off","codePoint":59886},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[640,541],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[640,533]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,481],"end":[602,443]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,405],"end":[512,405]}]}]},{"tag":"LineTo","args":[{"point":[506,405]}]},{"tag":"LineTo","args":[{"point":[640,541]}]}]},{"start":[388,505],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,521],"end":[384,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,585],"end":[422,623]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[460,661],"end":[512,661]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[524,661],"end":[540,657]}]}]},{"tag":"LineTo","args":[{"point":[606,723]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[558,747],"end":[512,747]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[424,747],"end":[361,684]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,621],"end":[298,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[298,487],"end":[322,439]}]}]},{"tag":"LineTo","args":[{"point":[388,505]}]}]},{"start":[135,253],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[135,253]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,297],"end":[202,321]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[158,355],"end":[111,418]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[64,481],"end":[42,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[98,677],"end":[226,765]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[354,853],"end":[512,853]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[612,853],"end":[698,817]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,845],"end":[779,897]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,949],"end":[842,959]}]}]},{"tag":"LineTo","args":[{"point":[896,905]}]},{"tag":"LineTo","args":[{"point":[140,149]}]},{"tag":"LineTo","args":[{"point":[86,203]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[92,209],"end":[135,253]}]}]}]},{"start":[663,382],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[663,382]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,445],"end":[726,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,573],"end":[710,611]}]}]},{"tag":"LineTo","args":[{"point":[834,735]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[932,651],"end":[980,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[924,389],"end":[797,301]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[670,213],"end":[512,213]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[420,213],"end":[342,243]}]}]},{"tag":"LineTo","args":[{"point":[434,335]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[472,319],"end":[512,319]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[600,319],"end":[663,382]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"update","codePoint":59887},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[470,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,575]}]},{"tag":"LineTo","args":[{"point":[652,685]}]},{"tag":"LineTo","args":[{"point":[682,633]}]},{"tag":"LineTo","args":[{"point":[534,543]}]},{"tag":"LineTo","args":[{"point":[534,363]}]},{"tag":"LineTo","args":[{"point":[470,363]}]}]},{"start":[896,149],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[780,269]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[734,223],"end":[655,190]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,157],"end":[510,157]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[444,157],"end":[365,190]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[286,223],"end":[240,269]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,381],"end":[128,538]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,695],"end":[240,805]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[352,917],"end":[512,917]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,917],"end":[784,805]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,695],"end":[896,537]}]}]},{"tag":"LineTo","args":[{"point":[810,537]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[810,659],"end":[724,745]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,781],"end":[625,807]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[562,833],"end":[512,833]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[462,833],"end":[400,807]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[338,781],"end":[302,745]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[266,709],"end":[240,648]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,587],"end":[214,537]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,487],"end":[240,426]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[266,365],"end":[302,329]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[390,243],"end":[513,244]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[636,245],"end":[724,333]}]}]},{"tag":"LineTo","args":[{"point":[606,453]}]},{"tag":"LineTo","args":[{"point":[896,453]}]},{"tag":"LineTo","args":[{"point":[896,149]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"g_translate","codePoint":59888},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[905,926],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[905,926]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[892,939],"end":[874,939]}]}]},{"tag":"LineTo","args":[{"point":[598,939]}]},{"tag":"LineTo","args":[{"point":[682,831]}]},{"tag":"LineTo","args":[{"point":[638,699]}]},{"tag":"LineTo","args":[{"point":[770,831]}]},{"tag":"LineTo","args":[{"point":[810,793]}]},{"tag":"LineTo","args":[{"point":[670,653]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[742,573],"end":[772,473]}]}]},{"tag":"LineTo","args":[{"point":[854,473]}]},{"tag":"LineTo","args":[{"point":[854,417]}]},{"tag":"LineTo","args":[{"point":[660,417]}]},{"tag":"LineTo","args":[{"point":[660,363]}]},{"tag":"LineTo","args":[{"point":[606,363]}]},{"tag":"LineTo","args":[{"point":[606,417]}]},{"tag":"LineTo","args":[{"point":[544,417]}]},{"tag":"LineTo","args":[{"point":[488,255]}]},{"tag":"LineTo","args":[{"point":[874,255]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[892,255],"end":[905,268]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[918,281],"end":[918,299]}]}]},{"tag":"LineTo","args":[{"point":[918,895]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[918,913],"end":[905,926]}]}]}]},{"start":[720,473],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[694,553],"end":[632,621]}]}]},{"tag":"LineTo","args":[{"point":[596,573]}]},{"tag":"LineTo","args":[{"point":[562,473]}]},{"tag":"LineTo","args":[{"point":[720,473]}]}]},{"start":[148,641],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[148,641]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,579],"end":[86,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,403],"end":[148,340]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[210,277],"end":[298,277]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,277],"end":[442,333]}]}]},{"tag":"LineTo","args":[{"point":[386,387]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[352,353],"end":[298,353]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[242,353],"end":[203,393]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[164,433],"end":[164,491]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[164,547],"end":[203,587]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[242,627],"end":[298,627]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[356,627],"end":[388,595]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[420,563],"end":[424,525]}]}]},{"tag":"LineTo","args":[{"point":[298,525]}]},{"tag":"LineTo","args":[{"point":[298,451]}]},{"tag":"LineTo","args":[{"point":[498,451]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[504,493],"end":[504,495]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[504,587],"end":[447,645]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[390,703],"end":[298,703]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[210,703],"end":[148,641]}]}]}]},{"start":[470,191],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,63]}]},{"tag":"LineTo","args":[{"point":[128,63]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[94,63],"end":[68,89]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[42,115],"end":[42,149]}]}]},{"tag":"LineTo","args":[{"point":[42,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[42,823],"end":[68,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[94,875],"end":[128,875]}]}]},{"tag":"LineTo","args":[{"point":[470,875]}]},{"tag":"LineTo","args":[{"point":[512,1003]}]},{"tag":"LineTo","args":[{"point":[896,1003]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[930,1003],"end":[956,977]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[982,951],"end":[982,917]}]}]},{"tag":"LineTo","args":[{"point":[982,277]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[982,243],"end":[956,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[930,191],"end":[896,191]}]}]},{"tag":"LineTo","args":[{"point":[470,191]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"check_circle_outline","codePoint":59889},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[271,774],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[271,774]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,673],"end":[170,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,393],"end":[271,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,191],"end":[512,191]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,191],"end":[753,292]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,393],"end":[854,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,673],"end":[753,774]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,875],"end":[512,875]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[372,875],"end":[271,774]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]},{"start":[426,625],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[274,473]}]},{"tag":"LineTo","args":[{"point":[214,533]}]},{"tag":"LineTo","args":[{"point":[426,747]}]},{"tag":"LineTo","args":[{"point":[768,405]}]},{"tag":"LineTo","args":[{"point":[708,345]}]},{"tag":"LineTo","args":[{"point":[426,625]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"delete_outline","codePoint":59890},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[618,149],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[406,149]}]},{"tag":"LineTo","args":[{"point":[362,191]}]},{"tag":"LineTo","args":[{"point":[214,191]}]},{"tag":"LineTo","args":[{"point":[214,277]}]},{"tag":"LineTo","args":[{"point":[810,277]}]},{"tag":"LineTo","args":[{"point":[810,191]}]},{"tag":"LineTo","args":[{"point":[662,191]}]},{"tag":"LineTo","args":[{"point":[618,149]}]}]},{"start":[682,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,831]}]},{"tag":"LineTo","args":[{"point":[342,831]}]},{"tag":"LineTo","args":[{"point":[342,405]}]},{"tag":"LineTo","args":[{"point":[682,405]}]}]},{"start":[282,891],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[282,891]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[308,917],"end":[342,917]}]}]},{"tag":"LineTo","args":[{"point":[682,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[716,917],"end":[742,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,865],"end":[768,831]}]}]},{"tag":"LineTo","args":[{"point":[768,319]}]},{"tag":"LineTo","args":[{"point":[256,319]}]},{"tag":"LineTo","args":[{"point":[256,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,865],"end":[282,891]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"drive_folder_upload","codePoint":59891},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[402,637],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,569]}]},{"tag":"LineTo","args":[{"point":[470,747]}]},{"tag":"LineTo","args":[{"point":[554,747]}]},{"tag":"LineTo","args":[{"point":[554,569]}]},{"tag":"LineTo","args":[{"point":[622,637]}]},{"tag":"LineTo","args":[{"point":[682,577]}]},{"tag":"LineTo","args":[{"point":[512,405]}]},{"tag":"LineTo","args":[{"point":[342,577]}]},{"tag":"LineTo","args":[{"point":[402,637]}]}]},{"start":[170,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[170,363]}]},{"tag":"LineTo","args":[{"point":[854,363]}]},{"tag":"LineTo","args":[{"point":[854,789]}]},{"tag":"LineTo","args":[{"point":[170,789]}]}]},{"start":[512,277],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,191]}]},{"tag":"LineTo","args":[{"point":[170,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,191],"end":[111,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,243],"end":[86,277]}]}]},{"tag":"LineTo","args":[{"point":[86,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,823],"end":[111,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,875],"end":[170,875]}]}]},{"tag":"LineTo","args":[{"point":[854,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,875],"end":[913,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,823],"end":[938,789]}]}]},{"tag":"LineTo","args":[{"point":[938,363]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,329],"end":[913,303]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,277],"end":[854,277]}]}]},{"tag":"LineTo","args":[{"point":[512,277]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"library_add_check","codePoint":59892},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[86,277],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[86,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,909],"end":[111,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,959],"end":[170,959]}]}]},{"tag":"LineTo","args":[{"point":[768,959]}]},{"tag":"LineTo","args":[{"point":[768,875]}]},{"tag":"LineTo","args":[{"point":[170,875]}]},{"tag":"LineTo","args":[{"point":[170,277]}]},{"tag":"LineTo","args":[{"point":[86,277]}]}]},{"start":[384,469],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[444,409]}]},{"tag":"LineTo","args":[{"point":[532,497]}]},{"tag":"LineTo","args":[{"point":[750,277]}]},{"tag":"LineTo","args":[{"point":[810,337]}]},{"tag":"LineTo","args":[{"point":[532,619]}]},{"tag":"LineTo","args":[{"point":[384,469]}]}]},{"start":[342,107],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[308,107],"end":[282,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,157],"end":[256,191]}]}]},{"tag":"LineTo","args":[{"point":[256,703]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,737],"end":[282,763]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[308,789],"end":[342,789]}]}]},{"tag":"LineTo","args":[{"point":[854,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,789],"end":[913,763]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,737],"end":[938,703]}]}]},{"tag":"LineTo","args":[{"point":[938,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,157],"end":[913,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,107],"end":[854,107]}]}]},{"tag":"LineTo","args":[{"point":[342,107]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"replay_circle_filled","codePoint":59893},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[693,714],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[693,714]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,789],"end":[512,789]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[406,789],"end":[331,714]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,639],"end":[256,533]}]}]},{"tag":"LineTo","args":[{"point":[342,533]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[342,603],"end":[392,653]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[442,703],"end":[512,703]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,703],"end":[632,653]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,603],"end":[682,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[682,463],"end":[632,413]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[582,363],"end":[512,363]}]}]},{"tag":"LineTo","args":[{"point":[512,491]}]},{"tag":"LineTo","args":[{"point":[342,319]}]},{"tag":"LineTo","args":[{"point":[512,149]}]},{"tag":"LineTo","args":[{"point":[512,277]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,277],"end":[693,352]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,427],"end":[768,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,639],"end":[693,714]}]}]}]},{"start":[211,232],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[211,232]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,357],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,709],"end":[211,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,959],"end":[512,959]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,959],"end":[813,834]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,709],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,357],"end":[813,232]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,107],"end":[512,107]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[336,107],"end":[211,232]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"redo","codePoint":59894},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[490,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[490,363]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[344,363],"end":[227,449]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[110,535],"end":[66,671]}]}]},{"tag":"LineTo","args":[{"point":[166,703]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[198,605],"end":[293,537]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,469],"end":[490,469]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[614,469],"end":[710,549]}]}]},{"tag":"LineTo","args":[{"point":[554,703]}]},{"tag":"LineTo","args":[{"point":[938,703]}]},{"tag":"LineTo","args":[{"point":[938,319]}]},{"tag":"LineTo","args":[{"point":[786,473]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[660,363],"end":[490,363]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"save","codePoint":59895},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[214,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[214,235]}]},{"tag":"LineTo","args":[{"point":[640,235]}]},{"tag":"LineTo","args":[{"point":[640,405]}]},{"tag":"LineTo","args":[{"point":[214,405]}]}]},{"start":[422,793],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[422,793]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,755],"end":[384,703]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[384,651],"end":[422,613]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[460,575],"end":[512,575]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,575],"end":[602,613]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,651],"end":[640,703]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,755],"end":[602,793]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,831],"end":[512,831]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[460,831],"end":[422,793]}]}]}]},{"start":[214,149],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,149],"end":[153,174]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,199],"end":[128,235]}]}]},{"tag":"LineTo","args":[{"point":[128,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,867],"end":[153,892]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,917],"end":[214,917]}]}]},{"tag":"LineTo","args":[{"point":[810,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,917],"end":[870,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,865],"end":[896,831]}]}]},{"tag":"LineTo","args":[{"point":[896,319]}]},{"tag":"LineTo","args":[{"point":[726,149]}]},{"tag":"LineTo","args":[{"point":[214,149]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"zip","codePoint":59896},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,578],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,578]}]},{"tag":"LineTo","args":[{"point":[512,578]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[485,583],"end":[466.5,605]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[448,627],"end":[448,656]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[448,689],"end":[471.5,712.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[495,736],"end":[528,736]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[561,736],"end":[584.5,712.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,689],"end":[608,656]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,627],"end":[590,605]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[572,583],"end":[544,578]}]}]},{"tag":"LineTo","args":[{"point":[544,512]}]},{"tag":"LineTo","args":[{"point":[576,512]}]},{"tag":"LineTo","args":[{"point":[576,480]}]},{"tag":"LineTo","args":[{"point":[544,480]}]},{"tag":"LineTo","args":[{"point":[544,448]}]},{"tag":"LineTo","args":[{"point":[576,448]}]},{"tag":"LineTo","args":[{"point":[576,416]}]},{"tag":"LineTo","args":[{"point":[544,416]}]},{"tag":"LineTo","args":[{"point":[544,384]}]},{"tag":"LineTo","args":[{"point":[576,384]}]},{"tag":"LineTo","args":[{"point":[576,352]}]},{"tag":"LineTo","args":[{"point":[544,352]}]},{"tag":"LineTo","args":[{"point":[544,320]}]},{"tag":"LineTo","args":[{"point":[576,320]}]},{"tag":"LineTo","args":[{"point":[576,288]}]},{"tag":"LineTo","args":[{"point":[544,288]}]},{"tag":"LineTo","args":[{"point":[544,256]}]},{"tag":"LineTo","args":[{"point":[576,256]}]},{"tag":"LineTo","args":[{"point":[576,224]}]},{"tag":"LineTo","args":[{"point":[544,224]}]},{"tag":"LineTo","args":[{"point":[544,192]}]},{"tag":"LineTo","args":[{"point":[576,192]}]},{"tag":"LineTo","args":[{"point":[576,160]}]},{"tag":"LineTo","args":[{"point":[544,160]}]},{"tag":"LineTo","args":[{"point":[544,128]}]},{"tag":"LineTo","args":[{"point":[576,128]}]},{"tag":"LineTo","args":[{"point":[576,96]}]},{"tag":"LineTo","args":[{"point":[704,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[757,96],"end":[794.5,133.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,171],"end":[832,224]}]}]},{"tag":"LineTo","args":[{"point":[832,832]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,885],"end":[794.5,922.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[757,960],"end":[704,960]}]}]},{"tag":"LineTo","args":[{"point":[352,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[299,960],"end":[261.5,922.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,885],"end":[224,832]}]}]},{"tag":"LineTo","args":[{"point":[224,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,171],"end":[261.5,133.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[299,96],"end":[352,96]}]}]},{"tag":"LineTo","args":[{"point":[512,96]}]},{"tag":"LineTo","args":[{"point":[512,128]}]},{"tag":"LineTo","args":[{"point":[480,128]}]},{"tag":"LineTo","args":[{"point":[480,160]}]},{"tag":"LineTo","args":[{"point":[512,160]}]},{"tag":"LineTo","args":[{"point":[512,192]}]},{"tag":"LineTo","args":[{"point":[480,192]}]},{"tag":"LineTo","args":[{"point":[480,224]}]},{"tag":"LineTo","args":[{"point":[512,224]}]},{"tag":"LineTo","args":[{"point":[512,256]}]},{"tag":"LineTo","args":[{"point":[480,256]}]},{"tag":"LineTo","args":[{"point":[480,288]}]},{"tag":"LineTo","args":[{"point":[512,288]}]},{"tag":"LineTo","args":[{"point":[512,320]}]},{"tag":"LineTo","args":[{"point":[480,320]}]},{"tag":"LineTo","args":[{"point":[480,352]}]},{"tag":"LineTo","args":[{"point":[512,352]}]},{"tag":"LineTo","args":[{"point":[512,384]}]},{"tag":"LineTo","args":[{"point":[480,384]}]},{"tag":"LineTo","args":[{"point":[480,416]}]},{"tag":"LineTo","args":[{"point":[512,416]}]},{"tag":"LineTo","args":[{"point":[512,448]}]},{"tag":"LineTo","args":[{"point":[480,448]}]},{"tag":"LineTo","args":[{"point":[480,480]}]},{"tag":"LineTo","args":[{"point":[512,480]}]},{"tag":"LineTo","args":[{"point":[512,512]}]},{"tag":"LineTo","args":[{"point":[480,512]}]},{"tag":"LineTo","args":[{"point":[480,544]}]},{"tag":"LineTo","args":[{"point":[512,544]}]},{"tag":"LineTo","args":[{"point":[512,578]}]}]},{"start":[528,608],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[548,608],"end":[562,622]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,636],"end":[576,656]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,676],"end":[562,690]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[548,704],"end":[528,704]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[508,704],"end":[494,690]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,676],"end":[480,656]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,636],"end":[494,622]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[508,608],"end":[528,608]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"zip-outline","codePoint":59897},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,561],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,544]}]},{"tag":"LineTo","args":[{"point":[480,544]}]},{"tag":"LineTo","args":[{"point":[480,512]}]},{"tag":"LineTo","args":[{"point":[512,512]}]},{"tag":"LineTo","args":[{"point":[512,480]}]},{"tag":"LineTo","args":[{"point":[480,480]}]},{"tag":"LineTo","args":[{"point":[480,448]}]},{"tag":"LineTo","args":[{"point":[512,448]}]},{"tag":"LineTo","args":[{"point":[512,416]}]},{"tag":"LineTo","args":[{"point":[480,416]}]},{"tag":"LineTo","args":[{"point":[480,384]}]},{"tag":"LineTo","args":[{"point":[512,384]}]},{"tag":"LineTo","args":[{"point":[512,352]}]},{"tag":"LineTo","args":[{"point":[480,352]}]},{"tag":"LineTo","args":[{"point":[480,320]}]},{"tag":"LineTo","args":[{"point":[512,320]}]},{"tag":"LineTo","args":[{"point":[512,288]}]},{"tag":"LineTo","args":[{"point":[480,288]}]},{"tag":"LineTo","args":[{"point":[480,256]}]},{"tag":"LineTo","args":[{"point":[512,256]}]},{"tag":"LineTo","args":[{"point":[512,224]}]},{"tag":"LineTo","args":[{"point":[480,224]}]},{"tag":"LineTo","args":[{"point":[480,192]}]},{"tag":"LineTo","args":[{"point":[512,192]}]},{"tag":"LineTo","args":[{"point":[512,160]}]},{"tag":"LineTo","args":[{"point":[480,160]}]},{"tag":"LineTo","args":[{"point":[480,128]}]},{"tag":"LineTo","args":[{"point":[352,128]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[312,128],"end":[284,156]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,184],"end":[256,224]}]}]},{"tag":"LineTo","args":[{"point":[256,832]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,872],"end":[284,900]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[312,928],"end":[352,928]}]}]},{"tag":"LineTo","args":[{"point":[704,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[744,928],"end":[772,900]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[800,872],"end":[800,832]}]}]},{"tag":"LineTo","args":[{"point":[800,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[800,184],"end":[772,156]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[744,128],"end":[704,128]}]}]},{"tag":"LineTo","args":[{"point":[544,128]}]},{"tag":"LineTo","args":[{"point":[544,160]}]},{"tag":"LineTo","args":[{"point":[576,160]}]},{"tag":"LineTo","args":[{"point":[576,192]}]},{"tag":"LineTo","args":[{"point":[544,192]}]},{"tag":"LineTo","args":[{"point":[544,224]}]},{"tag":"LineTo","args":[{"point":[576,224]}]},{"tag":"LineTo","args":[{"point":[576,256]}]},{"tag":"LineTo","args":[{"point":[544,256]}]},{"tag":"LineTo","args":[{"point":[544,288]}]},{"tag":"LineTo","args":[{"point":[576,288]}]},{"tag":"LineTo","args":[{"point":[576,320]}]},{"tag":"LineTo","args":[{"point":[544,320]}]},{"tag":"LineTo","args":[{"point":[544,352]}]},{"tag":"LineTo","args":[{"point":[576,352]}]},{"tag":"LineTo","args":[{"point":[576,384]}]},{"tag":"LineTo","args":[{"point":[544,384]}]},{"tag":"LineTo","args":[{"point":[544,416]}]},{"tag":"LineTo","args":[{"point":[576,416]}]},{"tag":"LineTo","args":[{"point":[576,448]}]},{"tag":"LineTo","args":[{"point":[544,448]}]},{"tag":"LineTo","args":[{"point":[544,480]}]},{"tag":"LineTo","args":[{"point":[576,480]}]},{"tag":"LineTo","args":[{"point":[576,512]}]},{"tag":"LineTo","args":[{"point":[544,512]}]},{"tag":"LineTo","args":[{"point":[544,578]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[572,583],"end":[590,605]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,627],"end":[608,656]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,689],"end":[584.5,712.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[561,736],"end":[528,736]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[495,736],"end":[471.5,712.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[448,689],"end":[448,656]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[448,627],"end":[466.5,605]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[485,583],"end":[512,578]}]}]},{"tag":"LineTo","args":[{"point":[512,561]}]}]},{"start":[352,96],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[704,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[757,96],"end":[794.5,133.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,171],"end":[832,224]}]}]},{"tag":"LineTo","args":[{"point":[832,832]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,885],"end":[794.5,922.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[757,960],"end":[704,960]}]}]},{"tag":"LineTo","args":[{"point":[352,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[299,960],"end":[261.5,922.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,885],"end":[224,832]}]}]},{"tag":"LineTo","args":[{"point":[224,224]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,171],"end":[261.5,133.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[299,96],"end":[352,96]}]}]}]},{"start":[494,622],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,636],"end":[480,656]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[480,676],"end":[494,690]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[508,704],"end":[528,704]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[548,704],"end":[562,690]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,676],"end":[576,656]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,636],"end":[562,622]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[548,608],"end":[528,608]}]}]},{"tag":"LineTo","args":[{"point":[528,608]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[508,608],"end":[494,622]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"logout","codePoint":59898},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[512,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,149]}]},{"tag":"LineTo","args":[{"point":[170,149]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,149],"end":[111,175]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,201],"end":[86,235]}]}]},{"tag":"LineTo","args":[{"point":[86,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,865],"end":[111,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,917],"end":[170,917]}]}]},{"tag":"LineTo","args":[{"point":[512,917]}]},{"tag":"LineTo","args":[{"point":[512,831]}]},{"tag":"LineTo","args":[{"point":[170,831]}]},{"tag":"LineTo","args":[{"point":[170,235]}]},{"tag":"LineTo","args":[{"point":[512,235]}]}]},{"start":[666,379],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[776,491]}]},{"tag":"LineTo","args":[{"point":[342,491]}]},{"tag":"LineTo","args":[{"point":[342,575]}]},{"tag":"LineTo","args":[{"point":[776,575]}]},{"tag":"LineTo","args":[{"point":[666,685]}]},{"tag":"LineTo","args":[{"point":[726,747]}]},{"tag":"LineTo","args":[{"point":[938,533]}]},{"tag":"LineTo","args":[{"point":[726,319]}]},{"tag":"LineTo","args":[{"point":[666,379]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder_open","codePoint":59899},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[170,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[170,363]}]},{"tag":"LineTo","args":[{"point":[854,363]}]},{"tag":"LineTo","args":[{"point":[854,789]}]},{"tag":"LineTo","args":[{"point":[170,789]}]}]},{"start":[512,277],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[426,191]}]},{"tag":"LineTo","args":[{"point":[170,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,191],"end":[111,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,243],"end":[86,277]}]}]},{"tag":"LineTo","args":[{"point":[86,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,823],"end":[111,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,875],"end":[170,875]}]}]},{"tag":"LineTo","args":[{"point":[854,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,875],"end":[913,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,823],"end":[938,789]}]}]},{"tag":"LineTo","args":[{"point":[938,363]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,329],"end":[913,303]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,277],"end":[854,277]}]}]},{"tag":"LineTo","args":[{"point":[512,277]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"launchopen_in_new","codePoint":59900},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[598,235],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[750,235]}]},{"tag":"LineTo","args":[{"point":[332,653]}]},{"tag":"LineTo","args":[{"point":[392,713]}]},{"tag":"LineTo","args":[{"point":[810,295]}]},{"tag":"LineTo","args":[{"point":[810,447]}]},{"tag":"LineTo","args":[{"point":[896,447]}]},{"tag":"LineTo","args":[{"point":[896,149]}]},{"tag":"LineTo","args":[{"point":[598,149]}]},{"tag":"LineTo","args":[{"point":[598,235]}]}]},{"start":[214,831],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[214,235]}]},{"tag":"LineTo","args":[{"point":[512,235]}]},{"tag":"LineTo","args":[{"point":[512,149]}]},{"tag":"LineTo","args":[{"point":[214,149]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,149],"end":[153,174]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,199],"end":[128,235]}]}]},{"tag":"LineTo","args":[{"point":[128,831]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,867],"end":[153,892]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,917],"end":[214,917]}]}]},{"tag":"LineTo","args":[{"point":[810,917]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,917],"end":[870,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,865],"end":[896,831]}]}]},{"tag":"LineTo","args":[{"point":[896,533]}]},{"tag":"LineTo","args":[{"point":[810,533]}]},{"tag":"LineTo","args":[{"point":[810,831]}]},{"tag":"LineTo","args":[{"point":[214,831]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"open_in_browser","codePoint":59901},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[342,619],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[470,619]}]},{"tag":"LineTo","args":[{"point":[470,875]}]},{"tag":"LineTo","args":[{"point":[554,875]}]},{"tag":"LineTo","args":[{"point":[554,619]}]},{"tag":"LineTo","args":[{"point":[682,619]}]},{"tag":"LineTo","args":[{"point":[512,447]}]},{"tag":"LineTo","args":[{"point":[342,619]}]}]},{"start":[214,191],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,191],"end":[153,216]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,241],"end":[128,277]}]}]},{"tag":"LineTo","args":[{"point":[128,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[128,825],"end":[153,850]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[178,875],"end":[214,875]}]}]},{"tag":"LineTo","args":[{"point":[384,875]}]},{"tag":"LineTo","args":[{"point":[384,789]}]},{"tag":"LineTo","args":[{"point":[214,789]}]},{"tag":"LineTo","args":[{"point":[214,363]}]},{"tag":"LineTo","args":[{"point":[810,363]}]},{"tag":"LineTo","args":[{"point":[810,789]}]},{"tag":"LineTo","args":[{"point":[640,789]}]},{"tag":"LineTo","args":[{"point":[640,875]}]},{"tag":"LineTo","args":[{"point":[810,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[844,875],"end":[870,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,823],"end":[896,789]}]}]},{"tag":"LineTo","args":[{"point":[896,277]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[896,241],"end":[871,216]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[846,191],"end":[810,191]}]}]},{"tag":"LineTo","args":[{"point":[214,191]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"vue","codePoint":59902},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[1024,69],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,955]}]},{"tag":"LineTo","args":[{"point":[0,69]}]},{"tag":"LineTo","args":[{"point":[205,69]}]},{"tag":"LineTo","args":[{"point":[205,68]}]},{"tag":"LineTo","args":[{"point":[394,68]}]},{"tag":"LineTo","args":[{"point":[512,273]}]},{"tag":"LineTo","args":[{"point":[630,68]}]},{"tag":"LineTo","args":[{"point":[819,68]}]},{"tag":"LineTo","args":[{"point":[819,69]}]},{"tag":"LineTo","args":[{"point":[1024,69]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"angularuniversal","codePoint":59903},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[666,481],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[666,481]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[666,473],"end":[660,467]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[654,461],"end":[645,461]}]}]},{"tag":"LineTo","args":[{"point":[379,461]}]},{"tag":"LineTo","args":[{"point":[379,461]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[370,461],"end":[364,467]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[358,473],"end":[358,481]}]}]},{"tag":"LineTo","args":[{"point":[358,543]}]},{"tag":"LineTo","args":[{"point":[358,543]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[358,551],"end":[364,557]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[370,563],"end":[379,563]}]}]},{"tag":"LineTo","args":[{"point":[645,563]}]},{"tag":"LineTo","args":[{"point":[645,563]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[654,563],"end":[660,557]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[666,551],"end":[666,543]}]}]},{"tag":"LineTo","args":[{"point":[666,481]}]}]},{"start":[512,666],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[533,666],"end":[548,681]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[563,696],"end":[563,717]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[563,738],"end":[548,753]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[533,768],"end":[512,768]}]}]},{"tag":"LineTo","args":[{"point":[512,768]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[491,768],"end":[476,753]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[461,738],"end":[461,717]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[461,696],"end":[476,681]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[491,666],"end":[512,666]}]}]}]},{"start":[645,307],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[654,307],"end":[660,313]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[666,319],"end":[666,328]}]}]},{"tag":"LineTo","args":[{"point":[666,389]}]},{"tag":"LineTo","args":[{"point":[666,389]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[666,398],"end":[660,404]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[654,410],"end":[645,410]}]}]},{"tag":"LineTo","args":[{"point":[379,410]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[370,410],"end":[364,404]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[358,398],"end":[358,389]}]}]},{"tag":"LineTo","args":[{"point":[358,328]}]},{"tag":"LineTo","args":[{"point":[358,328]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[358,319],"end":[364,313]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[370,307],"end":[379,307]}]}]},{"tag":"LineTo","args":[{"point":[645,307]}]}]},{"start":[511,0],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[36,170]}]},{"tag":"LineTo","args":[{"point":[108,799]}]},{"tag":"LineTo","args":[{"point":[511,1024]}]},{"tag":"LineTo","args":[{"point":[915,799]}]},{"tag":"LineTo","args":[{"point":[988,170]}]},{"tag":"LineTo","args":[{"point":[511,0]}]}]},{"start":[717,758],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[717,758]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[717,783],"end":[699,801]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[681,819],"end":[655,819]}]}]},{"tag":"LineTo","args":[{"point":[369,819]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[343,819],"end":[325,801]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[307,783],"end":[307,758]}]}]},{"tag":"LineTo","args":[{"point":[307,266]}]},{"tag":"LineTo","args":[{"point":[307,266]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[307,241],"end":[325,223]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[343,205],"end":[369,205]}]}]},{"tag":"LineTo","args":[{"point":[655,205]}]},{"tag":"LineTo","args":[{"point":[655,205]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[681,205],"end":[699,223]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[717,241],"end":[717,266]}]}]},{"tag":"LineTo","args":[{"point":[717,758]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"linkinsert_link","codePoint":59904},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[554,319],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[554,401]}]},{"tag":"LineTo","args":[{"point":[726,401]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[780,401],"end":[819,440]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[858,479],"end":[858,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[858,587],"end":[819,626]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[780,665],"end":[726,665]}]}]},{"tag":"LineTo","args":[{"point":[554,665]}]},{"tag":"LineTo","args":[{"point":[554,747]}]},{"tag":"LineTo","args":[{"point":[726,747]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[814,747],"end":[876,684]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,621],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,445],"end":[876,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[814,319],"end":[726,319]}]}]},{"tag":"LineTo","args":[{"point":[554,319]}]}]},{"start":[682,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[682,491]}]},{"tag":"LineTo","args":[{"point":[342,491]}]},{"tag":"LineTo","args":[{"point":[342,575]}]},{"tag":"LineTo","args":[{"point":[682,575]}]}]},{"start":[205,440],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[205,440]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[244,401],"end":[298,401]}]}]},{"tag":"LineTo","args":[{"point":[470,401]}]},{"tag":"LineTo","args":[{"point":[470,319]}]},{"tag":"LineTo","args":[{"point":[298,319]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[210,319],"end":[148,382]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,445],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,621],"end":[148,684]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[210,747],"end":[298,747]}]}]},{"tag":"LineTo","args":[{"point":[470,747]}]},{"tag":"LineTo","args":[{"point":[470,665]}]},{"tag":"LineTo","args":[{"point":[298,665]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[244,665],"end":[205,626]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[166,587],"end":[166,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[166,479],"end":[205,440]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-text2","codePoint":59905},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[608,96],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[288,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[262,96],"end":[243,115]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,134],"end":[224,160]}]}]},{"tag":"LineTo","args":[{"point":[224,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,922],"end":[242.5,941]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[261,960],"end":[288,960]}]}]},{"tag":"LineTo","args":[{"point":[768,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[795,960],"end":[813.5,941.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,923],"end":[832,896]}]}]},{"tag":"LineTo","args":[{"point":[832,352]}]},{"tag":"LineTo","args":[{"point":[672,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[646,352],"end":[627,333.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,315],"end":[608,288]}]}]},{"tag":"LineTo","args":[{"point":[608,96]}]}]},{"start":[480,320],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[480,352]}]},{"tag":"LineTo","args":[{"point":[320,352]}]},{"tag":"LineTo","args":[{"point":[320,320]}]},{"tag":"LineTo","args":[{"point":[480,320]}]}]},{"start":[544,224],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[544,256]}]},{"tag":"LineTo","args":[{"point":[320,256]}]},{"tag":"LineTo","args":[{"point":[320,224]}]},{"tag":"LineTo","args":[{"point":[544,224]}]}]},{"start":[736,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,448]}]},{"tag":"LineTo","args":[{"point":[320,448]}]},{"tag":"LineTo","args":[{"point":[320,416]}]},{"tag":"LineTo","args":[{"point":[736,416]}]}]},{"start":[640,512],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[640,544]}]},{"tag":"LineTo","args":[{"point":[320,544]}]},{"tag":"LineTo","args":[{"point":[320,512]}]},{"tag":"LineTo","args":[{"point":[640,512]}]}]},{"start":[736,608],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,640]}]},{"tag":"LineTo","args":[{"point":[320,640]}]},{"tag":"LineTo","args":[{"point":[320,608]}]},{"tag":"LineTo","args":[{"point":[736,608]}]}]},{"start":[608,704],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,736]}]},{"tag":"LineTo","args":[{"point":[320,736]}]},{"tag":"LineTo","args":[{"point":[320,704]}]},{"tag":"LineTo","args":[{"point":[608,704]}]}]},{"start":[736,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,832]}]},{"tag":"LineTo","args":[{"point":[320,832]}]},{"tag":"LineTo","args":[{"point":[320,800]}]},{"tag":"LineTo","args":[{"point":[736,800]}]}]},{"start":[832,320],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[672,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[659,320],"end":[649.5,310.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,301],"end":[640,288]}]}]},{"tag":"LineTo","args":[{"point":[640,96]}]},{"tag":"LineTo","args":[{"point":[832,320]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-text2-outline","codePoint":59906},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[624,96],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[288,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[262,96],"end":[243,115]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,134],"end":[224,160]}]}]},{"tag":"LineTo","args":[{"point":[224,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,922],"end":[242.5,941]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[261,960],"end":[288,960]}]}]},{"tag":"LineTo","args":[{"point":[768,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[795,960],"end":[813.5,941.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,923],"end":[832,896]}]}]},{"tag":"LineTo","args":[{"point":[832,320]}]},{"tag":"LineTo","args":[{"point":[640,96]}]},{"tag":"LineTo","args":[{"point":[624,96]}]}]},{"start":[608,128],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,315],"end":[626.5,333.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,352],"end":[672,352]}]}]},{"tag":"LineTo","args":[{"point":[800,352]}]},{"tag":"LineTo","args":[{"point":[800,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[800,909],"end":[790.5,918.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[781,928],"end":[768,928]}]}]},{"tag":"LineTo","args":[{"point":[288,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,928],"end":[265.5,918.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,909],"end":[256,896]}]}]},{"tag":"LineTo","args":[{"point":[256,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,147],"end":[265.5,137.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,128],"end":[288,128]}]}]},{"tag":"LineTo","args":[{"point":[608,128]}]}]},{"start":[640,144],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[790,320]}]},{"tag":"LineTo","args":[{"point":[672,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[659,320],"end":[649.5,310.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,301],"end":[640,288]}]}]},{"tag":"LineTo","args":[{"point":[640,144]}]}]},{"start":[480,320],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[480,352]}]},{"tag":"LineTo","args":[{"point":[320,352]}]},{"tag":"LineTo","args":[{"point":[320,320]}]},{"tag":"LineTo","args":[{"point":[480,320]}]}]},{"start":[544,224],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[544,256]}]},{"tag":"LineTo","args":[{"point":[320,256]}]},{"tag":"LineTo","args":[{"point":[320,224]}]},{"tag":"LineTo","args":[{"point":[544,224]}]}]},{"start":[736,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,448]}]},{"tag":"LineTo","args":[{"point":[320,448]}]},{"tag":"LineTo","args":[{"point":[320,416]}]},{"tag":"LineTo","args":[{"point":[736,416]}]}]},{"start":[640,512],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[640,544]}]},{"tag":"LineTo","args":[{"point":[320,544]}]},{"tag":"LineTo","args":[{"point":[320,512]}]},{"tag":"LineTo","args":[{"point":[640,512]}]}]},{"start":[736,608],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,640]}]},{"tag":"LineTo","args":[{"point":[320,640]}]},{"tag":"LineTo","args":[{"point":[320,608]}]},{"tag":"LineTo","args":[{"point":[736,608]}]}]},{"start":[608,704],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,736]}]},{"tag":"LineTo","args":[{"point":[320,736]}]},{"tag":"LineTo","args":[{"point":[320,704]}]},{"tag":"LineTo","args":[{"point":[608,704]}]}]},{"start":[736,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,832]}]},{"tag":"LineTo","args":[{"point":[320,832]}]},{"tag":"LineTo","args":[{"point":[320,800]}]},{"tag":"LineTo","args":[{"point":[736,800]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-text4","codePoint":59907},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[608,96],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[288,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[262,96],"end":[243,115]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,134],"end":[224,160]}]}]},{"tag":"LineTo","args":[{"point":[224,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,922],"end":[242.5,941]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[261,960],"end":[288,960]}]}]},{"tag":"LineTo","args":[{"point":[768,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[795,960],"end":[813.5,941.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,923],"end":[832,896]}]}]},{"tag":"LineTo","args":[{"point":[832,352]}]},{"tag":"LineTo","args":[{"point":[672,352]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[646,352],"end":[627,333.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,315],"end":[608,288]}]}]},{"tag":"LineTo","args":[{"point":[608,96]}]}]},{"start":[832,320],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[672,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[659,320],"end":[649.5,310.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,301],"end":[640,288]}]}]},{"tag":"LineTo","args":[{"point":[640,96]}]},{"tag":"LineTo","args":[{"point":[832,320]}]}]},{"start":[544,320],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[544,352]}]},{"tag":"LineTo","args":[{"point":[320,352]}]},{"tag":"LineTo","args":[{"point":[320,320]}]},{"tag":"LineTo","args":[{"point":[544,320]}]}]},{"start":[544,224],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[544,256]}]},{"tag":"LineTo","args":[{"point":[320,256]}]},{"tag":"LineTo","args":[{"point":[320,224]}]},{"tag":"LineTo","args":[{"point":[544,224]}]}]},{"start":[736,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,448]}]},{"tag":"LineTo","args":[{"point":[320,448]}]},{"tag":"LineTo","args":[{"point":[320,416]}]},{"tag":"LineTo","args":[{"point":[736,416]}]}]},{"start":[736,512],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,544]}]},{"tag":"LineTo","args":[{"point":[320,544]}]},{"tag":"LineTo","args":[{"point":[320,512]}]},{"tag":"LineTo","args":[{"point":[736,512]}]}]},{"start":[736,608],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,640]}]},{"tag":"LineTo","args":[{"point":[320,640]}]},{"tag":"LineTo","args":[{"point":[320,608]}]},{"tag":"LineTo","args":[{"point":[736,608]}]}]},{"start":[736,704],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,736]}]},{"tag":"LineTo","args":[{"point":[320,736]}]},{"tag":"LineTo","args":[{"point":[320,704]}]},{"tag":"LineTo","args":[{"point":[736,704]}]}]},{"start":[736,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,832]}]},{"tag":"LineTo","args":[{"point":[320,832]}]},{"tag":"LineTo","args":[{"point":[320,800]}]},{"tag":"LineTo","args":[{"point":[736,800]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"document-text5","codePoint":59908},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[624,96],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[288,96]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[262,96],"end":[243,115]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,134],"end":[224,160]}]}]},{"tag":"LineTo","args":[{"point":[224,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[224,922],"end":[242.5,941]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[261,960],"end":[288,960]}]}]},{"tag":"LineTo","args":[{"point":[768,960]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[795,960],"end":[813.5,941.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[832,923],"end":[832,896]}]}]},{"tag":"LineTo","args":[{"point":[832,320]}]},{"tag":"LineTo","args":[{"point":[640,96]}]},{"tag":"LineTo","args":[{"point":[624,96]}]}]},{"start":[608,128],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[608,288]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[608,315],"end":[626.5,333.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[645,352],"end":[672,352]}]}]},{"tag":"LineTo","args":[{"point":[800,352]}]},{"tag":"LineTo","args":[{"point":[800,896]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[800,909],"end":[790.5,918.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[781,928],"end":[768,928]}]}]},{"tag":"LineTo","args":[{"point":[288,928]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,928],"end":[265.5,918.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,909],"end":[256,896]}]}]},{"tag":"LineTo","args":[{"point":[256,160]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[256,147],"end":[265.5,137.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,128],"end":[288,128]}]}]},{"tag":"LineTo","args":[{"point":[608,128]}]}]},{"start":[640,144],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[790,320]}]},{"tag":"LineTo","args":[{"point":[672,320]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[659,320],"end":[649.5,310.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,301],"end":[640,288]}]}]},{"tag":"LineTo","args":[{"point":[640,144]}]}]},{"start":[544,320],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[544,352]}]},{"tag":"LineTo","args":[{"point":[320,352]}]},{"tag":"LineTo","args":[{"point":[320,320]}]},{"tag":"LineTo","args":[{"point":[544,320]}]}]},{"start":[544,224],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[544,256]}]},{"tag":"LineTo","args":[{"point":[320,256]}]},{"tag":"LineTo","args":[{"point":[320,224]}]},{"tag":"LineTo","args":[{"point":[544,224]}]}]},{"start":[736,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,448]}]},{"tag":"LineTo","args":[{"point":[320,448]}]},{"tag":"LineTo","args":[{"point":[320,416]}]},{"tag":"LineTo","args":[{"point":[736,416]}]}]},{"start":[736,512],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,544]}]},{"tag":"LineTo","args":[{"point":[320,544]}]},{"tag":"LineTo","args":[{"point":[320,512]}]},{"tag":"LineTo","args":[{"point":[736,512]}]}]},{"start":[736,608],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,640]}]},{"tag":"LineTo","args":[{"point":[320,640]}]},{"tag":"LineTo","args":[{"point":[320,608]}]},{"tag":"LineTo","args":[{"point":[736,608]}]}]},{"start":[736,704],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,736]}]},{"tag":"LineTo","args":[{"point":[320,736]}]},{"tag":"LineTo","args":[{"point":[320,704]}]},{"tag":"LineTo","args":[{"point":[736,704]}]}]},{"start":[736,800],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[736,832]}]},{"tag":"LineTo","args":[{"point":[320,832]}]},{"tag":"LineTo","args":[{"point":[320,800]}]},{"tag":"LineTo","args":[{"point":[736,800]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"folder4","codePoint":59909},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[170,191],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,191],"end":[111,217]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,243],"end":[86,277]}]}]},{"tag":"LineTo","args":[{"point":[86,789]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,823],"end":[111,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,875],"end":[170,875]}]}]},{"tag":"LineTo","args":[{"point":[854,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,875],"end":[913,849]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,823],"end":[938,789]}]}]},{"tag":"LineTo","args":[{"point":[938,363]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,329],"end":[913,303]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,277],"end":[854,277]}]}]},{"tag":"LineTo","args":[{"point":[512,277]}]},{"tag":"LineTo","args":[{"point":[426,191]}]},{"tag":"LineTo","args":[{"point":[170,191]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"shift","codePoint":59910},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":968,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[192,419],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[201,419],"end":[209.5,419.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[218,420],"end":[227,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[236,423],"end":[245,425.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[254,428],"end":[263,431]}]}]},{"tag":"LineTo","args":[{"point":[263,431]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[269,433],"end":[272.5,438]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[276,443],"end":[276,449]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[276,449],"end":[276,449]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[276,449],"end":[276,449]}]}]},{"tag":"LineTo","args":[{"point":[276,478]}]},{"tag":"LineTo","args":[{"point":[276,478]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[276,486],"end":[270.5,492]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[265,498],"end":[256,498]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[254,498],"end":[252,497.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[250,497],"end":[248,496]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[240,492],"end":[233,489.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[226,487],"end":[220,485]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[213,483],"end":[207,482.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[201,482],"end":[196,482]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[186,482],"end":[179.5,483.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[173,485],"end":[170,488]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[167,490],"end":[166,491.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[165,493],"end":[165,498]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[165,502],"end":[165.5,503.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[166,505],"end":[167,505]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[167,506],"end":[173.5,508.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[180,511],"end":[191,513]}]}]},{"tag":"LineTo","args":[{"point":[191,513]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[191,513],"end":[191,513]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[191,513],"end":[191,513]}]}]},{"tag":"LineTo","args":[{"point":[209,516]}]},{"tag":"LineTo","args":[{"point":[209,516]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[227,520],"end":[242,526.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[257,533],"end":[268,544]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[278,555],"end":[283.5,569.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[289,584],"end":[289,600]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[289,620],"end":[282,636.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,653],"end":[260,664]}]}]},{"tag":"LineTo","args":[{"point":[260,664]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[246,675],"end":[227,680]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[208,685],"end":[186,685]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[177,685],"end":[167.5,684]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[158,683],"end":[149,681]}]}]},{"tag":"LineTo","args":[{"point":[149,681]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[149,681],"end":[149,681]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[149,681],"end":[149,681]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[149,681],"end":[149,681]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[149,681],"end":[149,681]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[139,679],"end":[129.5,676]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[120,673],"end":[110,670]}]}]},{"tag":"LineTo","args":[{"point":[110,670]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[104,667],"end":[100.5,662]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[97,657],"end":[97,651]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[97,651],"end":[97,651]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[97,651],"end":[97,651]}]}]},{"tag":"LineTo","args":[{"point":[97,621]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[97,613],"end":[102.5,607]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[108,601],"end":[117,601]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[119,601],"end":[121.5,601.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[124,602],"end":[126,604]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[134,608],"end":[142,611.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[150,615],"end":[157,617]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[165,619],"end":[172,620]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[179,621],"end":[186,621]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[197,621],"end":[203.5,619.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[210,618],"end":[213,615]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[217,613],"end":[218,610.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[219,608],"end":[219,603]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[219,598],"end":[218,596]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[217,594],"end":[215,592]}]}]},{"tag":"LineTo","args":[{"point":[215,592]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[215,592],"end":[215,592]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[215,592],"end":[215,592]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[214,590],"end":[208,587.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[202,585],"end":[192,583]}]}]},{"tag":"LineTo","args":[{"point":[175,580]}]},{"tag":"LineTo","args":[{"point":[175,580]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[175,580],"end":[175,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[175,580],"end":[175,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[175,580],"end":[175,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[175,580],"end":[175,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[156,576],"end":[141.5,570]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[127,564],"end":[117,554]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[106,544],"end":[101,530]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[96,516],"end":[96,501]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[96,483],"end":[103,467]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[110,451],"end":[124,440]}]}]},{"tag":"LineTo","args":[{"point":[123,440]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[123,440],"end":[123.5,440]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[124,440],"end":[124,440]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[137,429],"end":[154.5,424]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[172,419],"end":[192,419]}]}]}]},{"start":[345,422],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[353,422],"end":[359,428]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[365,434],"end":[365,442]}]}]},{"tag":"LineTo","args":[{"point":[365,512]}]},{"tag":"LineTo","args":[{"point":[433,512]}]},{"tag":"LineTo","args":[{"point":[433,442]}]},{"tag":"LineTo","args":[{"point":[433,442]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[433,434],"end":[439,428]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[445,422],"end":[453,422]}]}]},{"tag":"LineTo","args":[{"point":[482,422]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[491,422],"end":[496.5,428]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[502,434],"end":[502,442]}]}]},{"tag":"LineTo","args":[{"point":[502,661]}]},{"tag":"LineTo","args":[{"point":[502,661]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[502,669],"end":[496.5,674.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[491,680],"end":[482,680]}]}]},{"tag":"LineTo","args":[{"point":[453,680]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[445,680],"end":[439,674.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[433,669],"end":[433,661]}]}]},{"tag":"LineTo","args":[{"point":[433,576]}]},{"tag":"LineTo","args":[{"point":[365,576]}]},{"tag":"LineTo","args":[{"point":[365,661]}]},{"tag":"LineTo","args":[{"point":[365,661]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[365,669],"end":[359,674.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[353,680],"end":[345,680]}]}]},{"tag":"LineTo","args":[{"point":[316,680]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[308,680],"end":[302,674.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[296,669],"end":[296,661]}]}]},{"tag":"LineTo","args":[{"point":[296,442]}]},{"tag":"LineTo","args":[{"point":[296,442]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[296,434],"end":[302,428]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[308,422],"end":[316,422]}]}]},{"tag":"LineTo","args":[{"point":[345,422]}]}]},{"start":[541,422],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[667,422]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[669,422],"end":[670,422.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[671,423],"end":[673,423]}]}]},{"tag":"LineTo","args":[{"point":[673,423]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[674,423],"end":[675.5,422.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[677,422],"end":[679,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[679,422],"end":[679,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[679,422],"end":[679,422]}]}]},{"tag":"LineTo","args":[{"point":[864,422]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[872,422],"end":[877.5,428]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[883,434],"end":[883,442]}]}]},{"tag":"LineTo","args":[{"point":[883,467]}]},{"tag":"LineTo","args":[{"point":[883,467]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[883,475],"end":[877.5,481]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[872,487],"end":[864,487]}]}]},{"tag":"LineTo","args":[{"point":[806,487]}]},{"tag":"LineTo","args":[{"point":[806,661]}]},{"tag":"LineTo","args":[{"point":[806,661]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[806,669],"end":[800,674.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[794,680],"end":[786,680]}]}]},{"tag":"LineTo","args":[{"point":[756,680]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[748,680],"end":[742.5,674.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[737,669],"end":[737,661]}]}]},{"tag":"LineTo","args":[{"point":[737,487]}]},{"tag":"LineTo","args":[{"point":[679,487]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[677,487],"end":[675.5,486.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[674,486],"end":[673,486]}]}]},{"tag":"LineTo","args":[{"point":[673,486]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,486],"end":[670.5,486.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[669,487],"end":[667,487]}]}]},{"tag":"LineTo","args":[{"point":[591,487]}]},{"tag":"LineTo","args":[{"point":[591,512]}]},{"tag":"LineTo","args":[{"point":[658,512]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[666,512],"end":[671.5,517.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[677,523],"end":[677,531]}]}]},{"tag":"LineTo","args":[{"point":[677,556]}]},{"tag":"LineTo","args":[{"point":[677,556]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[677,564],"end":[671.5,570]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[666,576],"end":[658,576]}]}]},{"tag":"LineTo","args":[{"point":[591,576]}]},{"tag":"LineTo","args":[{"point":[591,661]}]},{"tag":"LineTo","args":[{"point":[591,661]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[591,669],"end":[585,674.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[579,680],"end":[571,680]}]}]},{"tag":"LineTo","args":[{"point":[541,680]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[533,680],"end":[527.5,674.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[522,669],"end":[522,661]}]}]},{"tag":"LineTo","args":[{"point":[522,442]}]},{"tag":"LineTo","args":[{"point":[522,442]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[522,434],"end":[527.5,428]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[533,422],"end":[541,422]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"replace","codePoint":59911},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":968,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[942,570],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[942,570]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[953,570],"end":[960.5,577.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[968,585],"end":[968,595]}]}]},{"tag":"LineTo","args":[{"point":[968,998]}]},{"tag":"LineTo","args":[{"point":[968,998]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[968,1009],"end":[960.5,1016.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[953,1024],"end":[942,1024]}]}]},{"tag":"LineTo","args":[{"point":[539,1024]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[529,1024],"end":[521.5,1016.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[514,1009],"end":[514,998]}]}]},{"tag":"LineTo","args":[{"point":[514,595]}]},{"tag":"LineTo","args":[{"point":[514,595]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[514,585],"end":[521.5,577.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[529,570],"end":[539,570]}]}]},{"tag":"LineTo","args":[{"point":[942,570]}]}]},{"start":[565,973],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[917,973]}]},{"tag":"LineTo","args":[{"point":[917,621]}]},{"tag":"LineTo","args":[{"point":[565,621]}]},{"tag":"LineTo","args":[{"point":[565,973]}]}]},{"start":[777,220],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[777,542]}]},{"tag":"LineTo","args":[{"point":[777,542]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[777,542],"end":[777,542]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[777,542],"end":[777,542]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[777,553],"end":[769.5,560.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[762,568],"end":[751,568]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[740,568],"end":[732.5,560.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[725,553],"end":[725,542]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[725,542],"end":[725,542]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[725,542],"end":[725,542]}]}]},{"tag":"LineTo","args":[{"point":[725,271]}]},{"tag":"LineTo","args":[{"point":[441,271]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[441,271],"end":[440.5,271.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[440,272],"end":[440,272]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[430,272],"end":[422.5,264]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[415,256],"end":[415,246]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[415,235],"end":[422.5,227.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[430,220],"end":[440,220]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[440,220],"end":[440.5,220]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[441,220],"end":[441,220]}]}]},{"tag":"LineTo","args":[{"point":[777,220]}]}]},{"start":[26,0],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[77,0]}]},{"tag":"LineTo","args":[{"point":[93,6]}]},{"tag":"LineTo","args":[{"point":[102,24]}]},{"tag":"LineTo","args":[{"point":[96,43]}]},{"tag":"LineTo","args":[{"point":[77,51]}]},{"tag":"LineTo","args":[{"point":[26,51]}]},{"tag":"LineTo","args":[{"point":[9,46]}]},{"tag":"LineTo","args":[{"point":[0,27]}]},{"tag":"LineTo","args":[{"point":[7,8]}]},{"tag":"LineTo","args":[{"point":[26,0]}]}]},{"start":[231,0],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[282,0]}]},{"tag":"LineTo","args":[{"point":[298,6]}]},{"tag":"LineTo","args":[{"point":[307,24]}]},{"tag":"LineTo","args":[{"point":[301,43]}]},{"tag":"LineTo","args":[{"point":[282,51]}]},{"tag":"LineTo","args":[{"point":[231,51]}]},{"tag":"LineTo","args":[{"point":[215,46]}]},{"tag":"LineTo","args":[{"point":[205,27]}]},{"tag":"LineTo","args":[{"point":[212,8]}]},{"tag":"LineTo","args":[{"point":[231,0]}]}]},{"start":[427,7],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[446,14]}]},{"tag":"LineTo","args":[{"point":[454,33]}]},{"tag":"LineTo","args":[{"point":[454,84]}]},{"tag":"LineTo","args":[{"point":[449,100]}]},{"tag":"LineTo","args":[{"point":[430,110]}]},{"tag":"LineTo","args":[{"point":[411,103]}]},{"tag":"LineTo","args":[{"point":[403,84]}]},{"tag":"LineTo","args":[{"point":[403,33]}]},{"tag":"LineTo","args":[{"point":[409,17]}]},{"tag":"LineTo","args":[{"point":[427,7]}]}]},{"start":[24,126],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[43,132]}]},{"tag":"LineTo","args":[{"point":[51,151]}]},{"tag":"LineTo","args":[{"point":[51,202]}]},{"tag":"LineTo","args":[{"point":[46,218]}]},{"tag":"LineTo","args":[{"point":[27,228]}]},{"tag":"LineTo","args":[{"point":[8,221]}]},{"tag":"LineTo","args":[{"point":[0,202]}]},{"tag":"LineTo","args":[{"point":[0,151]}]},{"tag":"LineTo","args":[{"point":[6,135]}]},{"tag":"LineTo","args":[{"point":[24,126]}]}]},{"start":[427,212],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[446,219]}]},{"tag":"LineTo","args":[{"point":[454,238]}]},{"tag":"LineTo","args":[{"point":[454,289]}]},{"tag":"LineTo","args":[{"point":[449,305]}]},{"tag":"LineTo","args":[{"point":[430,315]}]},{"tag":"LineTo","args":[{"point":[411,308]}]},{"tag":"LineTo","args":[{"point":[403,289]}]},{"tag":"LineTo","args":[{"point":[403,238]}]},{"tag":"LineTo","args":[{"point":[409,222]}]},{"tag":"LineTo","args":[{"point":[427,212]}]}]},{"start":[24,331],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[43,337]}]},{"tag":"LineTo","args":[{"point":[51,356]}]},{"tag":"LineTo","args":[{"point":[51,407]}]},{"tag":"LineTo","args":[{"point":[46,424]}]},{"tag":"LineTo","args":[{"point":[27,433]}]},{"tag":"LineTo","args":[{"point":[8,426]}]},{"tag":"LineTo","args":[{"point":[0,407]}]},{"tag":"LineTo","args":[{"point":[0,356]}]},{"tag":"LineTo","args":[{"point":[6,340]}]},{"tag":"LineTo","args":[{"point":[24,331]}]}]},{"start":[158,403],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[209,403]}]},{"tag":"LineTo","args":[{"point":[226,409]}]},{"tag":"LineTo","args":[{"point":[235,427]}]},{"tag":"LineTo","args":[{"point":[228,446]}]},{"tag":"LineTo","args":[{"point":[209,454]}]},{"tag":"LineTo","args":[{"point":[158,454]}]},{"tag":"LineTo","args":[{"point":[142,449]}]},{"tag":"LineTo","args":[{"point":[133,430]}]},{"tag":"LineTo","args":[{"point":[139,411]}]},{"tag":"LineTo","args":[{"point":[158,403]}]}]},{"start":[363,403],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[414,403]}]},{"tag":"LineTo","args":[{"point":[431,409]}]},{"tag":"LineTo","args":[{"point":[440,427]}]},{"tag":"LineTo","args":[{"point":[433,446]}]},{"tag":"LineTo","args":[{"point":[414,454]}]},{"tag":"LineTo","args":[{"point":[363,454]}]},{"tag":"LineTo","args":[{"point":[347,449]}]},{"tag":"LineTo","args":[{"point":[338,430]}]},{"tag":"LineTo","args":[{"point":[344,411]}]},{"tag":"LineTo","args":[{"point":[363,403]}]}]},{"start":[629,394],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[629,394]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[629,394],"end":[629,394]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[629,394],"end":[629,394]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[634,394],"end":[639,396]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[644,398],"end":[647,402]}]}]},{"tag":"LineTo","args":[{"point":[751,505]}]},{"tag":"LineTo","args":[{"point":[855,402]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[858,398],"end":[863,396]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[868,394],"end":[873,394]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[884,394],"end":[891.5,401.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[899,409],"end":[899,419]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[899,425],"end":[897,429.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[895,434],"end":[891,438]}]}]},{"tag":"LineTo","args":[{"point":[769,560]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[766,563],"end":[761,565]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[756,567],"end":[751,567]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[746,567],"end":[741,565]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,563],"end":[733,560]}]}]},{"tag":"LineTo","args":[{"point":[611,438]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[607,434],"end":[605,429.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[603,425],"end":[603,419]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[603,409],"end":[610.5,401.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,394],"end":[629,394]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"replace_all","codePoint":59912},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":968,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[778,253],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[778,672]}]},{"tag":"LineTo","args":[{"point":[778,672]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[778,672],"end":[778,672]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[778,672],"end":[778,672]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[778,682],"end":[771,689]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[764,696],"end":[753,696]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[743,696],"end":[735.5,689]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[728,682],"end":[728,672]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[728,672],"end":[728,672]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[728,672],"end":[728,672]}]}]},{"tag":"LineTo","args":[{"point":[728,300]}]},{"tag":"LineTo","args":[{"point":[438,300]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[438,300],"end":[438,300]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[438,300],"end":[438,300]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[428,300],"end":[420.5,293]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[413,286],"end":[413,277]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[413,267],"end":[420.5,260]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[428,253],"end":[438,253]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[438,253],"end":[438,253]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[438,253],"end":[438,253]}]}]},{"tag":"LineTo","args":[{"point":[778,253]}]}]},{"start":[26,0],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[77,0]}]},{"tag":"LineTo","args":[{"point":[93,6]}]},{"tag":"LineTo","args":[{"point":[102,24]}]},{"tag":"LineTo","args":[{"point":[96,43]}]},{"tag":"LineTo","args":[{"point":[77,51]}]},{"tag":"LineTo","args":[{"point":[26,51]}]},{"tag":"LineTo","args":[{"point":[9,46]}]},{"tag":"LineTo","args":[{"point":[0,27]}]},{"tag":"LineTo","args":[{"point":[7,8]}]},{"tag":"LineTo","args":[{"point":[26,0]}]}]},{"start":[231,0],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[282,0]}]},{"tag":"LineTo","args":[{"point":[298,6]}]},{"tag":"LineTo","args":[{"point":[307,24]}]},{"tag":"LineTo","args":[{"point":[301,43]}]},{"tag":"LineTo","args":[{"point":[282,51]}]},{"tag":"LineTo","args":[{"point":[231,51]}]},{"tag":"LineTo","args":[{"point":[215,46]}]},{"tag":"LineTo","args":[{"point":[205,27]}]},{"tag":"LineTo","args":[{"point":[212,8]}]},{"tag":"LineTo","args":[{"point":[231,0]}]}]},{"start":[427,7],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[446,14]}]},{"tag":"LineTo","args":[{"point":[454,33]}]},{"tag":"LineTo","args":[{"point":[454,84]}]},{"tag":"LineTo","args":[{"point":[449,100]}]},{"tag":"LineTo","args":[{"point":[430,110]}]},{"tag":"LineTo","args":[{"point":[411,103]}]},{"tag":"LineTo","args":[{"point":[403,84]}]},{"tag":"LineTo","args":[{"point":[403,33]}]},{"tag":"LineTo","args":[{"point":[409,17]}]},{"tag":"LineTo","args":[{"point":[427,7]}]}]},{"start":[24,126],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[43,132]}]},{"tag":"LineTo","args":[{"point":[51,151]}]},{"tag":"LineTo","args":[{"point":[51,202]}]},{"tag":"LineTo","args":[{"point":[46,218]}]},{"tag":"LineTo","args":[{"point":[27,228]}]},{"tag":"LineTo","args":[{"point":[8,221]}]},{"tag":"LineTo","args":[{"point":[0,202]}]},{"tag":"LineTo","args":[{"point":[0,151]}]},{"tag":"LineTo","args":[{"point":[6,135]}]},{"tag":"LineTo","args":[{"point":[24,126]}]}]},{"start":[427,212],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[446,219]}]},{"tag":"LineTo","args":[{"point":[454,238]}]},{"tag":"LineTo","args":[{"point":[454,289]}]},{"tag":"LineTo","args":[{"point":[449,305]}]},{"tag":"LineTo","args":[{"point":[430,315]}]},{"tag":"LineTo","args":[{"point":[411,308]}]},{"tag":"LineTo","args":[{"point":[403,289]}]},{"tag":"LineTo","args":[{"point":[403,238]}]},{"tag":"LineTo","args":[{"point":[409,222]}]},{"tag":"LineTo","args":[{"point":[427,212]}]}]},{"start":[24,331],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[43,337]}]},{"tag":"LineTo","args":[{"point":[51,356]}]},{"tag":"LineTo","args":[{"point":[51,407]}]},{"tag":"LineTo","args":[{"point":[46,424]}]},{"tag":"LineTo","args":[{"point":[27,433]}]},{"tag":"LineTo","args":[{"point":[8,426]}]},{"tag":"LineTo","args":[{"point":[0,407]}]},{"tag":"LineTo","args":[{"point":[0,356]}]},{"tag":"LineTo","args":[{"point":[6,340]}]},{"tag":"LineTo","args":[{"point":[24,331]}]}]},{"start":[158,403],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[209,403]}]},{"tag":"LineTo","args":[{"point":[226,409]}]},{"tag":"LineTo","args":[{"point":[235,427]}]},{"tag":"LineTo","args":[{"point":[228,446]}]},{"tag":"LineTo","args":[{"point":[209,454]}]},{"tag":"LineTo","args":[{"point":[158,454]}]},{"tag":"LineTo","args":[{"point":[142,449]}]},{"tag":"LineTo","args":[{"point":[133,430]}]},{"tag":"LineTo","args":[{"point":[139,411]}]},{"tag":"LineTo","args":[{"point":[158,403]}]}]},{"start":[363,403],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[414,403]}]},{"tag":"LineTo","args":[{"point":[431,409]}]},{"tag":"LineTo","args":[{"point":[440,427]}]},{"tag":"LineTo","args":[{"point":[433,446]}]},{"tag":"LineTo","args":[{"point":[414,454]}]},{"tag":"LineTo","args":[{"point":[363,454]}]},{"tag":"LineTo","args":[{"point":[347,449]}]},{"tag":"LineTo","args":[{"point":[338,430]}]},{"tag":"LineTo","args":[{"point":[344,411]}]},{"tag":"LineTo","args":[{"point":[363,403]}]}]},{"start":[629,580],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[629,580]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[629,580],"end":[629,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[629,580],"end":[629,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[634,580],"end":[639,582.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[644,585],"end":[647,588]}]}]},{"tag":"LineTo","args":[{"point":[751,692]}]},{"tag":"LineTo","args":[{"point":[855,588]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[858,585],"end":[863,582.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[868,580],"end":[873,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[884,580],"end":[891.5,587.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[899,595],"end":[899,606]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[899,611],"end":[897,616]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[895,621],"end":[891,624]}]}]},{"tag":"LineTo","args":[{"point":[769,746]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[766,750],"end":[761,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[756,754],"end":[751,754]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[746,754],"end":[741,752]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[736,750],"end":[733,746]}]}]},{"tag":"LineTo","args":[{"point":[611,624]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[607,621],"end":[605,616]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[603,611],"end":[603,606]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[603,595],"end":[610.5,587.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[618,580],"end":[629,580]}]}]}]},{"start":[372,764],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[372,764]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[382,764],"end":[389.5,771.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[397,779],"end":[397,790]}]}]},{"tag":"LineTo","args":[{"point":[397,998]}]},{"tag":"LineTo","args":[{"point":[397,998]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[397,1009],"end":[389.5,1016.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[382,1024],"end":[372,1024]}]}]},{"tag":"LineTo","args":[{"point":[163,1024]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[153,1024],"end":[145.5,1016.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[138,1009],"end":[138,998]}]}]},{"tag":"LineTo","args":[{"point":[138,790]}]},{"tag":"LineTo","args":[{"point":[138,790]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[138,779],"end":[145.5,771.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[153,764],"end":[163,764]}]}]},{"tag":"LineTo","args":[{"point":[372,764]}]}]},{"start":[189,973],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[346,973]}]},{"tag":"LineTo","args":[{"point":[346,815]}]},{"tag":"LineTo","args":[{"point":[189,815]}]},{"tag":"LineTo","args":[{"point":[189,973]}]}]},{"start":[657,764],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[657,764]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[668,764],"end":[675.5,771.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[683,779],"end":[683,790]}]}]},{"tag":"LineTo","args":[{"point":[683,998]}]},{"tag":"LineTo","args":[{"point":[683,998]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[683,1009],"end":[675.5,1016.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[668,1024],"end":[657,1024]}]}]},{"tag":"LineTo","args":[{"point":[449,1024]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[438,1024],"end":[430.5,1016.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[423,1009],"end":[423,998]}]}]},{"tag":"LineTo","args":[{"point":[423,790]}]},{"tag":"LineTo","args":[{"point":[423,790]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[423,779],"end":[430.5,771.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[438,764],"end":[449,764]}]}]},{"tag":"LineTo","args":[{"point":[657,764]}]}]},{"start":[474,973],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[631,973]}]},{"tag":"LineTo","args":[{"point":[631,815]}]},{"tag":"LineTo","args":[{"point":[474,815]}]},{"tag":"LineTo","args":[{"point":[474,973]}]}]},{"start":[942,764],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[942,764]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[953,764],"end":[960.5,771.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[968,779],"end":[968,790]}]}]},{"tag":"LineTo","args":[{"point":[968,998]}]},{"tag":"LineTo","args":[{"point":[968,998]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[968,1009],"end":[960.5,1016.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[953,1024],"end":[942,1024]}]}]},{"tag":"LineTo","args":[{"point":[734,1024]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[723,1024],"end":[715.5,1016.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[708,1009],"end":[708,998]}]}]},{"tag":"LineTo","args":[{"point":[708,790]}]},{"tag":"LineTo","args":[{"point":[708,790]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[708,779],"end":[715.5,771.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[723,764],"end":[734,764]}]}]},{"tag":"LineTo","args":[{"point":[942,764]}]}]},{"start":[759,973],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[917,973]}]},{"tag":"LineTo","args":[{"point":[917,815]}]},{"tag":"LineTo","args":[{"point":[759,815]}]},{"tag":"LineTo","args":[{"point":[759,973]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"moveline-up","codePoint":59913},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":968,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[530,304],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[530,304],"end":[530,304]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[530,304],"end":[530,304]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[525,304],"end":[520,302]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[515,300],"end":[512,296]}]}]},{"tag":"LineTo","args":[{"point":[408,192]}]},{"tag":"LineTo","args":[{"point":[304,296]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[300,300],"end":[295.5,302]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[291,304],"end":[285,304]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,304],"end":[267.5,296.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[260,289],"end":[260,279]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[260,273],"end":[262,268.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[264,264],"end":[268,260]}]}]},{"tag":"LineTo","args":[{"point":[390,138]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[393,135],"end":[398,133]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[403,131],"end":[408,131]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[413,131],"end":[417.5,133]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[422,135],"end":[426,138]}]}]},{"tag":"LineTo","args":[{"point":[548,260]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[552,264],"end":[554,268.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[556,273],"end":[556,278]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[556,289],"end":[548.5,296.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[541,304],"end":[530,304]}]}]}]},{"start":[408,899],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[408,899]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[408,899],"end":[408,899]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[408,899],"end":[408,899]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[396,899],"end":[388,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,883],"end":[380,871]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,871],"end":[380,871]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,871],"end":[380,871]}]}]},{"tag":"LineTo","args":[{"point":[380,192]}]},{"tag":"LineTo","args":[{"point":[380,192]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,192],"end":[380,192]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,192],"end":[380,192]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,180],"end":[388,172]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[396,164],"end":[408,164]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[420,164],"end":[428,172]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,180],"end":[436,192]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,192],"end":[436,192]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,192],"end":[436,192]}]}]},{"tag":"LineTo","args":[{"point":[436,871]}]},{"tag":"LineTo","args":[{"point":[436,871]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,871],"end":[436,871]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,871],"end":[436,871]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,883],"end":[428,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[420,899],"end":[408,899]}]}]}]},{"start":[521,394],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[566,394]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[568,394],"end":[570,395.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[572,397],"end":[573,399]}]}]},{"tag":"LineTo","args":[{"point":[622,530]}]},{"tag":"LineTo","args":[{"point":[671,399]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,397],"end":[674,395.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[676,394],"end":[679,394]}]}]},{"tag":"LineTo","args":[{"point":[723,394]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,394],"end":[728.5,396.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[731,399],"end":[731,402]}]}]},{"tag":"LineTo","args":[{"point":[731,622]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[731,625],"end":[728.5,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,630],"end":[723,630]}]}]},{"tag":"LineTo","args":[{"point":[694,630]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[691,630],"end":[688.5,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[686,625],"end":[686,622]}]}]},{"tag":"LineTo","args":[{"point":[686,471]}]},{"tag":"LineTo","args":[{"point":[644,583]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[644,585],"end":[642,586.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,588],"end":[637,588]}]}]},{"tag":"LineTo","args":[{"point":[607,588]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[605,588],"end":[603,586.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[601,585],"end":[600,583]}]}]},{"tag":"LineTo","args":[{"point":[558,471]}]},{"tag":"LineTo","args":[{"point":[558,622]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[558,625],"end":[555.5,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[553,630],"end":[550,630]}]}]},{"tag":"LineTo","args":[{"point":[521,630]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[518,630],"end":[516,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[514,625],"end":[514,622]}]}]},{"tag":"LineTo","args":[{"point":[514,402]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[514,399],"end":[516,396.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[518,394],"end":[521,394]}]}]}]},{"start":[697.5,422],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[698,422],"end":[698,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[698,422],"end":[698,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[698,422],"end":[698,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[698,422],"end":[697.5,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[697,422],"end":[697,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[697,422],"end":[697.5,422]}]}]}]},{"start":[715,613],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[715,615]}]},{"tag":"LineTo","args":[{"point":[702,615]}]},{"tag":"LineTo","args":[{"point":[702,613]}]},{"tag":"LineTo","args":[{"point":[702,615]}]},{"tag":"LineTo","args":[{"point":[715,615]}]},{"tag":"LineTo","args":[{"point":[715,613]}]}]},{"start":[529,615],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[543,615]}]},{"tag":"LineTo","args":[{"point":[536,615]}]},{"tag":"LineTo","args":[{"point":[529,615]}]},{"tag":"LineTo","args":[{"point":[529,613]}]},{"tag":"LineTo","args":[{"point":[529,615]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"moveline-down","codePoint":59914},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":968,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[285,726],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[285,726]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[285,726],"end":[285.5,726]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[286,726],"end":[286,726]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[291,726],"end":[295.5,728]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[300,730],"end":[304,733]}]}]},{"tag":"LineTo","args":[{"point":[408,837]}]},{"tag":"LineTo","args":[{"point":[512,733]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[515,730],"end":[520,728]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[525,726],"end":[530,726]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[541,726],"end":[548.5,733.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[556,741],"end":[556,751]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[556,757],"end":[553.5,761.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[551,766],"end":[548,770]}]}]},{"tag":"LineTo","args":[{"point":[426,892]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[422,895],"end":[417.5,897]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[413,899],"end":[408,899]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[402,899],"end":[397.5,897]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[393,895],"end":[390,892]}]}]},{"tag":"LineTo","args":[{"point":[268,770]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[264,766],"end":[262,761.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[260,757],"end":[260,751]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[260,741],"end":[267.5,733.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,726],"end":[285,726]}]}]}]},{"start":[407,131],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[407,131],"end":[407.5,131]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[408,131],"end":[408,131]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[419,131],"end":[427.5,139]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,147],"end":[436,159]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,159],"end":[436,159]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,159],"end":[436,159]}]}]},{"tag":"LineTo","args":[{"point":[436,837]}]},{"tag":"LineTo","args":[{"point":[436,837]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,837],"end":[436,837.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,838],"end":[436,838]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,849],"end":[427.5,857.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[419,866],"end":[408,866]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[396,866],"end":[388,857.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,849],"end":[380,838]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,838],"end":[380,837.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,837],"end":[380,837]}]}]},{"tag":"LineTo","args":[{"point":[380,159]}]},{"tag":"LineTo","args":[{"point":[380,159]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,159],"end":[380,159]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,159],"end":[380,159]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,147],"end":[388,139]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[396,131],"end":[407,131]}]}]}]},{"start":[521,394],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[566,394]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[568,394],"end":[570,395.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[572,397],"end":[573,399]}]}]},{"tag":"LineTo","args":[{"point":[622,530]}]},{"tag":"LineTo","args":[{"point":[671,399]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,397],"end":[674,395.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[676,394],"end":[679,394]}]}]},{"tag":"LineTo","args":[{"point":[723,394]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,394],"end":[728.5,396.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[731,399],"end":[731,402]}]}]},{"tag":"LineTo","args":[{"point":[731,622]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[731,625],"end":[728.5,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[726,630],"end":[723,630]}]}]},{"tag":"LineTo","args":[{"point":[694,630]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[691,630],"end":[688.5,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[686,625],"end":[686,622]}]}]},{"tag":"LineTo","args":[{"point":[686,471]}]},{"tag":"LineTo","args":[{"point":[644,583]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[644,585],"end":[642,586.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[640,588],"end":[637,588]}]}]},{"tag":"LineTo","args":[{"point":[607,588]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[605,588],"end":[603,586.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[601,585],"end":[600,583]}]}]},{"tag":"LineTo","args":[{"point":[558,471]}]},{"tag":"LineTo","args":[{"point":[558,622]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[558,625],"end":[555.5,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[553,630],"end":[550,630]}]}]},{"tag":"LineTo","args":[{"point":[521,630]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[518,630],"end":[516,627.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[514,625],"end":[514,622]}]}]},{"tag":"LineTo","args":[{"point":[514,402]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[514,399],"end":[516,396.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[518,394],"end":[521,394]}]}]}]},{"start":[697.5,422],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[698,422],"end":[698,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[698,422],"end":[698,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[698,422],"end":[698,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[698,422],"end":[697.5,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[697,422],"end":[697,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[697,422],"end":[697.5,422]}]}]}]},{"start":[715,613],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[715,615]}]},{"tag":"LineTo","args":[{"point":[702,615]}]},{"tag":"LineTo","args":[{"point":[702,613]}]},{"tag":"LineTo","args":[{"point":[702,615]}]},{"tag":"LineTo","args":[{"point":[715,615]}]},{"tag":"LineTo","args":[{"point":[715,613]}]}]},{"start":[529,615],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[543,615]}]},{"tag":"LineTo","args":[{"point":[536,615]}]},{"tag":"LineTo","args":[{"point":[529,615]}]},{"tag":"LineTo","args":[{"point":[529,613]}]},{"tag":"LineTo","args":[{"point":[529,615]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"copyline-up","codePoint":59915},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":968,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[530,304],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[530,304],"end":[530,304]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[530,304],"end":[530,304]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[525,304],"end":[520,302]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[515,300],"end":[512,296]}]}]},{"tag":"LineTo","args":[{"point":[408,192]}]},{"tag":"LineTo","args":[{"point":[304,296]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[300,300],"end":[295.5,302]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[291,304],"end":[285,304]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,304],"end":[267.5,296.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[260,289],"end":[260,279]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[260,273],"end":[262,268.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[264,264],"end":[268,260]}]}]},{"tag":"LineTo","args":[{"point":[390,138]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[393,135],"end":[398,133]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[403,131],"end":[408,131]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[413,131],"end":[417.5,133]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[422,135],"end":[426,138]}]}]},{"tag":"LineTo","args":[{"point":[548,260]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[552,264],"end":[554,268.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[556,273],"end":[556,278]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[556,289],"end":[548.5,296.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[541,304],"end":[530,304]}]}]}]},{"start":[408,899],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[408,899]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[408,899],"end":[408,899]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[408,899],"end":[408,899]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[396,899],"end":[388,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,883],"end":[380,871]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,871],"end":[380,871]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,871],"end":[380,871]}]}]},{"tag":"LineTo","args":[{"point":[380,192]}]},{"tag":"LineTo","args":[{"point":[380,192]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,192],"end":[380,192]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,192],"end":[380,192]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,180],"end":[388,172]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[396,164],"end":[408,164]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[420,164],"end":[428,172]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,180],"end":[436,192]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,192],"end":[436,192]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,192],"end":[436,192]}]}]},{"tag":"LineTo","args":[{"point":[436,871]}]},{"tag":"LineTo","args":[{"point":[436,871]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,871],"end":[436,871]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,871],"end":[436,871]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,883],"end":[428,891]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[420,899],"end":[408,899]}]}]}]},{"start":[643,393],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[654,393],"end":[665,394.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[676,396],"end":[686,399]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[686,399],"end":[686,399]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[686,399],"end":[686,399]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[696,401],"end":[705.5,405]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[715,409],"end":[724,415]}]}]},{"tag":"LineTo","args":[{"point":[724,415]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[727,416],"end":[728.5,418.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[730,421],"end":[730,424]}]}]},{"tag":"LineTo","args":[{"point":[730,454]}]},{"tag":"LineTo","args":[{"point":[730,454]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[730,458],"end":[726.5,461.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[723,465],"end":[719,465]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[717,465],"end":[715,464.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[713,464],"end":[712,462]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,456],"end":[696,451.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,447],"end":[680,444]}]}]},{"tag":"LineTo","args":[{"point":[680,444]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,444],"end":[680,444]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,444],"end":[680,444]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,442],"end":[663,440.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[654,439],"end":[645,439]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[625,439],"end":[612,443.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[599,448],"end":[590,457]}]}]},{"tag":"LineTo","args":[{"point":[590,457]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[590,457],"end":[590,457]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[590,457],"end":[590,457]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[581,466],"end":[576,479.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[571,493],"end":[571,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[571,531],"end":[575.5,544.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[580,558],"end":[590,567]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[599,576],"end":[612,580.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[625,585],"end":[645,585]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[654,585],"end":[663,583.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,582],"end":[680,580]}]}]},{"tag":"LineTo","args":[{"point":[680,580]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,580],"end":[680,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,580],"end":[680,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,580],"end":[680,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,580],"end":[680,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,577],"end":[696,572.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,568],"end":[712,562]}]}]},{"tag":"LineTo","args":[{"point":[712,562]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[713,560],"end":[715,559.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[717,559],"end":[719,559]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[723,559],"end":[726.5,562.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[730,566],"end":[730,570]}]}]},{"tag":"LineTo","args":[{"point":[730,600]}]},{"tag":"LineTo","args":[{"point":[730,600]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[730,603],"end":[728.5,605.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[727,608],"end":[724,609]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[715,615],"end":[705.5,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[696,623],"end":[686,625]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[675,628],"end":[664.5,629.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[654,631],"end":[643,631]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[614,631],"end":[590.5,623]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[567,615],"end":[549,599]}]}]},{"tag":"LineTo","args":[{"point":[549,599]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[549,599],"end":[549,599]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[549,599],"end":[549,599]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[532,583],"end":[523.5,561]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[515,539],"end":[515,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[515,485],"end":[523.5,463]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[532,441],"end":[549,425]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[567,409],"end":[590.5,401]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[614,393],"end":[643,393]}]}]}]},{"start":[643,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[617,416],"end":[597.5,422.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[578,429],"end":[565,441]}]}]},{"tag":"LineTo","args":[{"point":[565,441]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[565,441],"end":[565,441]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[565,441],"end":[565,441]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[551,454],"end":[544,471.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[537,489],"end":[537,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[537,535],"end":[544,552.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[551,570],"end":[565,583]}]}]},{"tag":"LineTo","args":[{"point":[565,583]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[578,595],"end":[597.5,601.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[617,608],"end":[643,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[653,608],"end":[662,607]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[671,606],"end":[680,604]}]}]},{"tag":"LineTo","args":[{"point":[680,604]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,604],"end":[680,604]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,604],"end":[680,604]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,604],"end":[680,604]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,604],"end":[680,604]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[687,602],"end":[694,599]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[701,596],"end":[708,592]}]}]},{"tag":"LineTo","args":[{"point":[708,589]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[703,592],"end":[698,595.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[693,599],"end":[688,601]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[677,604],"end":[666.5,606]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[656,608],"end":[645,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[623,608],"end":[605,601.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[587,595],"end":[574,583]}]}]},{"tag":"LineTo","args":[{"point":[574,583]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[574,583],"end":[574,583]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[574,583],"end":[574,583]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[561,570],"end":[555,552]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[549,534],"end":[549,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[549,490],"end":[555,472]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[561,454],"end":[574,441]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[587,429],"end":[605,422.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[623,416],"end":[645,416]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[656,416],"end":[666.5,418]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[677,420],"end":[688,423]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[693,425],"end":[698,428.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[703,432],"end":[708,435]}]}]},{"tag":"LineTo","args":[{"point":[708,431]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[701,428],"end":[694.5,425]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,422],"end":[680,420]}]}]},{"tag":"LineTo","args":[{"point":[680,420]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,420],"end":[680,420]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,420],"end":[680,420]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[671,418],"end":[662,417]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[653,416],"end":[643,416]}]}]}]},{"start":[635,608],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[649,609],"end":[661.5,607.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[674,606],"end":[685,602]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[689,601],"end":[692.5,599.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[696,598],"end":[701,595]}]}]},{"tag":"LineTo","args":[{"point":[707,592]}]},{"tag":"LineTo","args":[{"point":[707,591]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[707,590],"end":[706.5,590]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[706,590],"end":[702,593]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[695,597],"end":[692,598.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[689,600],"end":[684,602]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[677,604],"end":[669.5,605.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[662,607],"end":[655,607]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[651,608],"end":[644,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[637,608],"end":[634,607]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[622,607],"end":[612,604]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[602,601],"end":[594,597]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[578,589],"end":[567.5,575.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[557,562],"end":[552,543]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[549,529],"end":[549,511.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[549,494],"end":[552,480]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[555,470],"end":[559.5,461.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[564,453],"end":[570,446]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[572,443],"end":[575.5,440]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[579,437],"end":[581,435]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[593,426],"end":[607,421.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[621,417],"end":[639,416]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[650,416],"end":[661,417.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,419],"end":[683,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,423],"end":[691.5,425]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[695,427],"end":[701,431]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[703,432],"end":[704.5,433]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[706,434],"end":[707,434]}]}]},{"tag":"LineTo","args":[{"point":[707,435]}]},{"tag":"LineTo","args":[{"point":[707,431]}]},{"tag":"LineTo","args":[{"point":[702,429]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[700,428],"end":[697.5,427]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[695,426],"end":[694,425]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[686,422],"end":[676.5,419.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[667,417],"end":[656,416]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,416],"end":[643,416]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[634,416],"end":[630,416]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[612,418],"end":[599.5,422]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[587,426],"end":[576,433]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[572,435],"end":[569,437.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[566,440],"end":[563,443]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[557,449],"end":[553.5,454]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[550,459],"end":[547,465]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[542,475],"end":[539.5,486.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[537,498],"end":[537,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[537,522],"end":[538,530.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[539,539],"end":[542,547]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[545,557],"end":[550,565]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[555,573],"end":[562,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[575,593],"end":[593.5,600]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[612,607],"end":[635,608]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"copyline-down","codePoint":59916},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":968,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[285,726],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[285,726]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[285,726],"end":[285.5,726]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[286,726],"end":[286,726]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[291,726],"end":[295.5,728]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[300,730],"end":[304,733]}]}]},{"tag":"LineTo","args":[{"point":[408,837]}]},{"tag":"LineTo","args":[{"point":[512,733]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[515,730],"end":[520,728]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[525,726],"end":[530,726]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[541,726],"end":[548.5,733.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[556,741],"end":[556,751]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[556,757],"end":[553.5,761.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[551,766],"end":[548,770]}]}]},{"tag":"LineTo","args":[{"point":[426,892]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[422,895],"end":[417.5,897]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[413,899],"end":[408,899]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[402,899],"end":[397.5,897]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[393,895],"end":[390,892]}]}]},{"tag":"LineTo","args":[{"point":[268,770]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[264,766],"end":[262,761.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[260,757],"end":[260,751]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[260,741],"end":[267.5,733.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[275,726],"end":[285,726]}]}]}]},{"start":[407,131],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[407,131],"end":[407.5,131]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[408,131],"end":[408,131]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[419,131],"end":[427.5,139]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,147],"end":[436,159]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,159],"end":[436,159]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,159],"end":[436,159]}]}]},{"tag":"LineTo","args":[{"point":[436,837]}]},{"tag":"LineTo","args":[{"point":[436,837]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,837],"end":[436,837.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,838],"end":[436,838]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,849],"end":[427.5,857.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[419,866],"end":[408,866]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[396,866],"end":[388,857.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,849],"end":[380,838]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,838],"end":[380,837.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,837],"end":[380,837]}]}]},{"tag":"LineTo","args":[{"point":[380,159]}]},{"tag":"LineTo","args":[{"point":[380,159]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,159],"end":[380,159]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,159],"end":[380,159]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[380,147],"end":[388,139]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[396,131],"end":[407,131]}]}]}]},{"start":[643,393],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[654,393],"end":[665,394.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[676,396],"end":[686,399]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[686,399],"end":[686,399]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[686,399],"end":[686,399]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[696,401],"end":[705.5,405]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[715,409],"end":[724,415]}]}]},{"tag":"LineTo","args":[{"point":[724,415]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[727,416],"end":[728.5,418.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[730,421],"end":[730,424]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[730,424],"end":[730,424]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[730,424],"end":[730,424]}]}]},{"tag":"LineTo","args":[{"point":[730,454]}]},{"tag":"LineTo","args":[{"point":[730,454]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[730,458],"end":[726.5,461.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[723,465],"end":[719,465]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[717,465],"end":[715,464.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[713,464],"end":[712,462]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,456],"end":[696,451.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,447],"end":[680,444]}]}]},{"tag":"LineTo","args":[{"point":[680,444]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,444],"end":[680,444]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,444],"end":[680,444]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,442],"end":[663,440.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[654,439],"end":[645,439]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[625,439],"end":[612,443.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[599,448],"end":[590,457]}]}]},{"tag":"LineTo","args":[{"point":[590,457]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[590,457],"end":[590,457]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[590,457],"end":[590,457]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[581,466],"end":[576,479.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[571,493],"end":[571,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[571,531],"end":[575.5,544.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[580,558],"end":[590,567]}]}]},{"tag":"LineTo","args":[{"point":[590,567]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[599,576],"end":[612,580.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[625,585],"end":[645,585]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[654,585],"end":[663,583.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[672,582],"end":[680,580]}]}]},{"tag":"LineTo","args":[{"point":[680,580]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,580],"end":[680,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,580],"end":[680,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,577],"end":[696,572.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,568],"end":[712,562]}]}]},{"tag":"LineTo","args":[{"point":[712,562]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[713,560],"end":[715,559.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[717,559],"end":[719,559]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[723,559],"end":[726.5,562.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[730,566],"end":[730,570]}]}]},{"tag":"LineTo","args":[{"point":[730,600]}]},{"tag":"LineTo","args":[{"point":[730,600]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[730,603],"end":[728.5,605.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[727,608],"end":[724,609]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[715,615],"end":[705.5,619]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[696,623],"end":[686,625]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[675,628],"end":[664.5,629.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[654,631],"end":[643,631]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[614,631],"end":[590.5,623]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[567,615],"end":[549,599]}]}]},{"tag":"LineTo","args":[{"point":[549,599]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[549,599],"end":[549,599]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[549,599],"end":[549,599]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[532,583],"end":[523.5,561]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[515,539],"end":[515,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[515,485],"end":[523.5,463]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[532,441],"end":[549,425]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[567,409],"end":[590.5,401]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[614,393],"end":[643,393]}]}]}]},{"start":[643,416],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[617,416],"end":[597.5,422.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[578,429],"end":[565,441]}]}]},{"tag":"LineTo","args":[{"point":[565,441]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[565,441],"end":[565,441]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[565,441],"end":[565,441]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[551,454],"end":[544,471.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[537,489],"end":[537,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[537,535],"end":[544,552.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[551,570],"end":[565,583]}]}]},{"tag":"LineTo","args":[{"point":[565,583]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[578,595],"end":[597.5,601.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[617,608],"end":[643,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[653,608],"end":[662,607]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[671,606],"end":[680,604]}]}]},{"tag":"LineTo","args":[{"point":[680,604]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,604],"end":[680,604]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,604],"end":[680,604]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,604],"end":[680,604]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,604],"end":[680,604]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[687,602],"end":[694,599]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[701,596],"end":[708,592]}]}]},{"tag":"LineTo","args":[{"point":[708,589]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[703,592],"end":[698,595.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[693,599],"end":[688,601]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[677,604],"end":[666.5,606]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[656,608],"end":[645,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[623,608],"end":[605,601.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[587,595],"end":[574,583]}]}]},{"tag":"LineTo","args":[{"point":[574,583]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[574,583],"end":[574,583]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[574,583],"end":[574,583]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[561,570],"end":[555,552]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[549,534],"end":[549,512]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[549,490],"end":[555,472]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[561,454],"end":[574,441]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[587,429],"end":[605,422.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[623,416],"end":[645,416]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[656,416],"end":[666.5,418]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[677,420],"end":[688,423]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[693,425],"end":[698,428.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[703,432],"end":[708,435]}]}]},{"tag":"LineTo","args":[{"point":[708,431]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[701,428],"end":[694.5,425]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[688,422],"end":[680,420]}]}]},{"tag":"LineTo","args":[{"point":[680,420]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,420],"end":[680,420]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,420],"end":[680,420]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[671,418],"end":[662,417]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[653,416],"end":[643,416]}]}]}]},{"start":[637,608],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[653,609],"end":[666.5,607]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[680,605],"end":[691,600]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[694,599],"end":[698,597]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[702,595],"end":[705,594]}]}]},{"tag":"LineTo","args":[{"point":[707,592]}]},{"tag":"LineTo","args":[{"point":[707,591]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[707,590],"end":[707,590]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[707,590],"end":[707,590]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[707,590],"end":[705.5,591]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[704,592],"end":[702,593]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[695,597],"end":[692,598.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[689,600],"end":[684,602]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[679,603],"end":[673,604.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[667,606],"end":[662,607]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[657,607],"end":[654,607.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[651,608],"end":[644,608]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[637,608],"end":[633,607.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[629,607],"end":[623,606]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,602],"end":[577,585.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[559,569],"end":[552,543]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[549,531],"end":[548.5,516]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[548,501],"end":[551,488]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[553,474],"end":[559,462]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[565,450],"end":[574,441]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[585,431],"end":[599.5,424.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[614,418],"end":[633,417]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[637,416],"end":[645,416]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[653,416],"end":[657,417]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[665,418],"end":[673,419.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[681,421],"end":[688,423]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[690,424],"end":[693.5,426]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[697,428],"end":[700,430]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[701,431],"end":[703,432]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[705,433],"end":[705,433]}]}]},{"tag":"LineTo","args":[{"point":[707,435]}]},{"tag":"LineTo","args":[{"point":[707,431]}]},{"tag":"LineTo","args":[{"point":[702,429]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[695,425],"end":[690,423]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[685,421],"end":[678,420]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[673,418],"end":[668,417.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[663,417],"end":[656,416]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,416],"end":[641.5,416]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[631,416],"end":[627,416]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[614,418],"end":[604,420.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[594,423],"end":[584,428]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[573,434],"end":[563.5,443]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[554,452],"end":[548,463]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[544,471],"end":[541.5,479.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[539,488],"end":[538,500]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[537,503],"end":[537,511.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[537,520],"end":[537,523]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[539,542],"end":[545,555.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[551,569],"end":[562,580]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[576,594],"end":[594.5,601]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[613,608],"end":[637,608]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"acode","codePoint":59917},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[976,526],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[976,531],"end":[974.5,537.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[973,544],"end":[967,550]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[965,552],"end":[963,554]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[961,556],"end":[959,558]}]}]},{"tag":"LineTo","args":[{"point":[959,558]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[930,589],"end":[885.5,635]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[841,681],"end":[813,709]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[808,714],"end":[803,717]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[798,720],"end":[792,720]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[777,720],"end":[750,720]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[723,720],"end":[708,720]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[706,720],"end":[704,719.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[702,719],"end":[701,719]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[705,746],"end":[709.5,772]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[714,798],"end":[718,822]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[720,833],"end":[710,843.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[700,854],"end":[690,854]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[675,854],"end":[655,854]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[635,854],"end":[624,854]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[616,854],"end":[606.5,846.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[597,839],"end":[595,824]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[587,785],"end":[578,734]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[568,683],"end":[557,625.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[546,568],"end":[534,508]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[523,447],"end":[512,390]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[501,447],"end":[489,508]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,568],"end":[467,626]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[456,684],"end":[446,735]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[436,786],"end":[429,824]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[426,840],"end":[417,847.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[408,855],"end":[400,855]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[388,855],"end":[368.5,855]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[349,855],"end":[334,855]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[324,855],"end":[313.5,844.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[303,834],"end":[305,823]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[309,799],"end":[313.5,773]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[318,747],"end":[323,719]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[321,720],"end":[319,720.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[317,721],"end":[315,721]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[300,721],"end":[273.5,721]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[247,721],"end":[231,721]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[226,721],"end":[220.5,718]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[215,715],"end":[210,710]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[183,682],"end":[138,636]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[93,590],"end":[64,559]}]}]},{"tag":"LineTo","args":[{"point":[64,559]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[62,557],"end":[60,555]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[58,553],"end":[56,551]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[51,545],"end":[49,538.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[47,532],"end":[47,527]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[47,526],"end":[47.5,525]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[48,524],"end":[48,523]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[48,518],"end":[50,512.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[52,507],"end":[56,502]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[58,500],"end":[60,498]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[62,496],"end":[64,494]}]}]},{"tag":"LineTo","args":[{"point":[64,494]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[93,463],"end":[138,417]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[183,371],"end":[210,343]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[215,338],"end":[220.5,335]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[226,332],"end":[231,332]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[247,332],"end":[273.5,332]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[300,332],"end":[315,332]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[324,332],"end":[332,338.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[340,345],"end":[343,352]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[347,362],"end":[346,374]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[345,386],"end":[337,395]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[314,418],"end":[264.5,469]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[215,520],"end":[209,526]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[215,533],"end":[262.5,582]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[310,631],"end":[334,656]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[345,595],"end":[355,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[366,471],"end":[376,412]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[386,353],"end":[395,299]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[404,246],"end":[411,203]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[413,191],"end":[422.5,181]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[432,171],"end":[441,171]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[452,171],"end":[468.5,171]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[485,171],"end":[500,171]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[501,170],"end":[502.5,170]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[504,170],"end":[506,170]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[520,170],"end":[544,170]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[568,170],"end":[583,170]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[592,170],"end":[601,180]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[610,190],"end":[612,202]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[620,245],"end":[629,298]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[638,352],"end":[648,410.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[658,469],"end":[669,532]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[679,594],"end":[690,654]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[714,630],"end":[761,581]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[808,532],"end":[814,525]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[808,519],"end":[759,468]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[710,417],"end":[687,394]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[678,385],"end":[677.5,373]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[677,361],"end":[681,351]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[683,344],"end":[691,337.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[699,331],"end":[708,331]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[723,331],"end":[750,331]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[777,331],"end":[792,331]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[798,331],"end":[803,334]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[808,337],"end":[813,342]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[841,370],"end":[885.5,416]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[930,462],"end":[959,493]}]}]},{"tag":"LineTo","args":[{"point":[959,493]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[961,495],"end":[963,497]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[965,499],"end":[967,501]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[972,506],"end":[973.5,511.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[975,517],"end":[976,522]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[976,523],"end":[976,524]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[976,525],"end":[976,526]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"patreon","codePoint":59919},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[799,51],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[799,51]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[866,80],"end":[916,130.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[966,181],"end":[995,248]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,315],"end":[1024,391]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,467],"end":[995,534]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[966,601],"end":[916,651]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[866,701],"end":[799,730]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[732,758],"end":[656,758]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[580,758],"end":[513,730]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[446,701],"end":[396,651]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[346,601],"end":[317,534]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[288,467],"end":[288,391]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[288,315],"end":[317,248]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[346,181],"end":[396,130.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[446,80],"end":[513,51]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[580,22],"end":[656,22]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[732,22],"end":[799,51]}]}]}]},{"start":[0,22],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[180,22]}]},{"tag":"LineTo","args":[{"point":[180,1004]}]},{"tag":"LineTo","args":[{"point":[0,1004]}]},{"tag":"LineTo","args":[{"point":[0,22]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"paypal","codePoint":59920},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[295,1024],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[295,1023]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[316,1023],"end":[334.5,1008.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[353,994],"end":[358,973]}]}]},{"tag":"LineTo","args":[{"point":[403,777]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[408,756],"end":[427,741]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[446,726],"end":[467,726]}]}]},{"tag":"LineTo","args":[{"point":[505,726]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[566,726],"end":[619,720]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[673,714],"end":[720.5,701.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[768,689],"end":[808,670]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[848,652],"end":[882,627]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[950,577],"end":[983.5,511.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1017,446],"end":[1017,365]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1017,330],"end":[1010.5,300]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1004,270],"end":[992,246]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[979,222],"end":[961,203]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[943,184],"end":[919,169]}]}]},{"tag":"LineTo","args":[{"point":[913,166]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[913,166],"end":[913,166.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[913,167],"end":[913,168]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[926,191],"end":[932.5,221]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[939,251],"end":[939,287]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[939,368],"end":[905,433]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[871,498],"end":[804,548]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[770,573],"end":[730,592]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[689,611],"end":[642,623.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[595,636],"end":[541,642]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[487,648],"end":[427,648]}]}]},{"tag":"LineTo","args":[{"point":[389,648]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[368,648],"end":[349.5,663]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[331,678],"end":[326,699]}]}]},{"tag":"LineTo","args":[{"point":[280,894]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[276,915],"end":[257,930]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[238,945],"end":[217,945]}]}]},{"tag":"LineTo","args":[{"point":[129,945]}]},{"tag":"LineTo","args":[{"point":[122,974]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[118,994],"end":[129.5,1009]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[141,1024],"end":[162,1024]}]}]},{"tag":"LineTo","args":[{"point":[295,1024]}]}]},{"start":[181,909],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[180,907]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[201,907],"end":[219.5,892.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[238,878],"end":[243,857]}]}]},{"tag":"LineTo","args":[{"point":[288,662]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[293,641],"end":[311.5,626.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[330,612],"end":[352,612]}]}]},{"tag":"LineTo","args":[{"point":[389,612]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[450,612],"end":[504,606]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[557,600],"end":[604.5,587.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[652,575],"end":[692,556]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[733,538],"end":[766,513]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[834,463],"end":[867.5,398]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[901,333],"end":[901,251]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[901,216],"end":[895,186]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[889,156],"end":[876,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[864,108],"end":[845.5,88.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[827,69],"end":[804,55]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[779,39],"end":[750.5,28.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[722,18],"end":[689,12]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[656,6],"end":[617,3]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[578,0],"end":[534,0]}]}]},{"tag":"LineTo","args":[{"point":[258,0]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[237,0],"end":[218.5,15]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[200,30],"end":[195,50]}]}]},{"tag":"LineTo","args":[{"point":[8,859]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[3,879],"end":[15,894]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[27,909],"end":[48,909]}]}]},{"tag":"LineTo","args":[{"point":[181,909]}]}]},{"start":[498,168],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[497,168]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[535,168],"end":[564,174.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[593,181],"end":[612,194]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[631,206],"end":[640.5,226]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[650,246],"end":[650,272]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[650,312],"end":[635.5,343.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[621,375],"end":[591,396]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[561,418],"end":[519.5,429]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[478,440],"end":[424,440]}]}]},{"tag":"LineTo","args":[{"point":[392,440]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[371,440],"end":[359,425]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[347,410],"end":[352,390]}]}]},{"tag":"LineTo","args":[{"point":[392,218]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[397,197],"end":[415.5,182.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[434,168],"end":[455,168]}]}]},{"tag":"LineTo","args":[{"point":[498,168]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"ruby","codePoint":59921},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[860,4],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[860,3]}]},{"tag":"LineTo","args":[{"point":[704,90]}]},{"tag":"LineTo","args":[{"point":[974,310]}]},{"tag":"LineTo","args":[{"point":[1000,332]}]},{"tag":"LineTo","args":[{"point":[624,356]}]},{"tag":"LineTo","args":[{"point":[666,523]}]},{"tag":"LineTo","args":[{"point":[726,755]}]},{"tag":"LineTo","args":[{"point":[331,628]}]},{"tag":"LineTo","args":[{"point":[330,630]}]},{"tag":"LineTo","args":[{"point":[332,629]}]},{"tag":"LineTo","args":[{"point":[212,1020]}]},{"tag":"LineTo","args":[{"point":[70,689]}]},{"tag":"LineTo","args":[{"point":[0,817]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[2,890],"end":[27,931]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[51,971],"end":[83.5,991]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[116,1011],"end":[151,1015]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[186,1020],"end":[209,1021]}]}]},{"tag":"LineTo","args":[{"point":[966,969]}]},{"tag":"LineTo","args":[{"point":[1024,206]}]},{"tag":"LineTo","args":[{"point":[1023,207]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1025,138],"end":[991,79]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[957,20],"end":[860,4]}]}]}]},{"start":[219,216],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[219,217]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[162,273],"end":[120,335]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[78,396],"end":[56.5,452.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[35,509],"end":[36,557]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[36,604],"end":[65,633]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[93,661],"end":[141,659]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[189,658],"end":[246.5,633]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[304,608],"end":[366,564]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[428,520],"end":[486,464]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[543,407],"end":[585,347]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[627,286],"end":[649,230]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[671,174],"end":[671,128]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[670,81],"end":[642,53]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[614,24],"end":[566,25]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[517,26],"end":[459,49.5]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[401,73],"end":[339,117]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[276,160],"end":[219,216]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"font_download","codePoint":59922},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[632,683],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[392,683]}]},{"tag":"LineTo","args":[{"point":[344,811]}]},{"tag":"LineTo","args":[{"point":[254,811]}]},{"tag":"LineTo","args":[{"point":[472,255]}]},{"tag":"LineTo","args":[{"point":[552,255]}]},{"tag":"LineTo","args":[{"point":[770,811]}]},{"tag":"LineTo","args":[{"point":[680,811]}]},{"tag":"LineTo","args":[{"point":[632,683]}]}]},{"start":[170,107],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,107],"end":[111,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,157],"end":[86,191]}]}]},{"tag":"LineTo","args":[{"point":[86,875]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,909],"end":[111,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[136,959],"end":[170,959]}]}]},{"tag":"LineTo","args":[{"point":[854,959]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,959],"end":[913,934]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,909],"end":[938,875]}]}]},{"tag":"LineTo","args":[{"point":[938,191]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,157],"end":[913,132]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[888,107],"end":[854,107]}]}]},{"tag":"LineTo","args":[{"point":[170,107]}]}]},{"start":[600,597],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,361]}]},{"tag":"LineTo","args":[{"point":[424,597]}]},{"tag":"LineTo","args":[{"point":[600,597]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"notes","codePoint":59923},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[896,575],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[896,491]}]},{"tag":"LineTo","args":[{"point":[128,491]}]},{"tag":"LineTo","args":[{"point":[128,575]}]},{"tag":"LineTo","args":[{"point":[896,575]}]}]},{"start":[128,363],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[896,363]}]},{"tag":"LineTo","args":[{"point":[896,277]}]},{"tag":"LineTo","args":[{"point":[128,277]}]},{"tag":"LineTo","args":[{"point":[128,363]}]}]},{"start":[640,789],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[640,703]}]},{"tag":"LineTo","args":[{"point":[128,703]}]},{"tag":"LineTo","args":[{"point":[128,789]}]},{"tag":"LineTo","args":[{"point":[640,789]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"http","codePoint":59924},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[832,511],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[832,469]}]},{"tag":"LineTo","args":[{"point":[918,469]}]},{"tag":"LineTo","args":[{"point":[918,511]}]},{"tag":"LineTo","args":[{"point":[832,511]}]}]},{"start":[768,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[768,661]}]},{"tag":"LineTo","args":[{"point":[832,661]}]},{"tag":"LineTo","args":[{"point":[832,575]}]},{"tag":"LineTo","args":[{"point":[918,575]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[944,575],"end":[963,556]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[982,537],"end":[982,511]}]}]},{"tag":"LineTo","args":[{"point":[982,469]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[982,443],"end":[963,424]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[944,405],"end":[918,405]}]}]},{"tag":"LineTo","args":[{"point":[768,405]}]}]},{"start":[598,469],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[598,661]}]},{"tag":"LineTo","args":[{"point":[662,661]}]},{"tag":"LineTo","args":[{"point":[662,469]}]},{"tag":"LineTo","args":[{"point":[726,469]}]},{"tag":"LineTo","args":[{"point":[726,405]}]},{"tag":"LineTo","args":[{"point":[534,405]}]},{"tag":"LineTo","args":[{"point":[534,469]}]},{"tag":"LineTo","args":[{"point":[598,469]}]}]},{"start":[362,469],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[362,661]}]},{"tag":"LineTo","args":[{"point":[426,661]}]},{"tag":"LineTo","args":[{"point":[426,469]}]},{"tag":"LineTo","args":[{"point":[490,469]}]},{"tag":"LineTo","args":[{"point":[490,405]}]},{"tag":"LineTo","args":[{"point":[298,405]}]},{"tag":"LineTo","args":[{"point":[298,469]}]},{"tag":"LineTo","args":[{"point":[362,469]}]}]},{"start":[106,491],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[106,405]}]},{"tag":"LineTo","args":[{"point":[42,405]}]},{"tag":"LineTo","args":[{"point":[42,661]}]},{"tag":"LineTo","args":[{"point":[106,661]}]},{"tag":"LineTo","args":[{"point":[106,555]}]},{"tag":"LineTo","args":[{"point":[192,555]}]},{"tag":"LineTo","args":[{"point":[192,661]}]},{"tag":"LineTo","args":[{"point":[256,661]}]},{"tag":"LineTo","args":[{"point":[256,405]}]},{"tag":"LineTo","args":[{"point":[192,405]}]},{"tag":"LineTo","args":[{"point":[192,491]}]},{"tag":"LineTo","args":[{"point":[106,491]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"compare_arrows","codePoint":59925},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[640,447],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[938,447]}]},{"tag":"LineTo","args":[{"point":[938,363]}]},{"tag":"LineTo","args":[{"point":[640,363]}]},{"tag":"LineTo","args":[{"point":[640,235]}]},{"tag":"LineTo","args":[{"point":[470,405]}]},{"tag":"LineTo","args":[{"point":[640,575]}]},{"tag":"LineTo","args":[{"point":[640,447]}]}]},{"start":[86,619],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[86,703]}]},{"tag":"LineTo","args":[{"point":[384,703]}]},{"tag":"LineTo","args":[{"point":[384,831]}]},{"tag":"LineTo","args":[{"point":[554,661]}]},{"tag":"LineTo","args":[{"point":[384,491]}]},{"tag":"LineTo","args":[{"point":[384,619]}]},{"tag":"LineTo","args":[{"point":[86,619]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"home_filled","codePoint":59926},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[170,405],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[170,917]}]},{"tag":"LineTo","args":[{"point":[384,917]}]},{"tag":"LineTo","args":[{"point":[384,619]}]},{"tag":"LineTo","args":[{"point":[640,619]}]},{"tag":"LineTo","args":[{"point":[640,917]}]},{"tag":"LineTo","args":[{"point":[854,917]}]},{"tag":"LineTo","args":[{"point":[854,405]}]},{"tag":"LineTo","args":[{"point":[512,149]}]},{"tag":"LineTo","args":[{"point":[170,405]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"height","codePoint":59927},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[682,319],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[512,149]}]},{"tag":"LineTo","args":[{"point":[342,319]}]},{"tag":"LineTo","args":[{"point":[470,319]}]},{"tag":"LineTo","args":[{"point":[470,747]}]},{"tag":"LineTo","args":[{"point":[342,747]}]},{"tag":"LineTo","args":[{"point":[512,917]}]},{"tag":"LineTo","args":[{"point":[682,747]}]},{"tag":"LineTo","args":[{"point":[554,747]}]},{"tag":"LineTo","args":[{"point":[554,319]}]},{"tag":"LineTo","args":[{"point":[682,319]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}},{"extras":{"name":"all_inclusive","codePoint":59928},"node":{"tag":"Element","args":[{"tagName":"svg","attributes":{"viewBox":{"tag":"Value","args":[{"tag":"ViewBox","args":[{"minX":0,"minY":0,"width":1024,"height":1024}]}]}},"children":[{"tag":"Element","args":[{"tagName":"path","attributes":{"d":{"tag":"Value","args":[{"tag":"Paths","args":[[{"start":[632,369],"endings":{"tag":"Connected","args":[]},"cmds":[{"tag":"LineTo","args":[{"point":[632,369]}]},{"tag":"LineTo","args":[{"point":[512,475]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[474,511],"end":[332,635]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,677],"end":[230,677]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,677],"end":[128,635]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,593],"end":[86,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[86,473],"end":[128,431]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[170,389],"end":[230,389]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[290,389],"end":[334,433]}]}]},{"tag":"LineTo","args":[{"point":[382,475]}]},{"tag":"LineTo","args":[{"point":[448,419]}]},{"tag":"LineTo","args":[{"point":[394,371]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[366,343],"end":[319,323]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[272,303],"end":[232,303]}]}]},{"tag":"LineTo","args":[{"point":[230,303]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[134,303],"end":[67,371]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,439],"end":[0,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[0,627],"end":[67,695]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[134,763],"end":[230,763]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[326,763],"end":[392,697]}]}]},{"tag":"LineTo","args":[{"point":[512,591]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[550,555],"end":[692,431]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[734,389],"end":[794,389]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,389],"end":[896,431]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,473],"end":[938,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[938,593],"end":[896,635]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[854,677],"end":[794,677]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[734,677],"end":[690,633]}]}]},{"tag":"LineTo","args":[{"point":[640,591]}]},{"tag":"LineTo","args":[{"point":[576,647]}]},{"tag":"LineTo","args":[{"point":[630,695]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[660,723],"end":[707,743]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[754,763],"end":[792,763]}]}]},{"tag":"LineTo","args":[{"point":[794,763]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[890,763],"end":[957,695]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,627],"end":[1024,533]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[1024,439],"end":[957,371]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[890,303],"end":[794,303]}]}]},{"tag":"BezierCurveTo","args":[{"tag":"QParams","args":[{"c":[698,303],"end":[632,369]}]}]}]}]]}]},"fill":{"tag":"Value","args":[{"tag":"Paint","args":[{"tag":"CurrentColor","args":[]}]}]}},"children":[]}]}]}]},"palettes":{"index":0,"table":[[{"background":{"tag":"AutomaticColor","args":[]},"foreground":{"tag":"AutomaticColor","args":[]}},[]]]}}]} \ No newline at end of file diff --git a/utils/custom-loaders/html-tag-jsx-loader.js b/utils/custom-loaders/html-tag-jsx-loader.js new file mode 100644 index 000000000..e51b96a6f --- /dev/null +++ b/utils/custom-loaders/html-tag-jsx-loader.js @@ -0,0 +1,330 @@ +/** + * Custom loader that transforms JSX to html-tag-js tag() calls + * This uses Babel's parser/transformer but is lighter than full babel-loader + */ +const { parse } = require("@babel/parser"); +const traverse = require("@babel/traverse").default; +const generate = require("@babel/generator").default; +const t = require("@babel/types"); + +module.exports = function htmlTagJsxLoader(source) { + const callback = this.async(); + + // Enable caching for this loader + this.cacheable && this.cacheable(); + + try { + // Debug logging - verify loader is running + // console.log(`🔧 Custom JSX loader processing: ${this.resourcePath}\n`); + + // Determine file type from extension + const isTypeScript = /\.tsx?$/.test(this.resourcePath); + + // Quick check: if no JSX syntax at all, pass through unchanged + // Look for complete JSX opening tags with proper spacing + const hasJSXLike = + /<\/?[A-Z][a-zA-Z0-9]*[^>]*>|<\/?[a-z][a-z0-9-]*[^>]*>/.test(source); + + if (!hasJSXLike) { + return callback(null, source); + } + + // Parse with appropriate plugins + const parserPlugins = ["jsx"]; + if (isTypeScript) { + parserPlugins.push("typescript"); + } + + const ast = parse(source, { + sourceType: "module", + plugins: parserPlugins, + }); + + // Track if we need to add the import + let needsTagImport = false; + let hasJSX = false; + const hasExistingImport = + /import\s+(?:\{[^}]*\btag\b[^}]*\}|tag(?:\s+as\s+\w+)?)\s+from\s+['"]html-tag-js['"]/.test( + source, + ) || + /(?:const|let|var)\s+(?:\{[^}]*\btag\b[^}]*\}|tag)\s*=\s*require\s*\(\s*['"]html-tag-js['"]\s*\)/.test( + source, + ); + + // Transform JSX elements + traverse(ast, { + JSXFragment(path) { + hasJSX = true; + needsTagImport = true; + const { node } = path; + const { children: childrenNode } = node; + + const children = []; + populateChildren(childrenNode, children, t); + const arrayExpression = t.arrayExpression(children); + path.replaceWith(arrayExpression); + }, + + JSXElement(path) { + hasJSX = true; + needsTagImport = true; + const { node } = path; + const { openingElement: el, children: childrenNode } = node; + + let { name: tagName } = el.name; + const { attributes } = el; + + let id; + let className; + const on = []; + const args = []; + const attrs = []; + const children = []; + const options = []; + const events = {}; + let isComponent = + /^(?:[A-Z][a-zA-Z0-9_$]*|(?:[a-zA-Z_$][a-zA-Z0-9_$]*\.)+[a-zA-Z_$][a-zA-Z0-9_$]*)$/.test( + tagName, + ); + + if (el.name.type === "JSXMemberExpression") { + const { object, property } = el.name; + tagName = `${object.name}.${property.name}`; + isComponent = true; + } + + populateChildren(childrenNode, children, t); + + for (const attr of attributes) { + if (attr.type === "JSXSpreadAttribute") { + if (isComponent) { + attrs.push(t.spreadElement(attr.argument)); + } else { + options.push(t.spreadElement(attr.argument)); + } + continue; + } + + let { name, namespace } = attr.name; + + if (!isComponent) { + if (name === "id") { + if (attr.value && attr.value.type === "StringLiteral") { + id = attr.value; + } else if ( + attr.value && + attr.value.type === "JSXExpressionContainer" + ) { + id = attr.value.expression; + } + continue; + } + + if (["class", "className"].includes(name)) { + if (attr.value && attr.value.type === "StringLiteral") { + className = attr.value; + } else if ( + attr.value && + attr.value.type === "JSXExpressionContainer" + ) { + className = attr.value.expression; + } + continue; + } + } + + if (namespace) { + namespace = namespace.name; + name = name.name; + } + + if (!attr.value) { + attrs.push( + t.objectProperty(t.stringLiteral(name), t.stringLiteral("")), + ); + continue; + } + + const { type } = attr.value; + const isAttr = /-/.test(name); + let value; + + if (type === "StringLiteral") { + value = attr.value; + } else { + value = attr.value.expression; + } + + if (namespace) { + if (!["on", "once", "off"].includes(namespace)) { + attrs.push( + t.objectProperty( + t.stringLiteral( + namespace === "attr" ? name : `${namespace}:${name}`, + ), + value, + ), + ); + continue; + } + + if (namespace === "off") continue; + + if (!events[name]) { + events[name] = []; + on.push( + t.objectProperty( + t.stringLiteral(name), + t.arrayExpression(events[name]), + ), + ); + } + + events[name].push(value); + continue; + } + + if (isAttr) { + const attrRegex = /^attr-(.+)/; + if (attrRegex.test(name)) { + [, name] = attrRegex.exec(name); + } + + attrs.push(t.objectProperty(t.stringLiteral(name), value)); + continue; + } + + (isComponent ? attrs : options).unshift( + t.objectProperty(t.identifier(name), value), + ); + } + + if (isComponent) { + args.push(t.identifier(tagName)); + + if (on.length > 0) { + attrs.push( + t.objectProperty(t.identifier("on"), t.objectExpression(on)), + ); + } + + if (attrs.length > 0) { + args.push(t.objectExpression(attrs)); + } + + if (children.length > 0) { + args.push(t.arrayExpression(children)); + } + } else { + args.push(t.stringLiteral(tagName)); + + if (on.length > 0) { + options.push( + t.objectProperty(t.identifier("on"), t.objectExpression(on)), + ); + } + + if (attrs.length > 0) { + options.push( + t.objectProperty(t.identifier("attr"), t.objectExpression(attrs)), + ); + } + + if (id || className) { + if (className) { + args.push(className); + } else { + args.push(t.nullLiteral()); + } + + if (id) { + args.push(id); + } else if (className) { + // Push null for id when we have className but no id + args.push(t.nullLiteral()); + } + } + + if (children.length) { + args.push(t.arrayExpression(children)); + } + + if (options.length) { + args.push(t.objectExpression(options)); + } + } + + const identifier = t.identifier("tag"); + const callExpression = t.callExpression(identifier, args); + path.replaceWith(callExpression); + }, + }); + + // If no JSX was found, return original source + if (!hasJSX) { + return callback(null, source); + } + + // Generate the transformed code + const output = generate( + ast, + { + sourceMaps: true, + sourceFileName: this.resourcePath, + retainLines: false, + compact: false, + }, + source, + ); + + // Add import if needed + if (needsTagImport && !hasExistingImport) { + output.code = `import tag from 'html-tag-js';\n${output.code}`; + } + + callback(null, output.code, output.map); + } catch (error) { + const errorMessage = `html-tag-jsx-loader failed to process ${this.resourcePath}: ${error.message}`; + const enhancedError = new Error(errorMessage); + enhancedError.stack = error.stack; + callback(enhancedError); + } +}; + +/** + * Parse node to expression + */ +function parseNode(types, node) { + const { type } = node; + if (type === "JSXText") { + const trimmed = node.value.trim(); + if (!trimmed) return null; + // Preserve original text if it contains non-whitespace + // This maintains intentional spacing like "Hello " in Hello + return types.stringLiteral(node.value); + } + + if (type === "JSXElement") { + return node; + } + + const { expression } = node; + const invalidExpressions = ["JSXEmptyExpression"]; + + if (invalidExpressions.includes(expression.type)) { + return null; + } + + return expression; +} + +/** + * Populate children + */ +function populateChildren(childrenNode, children, t) { + for (let node of childrenNode) { + node = parseNode(t, node); + if (!node) continue; + children.push(node); + } +} diff --git a/utils/extra-icons/cart.svg b/utils/extra-icons/cart.svg deleted file mode 100644 index fedbbae04..000000000 --- a/utils/extra-icons/cart.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/utils/extra-icons/scale.svg b/utils/extra-icons/scale.svg deleted file mode 100644 index a7e36e3a7..000000000 --- a/utils/extra-icons/scale.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/utils/extra-icons/tag.svg b/utils/extra-icons/tag.svg deleted file mode 100644 index 9cb591135..000000000 --- a/utils/extra-icons/tag.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/utils/extra-icons/terminal.svg b/utils/extra-icons/terminal.svg deleted file mode 100644 index 013dda9be..000000000 --- a/utils/extra-icons/terminal.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/utils/extra-icons/verified.svg b/utils/extra-icons/verified.svg deleted file mode 100644 index 3387f4aae..000000000 --- a/utils/extra-icons/verified.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/utils/extra-icons/zap.svg b/utils/extra-icons/zap.svg deleted file mode 100644 index dd5ea1fc5..000000000 --- a/utils/extra-icons/zap.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/utils/scripts/build.sh b/utils/scripts/build.sh index 7b7e73b8f..ea5834040 100644 --- a/utils/scripts/build.sh +++ b/utils/scripts/build.sh @@ -80,7 +80,7 @@ RED='' NC='' script1="node ./utils/config.js $mode $app" -script2="webpack --progress --mode $webpackmode " +script2="rspack --mode $webpackmode" # script3="node ./utils/loadStyles.js" echo "type : $packageType" diff --git a/utils/scripts/start.sh b/utils/scripts/start.sh index 9418aa48a..fd9cb5ecb 100644 --- a/utils/scripts/start.sh +++ b/utils/scripts/start.sh @@ -30,7 +30,7 @@ fi RED='' NC='' script1="node ./utils/config.js $mode $app" -script2="webpack --progress --mode $webpackmode " +script2="rspack --mode $webpackmode" # script3="node ./utils/loadStyles.js" script4="cordova run $platform $cordovamode" eval " @@ -42,4 +42,4 @@ $script2&& # $script3; echo \"${RED}$script4${NC}\"; $script4 -" \ No newline at end of file +" diff --git a/webpack.config.js b/webpack.config.js index 29c42385d..f66bc6e3a 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -7,6 +7,25 @@ const WWW = path.resolve(__dirname, 'www'); module.exports = (env, options) => { const { mode = 'development' } = options; const rules = [ + { + test: /\.tsx?$/, + exclude: /node_modules/, + use: [ + 'html-tag-js/jsx/tag-loader.js', + { + loader: 'babel-loader', + options: { + presets: ['@babel/preset-env', '@babel/preset-typescript'], + }, + }, + { + loader: 'ts-loader', + options: { + transpileOnly: true, // Skip type checking for faster builds + }, + }, + ], + }, { test: /\.(hbs|md)$/, use: ['raw-loader'], @@ -39,6 +58,7 @@ module.exports = (env, options) => { // if (mode === 'production') { rules.push({ test: /\.m?js$/, + exclude: /node_modules\/(@codemirror|codemirror|marked)/, // Exclude CodeMirror and marked files from html-tag-js loader use: [ 'html-tag-js/jsx/tag-loader.js', { @@ -49,6 +69,34 @@ module.exports = (env, options) => { }, ], }); + + // Separate rule for CodeMirror files - only babel-loader, no html-tag-js + rules.push({ + test: /\.m?js$/, + include: /node_modules\/(@codemirror|codemirror)/, + use: [ + { + loader: 'babel-loader', + options: { + presets: ['@babel/preset-env'], + }, + }, + ], + }); + + // Separate rule for CodeMirror files - only babel-loader, no html-tag-js + rules.push({ + test: /\.m?js$/, + include: /node_modules\/(@codemirror|codemirror)/, + use: [ + { + loader: 'babel-loader', + options: { + presets: ['@babel/preset-env'], + }, + }, + ], + }); // } const main = { @@ -56,6 +104,7 @@ module.exports = (env, options) => { entry: { main: './src/main.js', console: './src/lib/console.js', + searchInFilesWorker: './src/sidebarApps/searchInFiles/worker.js', }, output: { path: path.resolve(__dirname, 'www/build/'), @@ -69,6 +118,7 @@ module.exports = (env, options) => { rules, }, resolve: { + extensions: ['.ts', '.tsx', '.js', '.mjs', '.json'], fallback: { path: require.resolve('path-browserify'), crypto: false, @@ -83,4 +133,4 @@ module.exports = (env, options) => { }; return [main]; -}; \ No newline at end of file +}; diff --git a/www/index.html b/www/index.html index e305fb525..1523077bb 100644 --- a/www/index.html +++ b/www/index.html @@ -1,162 +1,126 @@ + + + + + + + + + + + + + + - if ( - this.classList.contains("editor-container") && - type.indexOf("touch") === 0 - ) { - if (!this.eventListeners) { - this.eventListeners = {}; - } - if (!this.eventListeners[type]) { - this.eventListeners[type] = []; + + + Acode + + + +
      +
      +
      +
      + + + + - - - - - - - - - - - - - - - - - - - - - - - - Acode - - - - - + updateSplash(); + new MutationObserver(updateSplash).observe(document.body, { + attributes: true, + attributeFilter: ["data-version", "data-small-msg"], + }); + }); + + diff --git a/www/js/ace/ace.js b/www/js/ace/ace.js deleted file mode 100644 index f30bc57ef..000000000 --- a/www/js/ace/ace.js +++ /dev/null @@ -1,23 +0,0 @@ -(function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE="",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules[e]||(t.payloads[e]=r,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(typeof t=="string"){var i=s(e,t);if(i!=undefined)return n&&n(),i}else if(Object.prototype.toString.call(t)==="[object Array]"){var o=[];for(var u=0,a=t.length;un.length)t=n.length;t-=e.length;var r=n.indexOf(e,t);return r!==-1&&r===t}),String.prototype.repeat||r(String.prototype,"repeat",function(e){var t="",n=this;while(e>0){e&1&&(t+=n);if(e>>=1)n+=n}return t}),String.prototype.includes||r(String.prototype,"includes",function(e,t){return this.indexOf(e,t)!=-1}),Object.assign||(Object.assign=function(e){if(e===undefined||e===null)throw new TypeError("Cannot convert undefined or null to object");var t=Object(e);for(var n=1;n>>0,r=arguments[1],i=r>>0,s=i<0?Math.max(n+i,0):Math.min(i,n),o=arguments[2],u=o===undefined?n:o>>0,a=u<0?Math.max(n+u,0):Math.min(u,n);while(s0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n65535?2:1}}),define("ace/lib/useragent",["require","exports","module"],function(e,t,n){"use strict";t.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS};var r=typeof navigator=="object"?navigator:{},i=(/mac|win|linux/i.exec(r.platform)||["other"])[0].toLowerCase(),s=r.userAgent||"",o=r.appName||"";t.isWin=i=="win",t.isMac=i=="mac",t.isLinux=i=="linux",t.isIE=o=="Microsoft Internet Explorer"||o.indexOf("MSAppHost")>=0?parseFloat((s.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((s.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=s.match(/ Gecko\/\d+/),t.isOpera=typeof opera=="object"&&Object.prototype.toString.call(window["opera"])=="[object Opera]",t.isWebKit=parseFloat(s.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(s.split(" Chrome/")[1])||undefined,t.isSafari=parseFloat(s.split(" Safari/")[1])&&!t.isChrome||undefined,t.isEdge=parseFloat(s.split(" Edge/")[1])||undefined,t.isAIR=s.indexOf("AdobeAIR")>=0,t.isAndroid=s.indexOf("Android")>=0,t.isChromeOS=s.indexOf(" CrOS ")>=0,t.isIOS=/iPad|iPhone|iPod/.test(s)&&!window.MSStream,t.isIOS&&(t.isMac=!0),t.isMobile=t.isIOS||t.isAndroid}),define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(e,t,n){"use strict";function u(){var e=o;o=null,e&&e.forEach(function(e){a(e[0],e[1])})}function a(e,n,r){if(typeof document=="undefined")return;if(o)if(r)u();else if(r===!1)return o.push([e,n]);if(s)return;var i=r;if(!r||!r.getRootNode)i=document;else{i=r.getRootNode();if(!i||i==r)i=document}var a=i.ownerDocument||i;if(n&&t.hasCssString(n,i))return null;n&&(e+="\n/*# sourceURL=ace/css/"+n+" */");var f=t.createElement("style");f.appendChild(a.createTextNode(e)),n&&(f.id=n),i==a&&(i=t.getDocumentHead(a)),i.insertBefore(f,i.firstChild)}var r=e("./useragent"),i="http://www.w3.org/1999/xhtml";t.buildDom=function l(e,t,n){if(typeof e=="string"&&e){var r=document.createTextNode(e);return t&&t.appendChild(r),r}if(!Array.isArray(e))return e&&e.appendChild&&t&&t.appendChild(e),e;if(typeof e[0]!="string"||!e[0]){var i=[];for(var s=0;s=1.5:!0,r.isChromeOS&&(t.HI_DPI=!1);if(typeof document!="undefined"){var f=document.createElement("div");t.HI_DPI&&f.style.transform!==undefined&&(t.HAS_CSS_TRANSFORMS=!0),!r.isEdge&&typeof f.style.animationName!="undefined"&&(t.HAS_CSS_ANIMATION=!0),f=null}t.HAS_CSS_TRANSFORMS?t.translate=function(e,t,n){e.style.transform="translate("+Math.round(t)+"px, "+Math.round(n)+"px)"}:t.translate=function(e,t,n){e.style.top=Math.round(n)+"px",e.style.left=Math.round(t)+"px"}}),define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o1&&(i=n[n.length-2]);var o=u[t+"Path"];return o==null?o=u.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return u.$moduleUrls[e]=t};var a=function(t,n){if(t==="ace/theme/textmate"||t==="./theme/textmate")return n(null,e("./theme/textmate"));if(f)return f(t,n);console.error("loader is not configured")},f;t.setLoader=function(e){f=e},t.dynamicModules=Object.create(null),t.$loading={},t.$loaded={},t.loadModule=function(e,n){var r;if(Array.isArray(e))var s=e[0],o=e[1];else if(typeof e=="string")var o=e;var u=function(e){if(e&&!t.$loading[o])return n&&n(e);t.$loading[o]||(t.$loading[o]=[]),t.$loading[o].push(n);if(t.$loading[o].length>1)return;var r=function(){a(o,function(e,n){n&&(t.$loaded[o]=n),t._emit("load.module",{name:o,module:n});var r=t.$loading[o];t.$loading[o]=null,r.forEach(function(e){e&&e(n)})})};if(!t.get("packaged"))return r();i.loadScript(t.moduleUrl(o,s),r),l()};if(t.dynamicModules[o])t.dynamicModules[o]().then(function(e){e.default?u(e.default):u(e)});else{try{r=this.$require(o)}catch(f){}u(r||t.$loaded[o])}},t.$require=function(e){if(typeof n["require"]=="function"){var t="require";return n[t](e)}},t.setModuleLoader=function(e,n){t.dynamicModules[e]=n};var l=function(){!u.basePath&&!u.workerPath&&!u.modePath&&!u.themePath&&!Object.keys(u.$moduleUrls).length&&(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),l=function(){})};t.version="1.43.2"}),define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"],function(e,t,n){"use strict";function s(t){if(!i||!i.document)return;r.set("packaged",t||e.packaged||n.packaged||i.define&&define.packaged);var s={},u="",a=document.currentScript||document._currentScript,f=a&&a.ownerDocument||document;a&&a.src&&(u=a.src.split(/[?#]/)[0].split("/").slice(0,-1).join("/")||"");var l=f.getElementsByTagName("script");for(var c=0;c ["+this.end.row+"/"+this.end.column+"]"},e.prototype.contains=function(e,t){return this.compare(e,t)==0},e.prototype.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},e.prototype.comparePoint=function(e){return this.compare(e.row,e.column)},e.prototype.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},e.prototype.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},e.prototype.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},e.prototype.isStart=function(e,t){return this.start.row==e&&this.start.column==t},e.prototype.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},e.prototype.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},e.prototype.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},e.prototype.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},e.prototype.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},e.prototype.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},e.prototype.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},e.prototype.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},e.prototype.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},e.prototype.clipRows=function(t,n){if(this.end.row>n)var r={row:n+1,column:0};else if(this.end.rown)var i={row:n+1,column:0};else if(this.start.row1?(u++,u>4&&(u=1)):u=1;if(i.isIE){var o=Math.abs(e.clientX-a)>5||Math.abs(e.clientY-f)>5;if(!l||o)u=1;l&&clearTimeout(l),l=setTimeout(function(){l=null},n[u-1]||600),u==1&&(a=e.clientX,f=e.clientY)}e._clicks=u,r[s]("mousedown",e);if(u>4)u=0;else if(u>1)return r[s](h[u],e)}var u=0,a,f,l,h={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){c(e,"mousedown",p,o)})},t.getModifierString=function(e){return r.KEY_MODS[p(e)]},t.addCommandKeyListener=function(e,n,r){var i=null;c(e,"keydown",function(e){s[e.keyCode]=(s[e.keyCode]||0)+1;var t=d(n,e,e.keyCode);return i=e.defaultPrevented,t},r),c(e,"keypress",function(e){i&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),i=null)},r),c(e,"keyup",function(e){s[e.keyCode]=null},r),s||(v(),c(window,"focus",v))};if(typeof window=="object"&&window.postMessage&&!i.isOldIE){var m=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+m++,i=function(s){s.data==r&&(t.stopPropagation(s),h(n,"message",i),e())};c(n,"message",i),n.postMessage(r,"*")}}t.$idleBlocked=!1,t.onIdle=function(e,n){return setTimeout(function r(){t.$idleBlocked?setTimeout(r,100):e()},n)},t.$idleBlockId=null,t.blockIdle=function(e){t.$idleBlockId&&clearTimeout(t.$idleBlockId),t.$idleBlocked=!0,t.$idleBlockId=setTimeout(function(){t.$idleBlocked=!1},e||100)},t.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),define("ace/clipboard",["require","exports","module"],function(e,t,n){"use strict";var r;n.exports={lineMode:!1,pasteCancelled:function(){return r&&r>Date.now()-50?!0:r=!1},cancel:function(){r=Date.now()}}}),define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../config").nls,s=e("../lib/useragent"),o=e("../lib/dom"),u=e("../lib/lang"),a=e("../clipboard"),f=s.isChrome<18,l=s.isIE,c=s.isChrome>63,h=400,p=e("../lib/keys"),d=p.KEY_MODS,v=s.isIOS,m=v?/\s/:/\n/,g=s.isMobile,y=function(){function e(e,t){var n=this;this.host=t,this.text=o.createElement("textarea"),this.text.className="ace_text-input",this.text.setAttribute("wrap","off"),this.text.setAttribute("autocorrect","off"),this.text.setAttribute("autocapitalize","off"),this.text.setAttribute("spellcheck","false"),this.text.style.opacity="0",e.insertBefore(this.text,e.firstChild),this.copied=!1,this.pasted=!1,this.inComposition=!1,this.sendingText=!1,this.tempStyle="",g||(this.text.style.fontSize="1px"),this.commandMode=!1,this.ignoreFocusEvents=!1,this.lastValue="",this.lastSelectionStart=0,this.lastSelectionEnd=0,this.lastRestoreEnd=0,this.rowStart=Number.MAX_SAFE_INTEGER,this.rowEnd=Number.MIN_SAFE_INTEGER,this.numberOfExtraLines=0;try{this.$isFocused=document.activeElement===this.text}catch(i){}this.cancelComposition=this.cancelComposition.bind(this),this.setAriaOptions({role:"textbox"}),r.addListener(this.text,"blur",function(e){if(n.ignoreFocusEvents)return;t.onBlur(e),n.$isFocused=!1},t),r.addListener(this.text,"focus",function(e){if(n.ignoreFocusEvents)return;n.$isFocused=!0;if(s.isEdge)try{if(!document.hasFocus())return}catch(e){}t.onFocus(e),s.isEdge?setTimeout(n.resetSelection.bind(n)):n.resetSelection()},t),this.$focusScroll=!1,t.on("beforeEndOperation",function(){var e=t.curOp,r=e&&e.command&&e.command.name;if(r=="insertstring")return;var i=r&&(e.docChanged||e.selectionChanged);n.inComposition&&i&&(n.lastValue=n.text.value="",n.onCompositionEnd()),n.resetSelection()}),t.on("changeSelection",this.setAriaLabel.bind(this)),this.resetSelection=v?this.$resetSelectionIOS:this.$resetSelection,this.$isFocused&&t.onFocus(),this.inputHandler=null,this.afterContextMenu=!1,r.addCommandKeyListener(this.text,function(e,r,i){if(n.inComposition)return;return t.onCommandKey(e,r,i)},t),r.addListener(this.text,"select",this.onSelect.bind(this),t),r.addListener(this.text,"input",this.onInput.bind(this),t),r.addListener(this.text,"cut",this.onCut.bind(this),t),r.addListener(this.text,"copy",this.onCopy.bind(this),t),r.addListener(this.text,"paste",this.onPaste.bind(this),t),(!("oncut"in this.text)||!("oncopy"in this.text)||!("onpaste"in this.text))&&r.addListener(e,"keydown",function(e){if(s.isMac&&!e.metaKey||!e.ctrlKey)return;switch(e.keyCode){case 67:n.onCopy(e);break;case 86:n.onPaste(e);break;case 88:n.onCut(e)}},t),this.syncComposition=u.delayedCall(this.onCompositionUpdate.bind(this),50).schedule.bind(null,null),r.addListener(this.text,"compositionstart",this.onCompositionStart.bind(this),t),r.addListener(this.text,"compositionupdate",this.onCompositionUpdate.bind(this),t),r.addListener(this.text,"keyup",this.onKeyup.bind(this),t),r.addListener(this.text,"keydown",this.syncComposition.bind(this),t),r.addListener(this.text,"compositionend",this.onCompositionEnd.bind(this),t),this.closeTimeout,r.addListener(this.text,"mouseup",this.$onContextMenu.bind(this),t),r.addListener(this.text,"mousedown",function(e){e.preventDefault(),n.onContextMenuClose()},t),r.addListener(t.renderer.scroller,"contextmenu",this.$onContextMenu.bind(this),t),r.addListener(this.text,"contextmenu",this.$onContextMenu.bind(this),t),v&&this.addIosSelectionHandler(e,t,this.text)}return e.prototype.addIosSelectionHandler=function(e,t,n){var r=this,i=null,s=!1;n.addEventListener("keydown",function(e){i&&clearTimeout(i),s=!0},!0),n.addEventListener("keyup",function(e){i=setTimeout(function(){s=!1},100)},!0);var o=function(e){if(document.activeElement!==n)return;if(s||r.inComposition||t.$mouseHandler.isMousePressed)return;if(r.copied)return;var i=n.selectionStart,o=n.selectionEnd,u=null,a=0;if(i==0)u=p.up;else if(i==1)u=p.home;else if(o>r.lastSelectionEnd&&r.lastValue[o]=="\n")u=p.end;else if(ir.lastSelectionEnd&&r.lastValue.slice(0,o).split("\n").length>2)u=p.down;else if(o>r.lastSelectionEnd&&r.lastValue[o-1]==" ")u=p.right,a=d.option;else if(o>r.lastSelectionEnd||o==r.lastSelectionEnd&&r.lastSelectionEnd!=r.lastSelectionStart&&i==o)u=p.right;i!==o&&(a|=d.shift);if(u){var f=t.onCommandKey({},a,u);if(!f&&t.commands){u=p.keyCodeToString(u);var l=t.commands.findKeyCommand(a,u);l&&t.execCommand(l)}r.lastSelectionStart=i,r.lastSelectionEnd=o,r.resetSelection("")}};document.addEventListener("selectionchange",o),t.on("destroy",function(){document.removeEventListener("selectionchange",o)})},e.prototype.onContextMenuClose=function(){var e=this;clearTimeout(this.closeTimeout),this.closeTimeout=setTimeout(function(){e.tempStyle&&(e.text.style.cssText=e.tempStyle,e.tempStyle=""),e.host.renderer.$isMousePressed=!1,e.host.renderer.$keepTextAreaAtCursor&&e.host.renderer.$moveTextAreaToCursor()},0)},e.prototype.$onContextMenu=function(e){this.host.textInput.onContextMenu(e),this.onContextMenuClose()},e.prototype.onKeyup=function(e){e.keyCode==27&&this.text.value.lengthh+100||m.test(n)||g&&this.lastSelectionStart<1&&this.lastSelectionStart==this.lastSelectionEnd)&&this.resetSelection()},e.prototype.sendText=function(e,t){this.afterContextMenu&&(this.afterContextMenu=!1);if(this.pasted)return this.resetSelection(),e&&this.host.onPaste(e),this.pasted=!1,"";var n=this.text.selectionStart,r=this.text.selectionEnd,i=this.lastSelectionStart,o=this.lastValue.length-this.lastSelectionEnd,u=e,a=e.length-n,f=e.length-r,l=0;while(i>0&&this.lastValue[l]==e[l])l++,i--;u=u.slice(l),l=1;while(o>0&&this.lastValue.length-l>this.lastSelectionStart-1&&this.lastValue[this.lastValue.length-l]==e[e.length-l])l++,o--;a-=l-1,f-=l-1;var c=u.length-l+1;c<0&&(i=-c,c=0),u=u.slice(0,c);if(!t&&!u&&!a&&!i&&!o&&!f)return"";this.sendingText=!0;var h=!1;return s.isAndroid&&u==". "&&(u=" ",h=!0),u&&!i&&!o&&!a&&!f||this.commandMode?this.host.onTextInput(u):this.host.onTextInput(u,{extendLeft:i,extendRight:o,restoreStart:a,restoreEnd:f}),this.sendingText=!1,this.lastValue=e,this.lastSelectionStart=n,this.lastSelectionEnd=r,this.lastRestoreEnd=f,h?"\n":u},e.prototype.onSelect=function(e){var t=this;if(this.inComposition)return;var n=function(e){return e.selectionStart===0&&e.selectionEnd>=t.lastValue.length&&e.value===t.lastValue&&t.lastValue&&e.selectionEnd!==t.lastSelectionEnd};this.copied?this.copied=!1:n(this.text)?(this.host.selectAll(),this.resetSelection()):g&&this.text.selectionStart!=this.lastSelectionStart&&this.resetSelection()},e.prototype.$resetSelectionIOS=function(e){if(!this.$isFocused||this.copied&&!e||this.sendingText)return;e||(e="");var t="\n ab"+e+"cde fg\n";t!=this.text.value&&(this.text.value=this.lastValue=t);var n=4,r=4+(e.length||(this.host.selection.isEmpty()?0:1));(this.lastSelectionStart!=n||this.lastSelectionEnd!=r)&&this.text.setSelectionRange(n,r),this.lastSelectionStart=n,this.lastSelectionEnd=r},e.prototype.$resetSelection=function(){var e=this;if(this.inComposition||this.sendingText)return;if(!this.$isFocused&&!this.afterContextMenu)return;this.inComposition=!0;var t=0,n=0,r="",i=function(t,n){var r=n;for(var i=1;i<=t-e.rowStart&&i<2*e.numberOfExtraLines+1;i++)r+=e.host.session.getLine(t-i).length+1;return r};if(this.host.session){var s=this.host.selection,o=s.getRange(),u=s.cursor.row;if(u===this.rowEnd+1)this.rowStart=this.rowEnd+1,this.rowEnd=this.rowStart+2*this.numberOfExtraLines;else if(u===this.rowStart-1)this.rowEnd=this.rowStart-1,this.rowStart=this.rowEnd-2*this.numberOfExtraLines;else if(uthis.rowEnd+1)this.rowStart=u>this.numberOfExtraLines?u-this.numberOfExtraLines:0,this.rowEnd=u>this.numberOfExtraLines?u+this.numberOfExtraLines:2*this.numberOfExtraLines;var a=[];for(var f=this.rowStart;f<=this.rowEnd;f++)a.push(this.host.session.getLine(f));r=a.join("\n"),t=i(o.start.row,o.start.column),n=i(o.end.row,o.end.column);if(o.start.rowthis.rowEnd){var c=this.host.session.getLine(this.rowEnd+1);n=o.end.row>this.rowEnd+1?c.length:o.end.column,n+=r.length+1,r=r+"\n"+c}else g&&u>0&&(r="\n"+r,n+=1,t+=1);r.length>h&&(t1),e.preventDefault()},e.prototype.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;if(!this.mousedownEvent)return;this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.setStyle("ace_selecting"),this.setState("select")},e.prototype.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=a(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.renderer.scrollCursorIntoView()},e.prototype.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=a(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.renderer.scrollCursorIntoView()},e.prototype.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting")},e.prototype.focusWait=function(){var e=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>i||t-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},e.prototype.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},e.prototype.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},e.prototype.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},e.prototype.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var n=this.$lastScroll,r=e.domEvent.timeStamp,i=r-n.t,o=i?e.wheelX/i:n.vx,u=i?e.wheelY/i:n.vy;i=1&&t.renderer.isScrollableBy(e.wheelX*e.speed,0)&&(f=!0),a<=1&&t.renderer.isScrollableBy(0,e.wheelY*e.speed)&&(f=!0);if(f)n.allowed=r;else if(r-n.allowedn.clientHeight;r||t.preventDefault()}}),define("ace/tooltip",["require","exports","module","ace/lib/dom","ace/lib/event","ace/range","ace/lib/scroll"],function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function r(){this.constructor=t}if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");e(t,n),t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),i=this&&this.__values||function(e){var t=typeof Symbol=="function"&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},s=e("./lib/dom"),o=e("./lib/event"),u=e("./range").Range,a=e("./lib/scroll").preventParentScroll,f="ace_tooltip",l=function(){function e(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}return e.prototype.$init=function(){return this.$element=s.createElement("div"),this.$element.className=f,this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},e.prototype.getElement=function(){return this.$element||this.$init()},e.prototype.setText=function(e){this.getElement().textContent=e},e.prototype.setHtml=function(e){this.getElement().innerHTML=e},e.prototype.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},e.prototype.setClassName=function(e){s.addCssClass(this.getElement(),e)},e.prototype.setTheme=function(e){this.$element.className=f+" "+(e.isDark?"ace_dark ":"")+(e.cssClass||"")},e.prototype.show=function(e,t,n){e!=null&&this.setText(e),t!=null&&n!=null&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},e.prototype.hide=function(e){this.isOpen&&(this.getElement().style.display="none",this.getElement().className=f,this.isOpen=!1)},e.prototype.getHeight=function(){return this.getElement().offsetHeight},e.prototype.getWidth=function(){return this.getElement().offsetWidth},e.prototype.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)},e}(),c=function(){function e(){this.popups=[]}return e.prototype.addPopup=function(e){this.popups.push(e),this.updatePopups()},e.prototype.removePopup=function(e){var t=this.popups.indexOf(e);t!==-1&&(this.popups.splice(t,1),this.updatePopups())},e.prototype.updatePopups=function(){var e,t,n,r;this.popups.sort(function(e,t){return t.priority-e.priority});var s=[];try{for(var o=i(this.popups),u=o.next();!u.done;u=o.next()){var a=u.value,f=!0;try{for(var l=(n=void 0,i(s)),c=l.next();!c.done;c=l.next()){var h=c.value;if(this.doPopupsOverlap(h,a)){f=!1;break}}}catch(p){n={error:p}}finally{try{c&&!c.done&&(r=l.return)&&r.call(l)}finally{if(n)throw n.error}}f?s.push(a):a.hide()}}catch(d){e={error:d}}finally{try{u&&!u.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}},e.prototype.doPopupsOverlap=function(e,t){var n=e.getElement().getBoundingClientRect(),r=t.getElement().getBoundingClientRect();return n.leftr.left&&n.topr.top},e}(),h=new c;t.popupManager=h,t.Tooltip=l;var p=function(e){function t(t){t===void 0&&(t=document.body);var n=e.call(this,t)||this;n.timeout=undefined,n.lastT=0,n.idleTime=350,n.lastEvent=undefined,n.onMouseOut=n.onMouseOut.bind(n),n.onMouseMove=n.onMouseMove.bind(n),n.waitForHover=n.waitForHover.bind(n),n.hide=n.hide.bind(n);var r=n.getElement();return r.style.whiteSpace="pre-wrap",r.style.pointerEvents="auto",r.addEventListener("mouseout",n.onMouseOut),r.tabIndex=-1,r.addEventListener("blur",function(){r.contains(document.activeElement)||this.hide()}.bind(n)),r.addEventListener("wheel",a),n}return r(t,e),t.prototype.addToEditor=function(e){e.on("mousemove",this.onMouseMove),e.on("mousedown",this.hide),e.renderer.getMouseEventTarget().addEventListener("mouseout",this.onMouseOut,!0)},t.prototype.removeFromEditor=function(e){e.off("mousemove",this.onMouseMove),e.off("mousedown",this.hide),e.renderer.getMouseEventTarget().removeEventListener("mouseout",this.onMouseOut,!0),this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},t.prototype.onMouseMove=function(e,t){this.lastEvent=e,this.lastT=Date.now();var n=t.$mouseHandler.isMousePressed;if(this.isOpen){var r=this.lastEvent&&this.lastEvent.getDocumentPosition();(!this.range||!this.range.contains(r.row,r.column)||n||this.isOutsideOfText(this.lastEvent))&&this.hide()}if(this.timeout||n)return;this.lastEvent=e,this.timeout=setTimeout(this.waitForHover,this.idleTime)},t.prototype.waitForHover=function(){this.timeout&&clearTimeout(this.timeout);var e=Date.now()-this.lastT;if(this.idleTime-e>10){this.timeout=setTimeout(this.waitForHover,this.idleTime-e);return}this.timeout=null,this.lastEvent&&!this.isOutsideOfText(this.lastEvent)&&this.$gatherData(this.lastEvent,this.lastEvent.editor)},t.prototype.isOutsideOfText=function(e){var t=e.editor,n=e.getDocumentPosition(),r=t.session.getLine(n.row);if(n.column==r.length){var i=t.renderer.pixelToScreenCoordinates(e.clientX,e.clientY),s=t.session.documentToScreenPosition(n.row,n.column);if(s.column!=i.column||s.row!=i.row)return!0}return!1},t.prototype.setDataProvider=function(e){this.$gatherData=e},t.prototype.showForRange=function(e,t,n,r){var i=10;if(r&&r!=this.lastEvent)return;if(this.isOpen&&document.activeElement==this.getElement())return;var s=e.renderer;this.isOpen||(h.addPopup(this),this.$registerCloseEvents(),this.setTheme(s.theme)),this.isOpen=!0,this.addMarker(t,e.session),this.range=u.fromPoints(t.start,t.end);var o=s.textToScreenCoordinates(t.start.row,t.start.column),a=s.scroller.getBoundingClientRect();o.pageXt.session.documentToScreenRow(a.row,a.column))return c()}r.showTooltip(i);if(!r.isOpen)return;t.on("mousewheel",c),t.on("changeSession",c),window.addEventListener("keydown",c,!0);if(e.$tooltipFollowsMouse)p(u);else{var h=u.getGutterRow(),d=n.$lines.get(h);if(d){var v=d.element.querySelector(".ace_gutter_annotation"),m=v.getBoundingClientRect(),g=r.getElement().style;g.left=m.right-f+"px",g.top=m.bottom-l+"px"}else p(u)}}function c(e){if(e&&e.type==="keydown"&&(e.ctrlKey||e.metaKey))return;if(e&&e.type==="mouseout"&&(!e.relatedTarget||r.getElement().contains(e.relatedTarget)))return;i&&(i=clearTimeout(i)),r.isOpen&&(r.hideTooltip(),t.off("mousewheel",c),t.off("changeSession",c),window.removeEventListener("keydown",c,!0))}function p(e){r.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,r=new h(t,!0);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var i,u;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(s.hasCssClass(n,"ace_fold-widget")||s.hasCssClass(n,"ace_custom-widget"))return c();r.isOpen&&e.$tooltipFollowsMouse&&p(t),u=t;if(i)return;i=setTimeout(function(){i=null,u&&!e.isMousePressed&&a()},50)}),o.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!r.isOpen)return;i=setTimeout(function(){i=null,c(e)},50)},t)}var r=this&&this.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function r(){this.constructor=t}if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");e(t,n),t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),i=this&&this.__values||function(e){var t=typeof Symbol=="function"&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},s=e("../lib/dom"),o=e("../lib/event"),u=e("../tooltip").Tooltip,a=e("../config").nls,f=5,l=3;t.GUTTER_TOOLTIP_LEFT_OFFSET=f,t.GUTTER_TOOLTIP_TOP_OFFSET=l,t.GutterHandler=c;var h=function(e){function t(n,r){r===void 0&&(r=!1);var i=e.call(this,n.container)||this;i.id="gt"+ ++t.$uid,i.editor=n,i.visibleTooltipRow;var s=i.getElement();return s.setAttribute("role","tooltip"),s.setAttribute("id",i.id),s.style.pointerEvents="auto",r&&(i.onMouseOut=i.onMouseOut.bind(i),s.addEventListener("mouseout",i.onMouseOut)),i}return r(t,e),t.prototype.onMouseOut=function(e){if(!this.isOpen)return;if(!e.relatedTarget||this.getElement().contains(e.relatedTarget))return;if(e&&e.currentTarget.contains(e.relatedTarget))return;this.hideTooltip()},t.prototype.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),u.prototype.setPosition.call(this,e,t)},Object.defineProperty(t,"annotationLabels",{get:function(){return{error:{singular:a("gutter-tooltip.aria-label.error.singular","error"),plural:a("gutter-tooltip.aria-label.error.plural","errors")},security:{singular:a("gutter-tooltip.aria-label.security.singular","security finding"),plural:a("gutter-tooltip.aria-label.security.plural","security findings")},warning:{singular:a("gutter-tooltip.aria-label.warning.singular","warning"),plural:a("gutter-tooltip.aria-label.warning.plural","warnings")},info:{singular:a("gutter-tooltip.aria-label.info.singular","information message"),plural:a("gutter-tooltip.aria-label.info.plural","information messages")},hint:{singular:a("gutter-tooltip.aria-label.hint.singular","suggestion"),plural:a("gutter-tooltip.aria-label.hint.plural","suggestions")}}},enumerable:!1,configurable:!0}),t.prototype.showTooltip=function(e){var n,r=this.editor.renderer.$gutterLayer,i=r.$annotations[e],o;i?o={displayText:Array.from(i.displayText),type:Array.from(i.type)}:o={displayText:[],type:[]};var u=r.session.getFoldLine(e);if(u&&r.$showFoldedAnnotations){var a={error:[],security:[],warning:[],info:[],hint:[]},f={error:1,security:2,warning:3,info:4,hint:5},l;for(var c=e+1;c<=u.end.row;c++){if(!r.$annotations[c])continue;for(var h=0;h2)return n.childNodes[2]}},t.prototype.$findCellByRow=function(e){return this.editor.renderer.$gutterLayer.$lines.cells.find(function(t){return t.row===e})},t.prototype.hideTooltip=function(){if(!this.isOpen)return;this.$element.removeAttribute("aria-live"),this.hide();if(this.visibleTooltipRow!=undefined){var e=this.$findLinkedAnnotationNode(this.visibleTooltipRow);e&&e.removeAttribute("aria-describedby")}this.visibleTooltipRow=undefined,this.editor._signal("hideGutterTooltip",this)},t.annotationsToSummaryString=function(e){var n,r,s=[],o=["error","security","warning","info","hint"];try{for(var u=i(o),a=u.next();!a.done;a=u.next()){var f=a.value;if(!e[f].length)continue;var l=e[f].length===1?t.annotationLabels[f].singular:t.annotationLabels[f].plural;s.push("".concat(e[f].length," ").concat(l))}}catch(c){n={error:c}}finally{try{a&&!a.done&&(r=u.return)&&r.call(u)}finally{if(n)throw n.error}}return s.join(", ")},t}(u);h.$uid=0,t.GutterTooltip=h}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=function(){function e(e,t){this.speed,this.wheelX,this.wheelY,this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1}return e.prototype.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},e.prototype.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},e.prototype.stop=function(){this.stopPropagation(),this.preventDefault()},e.prototype.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},e.prototype.getGutterRow=function(){var e=this.getDocumentPosition().row,t=this.editor.session.documentToScreenRow(e,0),n=this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row,0);return t-n},e.prototype.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},e.prototype.getButton=function(){return r.getButton(this.domEvent)},e.prototype.getShiftKey=function(){return this.domEvent.shiftKey},e.prototype.getAccelKey=function(){return i.isMac?this.domEvent.metaKey:this.domEvent.ctrlKey},e}();t.MouseEvent=s}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.moveCursorToPosition(e),S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),C(),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.selection.fromOrientedRange(m),t.isFocused()&&!w&&t.$resetCursorStyle(),m=null,g=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("div");n.style.cssText="top:-100px;position:absolute;z-index:2147483647;opacity:0.5",n.textContent="\u00a0";var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.on("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",t.container.appendChild(n),i.setDragImage&&i.setDragImage(n,0,0),setTimeout(function(){t.container.removeChild(n)}),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.$resetCursorStyle()}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!g)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e),t),i.addListener(c,"dragend",this.onDragEnd.bind(e),t),i.addListener(c,"dragenter",this.onDragEnter.bind(e),t),i.addListener(c,"dragover",this.onDragOver.bind(e),t),i.addListener(c,"dragleave",this.onDragLeave.bind(e),t),i.addListener(c,"drop",this.onDrop.bind(e),t);var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.$resetCursorStyle(),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./mouse_event").MouseEvent,i=e("../lib/event"),s=e("../lib/dom");t.addTouchListeners=function(e,t){function b(){var e=window.navigator&&window.navigator.clipboard,r=!1,i=function(){var n=t.getCopyText(),i=t.session.getUndoManager().hasUndo();y.replaceChild(s.buildDom(r?["span",!n&&o("selectall")&&["span",{"class":"ace_mobile-button",action:"selectall"},"Select All"],n&&o("copy")&&["span",{"class":"ace_mobile-button",action:"copy"},"Copy"],n&&o("cut")&&["span",{"class":"ace_mobile-button",action:"cut"},"Cut"],e&&o("paste")&&["span",{"class":"ace_mobile-button",action:"paste"},"Paste"],i&&o("undo")&&["span",{"class":"ace_mobile-button",action:"undo"},"Undo"],o("find")&&["span",{"class":"ace_mobile-button",action:"find"},"Find"],o("openCommandPalette")&&["span",{"class":"ace_mobile-button",action:"openCommandPalette"},"Palette"]]:["span"]),y.firstChild)},o=function(e){return t.commands.canExecute(e,t)},u=function(n){var s=n.target.getAttribute("action");if(s=="more"||!r)return r=!r,i();if(s=="paste")e.readText().then(function(e){t.execCommand(s,e)});else if(s){if(s=="cut"||s=="copy")e?e.writeText(t.getCopyText()):document.execCommand("copy");t.execCommand(s)}y.firstChild.style.display="none",r=!1,s!="openCommandPalette"&&t.focus()};y=s.buildDom(["div",{"class":"ace_mobile-menu",ontouchstart:function(e){n="menu",e.stopPropagation(),e.preventDefault(),t.textInput.focus()},ontouchend:function(e){e.stopPropagation(),e.preventDefault(),u(e)},onclick:u},["span"],["span",{"class":"ace_mobile-button",action:"more"},"..."]],t.container)}function w(){if(!t.getOption("enableMobileMenu")){y&&E();return}y||b();var e=t.selection.cursor,n=t.renderer.textToScreenCoordinates(e.row,e.column),r=t.renderer.textToScreenCoordinates(0,0).pageX,i=t.renderer.scrollLeft,s=t.container.getBoundingClientRect();y.style.top=n.pageY-s.top-3+"px",n.pageX-s.left=2?t.selection.getLineRange(p.row):t.session.getBracketRange(p);e&&!e.isEmpty()?t.selection.setRange(e):t.selection.selectWord(),n="wait"}function T(){h+=60,c=setInterval(function(){h--<=0&&(clearInterval(c),c=null),Math.abs(v)<.01&&(v=0),Math.abs(m)<.01&&(m=0),h<20&&(v=.9*v),h<20&&(m=.9*m);var e=t.session.getScrollTop();t.renderer.scrollBy(10*v,10*m),e==t.session.getScrollTop()&&(h=0)},10)}var n="scroll",o,u,a,f,l,c,h=0,p,d=0,v=0,m=0,g,y;i.addListener(e,"contextmenu",function(e){if(!g)return;var n=t.textInput.getElement();n.focus()},t),i.addListener(e,"touchstart",function(e){var i=e.touches;if(l||i.length>1){clearTimeout(l),l=null,a=-1,n="zoom";return}g=t.$mouseHandler.isMousePressed=!0;var s=t.renderer.layerConfig.lineHeight,c=t.renderer.layerConfig.lineHeight,y=e.timeStamp;f=y;var b=i[0],w=b.clientX,E=b.clientY;Math.abs(o-w)+Math.abs(u-E)>s&&(a=-1),o=e.clientX=w,u=e.clientY=E,v=m=0;var T=new r(e,t);p=T.getDocumentPosition();if(y-a<500&&i.length==1&&!h)d++,e.preventDefault(),e.button=0,x();else{d=0;var N=t.selection.cursor,C=t.selection.isEmpty()?N:t.selection.anchor,k=t.renderer.$cursorLayer.getPixelPosition(N,!0),L=t.renderer.$cursorLayer.getPixelPosition(C,!0),A=t.renderer.scroller.getBoundingClientRect(),O=t.renderer.layerConfig.offset,M=t.renderer.scrollLeft,_=function(e,t){return e/=c,t=t/s-.75,e*e+t*t};if(e.clientXP?"cursor":"anchor"),P<3.5?n="anchor":D<3.5?n="cursor":n="scroll",l=setTimeout(S,450)}a=y},t),i.addListener(e,"touchend",function(e){g=t.$mouseHandler.isMousePressed=!1,c&&clearInterval(c),n=="zoom"?(n="",h=0):l?(t.selection.moveToPosition(p),h=0,w()):n=="scroll"?(T(),E()):w(),clearTimeout(l),l=null},t),i.addListener(e,"touchmove",function(e){l&&(clearTimeout(l),l=null);var i=e.touches;if(i.length>1||n=="zoom")return;var s=i[0],a=o-s.clientX,c=u-s.clientY;if(n=="wait"){if(!(a*a+c*c>4))return e.preventDefault();n="cursor"}o=s.clientX,u=s.clientY,e.clientX=s.clientX,e.clientY=s.clientY;var h=e.timeStamp,p=h-f;f=h;if(n=="scroll"){var d=new r(e,t);d.speed=1,d.wheelX=a,d.wheelY=c,10*Math.abs(a)0)if(g==16){for(w=b;w-1){for(w=b;w=0;C--){if(r[C]!=N)break;t[C]=s}}}function I(e,t,n){if(o=e){u=i+1;while(u=e)u++;for(a=i,l=u-1;a=t.length||(o=n[r-1])!=b&&o!=w||(c=t[r+1])!=b&&c!=w)return E;return u&&(c=w),c==o?c:E;case k:o=r>0?n[r-1]:S;if(o==b&&r+10&&n[r-1]==b)return b;if(u)return E;p=r+1,h=t.length;while(p=1425&&d<=2303||d==64286;o=t[p];if(v&&(o==y||o==T))return y}if(r<1||(o=t[r-1])==S)return E;return n[r-1];case S:return u=!1,f=!0,s;case x:return l=!0,E;case O:case M:case D:case P:case _:u=!1;case H:return E}}function R(e){var t=e.charCodeAt(0),n=t>>8;return n==0?t>191?g:B[t]:n==5?/[\u0591-\u05f4]/.test(e)?y:g:n==6?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(e)?A:/[\u0660-\u0669\u066b-\u066c]/.test(e)?w:t==1642?L:/[\u06f0-\u06f9]/.test(e)?b:T:n==32&&t<=8287?j[t&255]:n==254?t>=65136?T:E:E}function U(e){return e>="\u064b"&&e<="\u0655"}var r=["\u0621","\u0641"],i=["\u063a","\u064a"],s=0,o=0,u=!1,a=!1,f=!1,l=!1,c=!1,h=!1,p=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],d=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],v=0,m=1,g=0,y=1,b=2,w=3,E=4,S=5,x=6,T=7,N=8,C=9,k=10,L=11,A=12,O=13,M=14,_=15,D=16,P=17,H=18,B=[H,H,H,H,H,H,H,H,H,x,S,x,N,S,H,H,H,H,H,H,H,H,H,H,H,H,H,H,S,S,S,x,N,E,E,L,L,L,E,E,E,E,E,k,C,k,C,C,b,b,b,b,b,b,b,b,b,b,C,E,E,E,E,E,E,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,E,E,E,E,E,E,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,E,E,E,E,H,H,H,H,H,H,S,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,C,E,L,L,L,L,E,E,E,E,g,E,E,H,E,E,L,L,b,b,E,g,E,E,E,b,g,E,E,E,E,E],j=[N,N,N,N,N,N,N,N,N,N,N,H,H,H,g,y,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,N,S,O,M,_,D,P,C,L,L,L,L,L,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,C,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,N];t.L=g,t.R=y,t.EN=b,t.ON_R=3,t.AN=4,t.R_H=5,t.B=6,t.RLE=7,t.DOT="\u00b7",t.doBidiReorder=function(e,n,r){if(e.length<2)return{};var i=e.split(""),o=new Array(i.length),u=new Array(i.length),a=[];s=r?m:v,F(i,a,i.length,n);for(var f=0;fT&&n[f]0&&i[f-1]==="\u0644"&&/\u0622|\u0623|\u0625|\u0627/.test(i[f])&&(a[f-1]=a[f]=t.R_H,f++);i[i.length-1]===t.DOT&&(a[i.length-1]=t.B),i[0]==="\u202b"&&(a[0]=t.RLE);for(var f=0;f=0&&(e=this.session.$docRowCache[n])}return e},e.prototype.getSplitIndex=function(){var e=0,t=this.session.$screenRowCache;if(t.length){var n,r=this.session.$getRowCacheIndex(t,this.currentRow);while(this.currentRow-e>0){n=this.session.$getRowCacheIndex(t,this.currentRow-e-1);if(n!==r)break;r=n,e++}}else e=this.currentRow;return e},e.prototype.updateRowLine=function(e,t){e===undefined&&(e=this.getDocumentRow());var n=e===this.session.getLength()-1,s=n?this.EOF:this.EOL;this.wrapIndent=0,this.line=this.session.getLine(e),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE;if(this.session.$useWrapMode){var o=this.session.$wrapData[e];o&&(t===undefined&&(t=this.getSplitIndex()),t>0&&o.length?(this.wrapIndent=o.indent,this.wrapOffset=this.wrapIndent*this.charWidths[r.L],this.line=tt?this.session.getOverwrite()?e:e-1:t,i=r.getVisualFromLogicalIdx(n,this.bidiMap),s=this.bidiMap.bidiLevels,o=0;!this.session.getOverwrite()&&e<=t&&s[i]%2!==0&&i++;for(var u=0;ut&&s[i]%2===0&&(o+=this.charWidths[s[i]]),this.wrapIndent&&(o+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(o+=this.rtlLineOffset),o},e.prototype.getSelections=function(e,t){var n=this.bidiMap,r=n.bidiLevels,i,s=[],o=0,u=Math.min(e,t)-this.wrapIndent,a=Math.max(e,t)-this.wrapIndent,f=!1,l=!1,c=0;this.wrapIndent&&(o+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var h,p=0;p=u&&hn+s/2){n+=s;if(r===i.length-1){s=0;break}s=this.charWidths[i[++r]]}return r>0&&i[r-1]%2!==0&&i[r]%2===0?(e0&&i[r-1]%2===0&&i[r]%2!==0?t=1+(e>n?this.bidiMap.logicalFromVisual[r]:this.bidiMap.logicalFromVisual[r-1]):this.isRtlDir&&r===i.length-1&&s===0&&i[r-1]%2===0||!this.isRtlDir&&r===0&&i[r]%2!==0?t=1+this.bidiMap.logicalFromVisual[r]:(r>0&&i[r-1]%2!==0&&s!==0&&r--,t=this.bidiMap.logicalFromVisual[r]),t===0&&this.isRtlDir&&t++,t+this.wrapIndent},e}();t.BidiHandler=o}),define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=function(){function e(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var t=this;this.cursor.on("change",function(e){t.$cursorChanged=!0,t.$silent||t._emit("changeCursor"),!t.$isEmpty&&!t.$silent&&t._emit("changeSelection"),!t.$keepDesiredColumnOnChange&&e.old.column!=e.value.column&&(t.$desiredColumn=null)}),this.anchor.on("change",function(){t.$anchorChanged=!0,!t.$isEmpty&&!t.$silent&&t._emit("changeSelection")})}return e.prototype.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},e.prototype.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},e.prototype.getCursor=function(){return this.lead.getPosition()},e.prototype.setAnchor=function(e,t){this.$isEmpty=!1,this.anchor.setPosition(e,t)},e.prototype.getAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},e.prototype.getSelectionLead=function(){return this.lead.getPosition()},e.prototype.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},e.prototype.getRange=function(){var e=this.anchor,t=this.lead;return this.$isEmpty?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},e.prototype.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},e.prototype.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},e.prototype.setRange=function(e,t){var n=t?e.end:e.start,r=t?e.start:e.end;this.$setSelection(n.row,n.column,r.row,r.column)},e.prototype.$setSelection=function(e,t,n,r){if(this.$silent)return;var i=this.$isEmpty,s=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(e,t),this.cursor.setPosition(n,r),this.$isEmpty=!o.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||i!=this.$isEmpty||s)&&this._emit("changeSelection")},e.prototype.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},e.prototype.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},e.prototype.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},e.prototype.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},e.prototype.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},e.prototype.selectUp=function(){this.$moveSelection(this.moveCursorUp)},e.prototype.selectDown=function(){this.$moveSelection(this.moveCursorDown)},e.prototype.selectRight=function(){this.$moveSelection(this.moveCursorRight)},e.prototype.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},e.prototype.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},e.prototype.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},e.prototype.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},e.prototype.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},e.prototype.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},e.prototype.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},e.prototype.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},e.prototype.selectWord=function(){this.setSelectionRange(this.getWordRange())},e.prototype.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},e.prototype.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},e.prototype.selectLine=function(){this.setSelectionRange(this.getLineRange())},e.prototype.moveCursorUp=function(){this.moveCursorBy(-1,0)},e.prototype.moveCursorDown=function(){this.moveCursorBy(1,0)},e.prototype.wouldMoveIntoSoftTab=function(e,t,n){var r=e.column,i=e.column+t;return n<0&&(r=e.column-t,i=e.column),this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(r,i).split(" ").length-1==t},e.prototype.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column===0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.wouldMoveIntoSoftTab(e,n,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},e.prototype.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},e.prototype.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},e.prototype.moveCursorFileStart=function(){this.moveCursorTo(0,0)},e.prototype.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var i=this.session.getFoldAt(e,t,1);if(i){this.moveCursorTo(i.end.row,i.end.column);return}this.session.nonTokenRe.exec(r)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t));if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}this.session.tokenRe.exec(s)&&(t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(e,t)},e.prototype.$shortWordEndIndex=function(e){var t=0,n,r=/\s/,i=this.session.tokenRe;i.lastIndex=0;if(this.session.tokenRe.exec(e))t=this.session.tokenRe.lastIndex;else{while((n=e[t])&&r.test(n))t++;if(t<1){i.lastIndex=0;while((n=e[t])&&!i.test(n)){i.lastIndex=0,t++;if(r.test(n)){if(t>2){t--;break}while((n=e[t])&&r.test(n))t++;if(t>2)break}}}}return i.lastIndex=0,t},e.prototype.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},e.prototype.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},e.prototype.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},e.prototype.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column),r;t===0&&(e!==0&&(this.session.$bidiHandler.isBidiRow(n.row,this.lead.row)?(r=this.session.$bidiHandler.getPosLeft(n.column),n.column=Math.round(r/this.session.$bidiHandler.charWidths[0])):r=n.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);if(e!=0&&this.session.lineWidgets&&this.session.lineWidgets[this.lead.row]){var i=this.session.lineWidgets[this.lead.row];e<0?e-=i.rowsAbove||0:e>0&&(e+=i.rowCount-(i.rowsAbove||0))}var s=this.session.screenToDocumentPosition(n.row+e,n.column,r);e!==0&&t===0&&s.row===this.lead.row&&s.column===this.lead.column,this.moveCursorTo(s.row,s.column+t,t===0)},e.prototype.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},e.prototype.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0;var i=this.session.getLine(e);/[\uDC00-\uDFFF]/.test(i.charAt(t))&&i.charAt(t-1)&&(this.lead.row==e&&this.lead.column==t+1?t-=1:t+=1),this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},e.prototype.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},e.prototype.detach=function(){this.lead.detach(),this.anchor.detach()},e.prototype.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},e.prototype.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},e.prototype.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},e.prototype.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},e.prototype.fromJSON=function(e){if(e.start==undefined){if(this.rangeList&&e.length>1){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},e.prototype.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0},e}();u.prototype.setSelectionAnchor=u.prototype.setAnchor,u.prototype.getSelectionAnchor=u.prototype.getAnchor,u.prototype.setSelectionRange=u.prototype.setRange,r.implement(u.prototype,s),t.Selection=u}),define("ace/tokenizer",["require","exports","module","ace/lib/report_error"],function(e,t,n){"use strict";var r=e("./lib/report_error").reportError,i=2e3,s=function(){function e(e){this.splitRegex,this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a1?f.onMatch=this.$applyToken:f.onMatch=f.token),c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}}return e.prototype.$setMaxTokenCount=function(e){i=e|0},e.prototype.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;yi){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},e}();s.prototype.reportError=r,t.Tokenizer=s}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/deep_copy"],function(e,t,n){"use strict";var r=e("../lib/deep_copy").deepCopy,i;i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}},function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},e.prototype.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},e.prototype.getCurrentTokenRow=function(){return this.$row},e.prototype.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n},e.prototype.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},e.prototype.getCurrentTokenRange=function(){var e=this.$rowTokens[this.$tokenIndex],t=this.getCurrentTokenColumn();return new r(this.$row,t,this.$row,t+e.value.length)},e}();t.TokenIterator=i}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","rparen","paren","punctuation.operator"],a=["text","paren.rparen","rparen","paren","punctuation.operator","comment"],f,l={},c={'"':'"',"'":"'"},h=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},p=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},d;d=function(e){e=e||{},this.add("braces","insertion",function(t,n,r,i,s){var u=r.getCursorPosition(),a=i.doc.getLine(u.row);if(s=="{"){h(r);var l=r.getSelectionRange(),c=i.doc.getTextRange(l),v=i.getTokenAt(u.row,u.column);if(c!==""&&c!=="{"&&r.getWrapBehavioursEnabled())return p(l,c,"{","}");if(v&&/(?:string)\.quasi|\.xml/.test(v.type)){var m=[/tag\-(?:open|name)/,/attribute\-name/];if(m.some(function(e){return e.test(v.type)})||/(string)\.quasi/.test(v.type)&&v.value[u.column-v.start-1]!=="$")return;return d.recordAutoInsert(r,i,"}"),{text:"{}",selection:[1,1]}}if(d.isSaneInsertion(r,i))return/[\]\}\)]/.test(a[u.column])||r.inMultiSelectMode||e.braces?(d.recordAutoInsert(r,i,"}"),{text:"{}",selection:[1,1]}):(d.recordMaybeInsert(r,i,"{"),{text:"{",selection:[1,1]})}else if(s=="}"){h(r);var g=a.substring(u.column,u.column+1);if(g=="}"){var y=i.$findOpeningBracket("}",{column:u.column+1,row:u.row});if(y!==null&&d.isAutoInsertedClosing(u,a,s))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(s=="\n"||s=="\r\n"){h(r);var b="";d.isMaybeInsertedClosing(u,a)&&(b=o.stringRepeat("}",f.maybeInsertedBrackets),d.clearMaybeInsertedClosing());var g=a.substring(u.column,u.column+1);if(g==="}"){var w=i.findMatchingBracket({row:u.row,column:u.column+1},"}");if(!w)return null;var E=this.$getIndent(i.getLine(w.row))}else{if(!b){d.clearMaybeInsertedClosing();return}var E=this.$getIndent(a)}var S=E+i.getTabString();return{text:"\n"+S+"\n"+E+b,selection:[1,S.length,1,S.length]}}d.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){h(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return p(s,o,"(",")");if(d.isSaneInsertion(n,r))return d.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){h(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&d.isAutoInsertedClosing(u,a,i))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){h(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return p(s,o,"[","]");if(d.isSaneInsertion(n,r))return d.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){h(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&d.isAutoInsertedClosing(u,a,i))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){var s=r.$mode.$quotes||c;if(i.length==1&&s[i]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(i)!=-1)return;h(n);var o=i,u=n.getSelectionRange(),a=r.doc.getTextRange(u);if(a!==""&&(a.length!=1||!s[a])&&n.getWrapBehavioursEnabled())return p(u,a,o,o);if(!a){var f=n.getCursorPosition(),l=r.doc.getLine(f.row),d=l.substring(f.column-1,f.column),v=l.substring(f.column,f.column+1),m=r.getTokenAt(f.row,f.column),g=r.getTokenAt(f.row,f.column+1);if(d=="\\"&&m&&/escape/.test(m.type))return null;var y=m&&/string|escape/.test(m.type),b=!g||/string|escape/.test(g.type),w;if(v==o)w=y!==b,w&&/string\.end/.test(g.type)&&(w=!1);else{if(y&&!b)return null;if(y&&b)return null;var E=r.$mode.tokenRe;E.lastIndex=0;var S=E.test(d);E.lastIndex=0;var x=E.test(v),T=r.$mode.$pairQuotesAfter,N=T&&T[o]&&T[o].test(d);if(!N&&S||x)return null;if(v&&!/[\s;,.})\]\\]/.test(v))return null;var C=l[f.column-2];if(!(d!=o||C!=o&&!E.test(C)))return null;w=!0}return{text:w?o+o:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.$mode.$quotes||c,o=r.doc.getTextRange(i);if(!i.isMultiLine()&&s.hasOwnProperty(o)){h(n);var u=r.doc.getLine(i.start.row),a=u.substring(i.start.column+1,i.start.column+2);if(a==o)return i.end.column++,i}}),e.closeDocComment!==!1&&this.add("doc comment end","insertion",function(e,t,n,r,i){if(e==="doc-start"&&(i==="\n"||i==="\r\n")&&n.selection.isEmpty()){var s=n.getCursorPosition();if(s.column===0)return;var o=r.doc.getLine(s.row),u=r.doc.getLine(s.row+1),a=r.getTokens(s.row),f=0;for(var l=0;l=s.column){if(f===s.column){if(!/\.doc/.test(c.type))return;if(/\*\//.test(c.value)){var h=a[l+1];if(!h||!/\.doc/.test(h.type))return}}var p=s.column-(f-c.value.length),d=c.value.indexOf("*/"),v=c.value.indexOf("/**",d>-1?d+2:0);if(v!==-1&&p>v&&p=d&&p<=v||!/\.doc/.test(c.type))return;break}}var m=this.$getIndent(o);if(/\s*\*/.test(u))return/^\s*\*/.test(o)?{text:i+m+"* ",selection:[1,2+m.length,1,2+m.length]}:{text:i+m+" * ",selection:[1,3+m.length,1,3+m.length]};if(/\/\*\*/.test(o.substring(0,s.column)))return{text:i+m+" * "+i+" "+m+"*/",selection:[1,4+m.length,1,4+m.length]}}})},d.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){if(/[)}\]]/.test(e.session.getLine(n.row)[n.column]))return!0;var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},d.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},d.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},d.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},d.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},d.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},d.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},d.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(d,i),t.CstyleBehaviour=d}),define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";var r=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],i=0,s=[];for(var o=0;o2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),u==Infinity&&(u=E,s=!1,o=!1),l&&u%f!=0&&(u=Math.floor(u/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new f(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,a=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new l(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new f(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new l(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);a.start.row==c&&(a.start.column+=h),a.end.row==c&&(a.end.column+=h),t.selection.fromOrientedRange(a)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)if(e[t]){var n=e[t],i=n.prototype.$id,s=r.$modes[i];s||(r.$modes[i]=s=new n),r.$modes[t]||(r.$modes[t]=s),this.$embeds.push(t),this.$modes[t]=s}var o=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],u=function(e){(function(t){var n=o[e],r=t[n];t[o[e]]=function(){return this.$delegator(n,arguments,r)}})(a)},a=this;for(var t=0;tt[n].column&&n++,s.unshift(n,0),t.splice.apply(t,s),this.$updateRows()}},e.prototype.$updateRows=function(){var e=this.session.lineWidgets;if(!e)return;var t=!0;e.forEach(function(e,n){if(e){t=!1,e.row=n;while(e.$oldWidget)e.$oldWidget.row=n,e=e.$oldWidget}}),t&&(this.session.lineWidgets=null)},e.prototype.$registerLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var t=this.session.lineWidgets[e.row];return t&&(e.$oldWidget=t,t.el&&t.el.parentNode&&(t.el.parentNode.removeChild(t.el),t._inDocument=!1)),this.session.lineWidgets[e.row]=e,e},e.prototype.addLineWidget=function(e){this.$registerLineWidget(e),e.session=this.session;if(!this.editor)return e;var t=this.editor.renderer;e.html&&!e.el&&(e.el=r.createElement("div"),e.el.innerHTML=e.html),e.text&&!e.el&&(e.el=r.createElement("div"),e.el.textContent=e.text),e.el&&(r.addCssClass(e.el,"ace_lineWidgetContainer"),e.className&&r.addCssClass(e.el,e.className),e.el.style.position="absolute",e.el.style.zIndex="5",t.container.appendChild(e.el),e._inDocument=!0,e.coverGutter||(e.el.style.zIndex="3"),e.pixelHeight==null&&(e.pixelHeight=e.el.offsetHeight)),e.rowCount==null&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight);var n=this.session.getFoldAt(e.row,0);e.$fold=n;if(n){var i=this.session.lineWidgets;e.row==n.end.row&&!i[n.start.row]?i[n.start.row]=e:e.hidden=!0}return this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),this.onWidgetChanged(e),e},e.prototype.removeLineWidget=function(e){e._inDocument=!1,e.session=null,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el);if(e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}if(this.session.lineWidgets){var n=this.session.lineWidgets[e.row];if(n==e)this.session.lineWidgets[e.row]=e.$oldWidget,e.$oldWidget&&this.onWidgetChanged(e.$oldWidget);else while(n){if(n.$oldWidget==e){n.$oldWidget=e.$oldWidget;break}n=n.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},e.prototype.getWidgetsAtRow=function(e){var t=this.session.lineWidgets,n=t&&t[e],r=[];while(n)r.push(n),n=n.$oldWidget;return r},e.prototype.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},e.prototype.measureWidgets=function(e,t){var n=this.session._changedWidgets,r=t.layerConfig;if(!n||!n.length)return;var i=Infinity;for(var s=0;s0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;if(u.hidden){u.el.style.top=-100-(u.pixelHeight||0)+"px";continue}u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fullWidth&&u.screenWidth&&(u.el.style.minWidth=n.width+2*n.padding+"px"),u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}},e}();t.LineWidgets=i}),define("ace/apply_delta",["require","exports","module"],function(e,t,n){"use strict";function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}function i(e,t){return t.row>=0&&t.row=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";function o(e,t,n){var r=n?e.column<=t.column:e.columnthis.row)return;var t=u(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(t.row,t.column,!0)},e.prototype.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},e.prototype.detach=function(){this.document.off("change",this.$onChange)},e.prototype.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},e.prototype.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n},e}();s.prototype.$insertRight=!1,r.implement(s.prototype,i),t.Anchor=s}),define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(){function e(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)}return e.prototype.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e||"")},e.prototype.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},e.prototype.createAnchor=function(e,t){return new u(this,e,t)},e.prototype.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},e.prototype.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},e.prototype.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},e.prototype.getNewLineMode=function(){return this.$newLineMode},e.prototype.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},e.prototype.getLine=function(e){return this.$lines[e]||""},e.prototype.getLines=function(e,t){return this.$lines.slice(e,t+1)},e.prototype.getAllLines=function(){return this.getLines(0,this.getLength())},e.prototype.getLength=function(){return this.$lines.length},e.prototype.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},e.prototype.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},e.prototype.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},e.prototype.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},e.prototype.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},e.prototype.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},e.prototype.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},e.prototype.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},e.prototype.clonePos=function(e){return{row:e.row,column:e.column}},e.prototype.pos=function(e,t){return{row:e,column:t}},e.prototype.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},e.prototype.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e0,r=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},e.prototype.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},e.prototype.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},e.prototype.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4?this.$splitAndapplyLargeDelta(e,2e4):(i(this.$lines,e,t),this._signal("change",e))},e.prototype.$safeApplyDelta=function(e){var t=this.$lines.length;(e.action=="remove"&&e.start.row20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,r==-1&&(r=t),s<=r&&n.fireUpdateEvent(s,r)}}return e.prototype.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},e.prototype.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},e.prototype.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},e.prototype.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},e.prototype.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},e.prototype.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.lines[t]=null;else if(e.action=="remove")this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.lines.splice.apply(this.lines,r),this.states.splice.apply(this.states,r)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},e.prototype.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},e.prototype.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},e.prototype.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},e.prototype.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens},e.prototype.cleanup=function(){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.removeAllListeners()},e}();r.implement(s.prototype,i),t.BackgroundTokenizer=s}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./range").Range,s=function(){function e(e,t,n){n===void 0&&(n="text"),this.setRegexp(e),this.clazz=t,this.type=n,this.docLen=0}return e.prototype.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},e.prototype.update=function(e,t,n,s){if(!this.regExp)return;var o=s.firstRow,u=s.lastRow,a={},f=n.$editor&&n.$editor.$search,l=f&&f.$isMultilineSearch(n.$editor.getLastSearchOptions());for(var c=o;c<=u;c++){var h=this.cache[c];if(h==null||n.getValue().length!=this.docLen){if(l){h=[];var p=f.$multiLineForward(n,this.regExp,c,u);if(p){var d=p.endRow<=u?p.endRow-1:u;d>c&&(c=d),h.push(new i(p.startRow,p.startCol,p.endRow,p.endCol))}h.length>this.MAX_RANGES&&(h=h.slice(0,this.MAX_RANGES))}else h=r.getMatchOffsets(n.getLine(c),this.regExp),h.length>this.MAX_RANGES&&(h=h.slice(0,this.MAX_RANGES)),h=h.map(function(e){return new i(c,e.offset,c,e.offset+e.length)});this.cache[c]=h.length?h:""}if(h.length===0)continue;for(var v=h.length;v--;){var m=h[v].toScreenRange(n),g=m.toString();if(a[g])continue;a[g]=!0,t.drawSingleLineMarker(e,m,this.clazz,s)}}this.docLen=n.getValue().length},e}();s.prototype.MAX_RANGES=500,t.SearchHighlight=s}),define("ace/undomanager",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){for(var n=t;n--;){var r=e[n];if(r&&!r[0].ignore){while(n0){a.row+=i,a.column+=a.row==r.row?s:0;continue}!t&&l<=0&&(a.row=n.row,a.column=n.column,l===0&&(a.bias=1))}}function f(e){return{row:e.row,column:e.column}}function l(e){return{start:f(e.start),end:f(e.end),action:e.action,lines:e.lines.slice()}}function c(e){e=e||this;if(Array.isArray(e))return e.map(c).join("\n");var t="";e.action?(t=e.action=="insert"?"+":"-",t+="["+e.lines+"]"):e.value&&(Array.isArray(e.value)?t=e.value.map(h).join("\n"):t=h(e.value)),e.start&&(t+=h(e));if(e.id||e.rev)t+=" ("+(e.id||e.rev)+")";return t}function h(e){return e.start.row+":"+e.start.column+"=>"+e.end.row+":"+e.end.column}function p(e,t){var n=e.action=="insert",r=t.action=="insert";if(n&&r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.start,e.start)<=0))return null;m(e,t,1)}else if(n&&!r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.end,e.start)<=0))return null;m(e,t,-1)}else if(!n&&r)if(o(t.start,e.start)>=0)m(t,e,1);else{if(!(o(t.start,e.start)<=0))return null;m(e,t,1)}else if(!n&&!r)if(o(t.start,e.start)>=0)m(t,e,1);else{if(!(o(t.end,e.start)<=0))return null;m(e,t,-1)}return[t,e]}function d(e,t){for(var n=e.length;n--;)for(var r=0;r=0?m(e,t,-1):o(e.start,t.start)<=0?m(t,e,1):(m(e,s.fromPoints(t.start,e.start),-1),m(t,e,1));else if(!n&&r)o(t.start,e.end)>=0?m(t,e,-1):o(t.start,e.start)<=0?m(e,t,1):(m(t,s.fromPoints(e.start,t.start),-1),m(e,t,1));else if(!n&&!r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.end,e.start)<=0)){var i,u;return o(e.start,t.start)<0&&(i=e,e=y(e,t.start)),o(e.end,t.end)>0&&(u=y(e,t.end)),g(t.end,e.start,e.end,-1),u&&!i&&(e.lines=u.lines,e.start=u.start,e.end=u.end,u=e),[t,i,u].filter(Boolean)}m(e,t,-1)}return[t,e]}function m(e,t,n){g(e.start,t.start,t.end,n),g(e.end,t.start,t.end,n)}function g(e,t,n,r){e.row==(r==1?t:n).row&&(e.column+=r*(n.column-t.column)),e.row+=r*(n.row-t.row)}function y(e,t){var n=e.lines,r=e.end;e.end=f(t);var i=e.end.row-e.start.row,s=n.splice(i,n.length),o=i?t.column:t.column-e.start.column;n.push(s[0].substring(0,o)),s[0]=s[0].substr(o);var u={start:f(t),end:r,lines:s,action:e.action};return u}function b(e,t){t=l(t);for(var n=e.length;n--;){var r=e[n];for(var i=0;ithis.$undoDepth-1&&this.$undoStack.splice(0,r-this.$undoDepth+1),this.$undoStack.push(this.lastDeltas),e.id=this.$rev=++this.$maxRev}if(e.action=="remove"||e.action=="insert")this.$lastDelta=e;this.lastDeltas.push(e)},e.prototype.addSelection=function(e,t){this.selections.push({value:e,rev:t||this.$rev})},e.prototype.startNewGroup=function(){return this.lastDeltas=null,this.$rev},e.prototype.markIgnored=function(e,t){t==null&&(t=this.$rev+1);var n=this.$undoStack;for(var r=n.length;r--;){var i=n[r][0];if(i.id<=e)break;i.id0},e.prototype.canRedo=function(){return this.$redoStack.length>0},e.prototype.bookmark=function(e){e==undefined&&(e=this.$rev),this.mark=e},e.prototype.isAtBookmark=function(){return this.$rev===this.mark},e.prototype.toJSON=function(){return{$redoStack:this.$redoStack,$undoStack:this.$undoStack}},e.prototype.fromJSON=function(e){this.reset(),this.$undoStack=e.$undoStack,this.$redoStack=e.$redoStack},e.prototype.$prettyPrint=function(e){return e?c(e):c(this.$undoStack)+"\n---\n"+c(this.$redoStack)},e}();r.prototype.hasUndo=r.prototype.canUndo,r.prototype.hasRedo=r.prototype.canRedo,r.prototype.isClean=r.prototype.isAtBookmark,r.prototype.markClean=r.prototype.bookmark;var s=e("./range").Range,o=s.comparePoints,u=s.comparePoints;t.UndoManager=r}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){function e(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}return e.prototype.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},e.prototype.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},e.prototype.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},e.prototype.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},e.prototype.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},e.prototype.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},e.prototype.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},e.prototype.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},e.prototype.containsPoint=function(e){return this.pointIndex(e)>=0},e.prototype.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},e.prototype.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row=r)break}if(e.action=="insert"){var f=i-r,l=-t.column+n.column;for(;or)break;a.start.row==r&&a.start.column>=t.column&&(a.start.column==t.column&&this.$bias<=0||(a.start.column+=l,a.start.row+=f));if(a.end.row==r&&a.end.column>=t.column){if(a.end.column==t.column&&this.$bias<0)continue;a.end.column==t.column&&l>0&&oa.start.column&&a.end.column==s[o+1].start.column&&(a.end.column-=l),a.end.column+=l,a.end.row+=f}}}else{var f=r-i,l=t.column-n.column;for(;oi)break;if(a.end.rowt.column)a.end.column=t.column,a.end.row=t.row}else a.end.column+=l,a.end.row+=f;else a.end.row>i&&(a.end.row+=f);if(a.start.rowt.column)a.start.column=t.column,a.start.row=t.row}else a.start.column+=l,a.start.row+=f;else a.start.row>i&&(a.start.row+=f)}}if(f!=0&&o=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column,c=this.getFoldAt(u,a,1),h=this.getFoldAt(f,l,-1);if(c&&h==c)return c.addSubFold(o);c&&!c.range.isStart(u,a)&&this.removeFold(c),h&&!h.range.isEnd(f,l)&&this.removeFold(h);var p=this.getFoldsInRange(o.range);p.length>0&&(this.removeFolds(p),o.collapseChildren||p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;if(e==null)n=new r(0,0,this.getLength(),0),t==null&&(t=!0);else if(typeof e=="number")n=new r(e,0,e,this.getLine(e).length);else if("row"in e)n=r.fromPoints(e,e);else{if(Array.isArray(e))return i=[],e.forEach(function(e){i=i.concat(this.unfold(e))},this),i;n=e}i=this.getFoldsInRangeList(n);var s=i;while(i.length==1&&r.comparePoints(i[0].start,n.start)<0&&r.comparePoints(i[0].end,n.end)>0)this.expandFolds(i),i=this.getFoldsInRangeList(n);t!=0?this.removeFolds(i):this.expandFolds(i);if(s.length)return s},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(tc)break}while(s&&a.test(s.type));s=i.stepBackward()}else s=i.getCurrentToken();f.end.row=i.getCurrentTokenRow(),f.end.column=i.getCurrentTokenColumn();if(f.start.row==f.end.row&&f.start.column>f.end.column)return;return f}},this.foldAll=function(e,t,n,r){n==undefined&&(n=1e5);var i=this.foldWidgets;if(!i)return;t=t||this.getLength(),e=e||0;for(var s=e;s=e&&(s=o.end.row,o.collapseChildren=n,this.addFold("...",o))}},this.foldToLevel=function(e){this.foldAll();while(e-->0)this.unfold(null,!1)},this.foldAllComments=function(){var e=this;this.foldAll(null,null,null,function(t){var n=e.getTokens(t);for(var r=0;r=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t instanceof u&&(t=t.domEvent);var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s)return t.children||t.all?this.removeFold(s):this.expandFold(s),s;var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range))return this.removeFold(s),s}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,f,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.foldWidgets[t]=null;else if(e.action=="remove")this.foldWidgets.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator,u=e("../mouse/mouse_event").MouseEvent;t.Folding=a}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.getMatchingBracketRanges=function(e,t){var n=this.getLine(e.row),r=/([\(\[\{])|([\)\]\}])/,s=!t&&n.charAt(e.column-1),o=s&&s.match(r);o||(s=(t===undefined||t)&&n.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(r));if(!o)return null;var u=new i(e.row,e.column-1,e.row,e.column),a=o[1]?this.$findClosingBracket(o[1],e):this.$findOpeningBracket(o[2],e);if(!a)return[u];var f=new i(a.row,a.column,a.row,a.column+1);return[u,f]},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)").replace(/-close\b/,"-(close|open)")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)").replace(/-open\b/,"-(close|open)")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a"?r=!0:t.type.indexOf("tag-name")!==-1&&(n=!0));while(t&&!n);return t},this.$findClosingTag=function(e,t){var n,r=t.value,s=t.value,o=0,u=new i(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1);t=e.stepForward();var a=new i(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+t.value.length),f=!1;do{n=t;if(n.type.indexOf("tag-close")!==-1&&!f){var l=new i(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1);f=!0}t=e.stepForward();if(t){if(t.value===">"&&!f){var l=new i(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1);f=!0}if(t.type.indexOf("tag-name")!==-1){r=t.value;if(s===r)if(n.value==="<")o++;else if(n.value==="")return;var p=new i(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1)}}}else if(s===r&&t.value==="/>"){o--;if(o<0)var c=new i(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+2),h=c,p=h,l=new i(a.end.row,a.end.column,a.end.row,a.end.column+1)}}}while(t&&o>=0);if(u&&l&&c&&p&&a&&h)return{openTag:new i(u.start.row,u.start.column,l.end.row,l.end.column),closeTag:new i(c.start.row,c.start.column,p.end.row,p.end.column),openTagName:a,closeTagName:h}},this.$findOpeningTag=function(e,t){var n=e.getCurrentToken(),r=t.value,s=0,o=e.getCurrentTokenRow(),u=e.getCurrentTokenColumn(),a=u+2,f=new i(o,u,o,a);e.stepForward();var l=new i(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+t.value.length);t.type.indexOf("tag-close")===-1&&(t=e.stepForward());if(!t||t.value!==">")return;var c=new i(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1);e.stepBackward(),e.stepBackward();do{t=n,o=e.getCurrentTokenRow(),u=e.getCurrentTokenColumn(),a=u+t.value.length,n=e.stepBackward();if(t)if(t.type.indexOf("tag-name")!==-1){if(r===t.value)if(n.value==="<"){s++;if(s>0){var h=new i(o,u,o,a),p=new i(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1);do t=e.stepForward();while(t&&t.value!==">");var d=new i(e.getCurrentTokenRow(),e.getCurrentTokenColumn(),e.getCurrentTokenRow(),e.getCurrentTokenColumn()+1)}}else n.value===""){var v=0,m=n;while(m){if(m.type.indexOf("tag-name")!==-1&&m.value===r){s--;break}if(m.value==="<")break;m=e.stepBackward(),v++}for(var g=0;g=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./bidihandler").BidiHandler,o=e("./config"),u=e("./lib/event_emitter").EventEmitter,a=e("./selection").Selection,f=e("./mode/text").Mode,l=e("./range").Range,c=e("./line_widgets").LineWidgets,h=e("./document").Document,p=e("./background_tokenizer").BackgroundTokenizer,d=e("./search_highlight").SearchHighlight,v=e("./undomanager").UndoManager,m=function(){function e(t,n){this.doc,this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$editor=null,this.prevOp={},this.$foldData=[],this.id="session"+ ++e.$uid,this.$foldData.toString=function(){return this.join("\n")},this.$gutterCustomWidgets={},this.bgTokenizer=new p((new f).getTokenizer(),this);var r=this;this.bgTokenizer.on("update",function(e){r._signal("tokenizerUpdate",e)}),this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this);if(typeof t!="object"||!t.getLine)t=new h(t);this.setDocument(t),this.selection=new a(this),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.selection.on("changeCursor",this.$onSelectionChange),this.$bidiHandler=new s(this),o.resetOptions(this),this.setMode(n),o._signal("session",this),this.destroyed=!1,this.$initOperationListeners()}return e.prototype.$initOperationListeners=function(){var e=this;this.curOp=null,this.on("change",function(){e.curOp||(e.startOperation(),e.curOp.selectionBefore=e.$lastSel),e.curOp.docChanged=!0},!0),this.on("changeSelection",function(){e.curOp||(e.startOperation(),e.curOp.selectionBefore=e.$lastSel),e.curOp.selectionChanged=!0},!0),this.$operationResetTimer=i.delayedCall(this.endOperation.bind(this,!0))},e.prototype.startOperation=function(e){if(this.curOp){if(!e||this.curOp.command)return;this.prevOp=this.curOp}e||(e={}),this.$operationResetTimer.schedule(),this.curOp={command:e.command||{},args:e.args},this.curOp.selectionBefore=this.selection.toJSON(),this._signal("startOperation",e)},e.prototype.endOperation=function(e){if(this.curOp){if(e&&e.returnValue===!1){this.curOp=null,this._signal("endOperation",e);return}if(e==1&&this.curOp.command&&this.curOp.command.name=="mouse")return;var t=this.selection.toJSON();this.curOp.selectionAfter=t,this.$lastSel=this.selection.toJSON(),this.getUndoManager().addSelection(t),this._signal("beforeEndOperation"),this.prevOp=this.curOp,this.curOp=null,this._signal("endOperation",e)}},e.prototype.setDocument=function(e){this.doc&&this.doc.off("change",this.$onChange),this.doc=e,e.on("change",this.$onChange,!0),this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},e.prototype.getDocument=function(){return this.doc},Object.defineProperty(e.prototype,"widgetManager",{get:function(){var e=new c(this);return this.widgetManager=e,this.$editor&&e.attach(this.$editor),e},set:function(e){Object.defineProperty(this,"widgetManager",{writable:!0,enumerable:!0,configurable:!0,value:e})},enumerable:!1,configurable:!0}),e.prototype.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},e.prototype.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},e.prototype.setUndoManager=function(e){this.$undoManager=e,this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;e.addSession(this),this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.mergeUndoDeltas=!1},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},e.prototype.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},e.prototype.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},e.prototype.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},e.prototype.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},e.prototype.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},e.prototype.setTabSize=function(e){this.setOption("tabSize",e)},e.prototype.getTabSize=function(){return this.$tabSize},e.prototype.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},e.prototype.setNavigateWithinSoftTabs=function(e){this.setOption("navigateWithinSoftTabs",e)},e.prototype.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},e.prototype.setOverwrite=function(e){this.setOption("overwrite",e)},e.prototype.getOverwrite=function(){return this.$overwrite},e.prototype.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},e.prototype.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},e.prototype.removeGutterCustomWidget=function(e){this.$editor&&this.$editor.renderer.$gutterLayer.$removeCustomWidget(e)},e.prototype.addGutterCustomWidget=function(e,t){this.$editor&&this.$editor.renderer.$gutterLayer.$addCustomWidget(e,t)},e.prototype.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},e.prototype.getBreakpoints=function(){return this.$breakpoints},e.prototype.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oe&&(e=t.screenWidth)}),this.lineWidgetWidth=e},e.prototype.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;ao){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},e.prototype.getLine=function(e){return this.doc.getLine(e)},e.prototype.getLines=function(e,t){return this.doc.getLines(e,t)},e.prototype.getLength=function(){return this.doc.getLength()},e.prototype.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},e.prototype.insert=function(e,t){return this.doc.insert(e,t)},e.prototype.remove=function(e){return this.doc.remove(e)},e.prototype.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},e.prototype.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;for(var n=e.length-1;n!=-1;n--){var r=e[n];r.action=="insert"||r.action=="remove"?this.doc.revertDelta(r):r.folds&&this.addFolds(r.folds)}!t&&this.$undoSelect&&(e.selectionBefore?this.selection.fromJSON(e.selectionBefore):this.selection.setRange(this.$getUndoSelection(e,!0))),this.$fromUndo=!1},e.prototype.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;for(var n=0;ne.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,f=s.start,o=f.row-a.row,u=f.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},e.prototype.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.doc.insertInLine({row:r,column:0},n)},e.prototype.outdentRows=function(e){var t=e.collapseRows(),n=new l(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new l(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,u),o.length&&this.addFolds(o),i},e.prototype.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},e.prototype.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},e.prototype.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},e.prototype.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},e.prototype.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},e.prototype.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},e.prototype.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},e.prototype.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},e.prototype.getUseWrapMode=function(){return this.$useWrapMode},e.prototype.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode")},e.prototype.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},e.prototype.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},e.prototype.getWrapLimit=function(){return this.$wrapLimit},e.prototype.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},e.prototype.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},e.prototype.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=null;this.$updating=!0;if(u!=0)if(n==="remove"){this[t?"$wrapData":"$rowLengthCache"].splice(s,u);var f=this.$foldData;a=this.getFoldsInRange(e),this.removeFolds(a);var l=this.getFoldLine(i.row),c=0;if(l){l.addRemoveChars(i.row,i.column,r.column-i.column),l.shiftRow(-u);var h=this.getFoldLine(s);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=i.row&&l.shiftRow(-u)}o=s}else{var p=Array(u);p.unshift(s,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(s),c=0;if(l){var v=l.range.compareInside(r.row,r.column);v==0?(l=l.split(r.row,r.column),l&&(l.shiftRow(u),l.addRemoveChars(o,0,i.column-r.column))):v==-1&&(l.addRemoveChars(s,0,i.column-r.column),l.shiftRow(u)),c=f.indexOf(l)+1}for(c;c=s&&l.shiftRow(u)}}else{u=Math.abs(e.start.column-e.end.column),n==="remove"&&(a=this.getFoldsInRange(e),this.removeFolds(a),u=-u);var l=this.getFoldLine(s);l&&l.addRemoveChars(s,r.column,u)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),a},e.prototype.$updateRowLengthCache=function(e,t){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},e.prototype.$updateWrapData=function(e,t){var n=this.doc.getAllLines(),r=this.getTabSize(),i=this.$wrapData,s=this.$wrapLimit,o,u,a=e;t=Math.min(t,n.length-1);while(a<=t)u=this.getFoldLine(a,u),u?(o=[],u.walk(function(e,t,r,i){var s;if(e!=null){s=this.$getDisplayTokens(e,o.length),s[0]=b;for(var u=1;ut-h){var p=s+t-h;if(e[p-1]>=S&&e[p]>=S){c(p);continue}if(e[p]==b||e[p]==w){for(p;p!=s-1;p--)if(e[p]==b)break;if(p>s){c(p);continue}p=s+t;for(p;p>2)),s-1);while(p>d&&e[p]d&&e[p]d&&e[p]==E)p--}else while(p>d&&e[p]d){c(++p);continue}p=s+t,e[p]==y&&p--,c(p-h)}return r},e.prototype.$getDisplayTokens=function(e,t){var n=[],r;t=t||0;for(var i=0;i39&&s<48||s>57&&s<64?n.push(E):s>=4352&&N(s)?n.push(g,y):n.push(g)}return n},e.prototype.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&N(r)?n+=2:n+=1;if(n>t)break}return[n,i]},e.prototype.getRowLength=function(e){var t=1;return this.lineWidgets&&(t+=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0),!this.$useWrapMode||!this.$wrapData[e]?t:this.$wrapData[e].length+t},e.prototype.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},e.prototype.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0)var u=f[l],i=this.$docRowCache[l],h=e>f[c-1];else var h=!c;var p=this.getLength()-1,d=this.getNextFoldLine(i),v=d?d.start.row:Infinity;while(u<=e){a=this.getRowLength(i);if(u+a>e||i>=p)break;u+=a,i++,i>v&&(i=d.end.row+1,d=this.getNextFoldLine(i,d),v=d?d.start.row:Infinity),h&&(this.$docRowCache.push(i),this.$screenRowCache.push(u))}if(d&&d.start.row<=i)r=this.getFoldDisplayLine(d),i=d.start.row;else{if(u+a<=e||i>p)return{row:p,column:this.getLine(p).length};r=this.getLine(i),d=null}var m=0,g=Math.floor(e-u);if(this.$useWrapMode){var y=this.$wrapData[i];y&&(o=y[g],g>0&&y.length&&(m=y.indent,s=y[g-1]||y[y.length-1],r=r.substring(s)))}return n!==undefined&&this.$bidiHandler.isBidiRow(u+g,i,g)&&(t=this.$bidiHandler.offsetToCol(n)),s+=this.$getStringScreenWidth(r,t-m)[1],this.$useWrapMode&&s>=o&&(s=o-1),d?d.idxToPosition(s):{row:i,column:s}},e.prototype.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);var v=0;if(this.$useWrapMode){var m=this.$wrapData[i];if(m){var g=0;while(d.length>=m[g])r++,g++;d=d.substring(m[g-1]||0,d.length),v=g>0?m.indent:0}}return this.lineWidgets&&this.lineWidgets[u]&&this.lineWidgets[u].rowsAbove&&(r+=this.lineWidgets[u].rowsAbove),{row:r,column:v+this.$getStringScreenWidth(d)[0]}},e.prototype.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},e.prototype.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},e.prototype.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},e.prototype.$setFontMetrics=function(e){if(!this.$enableVarChar)return;this.$getStringScreenWidth=function(t,n,r){if(n===0)return[0,0];n||(n=Infinity),r=r||0;var i,s;for(s=0;sn)break}return[r,s]}},e.prototype.getPrecedingCharacter=function(){var e=this.selection.getCursor();if(e.column===0)return e.row===0?"":this.doc.getNewLineCharacter();var t=this.getLine(e.row);return t[e.column-1]},e.prototype.destroy=function(){this.destroyed||(this.bgTokenizer.setDocument(null),this.bgTokenizer.cleanup(),this.destroyed=!0),this.endOperation(),this.$stopWorker(),this.removeAllListeners(),this.doc&&this.doc.off("change",this.$onChange),this.selection&&(this.selection.off("changeCursor",this.$onSelectionChange),this.selection.off("changeSelection",this.$onSelectionChange)),this.selection.detach()},e}();m.$uid=0,m.prototype.$modes=o.$modes,m.prototype.getValue=m.prototype.toString,m.prototype.$defaultUndoManager={undo:function(){},redo:function(){},hasUndo:function(){},hasRedo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},m.prototype.$overwrite=!1,m.prototype.$mode=null,m.prototype.$modeId=null,m.prototype.$scrollTop=0,m.prototype.$scrollLeft=0,m.prototype.$wrapLimit=80,m.prototype.$useWrapMode=!1,m.prototype.$wrapLimitRange={min:null,max:null},m.prototype.lineWidgets=null,m.prototype.isFullWidth=N,r.implement(m.prototype,u);var g=1,y=2,b=3,w=4,E=9,S=10,x=11,T=12;e("./edit_session/folding").Folding.call(m.prototype),e("./edit_session/bracket_match").BracketMatch.call(m.prototype),o.defineOptions(m.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){e=parseInt(e),e>0&&this.$tabSize!==e&&(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(e){this.setFoldStyle(e)},handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId},handlesSet:!0}}),t.EditSession=m}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";function u(e,t){function i(e,r){r===void 0&&(r=!0);var i=n&&t.$supportsUnicodeFlag?new RegExp("[\\p{L}\\p{N}_]","u"):new RegExp("\\w");if(i.test(e)||t.regExp)return n&&t.$supportsUnicodeFlag?r?"(?<=^|[^\\p{L}\\p{N}_])":"(?=[^\\p{L}\\p{N}_]|$)":"\\b";return""}var n=r.supportsLookbehind(),s=Array.from(e),o=s[0],u=s[s.length-1];return i(o)+e+i(u,!1)}function a(e,t,n){var r=null,i=0;while(i<=e.length){t.lastIndex=i;var s=t.exec(e);if(!s)break;var o=s.index+s[0].length;if(o>e.length-n)break;if(!r||o>r.index+r[0].length)r=s;i=s.index+1}return r}function f(e,t){var n=5e3,r={row:t,column:0},i=e.doc.positionToIndex(r),s=i+n,o=e.doc.indexToPosition(s),u=o.row;return u+1}var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){function e(){this.$options={}}return e.prototype.set=function(e){return i.mixin(this.$options,e),this},e.prototype.getOptions=function(){return r.copyObject(this.$options)},e.prototype.setOptions=function(e){this.$options=e},e.prototype.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i,o){return r=new s(e,n,i,o),n==o&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start)?(r=null,!1):!0}),r},e.prototype.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;hv)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g,y=0;yy&&(y=w),o.push(new s(g.startRow,g.startCol,g.endRow,g.endCol))}}else{g=r.getMatchOffsets(i[y],u);for(var h=0;hx&&o[h].end.row==T)h--;o=o.slice(y,h+1);for(y=0,h=o.length;y=i){n+="\\";break}var o=e.charCodeAt(r);switch(o){case t.Backslash:n+="\\";break;case t.n:n+="\n";break;case t.t:n+=" "}continue}if(s===t.DollarSign){r++;if(r>=i){n+="$";break}var u=e.charCodeAt(r);if(u===t.DollarSign){n+="$$";continue}if(u===t.Digit0||u===t.Ampersand){n+="$&";continue}if(t.Digit1<=u&&u<=t.Digit9){n+="$"+e[r];continue}}n+=e[r]}return n||e},e.prototype.replace=function(e,t){var n=this.$options,r=this.$assembleRegExp(n);if(n.$isMultiLine)return t;if(!r)return;var i=this.$isMultilineSearch(n);i&&(e=e.replace(/\r\n|\r|\n/g,"\n"));var s=r.exec(e);if(!s||!i&&s[0].length!=e.length)return null;t=n.regExp?this.parseReplaceString(t):t.replace(/\$/g,"$$$$"),t=e.replace(r,t);if(n.preserveCase){t=t.split("");for(var o=Math.min(e.length,e.length);o--;){var u=e[o];u&&u.toLowerCase()!=u?t[o]=t[o].toUpperCase():t[o]=t[o].toLowerCase()}t=t.join("")}return t},e.prototype.$assembleRegExp=function(e,t){if(e.needle instanceof RegExp)return e.re=e.needle;var n=e.needle;if(!e.needle)return e.re=!1;e.regExp||(n=r.escapeRegExp(n));var i=e.caseSensitive?"gm":"gmi";try{new RegExp(n,"u"),e.$supportsUnicodeFlag=!0,i+="u"}catch(s){e.$supportsUnicodeFlag=!1}e.wholeWord&&(n=u(n,e)),e.$isMultiLine=!t&&/[\n\r]/.test(n);if(e.$isMultiLine)return e.re=this.$assembleMultilineRegExp(n,i);try{var o=new RegExp(n,i)}catch(s){o=!1}return e.re=o},e.prototype.$assembleMultilineRegExp=function(e,t){var n=e.replace(/\r\n|\r|\n/g,"$\n^").split("\n"),r=[];for(var i=0;ir)break;var a=e.getLine(o++);i=i==null?a:i+"\n"+a}var l=t.exec(i);t.lastIndex=0;if(l){var c=i.slice(0,l.index).split("\n"),h=l[0].split("\n"),p=n+c.length-1,d=c[c.length-1].length,v=p+h.length-1,m=h.length==1?d+h[0].length:h[h.length-1].length;return{startRow:p,startCol:d,endRow:v,endCol:m}}}return null},e.prototype.$multiLineBackward=function(e,t,n,r,i){var s,o=f(e,r),u=e.getLine(r).length-n;for(var l=r;l>=i;){for(var c=0;c=i;c++){var h=e.getLine(l--);s=s==null?h:h+"\n"+s}var p=a(s,t,u);if(p){var d=s.slice(0,p.index).split("\n"),v=p[0].split("\n"),m=l+d.length,g=d[d.length-1].length,y=m+v.length-1,b=v.length==1?g+v[0].length:v[v.length-1].length;return{startRow:m,startCol:g,endRow:y,endCol:b}}}return null},e.prototype.$matchIterator=function(e,t){var n=this.$assembleRegExp(t);if(!n)return!1;var i=this.$isMultilineSearch(t),s=this.$multiLineForward,o=this.$multiLineBackward,u=t.backwards==1,a=t.skipCurrent!=0,f=n.unicode,l=t.range,c=t.start;c||(c=l?l[u?"end":"start"]:e.selection.getRange()),c.start&&(c=c[a!=u?"end":"start"]);var h=l?l.start.row:0,p=l?l.end.row:e.getLength()-1;if(u)var d=function(e){var n=c.row;if(m(n,c.column,e))return;for(n--;n>=h;n--)if(m(n,Number.MAX_VALUE,e))return;if(t.wrap==0)return;for(n=p,h=c.row;n>=h;n--)if(m(n,Number.MAX_VALUE,e))return};else var d=function(e){var n=c.row;if(m(n,c.column,e))return;for(n+=1;n<=p;n++)if(m(n,0,e))return;if(t.wrap==0)return;for(n=h,p=c.row;n<=p;n++)if(m(n,0,e))return};if(t.$isMultiLine)var v=n.length,m=function(t,r,i){var s=u?t-v+1:t;if(s<0||s+v>e.getLength())return;var o=e.getLine(s),a=o.search(n[0]);if(!u&&ar)return;if(i(s,a,s+v-1,l))return!0};else if(u)var m=function(t,s,u){if(i){var a=o(e,n,s,t,h);if(!a)return!1;if(u(a.startRow,a.startCol,a.endRow,a.endCol))return!0}else{var l=e.getLine(t),c=[],p,d=0;n.lastIndex=0;while(p=n.exec(l)){var v=p[0].length;d=p.index;if(!v){if(d>=l.length)break;n.lastIndex=d+=r.skipEmptyMatch(l,d,f)}if(p.index+v>s)break;c.push(p.index,v)}for(var m=c.length-1;m>=0;m-=2){var g=c[m-1],v=c[m];if(u(t,g,t,g+v))return!0}}};else var m=function(t,o,u){n.lastIndex=o;if(i){var a=s(e,n,t,p);if(a){var l=a.endRow<=p?a.endRow-1:p;l>t&&(t=l)}if(!a)return!1;if(u(a.startRow,a.startCol,a.endRow,a.endCol))return!0}else{var c=e.getLine(t),h,d;while(d=n.exec(c)){var v=d[0].length;h=d.index;if(u(t,h,t,h+v))return!0;if(!v){n.lastIndex=h+=r.skipEmptyMatch(c,h,f);if(h>=c.length)return!1}}}};return{forEach:d}},e}();t.Search=o}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function a(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}var r=this&&this.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function r(){this.constructor=t}if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");e(t,n),t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),i=e("../lib/keys"),s=e("../lib/useragent"),o=i.KEY_MODS,u=function(){function e(e,t){this.$init(e,t,!1)}return e.prototype.$init=function(e,t,n){this.platform=t||(s.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=n},e.prototype.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},e.prototype.removeCommand=function(e,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},e.prototype.bindKey=function(e,t,n){typeof e=="object"&&e&&(n==undefined&&(n=e.position),e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=o[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var s=this.parseKeys(e),u=o[s.hashId]+s.key;this._addCommandToBinding(r+u,t,n)},this)},e.prototype._addCommandToBinding=function(e,t,n){var r=this.commandKeyBinding,i;if(!t)delete r[e];else if(!r[e]||this.$singleCommand)r[e]=t;else{Array.isArray(r[e])?(i=r[e].indexOf(t))!=-1&&r[e].splice(i,1):r[e]=[r[e]],typeof n!="number"&&(n=a(t));var s=r[e];for(i=0;in)break}s.splice(i,0,t)}},e.prototype.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},e.prototype.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},e.prototype.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},e.prototype._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},e.prototype.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),r=i[n];if(i.FUNCTION_KEYS[r])n=i.FUNCTION_KEYS[r].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=i.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},e.prototype.findKeyCommand=function(e,t){var n=o[e]+t;return this.commandKeyBinding[n]},e.prototype.handleKeyboard=function(e,t,n,r){if(r<0)return;var i=o[t]+n,s=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,s=this.commandKeyBinding[e.$keyChain]||s);if(s)if(s=="chainKeys"||s[s.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};if(e.$keyChain)if(!!t&&t!=4||n.length!=1){if(t==-1||r>0)e.$keyChain=""}else e.$keyChain=e.$keyChain.slice(0,-i.length-1);return{command:s}},e.prototype.getStatusText=function(e,t){return t.$keyChain||""},e}(),f=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.$singleCommand=!0,r}return r(t,e),t}(u);f.call=function(e,t,n){u.prototype.$init.call(e,t,n,!0)},u.call=function(e,t,n){u.prototype.$init.call(e,t,n,!1)},t.HashHandler=f,t.MultiHashHandler=u}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function r(){this.constructor=t}if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");e(t,n),t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),i=e("../lib/oop"),s=e("../keyboard/hash_handler").MultiHashHandler,o=e("../lib/event_emitter").EventEmitter,u=function(e){function t(t,n){var r=e.call(this,n,t)||this;return r.byName=r.commands,r.setDefaultHandler("exec",function(e){return e.args?e.command.exec(e.editor,e.args,e.event,!1):e.command.exec(e.editor,{},e.event,!0)}),r}return r(t,e),t.prototype.exec=function(e,t,n){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);var i={editor:t,command:e,args:n};return this.canExecute(e,t)?(i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!1?!1:!0):(this._signal("commandUnavailable",i),!1)},t.prototype.canExecute=function(e,t){return typeof e=="string"&&(e=this.commands[e]),e?t&&t.$readOnly&&!e.readOnly?!1:this.$checkCommandState!=0&&e.isAvailable&&!e.isAvailable(t)?!1:!0:!1},t.prototype.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.off("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},t.prototype.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},t.prototype.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})},t}(s);i.implement(u.prototype,o),t.CommandManager=u}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",description:"Show settings menu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",description:"Go to next error",bindKey:o("Alt-E","F4"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",description:"Go to previous error",bindKey:o("Alt-Shift-E","Shift-F4"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:o("Ctrl-L","Command-L"),exec:function(e,t){typeof t=="number"&&!isNaN(t)&&e.gotoLine(t),e.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",description:"Toggle fold widget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",description:"Toggle parent fold widget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldAllComments",description:"Fold all comments",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAllComments()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:o("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:o("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:o("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:o("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:o("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:o("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:o("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:o("Ctrl-\\|Ctrl-P","Command-\\"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:o("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(e){},readOnly:!0},{name:"cut",description:"Cut",exec:function(e){var t=e.$copyWithEmptySelection&&e.selection.isEmpty(),n=t?e.selection.getLineRange():e.selection.getRange();e._emit("cut",n),n.isEmpty()||e.session.remove(n),e.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",description:"Undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",description:"Redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:o("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:o("Ctrl-Shift-Backspace",null),exec:function(e){var t=e.selection.getRange();t.start.column=0,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:o("Ctrl-Shift-Delete",null),exec:function(e){var t=e.selection.getRange();t.end.column=Number.MAX_VALUE,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:o("Alt-Shift-X","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"autoindent",description:"Auto Indent",bindKey:o(null,null),exec:function(e){e.autoIndent()},scrollIntoView:"animate"},{name:"expandtoline",description:"Expand to line",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"openlink",bindKey:o("Ctrl+F3","F3"),exec:function(e){e.openLink()}},{name:"joinlines",description:"Join lines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o0||e+t=0&&this.$isCustomWidgetVisible(e-t))return e-t;if(e+t<=this.lines.getLength()-1&&this.$isCustomWidgetVisible(e+t))return e+t;if(e-t>=0&&this.$isFoldWidgetVisible(e-t))return e-t;if(e+t<=this.lines.getLength()-1&&this.$isFoldWidgetVisible(e+t))return e+t}return null},e.prototype.$findNearestAnnotation=function(e){if(this.$isAnnotationVisible(e))return e;var t=0;while(e-t>0||e+t=0&&this.$isAnnotationVisible(e-t))return e-t;if(e+t<=this.lines.getLength()-1&&this.$isAnnotationVisible(e+t))return e+t}return null},e.prototype.$focusFoldWidget=function(e){if(e==null)return;var t=this.$getFoldWidget(e);t.classList.add(this.editor.renderer.keyboardFocusClassName),t.focus()},e.prototype.$focusCustomWidget=function(e){if(e==null)return;var t=this.$getCustomWidget(e);t&&(t.classList.add(this.editor.renderer.keyboardFocusClassName),t.focus())},e.prototype.$focusAnnotation=function(e){if(e==null)return;var t=this.$getAnnotation(e);t.classList.add(this.editor.renderer.keyboardFocusClassName),t.focus()},e.prototype.$blurFoldWidget=function(e){var t=this.$getFoldWidget(e);t.classList.remove(this.editor.renderer.keyboardFocusClassName),t.blur()},e.prototype.$blurCustomWidget=function(e){var t=this.$getCustomWidget(e);t&&(t.classList.remove(this.editor.renderer.keyboardFocusClassName),t.blur())},e.prototype.$blurAnnotation=function(e){var t=this.$getAnnotation(e);t.classList.remove(this.editor.renderer.keyboardFocusClassName),t.blur()},e.prototype.$moveFoldWidgetUp=function(){var e=this.activeRowIndex;while(e>0){e--;if(this.$isFoldWidgetVisible(e)||this.$isCustomWidgetVisible(e)){this.$blurFoldWidget(this.activeRowIndex),this.$blurCustomWidget(this.activeRowIndex),this.activeRowIndex=e,this.$isFoldWidgetVisible(e)?this.$focusFoldWidget(this.activeRowIndex):this.$focusCustomWidget(this.activeRowIndex);return}}return},e.prototype.$moveFoldWidgetDown=function(){var e=this.activeRowIndex;while(e0){e--;if(this.$isAnnotationVisible(e)){this.$blurAnnotation(this.activeRowIndex),this.activeRowIndex=e,this.$focusAnnotation(this.activeRowIndex);return}}return},e.prototype.$moveAnnotationDown=function(){var e=this.activeRowIndex;while(e=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},i=e("./lib/oop"),s=e("./lib/dom"),o=e("./lib/lang"),u=e("./lib/useragent"),a=e("./keyboard/textinput").TextInput,f=e("./mouse/mouse_handler").MouseHandler,l=e("./mouse/fold_handler").FoldHandler,c=e("./keyboard/keybinding").KeyBinding,h=e("./edit_session").EditSession,p=e("./search").Search,d=e("./range").Range,v=e("./lib/event_emitter").EventEmitter,m=e("./commands/command_manager").CommandManager,g=e("./commands/default_commands").commands,y=e("./config"),b=e("./token_iterator").TokenIterator,w=e("./keyboard/gutter_handler").GutterKeyboardHandler,E=e("./config").nls,S=e("./clipboard"),x=e("./lib/keys"),T=e("./lib/event"),N=e("./tooltip").HoverTooltip,C=function(){function e(t,n,r){this.id="editor"+ ++e.$uid,this.session,this.$toDestroy=[];var i=t.getContainerElement();this.container=i,this.renderer=t,this.commands=new m(u.isMac?"mac":"win",g),typeof document=="object"&&(this.textInput=new a(t.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.$mouseHandler=new f(this),new l(this)),this.keyBinding=new c(this),this.$search=(new p).set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=o.delayedCall(function(){this._signal("input",{}),this.session&&!this.session.destroyed&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",function(e,t){t._$emitInputEvent.schedule(31)}),this.setSession(n||r&&r.session||new h("")),y.resetOptions(this),r&&this.setOptions(r),y._signal("editor",this)}return e.prototype.$initOperationListeners=function(){this.commands.on("exec",this.startOperation.bind(this),!0),this.commands.on("afterExec",this.endOperation.bind(this),!0)},e.prototype.startOperation=function(e){this.session.startOperation(e)},e.prototype.endOperation=function(e){this.session.endOperation(e)},e.prototype.onStartOperation=function(e){this.curOp=this.session.curOp,this.curOp.scrollTop=this.renderer.scrollTop,this.prevOp=this.session.prevOp,e||(this.previousCommand=null)},e.prototype.onEndOperation=function(e){if(this.curOp&&this.session){if(e&&e.returnValue===!1){this.curOp=null;return}this._signal("beforeEndOperation");if(!this.curOp)return;var t=this.curOp.command,n=t&&t.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var r=this.selection.getRange(),i=this.renderer.layerConfig;(r.start.row>=i.lastRow||r.end.row<=i.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}n=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.$lastSel=this.session.selection.toJSON(),this.prevOp=this.curOp,this.curOp=null}},e.prototype.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},e.prototype.setKeyboardHandler=function(e,t){if(e&&typeof e=="string"&&e!="ace"){this.$keybindingId=e;var n=this;y.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},e.prototype.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},e.prototype.setSession=function(e){if(this.session==e)return;this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange),this.session.off("startOperation",this.$onStartOperation),this.session.off("endOperation",this.$onEndOperation);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.$onStartOperation=this.onStartOperation.bind(this),this.session.on("startOperation",this.$onStartOperation),this.$onEndOperation=this.onEndOperation.bind(this),this.session.on("endOperation",this.$onEndOperation),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),t&&(t.$editor=null),e&&e._signal("changeEditor",{editor:this}),e&&(e.$editor=this),e&&!e.destroyed&&e.bgTokenizer.scheduleStart()},e.prototype.getSession=function(){return this.session},e.prototype.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},e.prototype.getValue=function(){return this.session.getValue()},e.prototype.getSelection=function(){return this.selection},e.prototype.resize=function(e){this.renderer.onResize(e)},e.prototype.setTheme=function(e,t){this.renderer.setTheme(e,t)},e.prototype.getTheme=function(){return this.renderer.getTheme()},e.prototype.setStyle=function(e,t){this.renderer.setStyle(e,t)},e.prototype.unsetStyle=function(e){this.renderer.unsetStyle(e)},e.prototype.getFontSize=function(){return this.getOption("fontSize")||s.computedStyle(this.container).fontSize},e.prototype.setFontSize=function(e){this.setOption("fontSize",e)},e.prototype.$highlightBrackets=function(){if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(!t||t.destroyed)return;t.$bracketHighlight&&(t.$bracketHighlight.markerIds.forEach(function(e){t.removeMarker(e)}),t.$bracketHighlight=null);var n=e.getCursorPosition(),r=e.getKeyboardHandler(),i=r&&r.$getDirectionForHighlight&&r.$getDirectionForHighlight(e),s=t.getMatchingBracketRanges(n,i);if(!s){var o=new b(t,n.row,n.column),u=o.getCurrentToken();if(u&&/\b(?:tag-open|tag-name)/.test(u.type)){var a=t.getMatchingTags(n);a&&(s=[a.openTagName.isEmpty()?a.openTag:a.openTagName,a.closeTagName.isEmpty()?a.closeTag:a.closeTagName])}}!s&&t.$mode.getMatching&&(s=t.$mode.getMatching(e.session));if(!s){e.getHighlightIndentGuides()&&e.renderer.$textLayer.$highlightIndentGuide();return}var f="ace_bracket";Array.isArray(s)?s.length==1&&(f="ace_error_bracket"):s=[s],s.length==2&&(d.comparePoints(s[0].end,s[1].start)==0?s=[d.fromPoints(s[0].start,s[1].end)]:d.comparePoints(s[0].start,s[1].end)==0&&(s=[d.fromPoints(s[1].start,s[0].end)])),t.$bracketHighlight={ranges:s,markerIds:s.map(function(e){return t.addMarker(e,f,"text")})},e.getHighlightIndentGuides()&&e.renderer.$textLayer.$highlightIndentGuide()},50)},e.prototype.focus=function(){this.textInput.focus()},e.prototype.isFocused=function(){return this.textInput.isFocused()},e.prototype.blur=function(){this.textInput.blur()},e.prototype.onFocus=function(e){if(this.$isFocused)return;this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",e)},e.prototype.onBlur=function(e){if(!this.$isFocused)return;this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",e)},e.prototype.$cursorChange=function(){this.renderer.updateCursor(),this.$highlightBrackets(),this.$updateHighlightActiveLine()},e.prototype.onDocumentChange=function(e){var t=this.session.$useWrapMode,n=e.start.row==e.end.row?e.end.row:Infinity;this.renderer.updateLines(e.start.row,n,t),this._signal("change",e),this.$cursorChange()},e.prototype.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},e.prototype.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},e.prototype.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},e.prototype.onCursorChange=function(){this.$cursorChange(),this._signal("changeSelection")},e.prototype.$updateHighlightActiveLine=function(){var e=this.getSession(),t;if(this.$highlightActiveLine){if(this.$selectionStyle!="line"||!this.selection.isMultiLine())t=this.getCursorPosition();this.renderer.theme&&this.renderer.theme.$selectionColorConflict&&!this.selection.isEmpty()&&(t=!1),this.renderer.$maxLines&&this.session.getLength()===1&&!(this.renderer.$minLines>1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new d(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},e.prototype.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},e.prototype.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column,r=t.end.column,i=e.getLine(t.start.row),s=i.substring(n,r);if(s.length>5e3||!/[\w\d]/.test(s))return;var o=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s}),u=i.substring(n-1,r+1);if(!o.test(u))return;return o},e.prototype.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},e.prototype.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},e.prototype.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},e.prototype.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},e.prototype.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},e.prototype.onChangeWrapLimit=function(){this.renderer.updateFull()},e.prototype.onChangeWrapMode=function(){this.renderer.onResize(!0)},e.prototype.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},e.prototype.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},e.prototype.getCopyText=function(){var e=this.getSelectedText(),t=this.session.doc.getNewLineCharacter(),n=!1;if(!e&&this.$copyWithEmptySelection){n=!0;var r=this.selection.getAllRanges();for(var i=0;iu.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e);n.insert(i,e),s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new d(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new d(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(this.$enableAutoIndent){if(n.getDocument().isNewLine(e)){var h=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},h)}c&&r.autoOutdent(l,n,i.row)}},e.prototype.autoIndent=function(){var e=this.session,t=e.getMode(),n=this.selection.isEmpty()?[new d(0,0,e.doc.getLength()-1,0)]:this.selection.getAllRanges(),r="",i="",s="",o=e.getTabString();for(var u=0;u0&&(r=e.getState(l-1),i=e.getLine(l-1),s=t.getNextLineIndent(r,i,o));var c=e.getLine(l),h=t.$getIndent(c);if(s!==h){if(h.length>0){var p=new d(l,0,l,h.length);e.remove(p)}s.length>0&&e.insert({row:l,column:0},s)}t.autoOutdent(r,e,l)}}},e.prototype.onTextInput=function(e,t){if(!t)return this.keyBinding.onTextInput(e);this.startOperation({command:{name:"insertstring"}});var n=this.applyComposition.bind(this,e,t);this.selection.rangeCount?this.forEachSelection(n):n(),this.endOperation()},e.prototype.applyComposition=function(e,t){if(t.extendLeft||t.extendRight){var n=this.selection.getRange();n.start.column-=t.extendLeft,n.end.column+=t.extendRight,n.start.column<0&&(n.start.row--,n.start.column+=this.session.getLine(n.start.row).length+1),this.selection.setRange(n),!e&&!n.isEmpty()&&this.remove()}(e||!this.selection.isEmpty())&&this.insert(e,!0);if(t.restoreStart||t.restoreEnd){var n=this.selection.getRange();n.start.column-=t.restoreStart,n.end.column-=t.restoreEnd,this.selection.setRange(n)}},e.prototype.onCommandKey=function(e,t,n){return this.keyBinding.onCommandKey(e,t,n)},e.prototype.setOverwrite=function(e){this.session.setOverwrite(e)},e.prototype.getOverwrite=function(){return this.session.getOverwrite()},e.prototype.toggleOverwrite=function(){this.session.toggleOverwrite()},e.prototype.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},e.prototype.getScrollSpeed=function(){return this.getOption("scrollSpeed")},e.prototype.setDragDelay=function(e){this.setOption("dragDelay",e)},e.prototype.getDragDelay=function(){return this.getOption("dragDelay")},e.prototype.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},e.prototype.getSelectionStyle=function(){return this.getOption("selectionStyle")},e.prototype.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},e.prototype.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},e.prototype.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},e.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},e.prototype.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},e.prototype.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},e.prototype.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},e.prototype.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},e.prototype.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},e.prototype.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},e.prototype.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},e.prototype.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},e.prototype.setHighlightIndentGuides=function(e){this.renderer.setHighlightIndentGuides(e)},e.prototype.getHighlightIndentGuides=function(){return this.renderer.getHighlightIndentGuides()},e.prototype.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},e.prototype.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},e.prototype.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},e.prototype.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},e.prototype.setReadOnly=function(e){this.setOption("readOnly",e)},e.prototype.getReadOnly=function(){return this.getOption("readOnly")},e.prototype.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},e.prototype.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},e.prototype.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},e.prototype.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},e.prototype.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},e.prototype.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},e.prototype.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},e.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},e.prototype.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},e.prototype.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},e.prototype.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},e.prototype.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.selection.isEmpty()&&this.selection.selectLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},e.prototype.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},e.prototype.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},e.prototype.setGhostText=function(e,t){this.renderer.setGhostText(e,t)},e.prototype.removeGhostText=function(){this.renderer.removeGhostText()},e.prototype.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var i=new d(0,0,0,0);for(var r=e.first;r<=e.last;r++){var s=t.getLine(r);i.start.row=r,i.end.row=r,i.end.column=s.length,t.replace(i,n[r-e.first])}},e.prototype.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},e.prototype.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},e.prototype.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},e.prototype.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new d(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&n=u&&s<=a&&(n=t,f.selection.clearSelection(),f.moveCursorTo(e,u+r),f.selection.selectTo(e,a+r)),u=a});var l=this.$toggleWordPairs,c;for(var h=0;h=a&&u<=f&&p.match(/((?:https?|ftp):\/\/[\S]+)/)){l=p.replace(/[\s:.,'";}\]]+$/,"");break}a=f}}catch(d){n={error:d}}finally{try{h&&!h.done&&(i=c.return)&&i.call(c)}finally{if(n)throw n.error}}return l},e.prototype.openLink=function(){var e=this.selection.getCursor(),t=this.findLinkAt(e.row,e.column);return t&&window.open(t,"_blank"),t!=null},e.prototype.removeLines=function(){var e=this.$getSelectedRows();this.session.removeFullLines(e.first,e.last),this.clearSelection()},e.prototype.duplicateSelection=function(){var e=this.selection,t=this.session,n=e.getRange(),r=e.isBackwards();if(n.isEmpty()){var i=n.start.row;t.duplicateLines(i,i)}else{var s=r?n.start:n.end,o=t.insert(s,t.getTextRange(n));n.start=s,n.end=o,e.setSelectionRange(n,r)}},e.prototype.moveLinesDown=function(){this.$moveLines(1,!1)},e.prototype.moveLinesUp=function(){this.$moveLines(-1,!1)},e.prototype.moveText=function(e,t,n){return this.session.moveText(e,t,n)},e.prototype.copyLinesUp=function(){this.$moveLines(-1,!0)},e.prototype.copyLinesDown=function(){this.$moveLines(1,!0)},e.prototype.$moveLines=function(e,t){var n,r,i=this.selection;if(!i.inMultiSelectMode||this.inVirtualSelectionMode){var s=i.toOrientedRange();n=this.$getSelectedRows(s),r=this.session.$moveLines(n.first,n.last,t?0:e),t&&e==-1&&(r=0),s.moveBy(r,0),i.fromOrientedRange(s)}else{var o=i.rangeList.ranges;i.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;var u=0,a=0,f=o.length;for(var l=0;lp+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},e.prototype.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},e.prototype.onCompositionStart=function(e){this.renderer.showComposition(e)},e.prototype.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},e.prototype.onCompositionEnd=function(){this.renderer.hideComposition()},e.prototype.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},e.prototype.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},e.prototype.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},e.prototype.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},e.prototype.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},e.prototype.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection());var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},e.prototype.selectPageDown=function(){this.$moveByPage(1,!0)},e.prototype.selectPageUp=function(){this.$moveByPage(-1,!0)},e.prototype.gotoPageDown=function(){this.$moveByPage(1,!1)},e.prototype.gotoPageUp=function(){this.$moveByPage(-1,!1)},e.prototype.scrollPageDown=function(){this.$moveByPage(1)},e.prototype.scrollPageUp=function(){this.$moveByPage(-1)},e.prototype.scrollToRow=function(e){this.renderer.scrollToRow(e)},e.prototype.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},e.prototype.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},e.prototype.getCursorPosition=function(){return this.selection.getCursor()},e.prototype.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},e.prototype.getSelectionRange=function(){return this.selection.getRange()},e.prototype.selectAll=function(){this.selection.selectAll()},e.prototype.clearSelection=function(){this.selection.clearSelection()},e.prototype.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},e.prototype.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},e.prototype.jumpToMatching=function(e,t){var n=this.getCursorPosition(),r=new b(this.session,n.row,n.column),i=r.getCurrentToken(),s=0;i&&i.type.indexOf("tag-name")!==-1&&(i=r.stepBackward());var o=i||r.stepForward();if(!o)return;var u,a=!1,f={},l=n.column-o.start,c,h={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(o.value.match(/[{}()\[\]]/g))for(;l1?f[o.value]++:i.value==="=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),r},e.prototype.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},e.prototype.getLastSearchOptions=function(){return this.$search.getOptions()},e.prototype.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&i.mixin(t,e);var r=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(r)||this.$search.$options.needle,e||(r=this.session.getWordRange(r.start.row,r.start.column),e=this.session.getTextRange(r)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:r});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?r.start=r.end:r.end=r.start,this.selection.setRange(r)},e.prototype.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},e.prototype.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},e.prototype.revealRange=function(e,t){this.session.unfold(e),this.selection.setSelectionRange(e);var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},e.prototype.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},e.prototype.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},e.prototype.destroy=function(){this.destroyed=!0,this.$toDestroy&&(this.$toDestroy.forEach(function(e){e.destroy()}),this.$toDestroy=[]),this.$mouseHandler&&this.$mouseHandler.destroy(),this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy(),this._$emitInputEvent&&this._$emitInputEvent.cancel(),this.removeAllListeners()},e.prototype.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.off("changeSelection",s),this.renderer.off("afterRender",u),this.renderer.off("beforeRender",o)}},e.prototype.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",s.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))},e.prototype.prompt=function(e,t,n){var r=this;y.loadModule("ace/ext/prompt",function(i){i.prompt(r,e,t,n)})},e}();C.$uid=0,C.prototype.curOp=null,C.prototype.prevOp={},C.prototype.$mergeableCommands=["backspace","del","insertstring"],C.prototype.$toggleWordPairs=[["first","last"],["true","false"],["yes","no"],["width","height"],["top","bottom"],["right","left"],["on","off"],["x","y"],["get","set"],["max","min"],["horizontal","vertical"],["show","hide"],["add","remove"],["up","down"],["before","after"],["even","odd"],["in","out"],["inside","outside"],["next","previous"],["increase","decrease"],["attach","detach"],["&&","||"],["==","!="]],i.implement(C.prototype,v),y.defineOptions(C.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){var t=this;this.textInput.setReadOnly(e);if(this.destroyed)return;this.$resetCursorStyle(),this.$readOnlyCallback||(this.$readOnlyCallback=function(e){var n=!1;if(e&&e.type=="keydown"){e&&e.key&&!e.ctrlKey&&!e.metaKey&&(e.key==" "&&e.preventDefault(),n=e.key.length==1);if(!n)return}else e&&e.type!=="exec"&&(n=!0);if(n){t.hoverTooltip||(t.hoverTooltip=new N);var r=s.createElement("div");r.textContent=E("editor.tooltip.disable-editing","Editing is disabled"),t.hoverTooltip.isOpen||t.hoverTooltip.showForRange(t,t.getSelectionRange(),r)}else t.hoverTooltip&&t.hoverTooltip.isOpen&&t.hoverTooltip.hide()});var n=this.textInput.getElement();e?(T.addListener(n,"keydown",this.$readOnlyCallback,this),this.commands.on("exec",this.$readOnlyCallback),this.commands.on("commandUnavailable",this.$readOnlyCallback)):(T.removeListener(n,"keydown",this.$readOnlyCallback),this.commands.off("exec",this.$readOnlyCallback),this.commands.off("commandUnavailable",this.$readOnlyCallback),this.hoverTooltip&&(this.hoverTooltip.destroy(),this.hoverTooltip=null))},initialValue:!1},copyWithEmptySelection:{set:function(e){this.textInput.setCopyWithEmptySelection(e)},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},enableAutoIndent:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(e){this.session.setValue(e)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(e){this.setSession(e)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(e){this.renderer.$gutterLayer.setShowLineNumbers(e),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),e&&this.$relativeLineNumbers?k.attach(this):k.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(e){this.$showLineNumbers&&e?k.attach(this):k.detach(this)}},placeholder:{set:function(e){this.$updatePlaceholder||(this.$updatePlaceholder=function(){var e=this.session&&(this.renderer.$composition||this.session.getLength()>1||this.session.getLine(0).length>0);if(e&&this.renderer.placeholderNode)this.renderer.off("afterRender",this.$updatePlaceholder),s.removeCssClass(this.container,"ace_hasPlaceholder"),this.renderer.placeholderNode.remove(),this.renderer.placeholderNode=null;else if(!e&&!this.renderer.placeholderNode){this.renderer.on("afterRender",this.$updatePlaceholder),s.addCssClass(this.container,"ace_hasPlaceholder");var t=s.createElement("div");t.className="ace_placeholder",t.textContent=this.$placeholder||"",this.renderer.placeholderNode=t,this.renderer.content.appendChild(this.renderer.placeholderNode)}else!e&&this.renderer.placeholderNode&&(this.renderer.placeholderNode.textContent=this.$placeholder||"")}.bind(this),this.on("input",this.$updatePlaceholder)),this.$updatePlaceholder()}},enableKeyboardAccessibility:{set:function(e){var t={name:"blurTextInput",description:"Set focus to the editor content div to allow tabbing through the page",bindKey:"Esc",exec:function(e){e.blur(),e.renderer.scroller.focus()},readOnly:!0},n=function(e){if(e.target==this.renderer.scroller&&e.keyCode===x.enter){e.preventDefault();var t=this.getCursorPosition().row;this.isRowVisible(t)||this.scrollToLine(t,!0,!0),this.focus()}},r;e?(this.renderer.enableKeyboardAccessibility=!0,this.renderer.keyboardFocusClassName="ace_keyboard-focus",this.textInput.getElement().setAttribute("tabindex",-1),this.textInput.setNumberOfExtraLines(u.isWin?3:0),this.renderer.scroller.setAttribute("tabindex",0),this.renderer.scroller.setAttribute("role","group"),this.renderer.scroller.setAttribute("aria-roledescription",E("editor.scroller.aria-roledescription","editor")),this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName),this.renderer.scroller.setAttribute("aria-label",E("editor.scroller.aria-label","Editor content, press Enter to start editing, press Escape to exit")),this.renderer.scroller.addEventListener("keyup",n.bind(this)),this.commands.addCommand(t),this.renderer.$gutter.setAttribute("tabindex",0),this.renderer.$gutter.setAttribute("aria-hidden",!1),this.renderer.$gutter.setAttribute("role","group"),this.renderer.$gutter.setAttribute("aria-roledescription",E("editor.gutter.aria-roledescription","editor gutter")),this.renderer.$gutter.setAttribute("aria-label",E("editor.gutter.aria-label","Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit")),this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName),this.renderer.content.setAttribute("aria-hidden",!0),r||(r=new w(this)),r.addListener(),this.textInput.setAriaOptions({setLabel:!0})):(this.renderer.enableKeyboardAccessibility=!1,this.textInput.getElement().setAttribute("tabindex",0),this.textInput.setNumberOfExtraLines(0),this.renderer.scroller.setAttribute("tabindex",-1),this.renderer.scroller.removeAttribute("role"),this.renderer.scroller.removeAttribute("aria-roledescription"),this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName),this.renderer.scroller.removeAttribute("aria-label"),this.renderer.scroller.removeEventListener("keyup",n.bind(this)),this.commands.removeCommand(t),this.renderer.content.removeAttribute("aria-hidden"),this.renderer.$gutter.setAttribute("tabindex",-1),this.renderer.$gutter.setAttribute("aria-hidden",!0),this.renderer.$gutter.removeAttribute("role"),this.renderer.$gutter.removeAttribute("aria-roledescription"),this.renderer.$gutter.removeAttribute("aria-label"),this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName),r&&r.removeListener())},initialValue:!1},textInputAriaLabel:{set:function(e){this.$textInputAriaLabel=e},initialValue:""},enableMobileMenu:{set:function(e){this.$enableMobileMenu=e},initialValue:!0},customScrollbar:"renderer",hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",highlightIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",useResizeObserver:"renderer",useSvgGutterIcons:"renderer",showFoldedAnnotations:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var k={getText:function(e,t){return(Math.abs(e.selection.lead.row-t)||t+1+(t<9?"\u00b7":""))+""},getWidth:function(e,t,n){return Math.max(t.toString().length,(n.lastRow+1).toString().length,2)*n.characterWidth},update:function(e,t){t.renderer.$loop.schedule(t.renderer.CHANGE_GUTTER)},attach:function(e){e.renderer.$gutterLayer.$renderer=this,e.on("changeSelection",this.update),this.update(null,e)},detach:function(e){e.renderer.$gutterLayer.$renderer==this&&(e.renderer.$gutterLayer.$renderer=null),e.off("changeSelection",this.update),this.update(null,e)}};t.Editor=C}),define("ace/layer/lines",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=function(){function e(e,t){this.element=e,this.canvasHeight=t||5e5,this.element.style.height=this.canvasHeight*2+"px",this.cells=[],this.cellCache=[],this.$offsetCoefficient=0}return e.prototype.moveContainer=function(e){r.translate(this.element,0,-(e.firstRowScreen*e.lineHeight%this.canvasHeight)-e.offset*this.$offsetCoefficient)},e.prototype.pageChanged=function(e,t){return Math.floor(e.firstRowScreen*e.lineHeight/this.canvasHeight)!==Math.floor(t.firstRowScreen*t.lineHeight/this.canvasHeight)},e.prototype.computeLineTop=function(e,t,n){var r=t.firstRowScreen*t.lineHeight,i=Math.floor(r/this.canvasHeight),s=n.documentToScreenRow(e,0)*t.lineHeight;return s-i*this.canvasHeight},e.prototype.computeLineHeight=function(e,t,n){return t.lineHeight*n.getRowLineCount(e)},e.prototype.getLength=function(){return this.cells.length},e.prototype.get=function(e){return this.cells[e]},e.prototype.shift=function(){this.$cacheCell(this.cells.shift())},e.prototype.pop=function(){this.$cacheCell(this.cells.pop())},e.prototype.push=function(e){if(Array.isArray(e)){this.cells.push.apply(this.cells,e);var t=r.createFragment(this.element);for(var n=0;ns&&(a=i.end.row+1,i=t.getNextFoldLine(a,i),s=i?i.start.row:Infinity);if(a>r){while(this.$lines.getLength()>u+1)this.$lines.pop();break}o=this.$lines.get(++u),o?o.row=a:(o=this.$lines.createCell(a,e,this.session,l),this.$lines.push(o)),this.$renderCell(o,e,i,a),a++}this._signal("afterRender"),this.$updateGutterWidth(e)},e.prototype.$updateGutterWidth=function(e){var t=this.session,n=t.gutterRenderer||this.$renderer,r=t.$firstLineNumber,i=this.$lines.last()?this.$lines.last().text:"";if(this.$fixedWidth||t.$useWrapMode)i=t.getLength()+r-1;var s=n?n.getWidth(t,i,e):i.toString().length*e.characterWidth,o=this.$padding||this.$computePadding();s+=o.left+o.right,s!==this.gutterWidth&&!isNaN(s)&&(this.gutterWidth=s,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",s))},e.prototype.$updateCursorRow=function(){if(!this.$highlightGutterLine)return;var e=this.session.selection.getCursor();if(this.$cursorRow===e.row)return;this.$cursorRow=e.row},e.prototype.updateLineHighlight=function(){if(!this.$highlightGutterLine)return;var e=this.session.selection.cursor.row;this.$cursorRow=e;if(this.$cursorCell&&this.$cursorCell.row==e)return;this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var t=this.$lines.cells;this.$cursorCell=null;for(var n=0;n=this.$cursorRow){if(r.row>this.$cursorRow){var i=this.session.getFoldLine(this.$cursorRow);if(!(n>0&&i&&i.start.row==t[n-1].row))break;r=t[n-1]}r.element.className="ace_gutter-active-line "+r.element.className,this.$cursorCell=r;break}}},e.prototype.scrollLines=function(e){var t=this.config;this.config=e,this.$updateCursorRow();if(this.$lines.pageChanged(t,e))return this.update(e);this.$lines.moveContainer(e);var n=Math.min(e.lastRow+e.gutterOffset,this.session.getLength()-1),r=this.oldLastRow;this.oldLastRow=n;if(!t||r0;i--)this.$lines.shift();if(r>n)for(var i=this.session.getFoldedRowCount(n+1,r);i>0;i--)this.$lines.pop();e.firstRowr&&this.$lines.push(this.$renderLines(e,r+1,n)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(e)},e.prototype.$renderLines=function(e,t,n){var r=[],i=t,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>n)break;var u=this.$lines.createCell(i,e,this.session,l);this.$renderCell(u,e,s,i),r.push(u),i++}return r},e.prototype.$renderCell=function(e,t,n,i){var s=e.element,o=this.session,u=s.childNodes[0],f=s.childNodes[1],l=s.childNodes[2],c=s.childNodes[3],h=l.firstChild,p=o.$firstLineNumber,d=o.$breakpoints,v=o.$decorations,m=o.gutterRenderer||this.$renderer,g=this.$showFoldWidgets&&o.foldWidgets,y=n?n.start.row:Number.MAX_VALUE,b=t.lineHeight+"px",w=this.$useSvgGutterIcons?"ace_gutter-cell_svg-icons ":"ace_gutter-cell ",E=this.$useSvgGutterIcons?"ace_icon_svg":"ace_icon",S=(m?m.getText(o,i):i+p).toString();this.$highlightGutterLine&&(i==this.$cursorRow||n&&i=y&&this.$cursorRow<=n.end.row)&&(w+="ace_gutter-active-line ",this.$cursorCell!=e&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=e)),d[i]&&(w+=d[i]),v[i]&&(w+=v[i]),this.$annotations[i]&&i!==y&&(w+=this.$annotations[i].className);if(g){var x=g[i];x==null&&(x=g[i]=o.getFoldWidget(i))}if(x){var T="ace_fold-widget ace_"+x,N=x=="start"&&i==y&&in.right-t.right)return"foldWidgets"},e}();f.prototype.$fixedWidth=!1,f.prototype.$highlightGutterLine=!0,f.prototype.$renderer="",f.prototype.$showLineNumbers=!0,f.prototype.$showFoldWidgets=!0,i.implement(f.prototype,o),t.Gutter=f}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";function o(e,t,n,r){return(e?1:0)|(t?2:0)|(n?4:0)|(r?8:0)}var r=e("../range").Range,i=e("../lib/dom"),s=function(){function e(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)}return e.prototype.setPadding=function(e){this.$padding=e},e.prototype.setSession=function(e){this.session=e},e.prototype.setMarkers=function(e){this.markers=e},e.prototype.elt=function(e,t){var n=this.i!=-1&&this.element.childNodes[this.i];n?this.i++:(n=document.createElement("div"),this.element.appendChild(n),this.i=-1),n.style.cssText=t,n.className=e},e.prototype.update=function(e){if(!e)return;this.config=e,this.i=0;var t;for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start"+" ace_br15",e)}if(this.i!=-1)while(this.ip,l==f),i,l==f?0:1,s)},e.prototype.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;i=i||"";if(this.session.$bidiHandler.isBidiRow(t.start.row)){var f=t.clone();f.end.row=f.start.row,f.end.column=this.session.getLine(f.start.row).length,this.drawBidiSingleLineMarker(e,f,n+" ace_br1 ace_start",r,null,i)}else this.elt(n+" ace_br1 ace_start","height:"+o+"px;"+"right:"+s+"px;"+"top:"+u+"px;left:"+a+"px;"+(i||""));if(this.session.$bidiHandler.isBidiRow(t.end.row)){var f=t.clone();f.start.row=f.end.row,f.start.column=0,this.drawBidiSingleLineMarker(e,f,n+" ace_br12",r,null,i)}else{u=this.$getTop(t.end.row,r);var l=t.end.column*r.characterWidth;this.elt(n+" ace_br12","height:"+o+"px;"+"width:"+l+"px;"+"top:"+u+"px;"+"left:"+s+"px;"+(i||""))}o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<=0)return;u=this.$getTop(t.start.row+1,r);var c=(t.start.column?1:0)|(t.end.column?0:8);this.elt(n+(c?" ace_br"+c:""),"height:"+o+"px;"+"right:"+s+"px;"+"top:"+u+"px;"+"left:"+s+"px;"+(i||""))},e.prototype.drawSingleLineMarker=function(e,t,n,r,i,s){if(this.session.$bidiHandler.isBidiRow(t.start.row))return this.drawBidiSingleLineMarker(e,t,n,r,i,s);var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;this.elt(n,"height:"+o+"px;"+"width:"+u+"px;"+"top:"+a+"px;"+"left:"+f+"px;"+(s||""))},e.prototype.drawBidiSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=this.$getTop(t.start.row,r),a=this.$padding,f=this.session.$bidiHandler.getSelections(t.start.column,t.end.column);f.forEach(function(e){this.elt(n,"height:"+o+"px;"+"width:"+(e.width+(i||0))+"px;"+"top:"+u+"px;"+"left:"+(a+e.left)+"px;"+(s||""))},this)},e.prototype.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),this.elt(n,"height:"+o+"px;"+"top:"+s+"px;"+"left:0;right:0;"+(i||""))},e.prototype.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;this.elt(n,"height:"+o+"px;"+"top:"+s+"px;"+"left:0;right:0;"+(i||""))},e}();s.prototype.$padding=0,t.Marker=s}),define("ace/layer/text_util",["require","exports","module"],function(e,t,n){var r=new Set(["text","rparen","lparen"]);t.isTextToken=function(e){return r.has(e)}}),define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config","ace/layer/text_util"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("./lines").Lines,u=e("../lib/event_emitter").EventEmitter,a=e("../config").nls,f=e("./text_util").isTextToken,l=function(){function e(e){this.dom=i,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new o(this.element)}return e.prototype.$updateEolChar=function(){var e=this.session.doc,t=e.getNewLineCharacter()=="\n"&&e.getNewLineMode()!="windows",n=t?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=n)return this.EOL_CHAR=n,!0},e.prototype.setPadding=function(e){this.$padding=e,this.element.style.margin="0 "+e+"px"},e.prototype.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},e.prototype.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},e.prototype.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},e.prototype.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},e.prototype.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},e.prototype.setSession=function(e){this.session=e,e&&this.$computeTabString()},e.prototype.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,typeof e=="string"?(this.showSpaces=/tab/i.test(e),this.showTabs=/space/i.test(e),this.showEOL=/eol/i.test(e)):this.showSpaces=this.showTabs=this.showEOL=e,this.$computeTabString(),!0)},e.prototype.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},e.prototype.setHighlightIndentGuides=function(e){return this.$highlightIndentGuides===e?!1:(this.$highlightIndentGuides=e,e)},e.prototype.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;nl&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),l=a?a.start.row:Infinity);if(u>i)break;var c=s[o++];if(c){this.dom.removeChildren(c),this.$renderLine(c,u,u==l?a:!1),f&&(c.style.top=this.$lines.computeLineTop(u,e,this.session)+"px");var h=e.lineHeight*this.session.getRowLength(u)+"px";c.style.height!=h&&(f=!0,c.style.height=h)}u++}if(f)while(o0;i--)this.$lines.shift();if(t.lastRow>e.lastRow)for(var i=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);i>0;i--)this.$lines.pop();e.firstRowt.lastRow&&this.$lines.push(this.$renderLinesFragment(e,t.lastRow+1,e.lastRow)),this.$highlightIndentGuide()},e.prototype.$renderLinesFragment=function(e,t,n){var r=[],s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=this.$lines.createCell(s,e,this.session),f=a.element;this.dom.removeChildren(f),i.setStyle(f.style,"height",this.$lines.computeLineHeight(s,e,this.session)+"px"),i.setStyle(f.style,"top",this.$lines.computeLineTop(s,e,this.session)+"px"),this.$renderLine(f,s,s==u?o:!1),this.$useLineGroups()?f.className="ace_line_group":f.className="ace_line",r.push(a),s++}return r},e.prototype.update=function(e){this.$lines.moveContainer(e),this.config=e;var t=e.firstRow,n=e.lastRow,r=this.$lines;while(r.getLength())r.pop();r.push(this.$renderLinesFragment(e,t,n))},e.prototype.$renderToken=function(e,t,n,r){var i=this,o=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069\u2060\u2061\u2062\u2063\u2064\u206A\u206B\u206B\u206C\u206D\u206E\u206F]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,u=this.dom.createFragment(this.element),l,c=0;while(l=o.exec(r)){var h=l[1],p=l[2],d=l[3],v=l[4],m=l[5];if(!i.showSpaces&&p)continue;var g=c!=l.index?r.slice(c,l.index):"";c=l.index+l[0].length,g&&u.appendChild(this.dom.createTextNode(g,this.element));if(h){var y=i.session.getScreenTabSize(t+l.index),b=i.$tabStrings[y].cloneNode(!0);b.charCount=1,u.appendChild(b),t+=y-1}else if(p)if(i.showSpaces){var w=this.dom.createElement("span");w.className="ace_invisible ace_invisible_space",w.textContent=s.stringRepeat(i.SPACE_CHAR,p.length),u.appendChild(w)}else u.appendChild(this.dom.createTextNode(p,this.element));else if(d){var w=this.dom.createElement("span");w.className="ace_invisible ace_invisible_space ace_invalid",w.textContent=s.stringRepeat(i.SPACE_CHAR,d.length),u.appendChild(w)}else if(v){t+=1;var w=this.dom.createElement("span");w.style.width=i.config.characterWidth*2+"px",w.className=i.showSpaces?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",w.textContent=i.showSpaces?i.SPACE_CHAR:v,u.appendChild(w)}else if(m){t+=1;var w=this.dom.createElement("span");w.style.width=i.config.characterWidth*2+"px",w.className="ace_cjk",w.textContent=m,u.appendChild(w)}}u.appendChild(this.dom.createTextNode(c?r.slice(c):r,this.element));if(!f(n.type)){var E="ace_"+n.type.replace(/\./g," ace_"),w=this.dom.createElement("span");n.type=="fold"&&(w.style.width=n.value.length*this.config.characterWidth+"px",w.setAttribute("title",a("inline-fold.closed.title","Unfold code"))),w.className=E,w.appendChild(u),e.appendChild(w)}else e.appendChild(u);return t+r.length},e.prototype.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);if(r<=0||r>=n)return t;if(t[0]==" "){r-=r%this.tabSize;var i=r/this.tabSize;for(var s=0;ss[o].start.row?this.$highlightIndentGuideMarker.dir=-1:this.$highlightIndentGuideMarker.dir=1;break}}if(!this.$highlightIndentGuideMarker.end&&e[t.row]!==""&&t.column===e[t.row].length){this.$highlightIndentGuideMarker.dir=1;for(var o=t.row+1;o0))return;r=e.element.childNodes[0]}var i=r.childNodes;if(i){var s=i[t-1];s&&s.classList&&s.classList.contains("ace_indent-guide")&&s.classList.add("ace_indent-guide-active")}}},e.prototype.$renderHighlightIndentGuide=function(){if(!this.$lines)return;var e=this.$lines.cells;this.$clearActiveIndentGuide();var t=this.$highlightIndentGuideMarker.indentLevel;if(t!==0)if(this.$highlightIndentGuideMarker.dir===1)for(var n=0;n=this.$highlightIndentGuideMarker.start+1){if(r.row>=this.$highlightIndentGuideMarker.end)break;this.$setIndentGuideActive(r,t)}}else for(var n=e.length-1;n>=0;n--){var r=e[n];if(this.$highlightIndentGuideMarker.end&&r.row=o){u=this.$renderToken(a,u,l,c.substring(0,o-r)),c=c.substring(o-r),r=o,a=this.$createLineElement(),e.appendChild(a);var h=this.dom.createTextNode(s.stringRepeat("\u00a0",n.indent),this.element);h.charCount=0,a.appendChild(h),i++,u=0,o=n[i]||Number.MAX_VALUE}c.length!=0&&(r+=c.length,u=this.$renderToken(a,u,l,c))}}n[n.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage(a,u,null,"",!0)},e.prototype.$renderSimpleLine=function(e,t){var n=0;for(var r=0;rthis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(e,n,i,s);n=this.$renderToken(e,n,i,s)}},e.prototype.$renderOverflowMessage=function(e,t,n,r,i){n&&this.$renderToken(e,t,n,r.slice(0,this.MAX_LINE_LENGTH-t));var s=this.dom.createElement("span");s.className="ace_inline_button ace_keyword ace_toggle_wrap",s.textContent=i?"":"",e.appendChild(s)},e.prototype.$renderLine=function(e,t,n){!n&&n!=0&&(n=this.session.getFoldLine(t));if(n)var r=this.$getFoldLineTokens(t,n);else var r=this.session.getTokens(t);var i=e;if(r.length){var s=this.session.getRowSplitData(t);if(s&&s.length){this.$renderWrappedLine(e,r,s);var i=e.lastChild}else{var i=e;this.$useLineGroups()&&(i=this.$createLineElement(),e.appendChild(i)),this.$renderSimpleLine(i,r)}}else this.$useLineGroups()&&(i=this.$createLineElement(),e.appendChild(i));if(this.showEOL&&i){n&&(t=n.end.row);var o=this.dom.createElement("span");o.className="ace_invisible ace_invisible_eol",o.textContent=t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,i.appendChild(o)}},e.prototype.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},e.prototype.$useLineGroups=function(){return this.session.getUseWrapMode()},e}();l.prototype.EOF_CHAR="\u00b6",l.prototype.EOL_CHAR_LF="\u00ac",l.prototype.EOL_CHAR_CRLF="\u00a4",l.prototype.EOL_CHAR=l.prototype.EOL_CHAR_LF,l.prototype.TAB_CHAR="\u2014",l.prototype.SPACE_CHAR="\u00b7",l.prototype.$padding=0,l.prototype.MAX_LINE_LENGTH=1e4,l.prototype.showInvisibles=!1,l.prototype.showSpaces=!1,l.prototype.showTabs=!1,l.prototype.showEOL=!1,l.prototype.displayIndentGuides=!0,l.prototype.$highlightIndentGuides=!0,l.prototype.$tabStrings=[],l.prototype.destroy={},l.prototype.onChangeTabSize=l.prototype.$computeTabString,r.implement(l.prototype,u),t.Text=l}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=function(){function e(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)}return e.prototype.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)r.setStyle(t[n].style,"opacity",e?"":"0")},e.prototype.$startCssAnimation=function(){var e=this.cursors;for(var t=e.length;t--;)e[t].style.animationDuration=this.blinkInterval+"ms";this.$isAnimating=!0,setTimeout(function(){this.$isAnimating&&r.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},e.prototype.$stopCssAnimation=function(){this.$isAnimating=!1,r.removeCssClass(this.element,"ace_animate-blinking")},e.prototype.setPadding=function(e){this.$padding=e},e.prototype.setSession=function(e){this.session=e},e.prototype.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},e.prototype.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},e.prototype.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.restartTimer())},e.prototype.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},e.prototype.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},e.prototype.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},e.prototype.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},e.prototype.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&(this.$isSmoothBlinking=!1,r.removeCssClass(this.element,"ace_smooth-blinking")),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible){this.$stopCssAnimation();return}this.smoothBlinking&&(this.$isSmoothBlinking=!0,setTimeout(function(){this.$isSmoothBlinking&&r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this)));if(r.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},e.prototype.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,e.row)?this.session.$bidiHandler.getPosLeft(n.column):n.column*this.config.characterWidth),i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},e.prototype.isCursorInView=function(e,t){return e.top>=0&&e.tope.height+e.offset||o.top<0)&&n>1)continue;var u=this.cursors[i++]||this.addCursor(),a=u.style;this.drawCursor?this.drawCursor(u,o,e,t[n],this.session):this.isCursorInView(o,e)?(r.setStyle(a,"display","block"),r.translate(u,o.left,o.top),r.setStyle(a,"width",Math.round(e.characterWidth)+"px"),r.setStyle(a,"height",e.lineHeight+"px")):r.setStyle(a,"display","none")}while(this.cursors.length>i)this.removeCursor();var f=this.session.getOverwrite();this.$setOverwrite(f),this.$pixelPos=o,this.restartTimer()},e.prototype.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},e.prototype.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)},e}();i.prototype.$padding=0,i.prototype.drawCursor=null,t.Cursor=i}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function r(){this.constructor=t}if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");e(t,n),t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),i=e("./lib/oop"),s=e("./lib/dom"),o=e("./lib/event"),u=e("./lib/event_emitter").EventEmitter,a=32768,f=function(){function e(e,t){this.element=s.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+t,this.inner=s.createElement("div"),this.inner.className="ace_scrollbar-inner",this.inner.textContent="\u00a0",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addListener(this.element,"scroll",this.onScroll.bind(this)),o.addListener(this.element,"mousedown",o.preventDefault)}return e.prototype.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1},e}();i.implement(f.prototype,u);var l=function(e){function t(t,n){var r=e.call(this,t,"-v")||this;return r.scrollTop=0,r.scrollHeight=0,n.$scrollbarWidth=r.width=s.scrollbarWidth(t.ownerDocument),r.inner.style.width=r.element.style.width=(r.width||15)+5+"px",r.$minWidth=0,r}return r(t,e),t.prototype.onScroll=function(){if(!this.skipEvent){this.scrollTop=this.element.scrollTop;if(this.coeff!=1){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},t.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},t.prototype.setHeight=function(e){this.element.style.height=e+"px"},t.prototype.setScrollHeight=function(e){this.scrollHeight=e,e>a?(this.coeff=a/e,e=a):this.coeff!=1&&(this.coeff=1),this.inner.style.height=e+"px"},t.prototype.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)},t}(f);l.prototype.setInnerHeight=l.prototype.setScrollHeight;var c=function(e){function t(t,n){var r=e.call(this,t,"-h")||this;return r.scrollLeft=0,r.height=n.$scrollbarWidth,r.inner.style.height=r.element.style.height=(r.height||15)+5+"px",r}return r(t,e),t.prototype.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},t.prototype.getHeight=function(){return this.isVisible?this.height:0},t.prototype.setWidth=function(e){this.element.style.width=e+"px"},t.prototype.setInnerWidth=function(e){this.inner.style.width=e+"px"},t.prototype.setScrollWidth=function(e){this.inner.style.width=e+"px"},t.prototype.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)},t}(f);t.ScrollBar=l,t.ScrollBarV=l,t.ScrollBarH=c,t.VScrollBar=l,t.HScrollBar=c}),define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function r(){this.constructor=t}if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");e(t,n),t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),i=e("./lib/oop"),s=e("./lib/dom"),o=e("./lib/event"),u=e("./lib/event_emitter").EventEmitter;s.importCssString(".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\n position: absolute;\n background: rgba(128, 128, 128, 0.6);\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n border: 1px solid #bbb;\n border-radius: 2px;\n z-index: 8;\n}\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\n position: absolute;\n z-index: 6;\n background: none;\n overflow: hidden!important;\n}\n.ace_editor>.ace_sb-v {\n z-index: 6;\n right: 0;\n top: 0;\n width: 12px;\n}\n.ace_editor>.ace_sb-v div {\n z-index: 8;\n right: 0;\n width: 100%;\n}\n.ace_editor>.ace_sb-h {\n bottom: 0;\n left: 0;\n height: 12px;\n}\n.ace_editor>.ace_sb-h div {\n bottom: 0;\n height: 100%;\n}\n.ace_editor>.ace_sb_grabbed {\n z-index: 8;\n background: #000;\n}","ace_scrollbar.css",!1);var a=function(){function e(e,t){this.element=s.createElement("div"),this.element.className="ace_sb"+t,this.inner=s.createElement("div"),this.inner.className="",this.element.appendChild(this.inner),this.VScrollWidth=12,this.HScrollHeight=12,e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,o.addMultiMouseDownListener(this.element,[500,300,300],this,"onMouseDown")}return e.prototype.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1},e}();i.implement(a.prototype,u);var f=function(e){function t(t,n){var r=e.call(this,t,"-v")||this;return r.scrollTop=0,r.scrollHeight=0,r.parent=t,r.width=r.VScrollWidth,r.renderer=n,r.inner.style.width=r.element.style.width=(r.width||15)+"px",r.$minWidth=0,r}return r(t,e),t.prototype.onMouseDown=function(e,t){if(e!=="mousedown")return;if(o.getButton(t)!==0||t.detail===2)return;if(t.target===this.inner){var n=this,r=t.clientY,i=function(e){r=e.clientY},s=function(){clearInterval(l)},u=t.clientY,a=this.thumbTop,f=function(){if(r===undefined)return;var e=n.scrollTopFromThumbTop(a+r-u);if(e===n.scrollTop)return;n._emit("scroll",{data:e})};o.capture(this.inner,i,s);var l=setInterval(f,20);return o.preventDefault(t)}var c=t.clientY-this.element.getBoundingClientRect().top-this.thumbHeight/2;return this._emit("scroll",{data:this.scrollTopFromThumbTop(c)}),o.preventDefault(t)},t.prototype.getHeight=function(){return this.height},t.prototype.scrollTopFromThumbTop=function(e){var t=e*(this.pageHeight-this.viewHeight)/(this.slideHeight-this.thumbHeight);return t>>=0,t<0?t=0:t>this.pageHeight-this.viewHeight&&(t=this.pageHeight-this.viewHeight),t},t.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},t.prototype.setHeight=function(e){this.height=Math.max(0,e),this.slideHeight=this.height,this.viewHeight=this.height,this.setScrollHeight(this.pageHeight,!0)},t.prototype.setScrollHeight=function(e,t){if(this.pageHeight===e&&!t)return;this.pageHeight=e,this.thumbHeight=this.slideHeight*this.viewHeight/this.pageHeight,this.thumbHeight>this.slideHeight&&(this.thumbHeight=this.slideHeight),this.thumbHeight<15&&(this.thumbHeight=15),this.inner.style.height=this.thumbHeight+"px",this.scrollTop>this.pageHeight-this.viewHeight&&(this.scrollTop=this.pageHeight-this.viewHeight,this.scrollTop<0&&(this.scrollTop=0),this._emit("scroll",{data:this.scrollTop}))},t.prototype.setScrollTop=function(e){this.scrollTop=e,e<0&&(e=0),this.thumbTop=e*(this.slideHeight-this.thumbHeight)/(this.pageHeight-this.viewHeight),this.inner.style.top=this.thumbTop+"px"},t}(a);f.prototype.setInnerHeight=f.prototype.setScrollHeight;var l=function(e){function t(t,n){var r=e.call(this,t,"-h")||this;return r.scrollLeft=0,r.scrollWidth=0,r.height=r.HScrollHeight,r.inner.style.height=r.element.style.height=(r.height||12)+"px",r.renderer=n,r}return r(t,e),t.prototype.onMouseDown=function(e,t){if(e!=="mousedown")return;if(o.getButton(t)!==0||t.detail===2)return;if(t.target===this.inner){var n=this,r=t.clientX,i=function(e){r=e.clientX},s=function(){clearInterval(l)},u=t.clientX,a=this.thumbLeft,f=function(){if(r===undefined)return;var e=n.scrollLeftFromThumbLeft(a+r-u);if(e===n.scrollLeft)return;n._emit("scroll",{data:e})};o.capture(this.inner,i,s);var l=setInterval(f,20);return o.preventDefault(t)}var c=t.clientX-this.element.getBoundingClientRect().left-this.thumbWidth/2;return this._emit("scroll",{data:this.scrollLeftFromThumbLeft(c)}),o.preventDefault(t)},t.prototype.getHeight=function(){return this.isVisible?this.height:0},t.prototype.scrollLeftFromThumbLeft=function(e){var t=e*(this.pageWidth-this.viewWidth)/(this.slideWidth-this.thumbWidth);return t>>=0,t<0?t=0:t>this.pageWidth-this.viewWidth&&(t=this.pageWidth-this.viewWidth),t},t.prototype.setWidth=function(e){this.width=Math.max(0,e),this.element.style.width=this.width+"px",this.slideWidth=this.width,this.viewWidth=this.width,this.setScrollWidth(this.pageWidth,!0)},t.prototype.setScrollWidth=function(e,t){if(this.pageWidth===e&&!t)return;this.pageWidth=e,this.thumbWidth=this.slideWidth*this.viewWidth/this.pageWidth,this.thumbWidth>this.slideWidth&&(this.thumbWidth=this.slideWidth),this.thumbWidth<15&&(this.thumbWidth=15),this.inner.style.width=this.thumbWidth+"px",this.scrollLeft>this.pageWidth-this.viewWidth&&(this.scrollLeft=this.pageWidth-this.viewWidth,this.scrollLeft<0&&(this.scrollLeft=0),this._emit("scroll",{data:this.scrollLeft}))},t.prototype.setScrollLeft=function(e){this.scrollLeft=e,e<0&&(e=0),this.thumbLeft=e*(this.slideWidth-this.thumbWidth)/(this.pageWidth-this.viewWidth),this.inner.style.left=this.thumbLeft+"px"},t}(a);l.prototype.setInnerWidth=l.prototype.setScrollWidth,t.ScrollBar=f,t.ScrollBarV=f,t.ScrollBarH=l,t.VScrollBar=f,t.HScrollBar=l}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(){function e(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=t||window;var n=this;this._flush=function(e){n.pending=!1;var t=n.changes;t&&(r.blockIdle(100),n.changes=0,n.onRender(t));if(n.changes){if(n.$recursionLimit--<0)return;n.schedule()}else n.$recursionLimit=2}}return e.prototype.schedule=function(e){this.changes=this.changes|e,this.changes&&!this.pending&&(r.nextFrame(this._flush),this.pending=!0)},e.prototype.clear=function(e){var t=this.changes;return this.changes=0,t},e}();t.RenderLoop=i}),define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/event"),u=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,f=512,l=typeof ResizeObserver=="function",c=200,h=function(){function e(e){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),this.$measureNode.textContent=s.stringRepeat("X",f),this.$characterSize={width:0,height:0},l?this.$addObserver():this.checkForSizeChanges()}return e.prototype.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",u.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},e.prototype.checkForSizeChanges=function(e){e===undefined&&(e=this.$measureSizes());if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},e.prototype.$addObserver=function(){var e=this;this.$observer=new window.ResizeObserver(function(t){e.checkForSizeChanges()}),this.$observer.observe(this.$measureNode)},e.prototype.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=o.onIdle(function t(){e.checkForSizeChanges(),o.onIdle(t,500)},500)},e.prototype.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},e.prototype.$measureSizes=function(e){var t={height:(e||this.$measureNode).clientHeight,width:(e||this.$measureNode).clientWidth/f};return t.width===0||t.height===0?null:t},e.prototype.$measureCharWidth=function(e){this.$main.textContent=s.stringRepeat(e,f);var t=this.$main.getBoundingClientRect();return t.width/f},e.prototype.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},e.prototype.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},e.prototype.$getZoom=function(e){return!e||!e.parentElement?1:(Number(window.getComputedStyle(e).zoom)||1)*this.$getZoom(e.parentElement)},e.prototype.$initTransformMeasureNodes=function(){var e=function(e,t){return["div",{style:"position: absolute;top:"+e+"px;left:"+t+"px;"}]};this.els=i.buildDom([e(0,0),e(c,0),e(0,c),e(c,c)],this.el)},e.prototype.transformCoordinates=function(e,t){function r(e,t,n){var r=e[1]*t[0]-e[0]*t[1];return[(-t[1]*n[0]+t[0]*n[1])/r,(+e[1]*n[0]-e[0]*n[1])/r]}function i(e,t){return[e[0]-t[0],e[1]-t[1]]}function s(e,t){return[e[0]+t[0],e[1]+t[1]]}function o(e,t){return[e*t[0],e*t[1]]}function u(e){var t=e.getBoundingClientRect();return[t.left,t.top]}if(e){var n=this.$getZoom(this.el);e=o(1/n,e)}this.els||this.$initTransformMeasureNodes();var a=u(this.els[0]),f=u(this.els[1]),l=u(this.els[2]),h=u(this.els[3]),p=r(i(h,f),i(h,l),i(s(f,l),s(h,a))),d=o(1+p[0],i(f,a)),v=o(1+p[1],i(l,a));if(t){var m=t,g=p[0]*m[0]/c+p[1]*m[1]/c+1,y=s(o(m[0],d),o(m[1],v));return s(o(1/g/c,y),a)}var b=i(e,a),w=r(i(d,o(p[0],b)),i(v,o(p[1],b)),b);return o(c,w)},e}();h.prototype.$characterSize={width:0,height:0},r.implement(h.prototype,a),t.FontMetrics=h}),define("ace/css/editor-css",["require","exports","module"],function(e,t,n){n.exports='\n.ace_br1 {border-top-left-radius : 3px;}\n.ace_br2 {border-top-right-radius : 3px;}\n.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\n.ace_br4 {border-bottom-right-radius: 3px;}\n.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\n.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\n.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\n.ace_br8 {border-bottom-left-radius : 3px;}\n.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\n.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\n.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\n\n\n.ace_editor {\n position: relative;\n overflow: hidden;\n padding: 0;\n font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'Source Code Pro\', \'source-code-pro\', monospace;\n direction: ltr;\n text-align: left;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n forced-color-adjust: none;\n}\n\n.ace_scroller {\n position: absolute;\n overflow: hidden;\n top: 0;\n bottom: 0;\n background-color: inherit;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n cursor: text;\n}\n\n.ace_content {\n position: absolute;\n box-sizing: border-box;\n min-width: 100%;\n contain: style size layout;\n font-variant-ligatures: no-common-ligatures;\n}\n.ace_invisible {\n font-variant-ligatures: none;\n}\n\n.ace_keyboard-focus:focus {\n box-shadow: inset 0 0 0 2px #5E9ED6;\n outline: none;\n}\n\n.ace_dragging .ace_scroller:before{\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n content: \'\';\n background: rgba(250, 250, 250, 0.01);\n z-index: 1000;\n}\n.ace_dragging.ace_dark .ace_scroller:before{\n background: rgba(0, 0, 0, 0.01);\n}\n\n.ace_gutter {\n position: absolute;\n overflow : hidden;\n width: auto;\n top: 0;\n bottom: 0;\n left: 0;\n cursor: default;\n z-index: 4;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n contain: style size layout;\n}\n\n.ace_gutter-active-line {\n position: absolute;\n left: 0;\n right: 0;\n}\n\n.ace_scroller.ace_scroll-left:after {\n content: "";\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\n pointer-events: none;\n}\n\n.ace_gutter-cell, .ace_gutter-cell_svg-icons {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n padding-left: 19px;\n padding-right: 6px;\n background-repeat: no-repeat;\n}\n\n.ace_gutter-cell_svg-icons .ace_gutter_annotation {\n margin-left: -14px;\n float: left;\n}\n\n.ace_gutter-cell .ace_gutter_annotation {\n margin-left: -19px;\n float: left;\n}\n\n.ace_gutter-cell.ace_error, .ace_icon.ace_error, .ace_icon.ace_error_fold, .ace_gutter-cell.ace_security, .ace_icon.ace_security, .ace_icon.ace_security_fold {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");\n background-repeat: no-repeat;\n background-position: 2px center;\n}\n\n.ace_gutter-cell.ace_warning, .ace_icon.ace_warning, .ace_icon.ace_warning_fold {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");\n background-repeat: no-repeat;\n background-position: 2px center;\n}\n\n.ace_gutter-cell.ace_info, .ace_icon.ace_info, .ace_gutter-cell.ace_hint, .ace_icon.ace_hint {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");\n background-repeat: no-repeat;\n background-position: 2px center;\n}\n\n.ace_dark .ace_gutter-cell.ace_info, .ace_dark .ace_icon.ace_info, .ace_dark .ace_gutter-cell.ace_hint, .ace_dark .ace_icon.ace_hint {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");\n}\n\n.ace_icon_svg.ace_error {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJyZWQiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KPGNpcmNsZSBmaWxsPSJub25lIiBjeD0iOCIgY3k9IjgiIHI9IjciIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGxpbmUgeDE9IjExIiB5MT0iNSIgeDI9IjUiIHkyPSIxMSIvPgo8bGluZSB4MT0iMTEiIHkxPSIxMSIgeDI9IjUiIHkyPSI1Ii8+CjwvZz4KPC9zdmc+");\n background-color: crimson;\n}\n.ace_icon_svg.ace_security {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8ZyBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0iZGFya29yYW5nZSIgZmlsbD0ibm9uZSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgogICAgICAgIDxwYXRoIGNsYXNzPSJzdHJva2UtbGluZWpvaW4tcm91bmQiIGQ9Ik04IDE0LjgzMDdDOCAxNC44MzA3IDIgMTIuOTA0NyAyIDguMDg5OTJWMy4yNjU0OEM1LjMxIDMuMjY1NDggNy45ODk5OSAxLjM0OTE4IDcuOTg5OTkgMS4zNDkxOEM3Ljk4OTk5IDEuMzQ5MTggMTAuNjkgMy4yNjU0OCAxNCAzLjI2NTQ4VjguMDg5OTJDMTQgMTIuOTA0NyA4IDE0LjgzMDcgOCAxNC44MzA3WiIvPgogICAgICAgIDxwYXRoIGQ9Ik0yIDguMDg5OTJWMy4yNjU0OEM1LjMxIDMuMjY1NDggNy45ODk5OSAxLjM0OTE4IDcuOTg5OTkgMS4zNDkxOCIvPgogICAgICAgIDxwYXRoIGQ9Ik0xMy45OSA4LjA4OTkyVjMuMjY1NDhDMTAuNjggMy4yNjU0OCA4IDEuMzQ5MTggOCAxLjM0OTE4Ii8+CiAgICAgICAgPHBhdGggY2xhc3M9InN0cm9rZS1saW5lam9pbi1yb3VuZCIgZD0iTTggNFY5Ii8+CiAgICAgICAgPHBhdGggY2xhc3M9InN0cm9rZS1saW5lam9pbi1yb3VuZCIgZD0iTTggMTBWMTIiLz4KICAgIDwvZz4KPC9zdmc+");\n background-color: crimson;\n}\n.ace_icon_svg.ace_warning {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJkYXJrb3JhbmdlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+Cjxwb2x5Z29uIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGw9Im5vbmUiIHBvaW50cz0iOCAxIDE1IDE1IDEgMTUgOCAxIi8+CjxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iMC4wMSIgaGVpZ2h0PSIwLjAxIi8+CjxsaW5lIHgxPSI4IiB5MT0iNiIgeDI9IjgiIHkyPSIxMCIvPgo8L2c+Cjwvc3ZnPg==");\n background-color: darkorange;\n}\n.ace_icon_svg.ace_info {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJibHVlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CjxjaXJjbGUgZmlsbD0ibm9uZSIgY3g9IjgiIGN5PSI4IiByPSI3IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjxwb2x5bGluZSBwb2ludHM9IjggMTEgOCA4Ii8+Cjxwb2x5bGluZSBwb2ludHM9IjkgOCA2IDgiLz4KPGxpbmUgeDE9IjEwIiB5MT0iMTEiIHgyPSI2IiB5Mj0iMTEiLz4KPHJlY3QgeD0iOCIgeT0iNSIgd2lkdGg9IjAuMDEiIGhlaWdodD0iMC4wMSIvPgo8L2c+Cjwvc3ZnPg==");\n background-color: royalblue;\n}\n.ace_icon_svg.ace_hint {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8ZyBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0ic2lsdmVyIiBmaWxsPSJub25lIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CiAgICAgICAgPHBhdGggY2xhc3M9InN0cm9rZS1saW5lam9pbi1yb3VuZCIgZD0iTTYgMTRIMTAiLz4KICAgICAgICA8cGF0aCBkPSJNOCAxMUg5QzkgOS40NzAwMiAxMiA4LjU0MDAyIDEyIDUuNzYwMDJDMTIuMDIgNC40MDAwMiAxMS4zOSAzLjM2MDAyIDEwLjQzIDIuNjcwMDJDOSAxLjY0MDAyIDcuMDAwMDEgMS42NDAwMiA1LjU3MDAxIDIuNjcwMDJDNC42MTAwMSAzLjM2MDAyIDMuOTggNC40MDAwMiA0IDUuNzYwMDJDNCA4LjU0MDAyIDcuMDAwMDEgOS40NzAwMiA3LjAwMDAxIDExSDhaIi8+CiAgICA8L2c+Cjwvc3ZnPg==");\n background-color: silver;\n}\n\n.ace_icon_svg.ace_error_fold {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSI+CiAgPHBhdGggZD0ibSAxOC45Mjk4NTEsNy44Mjk4MDc2IGMgMC4xNDYzNTMsNi4zMzc0NjA0IC02LjMyMzE0Nyw3Ljc3Nzg0NDQgLTcuNDc3OTEyLDcuNzc3ODQ0NCAtMi4xMDcyNzI2LC0wLjEyODc1IDUuMTE3Njc4LDAuMzU2MjQ5IDUuMDUxNjk4LC03Ljg3MDA2MTggLTAuNjA0NjcyLC04LjAwMzk3MzQ5IC03LjA3NzI3MDYsLTcuNTYzMTE4OSAtNC44NTczLC03LjQzMDM5NTU2IDEuNjA2LC0wLjExNTE0MjI1IDYuODk3NDg1LDEuMjYyNTQ1OTYgNy4yODM1MTQsNy41MjI2MTI5NiB6IiBmaWxsPSJjcmltc29uIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0ibSA4LjExNDc1NjIsMi4wNTI5ODI4IGMgMy4zNDkxNjk4LDAgNi4wNjQxMzI4LDIuNjc2ODYyNyA2LjA2NDEzMjgsNS45Nzg5NTMgMCwzLjMwMjExMjIgLTIuNzE0OTYzLDUuOTc4OTIwMiAtNi4wNjQxMzI4LDUuOTc4OTIwMiAtMy4zNDkxNDczLDAgLTYuMDY0MTc3MiwtMi42NzY4MDggLTYuMDY0MTc3MiwtNS45Nzg5MjAyIDAuMDA1MzksLTMuMjk5ODg2MSAyLjcxNzI2NTYsLTUuOTczNjQwOCA2LjA2NDE3NzIsLTUuOTc4OTUzIHogbSAwLC0xLjczNTgyNzE5IGMgLTQuMzIxNDgzNiwwIC03LjgyNDc0MDM4LDMuNDU0MDE4NDkgLTcuODI0NzQwMzgsNy43MTQ3ODAxOSAwLDQuMjYwNzI4MiAzLjUwMzI1Njc4LDcuNzE0NzQ1MiA3LjgyNDc0MDM4LDcuNzE0NzQ1MiA0LjMyMTQ0OTgsMCA3LjgyNDY5OTgsLTMuNDU0MDE3IDcuODI0Njk5OCwtNy43MTQ3NDUyIDAsLTIuMDQ2MDkxNCAtMC44MjQzOTIsLTQuMDA4MzY3MiAtMi4yOTE3NTYsLTUuNDU1MTc0NiBDIDEyLjE4MDIyNSwxLjEyOTk2NDggMTAuMTkwMDEzLDAuMzE3MTU1NjEgOC4xMTQ3NTYyLDAuMzE3MTU1NjEgWiBNIDYuOTM3NDU2Myw4LjI0MDU5ODUgNC42NzE4Njg1LDEwLjQ4NTg1MiA2LjAwODY4MTQsMTEuODc2NzI4IDguMzE3MDAzNSw5LjYwMDc5MTEgMTAuNjI1MzM3LDExLjg3NjcyOCAxMS45NjIxMzgsMTAuNDg1ODUyIDkuNjk2NTUwOCw4LjI0MDU5ODUgMTEuOTYyMTM4LDYuMDA2ODA2NiAxMC41NzMyNDYsNC42Mzc0MzM1IDguMzE3MDAzNSw2Ljg3MzQyOTcgNi4wNjA3NjA3LDQuNjM3NDMzNSA0LjY3MTg2ODUsNi4wMDY4MDY2IFoiIGZpbGw9ImNyaW1zb24iIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=");\n background-color: crimson;\n}\n.ace_icon_svg.ace_security_fold {\n -webkit-mask-image: url("data:image/svg+xml;base64,CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTcgMTQiIGZpbGw9Im5vbmUiPgogICAgPHBhdGggZD0iTTEwLjAwMDEgMTMuNjk5MkMxMC4wMDAxIDEzLjY5OTIgMTEuOTI0MSAxMy40NzYzIDEzIDEyLjY5OTJDMTQuNDEzOSAxMS42NzgxIDE2IDEwLjUgMTYuMTI1MSA2LjgxMTI2VjIuNTg5ODdDMTYuMTI1MSAyLjU0NzY4IDE2LjEyMjEgMi41MDYxOSAxNi4xMTY0IDIuNDY1NTlWMS43MTQ4NUgxNS4yNDE0TDE1LjIzMDcgMS43MTQ4NEwxNC42MjUxIDEuNjk5MjJWNi44MTEyM0MxNC42MjUxIDguNTEwNjEgMTQuNjI1MSA5LjQ2NDYxIDEyLjc4MjQgMTEuNzIxQzEyLjE1ODYgMTIuNDg0OCAxMC4wMDAxIDEzLjY5OTIgMTAuMDAwMSAxMy42OTkyWiIgZmlsbD0iY3JpbXNvbiIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcuMzM2MDkgMC4zNjc0NzVDNy4wMzIxNCAwLjE1MjY1MiA2LjYyNTQ4IDAuMTUzNjE0IDYuMzIyNTMgMC4zNjk5OTdMNi4zMDg2OSAwLjM3OTU1NEM2LjI5NTUzIDAuMzg4NTg4IDYuMjczODggMC40MDMyNjYgNi4yNDQxNyAwLjQyMjc4OUM2LjE4NDcxIDAuNDYxODYgNi4wOTMyMSAwLjUyMDE3MSA1Ljk3MzEzIDAuNTkxMzczQzUuNzMyNTEgMC43MzQwNTkgNS4zNzk5IDAuOTI2ODY0IDQuOTQyNzkgMS4xMjAwOUM0LjA2MTQ0IDEuNTA5NyAyLjg3NTQxIDEuODgzNzcgMS41ODk4NCAxLjg4Mzc3SDAuNzE0ODQ0VjIuNzU4NzdWNi45ODAxNUMwLjcxNDg0NCA5LjQ5Mzc0IDIuMjg4NjYgMTEuMTk3MyAzLjcwMjU0IDEyLjIxODVDNC40MTg0NSAxMi43MzU1IDUuMTI4NzQgMTMuMTA1MyA1LjY1NzMzIDEzLjM0NTdDNS45MjI4NCAxMy40NjY0IDYuMTQ1NjYgMTMuNTU1OSA2LjMwNDY1IDEzLjYxNjFDNi4zODQyMyAxMy42NDYyIDYuNDQ4MDUgMTMuNjY5IDYuNDkzNDkgMTMuNjg0OEM2LjUxNjIyIDEzLjY5MjcgNi41MzQzOCAxMy42OTg5IDYuNTQ3NjQgMTMuNzAzM0w2LjU2MzgyIDEzLjcwODdMNi41NjkwOCAxMy43MTA0TDYuNTcwOTkgMTMuNzExTDYuODM5ODQgMTMuNzUzM0w2LjU3MjQyIDEzLjcxMTVDNi43NDYzMyAxMy43NjczIDYuOTMzMzUgMTMuNzY3MyA3LjEwNzI3IDEzLjcxMTVMNy4xMDg3IDEzLjcxMUw3LjExMDYxIDEzLjcxMDRMNy4xMTU4NyAxMy43MDg3TDcuMTMyMDUgMTMuNzAzM0M3LjE0NTMxIDEzLjY5ODkgNy4xNjM0NiAxMy42OTI3IDcuMTg2MTkgMTMuNjg0OEM3LjIzMTY0IDEzLjY2OSA3LjI5NTQ2IDEzLjY0NjIgNy4zNzUwMyAxMy42MTYxQzcuNTM0MDMgMTMuNTU1OSA3Ljc1Njg1IDEzLjQ2NjQgOC4wMjIzNiAxMy4zNDU3QzguNTUwOTUgMTMuMTA1MyA5LjI2MTIzIDEyLjczNTUgOS45NzcxNSAxMi4yMTg1QzExLjM5MSAxMS4xOTczIDEyLjk2NDggOS40OTM3NyAxMi45NjQ4IDYuOTgwMThWMi43NTg4QzEyLjk2NDggMi43MTY2IDEyLjk2MTkgMi42NzUxMSAxMi45NTYxIDIuNjM0NTFWMS44ODM3N0gxMi4wODExQzEyLjA3NzUgMS44ODM3NyAxMi4wNzQgMS44ODM3NyAxMi4wNzA0IDEuODgzNzdDMTAuNzk3OSAxLjg4MDA0IDkuNjE5NjIgMS41MTEwMiA4LjczODk0IDEuMTI0ODZDOC43MzUzNCAxLjEyMzI3IDguNzMxNzQgMS4xMjE2OCA4LjcyODE0IDEuMTIwMDlDOC4yOTEwMyAwLjkyNjg2NCA3LjkzODQyIDAuNzM0MDU5IDcuNjk3NzkgMC41OTEzNzNDNy41Nzc3MiAwLjUyMDE3MSA3LjQ4NjIyIDAuNDYxODYgNy40MjY3NiAwLjQyMjc4OUM3LjM5NzA1IDAuNDAzMjY2IDcuMzc1MzkgMC4zODg1ODggNy4zNjIyNCAwLjM3OTU1NEw3LjM0ODk2IDAuMzcwMzVDNy4zNDg5NiAwLjM3MDM1IDcuMzQ4NDcgMC4zNzAwMiA3LjM0NTYzIDAuMzc0MDU0TDcuMzM3NzkgMC4zNjg2NTlMNy4zMzYwOSAwLjM2NzQ3NVpNOC4wMzQ3MSAyLjcyNjkxQzguODYwNCAzLjA5MDYzIDkuOTYwNjYgMy40NjMwOSAxMS4yMDYxIDMuNTg5MDdWNi45ODAxNUgxMS4yMTQ4QzExLjIxNDggOC42Nzk1MyAxMC4xNjM3IDkuOTI1MDcgOC45NTI1NCAxMC43OTk4QzguMzU1OTUgMTEuMjMwNiA3Ljc1Mzc0IDExLjU0NTQgNy4yOTc5NiAxMS43NTI3QzcuMTE2NzEgMTEuODM1MSA2Ljk2MDYyIDExLjg5OTYgNi44Mzk4NCAxMS45NDY5QzYuNzE5MDYgMTEuODk5NiA2LjU2Mjk3IDExLjgzNTEgNi4zODE3MyAxMS43NTI3QzUuOTI1OTUgMTEuNTQ1NCA1LjMyMzczIDExLjIzMDYgNC43MjcxNSAxMC43OTk4QzMuNTE2MDMgOS45MjUwNyAyLjQ2NDg0IDguNjc5NTUgMi40NjQ4NCA2Ljk4MDE4VjMuNTg5MDlDMy43MTczOCAzLjQ2MjM5IDQuODIzMDggMy4wODYzOSA1LjY1MDMzIDIuNzIwNzFDNi4xNDIyOCAyLjUwMzI0IDYuNTQ0ODUgMi4yODUzNyA2LjgzMjU0IDIuMTE2MjRDNy4xMjE4MSAyLjI4NTM1IDcuNTI3IDIuNTAzNTIgOC4wMjE5NiAyLjcyMTMxQzguMDI2MiAyLjcyMzE3IDguMDMwNDUgMi43MjUwNCA4LjAzNDcxIDIuNzI2OTFaTTUuOTY0ODQgMy40MDE0N1Y3Ljc3NjQ3SDcuNzE0ODRWMy40MDE0N0g1Ljk2NDg0Wk01Ljk2NDg0IDEwLjQwMTVWOC42NTE0N0g3LjcxNDg0VjEwLjQwMTVINS45NjQ4NFoiIGZpbGw9ImNyaW1zb24iIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4=");\n background-color: crimson;\n}\n.ace_icon_svg.ace_warning_fold {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC43NzY5IDE0LjczMzdMOC42NTE5MiAyLjQ4MzY5QzguMzI5NDYgMS44Mzg3NyA3LjQwOTEzIDEuODM4NzcgNy4wODY2NyAyLjQ4MzY5TDAuOTYxNjY5IDE0LjczMzdDMC42NzA3NzUgMTUuMzE1NSAxLjA5MzgzIDE2IDEuNzQ0MjkgMTZIMTMuOTk0M0MxNC42NDQ4IDE2IDE1LjA2NzggMTUuMzE1NSAxNC43NzY5IDE0LjczMzdaTTMuMTYwMDcgMTQuMjVMNy44NjkyOSA0LjgzMTU2TDEyLjU3ODUgMTQuMjVIMy4xNjAwN1pNOC43NDQyOSAxMS42MjVWMTMuMzc1SDYuOTk0MjlWMTEuNjI1SDguNzQ0MjlaTTYuOTk0MjkgMTAuNzVWNy4yNUg4Ljc0NDI5VjEwLjc1SDYuOTk0MjlaIiBmaWxsPSIjRUM3MjExIi8+CjxwYXRoIGQ9Ik0xMS4xOTkxIDIuOTUyMzhDMTAuODgwOSAyLjMxNDY3IDEwLjM1MzcgMS44MDUyNiA5LjcwNTUgMS41MDlMMTEuMDQxIDEuMDY5NzhDMTEuNjg4MyAwLjk0OTgxNCAxMi4zMzcgMS4yNzI2MyAxMi42MzE3IDEuODYxNDFMMTcuNjEzNiAxMS44MTYxQzE4LjM1MjcgMTMuMjkyOSAxNy41OTM4IDE1LjA4MDQgMTYuMDE4IDE1LjU3NDVDMTYuNDA0NCAxNC40NTA3IDE2LjMyMzEgMTMuMjE4OCAxNS43OTI0IDEyLjE1NTVMMTEuMTk5MSAyLjk1MjM4WiIgZmlsbD0iI0VDNzIxMSIvPgo8L3N2Zz4=");\n background-color: darkorange;\n}\n\n.ace_scrollbar {\n contain: strict;\n position: absolute;\n right: 0;\n bottom: 0;\n z-index: 6;\n}\n\n.ace_scrollbar-inner {\n position: absolute;\n cursor: text;\n left: 0;\n top: 0;\n}\n\n.ace_scrollbar-v{\n overflow-x: hidden;\n overflow-y: scroll;\n top: 0;\n}\n\n.ace_scrollbar-h {\n overflow-x: scroll;\n overflow-y: hidden;\n left: 0;\n}\n\n.ace_print-margin {\n position: absolute;\n height: 100%;\n}\n\n.ace_text-input {\n position: absolute;\n z-index: 0;\n width: 0.5em;\n height: 1em;\n opacity: 0;\n background: transparent;\n -moz-appearance: none;\n appearance: none;\n border: none;\n resize: none;\n outline: none;\n overflow: hidden;\n font: inherit;\n padding: 0 1px;\n margin: 0 -1px;\n contain: strict;\n -ms-user-select: text;\n -moz-user-select: text;\n -webkit-user-select: text;\n user-select: text;\n /*with `pre-line` chrome inserts   instead of space*/\n white-space: pre!important;\n}\n.ace_text-input.ace_composition {\n background: transparent;\n color: inherit;\n z-index: 1000;\n opacity: 1;\n}\n.ace_composition_placeholder { color: transparent }\n.ace_composition_marker { \n border-bottom: 1px solid;\n position: absolute;\n border-radius: 0;\n margin-top: 1px;\n}\n\n[ace_nocontext=true] {\n transform: none!important;\n filter: none!important;\n clip-path: none!important;\n mask : none!important;\n contain: none!important;\n perspective: none!important;\n mix-blend-mode: initial!important;\n z-index: auto;\n}\n\n.ace_layer {\n z-index: 1;\n position: absolute;\n overflow: hidden;\n /* workaround for chrome bug https://github.com/ajaxorg/ace/issues/2312*/\n word-wrap: normal;\n white-space: pre;\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n /* setting pointer-events: auto; on node under the mouse, which changes\n during scroll, will break mouse wheel scrolling in Safari */\n pointer-events: none;\n}\n\n.ace_gutter-layer {\n position: relative;\n width: auto;\n text-align: right;\n pointer-events: auto;\n height: 1000000px;\n contain: style size layout;\n}\n\n.ace_text-layer {\n font: inherit !important;\n position: absolute;\n height: 1000000px;\n width: 1000000px;\n contain: style size layout;\n}\n\n.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {\n contain: style size layout;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n}\n\n.ace_hidpi .ace_text-layer,\n.ace_hidpi .ace_gutter-layer,\n.ace_hidpi .ace_content,\n.ace_hidpi .ace_gutter {\n contain: strict;\n}\n.ace_hidpi .ace_text-layer > .ace_line, \n.ace_hidpi .ace_text-layer > .ace_line_group {\n contain: strict;\n}\n\n.ace_cjk {\n display: inline-block;\n text-align: center;\n}\n\n.ace_cursor-layer {\n z-index: 4;\n}\n\n.ace_cursor {\n z-index: 4;\n position: absolute;\n box-sizing: border-box;\n border-left: 2px solid;\n /* workaround for smooth cursor repaintng whole screen in chrome */\n transform: translatez(0);\n}\n\n.ace_multiselect .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_slim-cursors .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_overwrite-cursors .ace_cursor {\n border-left-width: 0;\n border-bottom: 1px solid;\n}\n\n.ace_hidden-cursors .ace_cursor {\n opacity: 0.2;\n}\n\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\n opacity: 0;\n}\n\n.ace_smooth-blinking .ace_cursor {\n transition: opacity 0.18s;\n}\n\n.ace_animate-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: step-end;\n animation-name: blink-ace-animate;\n animation-iteration-count: infinite;\n}\n\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: ease-in-out;\n animation-name: blink-ace-animate-smooth;\n}\n \n@keyframes blink-ace-animate {\n from, to { opacity: 1; }\n 60% { opacity: 0; }\n}\n\n@keyframes blink-ace-animate-smooth {\n from, to { opacity: 1; }\n 45% { opacity: 1; }\n 60% { opacity: 0; }\n 85% { opacity: 0; }\n}\n\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\n position: absolute;\n z-index: 3;\n}\n\n.ace_marker-layer .ace_selection {\n position: absolute;\n z-index: 5;\n}\n\n.ace_marker-layer .ace_bracket {\n position: absolute;\n z-index: 6;\n}\n\n.ace_marker-layer .ace_error_bracket {\n position: absolute;\n border-bottom: 1px solid #DE5555;\n border-radius: 0;\n}\n\n.ace_marker-layer .ace_active-line {\n position: absolute;\n z-index: 2;\n}\n\n.ace_marker-layer .ace_selected-word {\n position: absolute;\n z-index: 4;\n box-sizing: border-box;\n}\n\n.ace_line .ace_fold {\n box-sizing: border-box;\n\n display: inline-block;\n height: 11px;\n margin-top: -2px;\n vertical-align: middle;\n\n background-image:\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");\n background-repeat: no-repeat, repeat-x;\n background-position: center center, top left;\n color: transparent;\n\n border: 1px solid black;\n border-radius: 2px;\n\n cursor: pointer;\n pointer-events: auto;\n}\n\n.ace_dark .ace_fold {\n}\n\n.ace_fold:hover{\n background-image:\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),\n url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");\n}\n\n.ace_tooltip {\n background-color: #f5f5f5;\n border: 1px solid gray;\n border-radius: 1px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n color: black;\n padding: 3px 4px;\n position: fixed;\n z-index: 999999;\n box-sizing: border-box;\n cursor: default;\n white-space: pre-wrap;\n word-wrap: break-word;\n line-height: normal;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n pointer-events: none;\n overflow: auto;\n max-width: min(33em, 66vw);\n overscroll-behavior: contain;\n}\n.ace_tooltip pre {\n white-space: pre-wrap;\n}\n\n.ace_tooltip.ace_dark {\n background-color: #636363;\n color: #fff;\n}\n\n.ace_tooltip:focus {\n outline: 1px solid #5E9ED6;\n}\n\n.ace_icon {\n display: inline-block;\n width: 18px;\n vertical-align: top;\n}\n\n.ace_icon_svg {\n display: inline-block;\n width: 12px;\n vertical-align: top;\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-size: 12px;\n -webkit-mask-position: center;\n}\n\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\n padding-right: 13px;\n}\n\n.ace_fold-widget, .ace_custom-widget {\n box-sizing: border-box;\n\n margin: 0 -12px 0 1px;\n display: none;\n width: 11px;\n vertical-align: top;\n\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");\n background-repeat: no-repeat;\n background-position: center;\n\n border-radius: 3px;\n \n border: 1px solid transparent;\n cursor: pointer;\n pointer-events: auto;\n}\n\n.ace_custom-widget {\n background: none;\n}\n\n.ace_folding-enabled .ace_fold-widget {\n display: inline-block; \n}\n\n.ace_fold-widget.ace_end {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");\n}\n\n.ace_fold-widget.ace_closed {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");\n}\n\n.ace_fold-widget:hover {\n border: 1px solid rgba(0, 0, 0, 0.3);\n background-color: rgba(255, 255, 255, 0.2);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\n}\n\n.ace_fold-widget:active {\n border: 1px solid rgba(0, 0, 0, 0.4);\n background-color: rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\n}\n/**\n * Dark version for fold widgets\n */\n.ace_dark .ace_fold-widget {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");\n}\n.ace_dark .ace_fold-widget.ace_end {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");\n}\n.ace_dark .ace_fold-widget.ace_closed {\n background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");\n}\n.ace_dark .ace_fold-widget:hover {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n background-color: rgba(255, 255, 255, 0.1);\n}\n.ace_dark .ace_fold-widget:active {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n}\n\n.ace_inline_button {\n border: 1px solid lightgray;\n display: inline-block;\n margin: -1px 8px;\n padding: 0 5px;\n pointer-events: auto;\n cursor: pointer;\n}\n.ace_inline_button:hover {\n border-color: gray;\n background: rgba(200,200,200,0.2);\n display: inline-block;\n pointer-events: auto;\n}\n\n.ace_fold-widget.ace_invalid {\n background-color: #FFB4B4;\n border-color: #DE5555;\n}\n\n.ace_fade-fold-widgets .ace_fold-widget {\n transition: opacity 0.4s ease 0.05s;\n opacity: 0;\n}\n\n.ace_fade-fold-widgets:hover .ace_fold-widget {\n transition: opacity 0.05s ease 0.05s;\n opacity:1;\n}\n\n.ace_underline {\n text-decoration: underline;\n}\n\n.ace_bold {\n font-weight: bold;\n}\n\n.ace_nobold .ace_bold {\n font-weight: normal;\n}\n\n.ace_italic {\n font-style: italic;\n}\n\n\n.ace_error-marker {\n background-color: rgba(255, 0, 0,0.2);\n position: absolute;\n z-index: 9;\n}\n\n.ace_highlight-marker {\n background-color: rgba(255, 255, 0,0.2);\n position: absolute;\n z-index: 8;\n}\n\n.ace_mobile-menu {\n position: absolute;\n line-height: 1.5;\n border-radius: 4px;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n background: white;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #dcdcdc;\n color: black;\n}\n.ace_dark > .ace_mobile-menu {\n background: #333;\n color: #ccc;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #444;\n\n}\n.ace_mobile-button {\n padding: 2px;\n cursor: pointer;\n overflow: hidden;\n}\n.ace_mobile-button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_mobile-button:active {\n background-color: #ddd;\n}\n\n.ace_placeholder {\n position: relative;\n font-family: arial;\n transform: scale(0.9);\n transform-origin: left;\n white-space: pre;\n opacity: 0.7;\n margin: 0 10px;\n z-index: 1;\n}\n\n.ace_ghost_text {\n opacity: 0.5;\n font-style: italic;\n}\n\n.ace_ghost_text_container > div {\n white-space: pre;\n}\n\n.ghost_text_line_wrapped::after {\n content: "\u21a9";\n position: absolute;\n}\n\n.ace_lineWidgetContainer.ace_ghost_text {\n margin: 0px 4px\n}\n\n.ace_screenreader-only {\n position:absolute;\n left:-10000px;\n top:auto;\n width:1px;\n height:1px;\n overflow:hidden;\n}\n\n.ace_hidden_token {\n display: none;\n}'}),define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event_emitter").EventEmitter,o=function(){function e(e,t){this.renderer=t,this.pixelRatio=1,this.maxHeight=t.layerConfig.maxHeight,this.lineHeight=t.layerConfig.lineHeight,this.minDecorationHeight=2*this.pixelRatio|0,this.halfMinDecorationHeight=this.minDecorationHeight/2|0,this.colors={},this.colors.dark={error:"rgba(255, 18, 18, 1)",warning:"rgba(18, 136, 18, 1)",info:"rgba(18, 18, 136, 1)"},this.colors.light={error:"rgb(255,51,51)",warning:"rgb(32,133,72)",info:"rgb(35,68,138)"},this.setScrollBarV(e)}return e.prototype.$createCanvas=function(){this.canvas=r.createElement("canvas"),this.canvas.style.top="0px",this.canvas.style.right="0px",this.canvas.style.zIndex="7",this.canvas.style.position="absolute"},e.prototype.setScrollBarV=function(e){this.$createCanvas(),this.scrollbarV=e,e.element.appendChild(this.canvas),this.setDimensions()},e.prototype.$updateDecorators=function(e){function r(e,t){return e.priorityt.priority?1:0}if(typeof this.canvas.getContext!="function")return;var t=this.renderer.theme.isDark===!0?this.colors.dark:this.colors.light;this.setDimensions(e);var n=this.canvas.getContext("2d"),i=this.renderer.session.$annotations;n.clearRect(0,0,this.canvas.width,this.canvas.height);if(i){var s={info:1,warning:2,error:3};i.forEach(function(e){e.priority=s[e.type]||null}),i=i.sort(r);for(var o=0;othis.canvasHeight&&(h=this.canvasHeight-p);var d=h-p,v=h+p,m=v-d;n.fillStyle=t[i[o].type]||null,n.fillRect(0,d,Math.round(this.oneZoneWidth-1),m)}}var g=this.renderer.session.selection.getCursor();if(g){var y=Math.round(this.getVerticalOffsetForRow(g.row)*this.heightRatio);n.fillStyle="rgba(0, 0, 0, 0.5)",n.fillRect(0,y,this.canvasWidth,2)}},e.prototype.getVerticalOffsetForRow=function(e){e|=0;var t=this.renderer.session.documentToScreenRow(e,0)*this.lineHeight;return t},e.prototype.setDimensions=function(e){e=e||this.renderer.layerConfig,this.maxHeight=e.maxHeight,this.lineHeight=e.lineHeight,this.canvasHeight=e.height,this.canvasWidth=this.scrollbarV.width||this.canvasWidth,this.setZoneWidth(),this.canvas.width=this.canvasWidth,this.canvas.height=this.canvasHeight,this.maxHeighte&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},e.prototype.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},e.prototype.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},e.prototype.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},e.prototype.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},e.prototype.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},e.prototype.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},e.prototype.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),!r&&this.$maxLines&&this.lineHeight>1&&(!i.style.height||i.style.height=="0px")&&(i.style.height="1px",r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);this.$resizeTimer&&this.$resizeTimer.cancel();if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.$customScrollbar&&this.$updateCustomScrollbar(!0)},e.prototype.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var s=0,o=this.$size,u={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};r&&(e||o.height!=r)&&(o.height=r,s|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.setHeight(o.scrollerHeight),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",s|=this.CHANGE_SCROLL);if(n&&(e||o.width!=n)){s|=this.CHANGE_SIZE,o.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,i.setStyle(this.scrollBarH.element.style,"left",t+"px"),i.setStyle(this.scroller.style,"left",t+this.margin.left+"px"),o.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()-this.margin.h),i.setStyle(this.$gutter.style,"left",this.margin.left+"px");var a=this.scrollBarV.getWidth()+"px";i.setStyle(this.scrollBarH.element.style,"right",a),i.setStyle(this.scroller.style,"right",a),i.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight()),this.scrollBarH.setWidth(o.scrollerWidth);if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)s|=this.CHANGE_FULL}return o.$dirty=!n||!r,s&&this._signal("resize",u),s},e.prototype.onGutterResize=function(e){var t=this.$showGutter?e:0;t!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,t,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},e.prototype.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},e.prototype.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},e.prototype.getAnimatedScroll=function(){return this.$animatedScroll},e.prototype.setShowInvisibles=function(e){this.setOption("showInvisibles",e),this.session.$bidiHandler.setShowInvisibles(e)},e.prototype.getShowInvisibles=function(){return this.getOption("showInvisibles")},e.prototype.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},e.prototype.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},e.prototype.getHighlightIndentGuides=function(){return this.getOption("highlightIndentGuides")},e.prototype.setHighlightIndentGuides=function(e){this.setOption("highlightIndentGuides",e)},e.prototype.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},e.prototype.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},e.prototype.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},e.prototype.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},e.prototype.getShowGutter=function(){return this.getOption("showGutter")},e.prototype.setShowGutter=function(e){return this.setOption("showGutter",e)},e.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},e.prototype.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},e.prototype.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},e.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},e.prototype.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},e.prototype.getContainerElement=function(){return this.container},e.prototype.getMouseEventTarget=function(){return this.scroller},e.prototype.getTextAreaContainer=function(){return this.container},e.prototype.$moveTextAreaToCursor=function(){if(this.$isMousePressed)return;var e=this.textarea.style,t=this.$composition;if(!this.$keepTextAreaAtCursor&&!t){i.translate(this.textarea,-100,0);return}var n=this.$cursorLayer.$pixelPos;if(!n)return;t&&t.markerRange&&(n=this.$cursorLayer.getPixelPosition(t.markerRange.start,!0));var r=this.layerConfig,s=n.top,o=n.left;s-=r.offset;var u=t&&t.useTextareaForIME||w.isMobile?this.lineHeight:1;if(s<0||s>r.height-u){i.translate(this.textarea,0,0);return}var a=1,f=this.$size.height-u;if(!t)s+=this.lineHeight;else if(t.useTextareaForIME){var l=this.textarea.value;a=this.characterWidth*this.session.$getStringScreenWidth(l)[0]}else s+=this.lineHeight+2;o-=this.scrollLeft,o>this.$size.scrollerWidth-a&&(o=this.$size.scrollerWidth-a),o+=this.gutterWidth+this.margin.left,i.setStyle(e,"height",u+"px"),i.setStyle(e,"width",a+"px"),i.translate(this.textarea,Math.min(o,this.$size.scrollerWidth-a),Math.min(s,f))},e.prototype.getFirstVisibleRow=function(){return this.layerConfig.firstRow},e.prototype.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},e.prototype.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow,n=this.session.documentToScreenRow(t,0)*e.lineHeight;return n-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},e.prototype.getLastVisibleRow=function(){return this.layerConfig.lastRow},e.prototype.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},e.prototype.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},e.prototype.setMargin=function(e,t,n,r){var i=this.margin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},e.prototype.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},e.prototype.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},e.prototype.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},e.prototype.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},e.prototype.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},e.prototype.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},e.prototype.freeze=function(){this.$frozen=!0},e.prototype.unfreeze=function(){this.$frozen=!1},e.prototype.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender",e),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){e|=this.$computeLayerConfig()|this.$loop.clear();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-Math.max(this.layerConfig.firstRow,0))*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig()|this.$loop.clear())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),i.translate(this.content,-this.scrollLeft,-n.offset);var s=n.width+2*this.$padding+"px",o=n.minHeight+"px";i.setStyle(this.content.style,"width",s),i.setStyle(this.content.style,"height",o)}e&this.CHANGE_H_SCROLL&&(i.translate(this.content,-this.scrollLeft,-n.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller ":"ace_scroller ace_scroll-left ",this.enableKeyboardAccessibility&&(this.scroller.className+=this.keyboardFocusClassName));if(e&this.CHANGE_FULL){this.$changedLines=null,this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this._signal("afterRender",e);return}if(e&this.CHANGE_SCROLL){this.$changedLines=null,e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&(e&this.CHANGE_GUTTER||e&this.CHANGE_LINES?this.$gutterLayer.update(n):this.$gutterLayer.scrollLines(n)),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this._signal("afterRender",e);return}e&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)):e&this.CHANGE_LINES?((this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)):e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER?(this.$showGutter&&this.$gutterLayer.update(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)):e&this.CHANGE_CURSOR&&(this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(n),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(n)),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender",e)},e.prototype.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var r=n<=2*this.lineHeight,i=!r&&e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var s=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,s,n),this.desiredHeight=n,this._signal("autosize")}},e.prototype.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.$getLongestLine(),o=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),u=this.$horizScroll!==o;u&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&(this.$autosize(),n=t.height<=2*this.lineHeight);var f=t.scrollerHeight+this.lineHeight,l=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=l;var c=this.scrollMargin;this.session.setScrollTop(Math.max(-c.top,Math.min(this.scrollTop,i-t.scrollerHeight+c.bottom))),this.session.setScrollLeft(Math.max(-c.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+c.right)));var h=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+l<0||this.scrollTop>c.top),p=a!==h;p&&(this.$vScroll=h,this.scrollBarV.setVisible(h));var d=this.scrollTop%this.lineHeight,v=Math.ceil(f/this.lineHeight)-1,m=Math.max(0,Math.round((this.scrollTop-d)/this.lineHeight)),g=m+v,y,b,w=this.lineHeight;m=e.screenToDocumentRow(m,0);var E=e.getFoldLine(m);E&&(m=E.start.row),y=e.documentToScreenRow(m,0),b=e.getRowLength(m)*w,g=Math.min(e.screenToDocumentRow(g,0),e.getLength()-1),f=t.scrollerHeight+e.getRowLength(g)*w+b,d=this.scrollTop-y*w,d<0&&y>0&&(y=Math.max(0,y+Math.floor(d/w)),d=this.scrollTop-y*w);var S=0;if(this.layerConfig.width!=s||u)S=this.CHANGE_H_SCROLL;if(u||p)S|=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(s=this.$getLongestLine());return this.layerConfig={width:s,padding:this.$padding,firstRow:m,firstRowScreen:y,lastRow:g,lineHeight:w,characterWidth:this.characterWidth,minHeight:f,maxHeight:i,offset:d,gutterOffset:w?Math.max(0,Math.ceil((d+t.height-t.scrollerHeight)/w)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(s-this.$padding),S},e.prototype.$updateLines=function(){if(!this.$changedLines)return;var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(tthis.$textLayer.MAX_LINE_LENGTH&&(e=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},e.prototype.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},e.prototype.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},e.prototype.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},e.prototype.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},e.prototype.updateBreakpoints=function(e){this._rows=e,this.$loop.schedule(this.CHANGE_GUTTER)},e.prototype.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},e.prototype.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},e.prototype.hideCursor=function(){this.$cursorLayer.hideCursor()},e.prototype.showCursor=function(){this.$cursorLayer.showCursor()},e.prototype.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},e.prototype.scrollCursorIntoView=function(e,t,n){if(this.$size.scrollerHeight===0)return;var r=this.$cursorLayer.getPixelPosition(e),i=r.left,s=r.top,o=n&&n.top||0,u=n&&n.bottom||0;this.$scrollAnimation&&(this.$stopAnimation=!0);var a=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;a+o>s?(t&&a+o>s+this.lineHeight&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-u=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},e.prototype.pixelToScreenCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var r=this.$fontMetrics.transformCoordinates([e,t]);e=r[1]-this.gutterWidth-this.margin.left,t=r[0]}else n=this.scroller.getBoundingClientRect();var i=e+this.scrollLeft-n.left-this.$padding,s=i/this.characterWidth,o=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),u=this.$blockCursor?Math.floor(s):Math.round(s);return{row:o,column:u,side:s-u>0?1:-1,offsetX:i}},e.prototype.screenToTextCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var r=this.$fontMetrics.transformCoordinates([e,t]);e=r[1]-this.gutterWidth-this.margin.left,t=r[0]}else n=this.scroller.getBoundingClientRect();var i=e+this.scrollLeft-n.left-this.$padding,s=i/this.characterWidth,o=this.$blockCursor?Math.floor(s):Math.round(s),u=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(u,Math.max(o,0),i)},e.prototype.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+(this.session.$bidiHandler.isBidiRow(r.row,e)?this.session.$bidiHandler.getPosLeft(r.column):Math.round(r.column*this.characterWidth)),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},e.prototype.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},e.prototype.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},e.prototype.showComposition=function(e){this.$composition=e,e.cssText||(e.cssText=this.textarea.style.cssText),e.useTextareaForIME==undefined&&(e.useTextareaForIME=this.$useTextareaForIME),this.$useTextareaForIME?(i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):e.markerId=this.session.addMarker(e.markerRange,"ace_composition_marker","text")},e.prototype.setCompositionText=function(e){var t=this.session.selection.cursor;this.addToken(e,"composition_placeholder",t.row,t.column),this.$moveTextAreaToCursor()},e.prototype.hideComposition=function(){if(!this.$composition)return;this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),i.removeCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=this.$composition.cssText;var e=this.session.selection.cursor;this.removeExtraToken(e.row,e.column),this.$composition=null,this.$cursorLayer.element.style.display=""},e.prototype.setGhostText=function(e,t){var n=this.session.selection.cursor,r=t||{row:n.row,column:n.column};this.removeGhostText();var s=this.$calculateWrappedTextChunks(e,r);this.addToken(s[0].text,"ghost_text",r.row,r.column),this.$ghostText={text:e,position:{row:r.row,column:r.column}};var o=i.createElement("div");if(s.length>1){var u=this.hideTokensAfterPosition(r.row,r.column),a;s.slice(1).forEach(function(e){var t=i.createElement("div"),n=i.createElement("span");n.className="ace_ghost_text",e.wrapped&&(t.className="ghost_text_line_wrapped"),e.text.length===0&&(e.text=" "),n.appendChild(i.createTextNode(e.text)),t.appendChild(n),o.appendChild(t),a=t}),u.forEach(function(e){var t=i.createElement("span");E(e.type)||(t.className="ace_"+e.type.replace(/\./g," ace_")),t.appendChild(i.createTextNode(e.value)),a.appendChild(t)}),this.$ghostTextWidget={el:o,row:r.row,column:r.column,className:"ace_ghost_text_container"},this.session.widgetManager.addLineWidget(this.$ghostTextWidget);var f=this.$cursorLayer.getPixelPosition(r,!0),l=this.container,c=l.getBoundingClientRect().height,h=s.length*this.lineHeight,p=h0){var f=0;a.push(i[o].length);for(var l=0;l1||Math.abs(e.$size.height-r)>1?e.$resizeTimer.delay():e.$resizeTimer.cancel()}),this.$resizeObserver.observe(this.container)},e}();S.prototype.CHANGE_CURSOR=1,S.prototype.CHANGE_MARKER=2,S.prototype.CHANGE_GUTTER=4,S.prototype.CHANGE_SCROLL=8,S.prototype.CHANGE_LINES=16,S.prototype.CHANGE_TEXT=32,S.prototype.CHANGE_SIZE=64,S.prototype.CHANGE_MARKER_BACK=128,S.prototype.CHANGE_MARKER_FRONT=256,S.prototype.CHANGE_FULL=512,S.prototype.CHANGE_H_SCROLL=1024,S.prototype.$changes=0,S.prototype.$padding=null,S.prototype.$frozen=!1,S.prototype.STEPS=8,r.implement(S.prototype,g),o.defineOptions(S.prototype,"renderer",{useResizeObserver:{set:function(e){!e&&this.$resizeObserver?(this.$resizeObserver.disconnect(),this.$resizeTimer.cancel(),this.$resizeTimer=this.$resizeObserver=null):e&&!this.$resizeObserver&&this.$addResizeObserver()}},animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},useSvgGutterIcons:{set:function(e){this.$gutterLayer.$useSvgGutterIcons=e},initialValue:!1},showFoldedAnnotations:{set:function(e){this.$gutterLayer.$showFoldedAnnotations=e},initialValue:!1},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightIndentGuides:{set:function(e){this.$textLayer.setHighlightIndentGuides(e)==1?this.$textLayer.$highlightIndentGuide():this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells)},initialValue:!0},highlightGutterLine:{set:function(e){this.$gutterLayer.setHighlightGutterLine(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.$minLines<562949953421311||(this.$minLines=0),this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},customScrollbar:{set:function(e){this.$updateCustomScrollbar(e)},initialValue:!1},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0},hasCssTransforms:{},useTextareaForIME:{initialValue:!w.isMobile&&!w.isIE}}),t.VirtualRenderer=S}),define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";function u(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new r;return s.append(t),s.getBlob("application/javascript")}}function a(e){if(typeof Worker=="undefined")return{postMessage:function(){},terminate:function(){}};if(o.get("loadWorkerFromBlob")){var t=u(e),n=window.URL||window.webkitURL,r=n.createObjectURL(t);return new Worker(r)}return new Worker(e)}var r=e("../lib/oop"),i=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,o=e("../config"),f=function(e){e.postMessage||(e=this.$createWorkerFromOldConfig.apply(this,arguments)),this.$worker=e,this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.$createWorkerFromOldConfig=function(t,n,r,i,s){e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);if(o.get("packaged")||!e.toUrl)i=i||o.moduleUrl(n,"worker");else{var u=this.$normalizePath;i=i||u(e.toUrl("ace/worker/worker.js",null,"_"));var f={};t.forEach(function(t){f[t]=u(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}return this.$worker=a(i),s&&this.send("importScripts",s),this.$worker.postMessage({init:!0,tlns:f,module:n,classname:r}),this.$worker},this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return i.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker.onerror=function(e){e.preventDefault()},this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{t.data&&t.data.err&&(t.data.err={message:t.data.err.message,stack:t.data.err.stack,code:t.data.err.code}),this.$worker&&this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){console.error(n.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener,!0)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),e.action=="insert"?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})}}).call(f.prototype);var l=function(e,t,n){var r=null,i=!1,u=Object.create(s),a=[],l=new f({messageBuffer:a,terminate:function(){},postMessage:function(e){a.push(e);if(!r)return;i?setTimeout(c):c()}});l.setEmitSync=function(e){i=e};var c=function(){var e=a.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};return u.postMessage=function(e){l.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.length)c()}),l};t.UIWorkerClient=l,t.WorkerClient=f,t.createWorker=a}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(){function e(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate,!0),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)}return e.prototype.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var i=this.pos;i.$insertRight=!0,i.detach(),i.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);r.$insertRight=!0,r.detach(),e.others.push(r)}),n.setUndoSelect(!1)},e.prototype.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)})},e.prototype.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,s=t.start.column-this.pos.column;this.updateAnchors(e),i&&(this.length+=n);if(i&&!this.session.$fromUndo)if(e.action==="insert")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.insertMergedLines(a,e.lines)}else if(e.action==="remove")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.remove(new r(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()},e.prototype.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},e.prototype.updateMarkers=function(){if(this.$updating)return;var e=this,t=this.session,n=function(n,i){t.removeMarker(n.markerId),n.markerId=t.addMarker(new r(n.row,n.column,n.row,n.column+e.length),i,null,!1)};n(this.pos,this.mainClass);for(var i=this.others.length;i--;)n(this.others[i],this.othersClass)},e.prototype.onCursorChange=function(e){if(this.$updating||!this.session)return;var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},e.prototype.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.off("change",this.$onUpdate),this.session.selection.off("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},e.prototype.cancel=function(){if(this.$undoStackDepth===-1)return;var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth;for(var n=0;n1?e.multiSelect.joinSelections():e.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"splitSelectionIntoLines",description:"Split into lines",exec:function(e){e.multiSelect.splitIntoLines()},readOnly:!0},{name:"alignCursors",description:"Align cursors",exec:function(e){e.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",description:"Find all",exec:function(e){e.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}],t.multiSelectCommands=[{name:"singleSelection",description:"Single selection",bindKey:"esc",exec:function(e){e.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var r=e("../keyboard/hash_handler").HashHandler;t.keyboardHandler=new r(t.multiSelectCommands)}),define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(e,t,n){function h(e,t,n){return c.$options.wrap=!0,c.$options.needle=t,c.$options.backwards=n==-1,c.find(e)}function v(e,t){return e.row==t.row&&e.column==t.column}function m(e){if(e.$multiselectOnSessionChange)return;e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$checkMultiselectChange=e.$checkMultiselectChange.bind(e),e.$multiselectOnSessionChange(e),e.on("changeSession",e.$multiselectOnSessionChange),e.on("mousedown",o),e.commands.addCommands(f.defaultCommands),g(e)}function g(e){function r(t){n&&(e.renderer.setMouseCursor(""),n=!1)}if(!e.textInput)return;var t=e.textInput.getElement(),n=!1;u.addListener(t,"keydown",function(t){var i=t.keyCode==18&&!(t.ctrlKey||t.shiftKey||t.metaKey);e.$blockSelectEnabled&&i?n||(e.renderer.setMouseCursor("crosshair"),n=!0):n&&r()},e),u.addListener(t,"keyup",r,e),u.addListener(t,"blur",r,e)}var r=e("./range_list").RangeList,i=e("./range").Range,s=e("./selection").Selection,o=e("./mouse/multi_select_handler").onMouseDown,u=e("./lib/event"),a=e("./lib/lang"),f=e("./commands/multi_select_commands");t.commands=f.defaultCommands.concat(f.multiSelectCommands);var l=e("./search").Search,c=new l,p=e("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(p.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(e,t){if(!e)return;if(!this.inMultiSelectMode&&this.rangeCount===0){var n=this.toOrientedRange();this.rangeList.add(n),this.rangeList.add(e);if(this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),t||this.fromOrientedRange(e);this.rangeList.removeAll(),this.rangeList.add(n),this.$onAddRange(n)}e.cursor||(e.cursor=e.end);var r=this.rangeList.add(e);return this.$onAddRange(e),r.length&&this.$onRemoveRange(r),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length&&this.$onRemoveRange(e)},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){var e=this.ranges.length?this.ranges:[this.getRange()],t=[];for(var n=0;n1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.cursor),s=this.session.documentToScreenPosition(this.anchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)g--;if(g>0){var y=0;while(r[y].isEmpty())y++}for(var b=g;b>=y;b--)r[b].isEmpty()&&r.splice(b,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges(),u.ranges[0]&&u.fromOrientedRange(u.ranges[0]);var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.removeFullLines(u,f);p=this.$reAlignText(p,l),this.session.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),st[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?this.on("mousedown",o):this.off("mousedown",o)},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++tf){var p=e.getLine(l).length;return new r(f,u,l,p)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),define("ace/ext/error_marker",["require","exports","module","ace/lib/dom","ace/range","ace/config"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(i.comparePoints);if(!r.length)return;var s=o(r,{row:t,column:-1},i.comparePoints);s<0&&(s=-s-1),s>=r.length?s=n>0?0:r.length-1:s===0&&n<0&&(s=r.length-1);var u=r[s];if(!u||!n)return;if(u.row===t){do u=r[s+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[s+=n];while(u&&u.row==t);return a.length&&a}var r=e("../lib/dom"),i=e("../range").Range,s=e("../config").nls;t.showErrorMarker=function(e,t){var n=e.session,i=e.getCursorPosition(),o=i.row,a=n.widgetManager.getWidgetsAtRow(o).filter(function(e){return e.type=="errorMarker"})[0];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];i.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,i.row=c.row,l=e.renderer.$gutterLayer.$annotations[i.row]}else{if(a)return;l={displayText:[s("error-marker.good-state","Looks good!")],className:"ace_ok"}}e.session.unfold(i.row),e.selection.moveToPosition(i);var h={row:i.row,fixedWidth:!0,coverGutter:!0,el:r.createElement("div"),type:"errorMarker"},p=h.el.appendChild(r.createElement("div")),d=h.el.appendChild(r.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(i).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,l.displayText.forEach(function(e,t){p.appendChild(r.createTextNode(e)),t-1}var r=e("../token_iterator").TokenIterator;t.singletonTags=["area","base","br","col","command","embed","hr","html","img","input","keygen","link","meta","param","source","track","wbr"],t.blockTags=["article","aside","blockquote","body","div","dl","fieldset","footer","form","head","header","html","nav","ol","p","script","section","style","table","tbody","tfoot","thead","ul"],t.formatOptions={lineBreaksAfterCommasInCurlyBlock:!0},t.beautify=function(e){var n=new r(e,0,0),s=n.getCurrentToken(),o=e.getTabString(),u=t.singletonTags,a=t.blockTags,f=t.formatOptions||{},l,c=!1,h=!1,p=!1,d="",v="",m="",g=0,y=0,b=0,w=0,E=0,S=0,x=0,T,N=0,C=0,k=[],L=!1,A,O=!1,M=!1,_=!1,D=!1,P={0:0},H=[],B=!1,j=function(){l&&l.value&&l.type!=="string.regexp"&&(l.value=l.value.replace(/^\s*/,""))},F=function(){var e=d.length-1;for(;;){if(e==0)break;if(d[e]!==" ")break;e-=1}d=d.slice(0,e+1)},I=function(){d=d.trimRight(),c=!1};while(s!==null){N=n.getCurrentTokenRow(),k=n.$rowTokens,l=n.stepForward();if(typeof s!="undefined"){v=s.value,E=0,_=m==="style"||e.$modeId==="ace/mode/css",i(s,"tag-open")?(M=!0,l&&(D=a.indexOf(l.value)!==-1),v==="0;C--)d+="\n";c=!0,!i(s,"comment")&&!s.type.match(/^(comment|string)$/)&&(v=v.trimLeft())}if(v){s.type==="keyword"&&v.match(/^(if|else|elseif|for|foreach|while|switch)$/)?(H[g]=v,j(),p=!0,v.match(/^(else|elseif)$/)&&d.match(/\}[\s]*$/)&&(I(),h=!0)):s.type==="paren.lparen"?(j(),v.substr(-1)==="{"&&(p=!0,O=!1,M||(C=1)),v.substr(0,1)==="{"&&(h=!0,d.substr(-1)!=="["&&d.trimRight().substr(-1)==="["?(I(),h=!1):d.trimRight().substr(-1)===")"?I():F())):s.type==="paren.rparen"?(E=1,v.substr(0,1)==="}"&&(H[g-1]==="case"&&E++,d.trimRight().substr(-1)==="{"?I():(h=!0,_&&(C+=2))),v.substr(0,1)==="]"&&d.substr(-1)!=="}"&&d.trimRight().substr(-1)==="}"&&(h=!1,w++,I()),v.substr(0,1)===")"&&d.substr(-1)!=="("&&d.trimRight().substr(-1)==="("&&(h=!1,w++,I()),F()):s.type!=="keyword.operator"&&s.type!=="keyword"||!v.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)?s.type==="punctuation.operator"&&v===";"?(I(),j(),p=!0,_&&C++):s.type==="punctuation.operator"&&v.match(/^(:|,)$/)?(I(),j(),v.match(/^(,)$/)&&x>0&&S===0&&f.lineBreaksAfterCommasInCurlyBlock?C++:(p=!0,c=!1)):s.type==="support.php_tag"&&v==="?>"&&!c?(I(),h=!0):i(s,"attribute-name")&&d.substr(-1).match(/^\s$/)?h=!0:i(s,"attribute-equals")?(F(),j()):i(s,"tag-close")?(F(),v==="/>"&&(h=!0)):s.type==="keyword"&&v.match(/^(case|default)$/)&&B&&(E=1):(I(),j(),h=!0,p=!0);if(c&&(!s.type.match(/^(comment)$/)||!!v.substr(0,1).match(/^[/#]$/))&&(!s.type.match(/^(string)$/)||!!v.substr(0,1).match(/^['"@]$/))){w=b;if(g>y){w++;for(A=g;A>y;A--)P[A]=w}else g")D&&l&&l.value===""&&g--),i(s,"tag-name")&&(m=v),T=N}}s=l}d=d.trim(),e.doc.setValue(d)},t.commands=[{name:"beautify",description:"Format selection (Beautify)",exec:function(e){t.beautify(e.session)},bindKey:"Ctrl-Shift-B"}]}); (function() { - window.require(["ace/ext/beautify"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/ext-code_lens.js b/www/js/ace/ext-code_lens.js deleted file mode 100644 index 51a31370e..000000000 --- a/www/js/ace/ext-code_lens.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/ext/code_lens",["require","exports","module","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/editor","ace/config"],function(e,t,n){"use strict";function o(e){var t=e.$textLayer,n=t.$lenses;n&&n.forEach(function(e){e.remove()}),t.$lenses=null}function u(e,t){var n=e&t.CHANGE_LINES||e&t.CHANGE_FULL||e&t.CHANGE_SCROLL||e&t.CHANGE_TEXT;if(!n)return;var r=t.session,i=t.session.lineWidgets,u=t.$textLayer,a=u.$lenses;if(!i){a&&o(t);return}var f=t.$textLayer.$lines.cells,l=t.layerConfig,c=t.$padding;a||(a=u.$lenses=[]);var h=0;for(var p=0;p2*y-1)g.lastChild.remove();var w=t.$cursorLayer.getPixelPosition({row:d,column:0},!0).top-l.lineHeight*v.rowsAbove-l.offset;g.style.top=w+"px";var E=t.gutterWidth,S=r.getLine(d).search(/\S|$/);S==-1&&(S=0),E+=S*l.characterWidth,g.style.paddingLeft=c+E+"px"}while(h1)return;var f=n.documentToScreenRow(r),l=e.renderer.layerConfig.lineHeight,c=n.getScrollTop()+(f-s)*l;u==0&&o-l/4&&(c=-l),n.setScrollTop(c)}var n=e.session;if(!n)return;var r=e.codeLensProviders.length,i=[];e.codeLensProviders.forEach(function(e){e.provideCodeLenses(n,function(e,t){if(e)return;t.forEach(function(e){i.push(e)}),r--,r==0&&s()})})};var n=i.delayedCall(e.$updateLenses);e.$updateLensesOnInput=function(){n.delay(250)},e.on("input",e.$updateLensesOnInput)}function l(e){e.off("input",e.$updateLensesOnInput),e.renderer.off("afterRender",u),e.$codeLensClickHandler&&e.container.removeEventListener("click",e.$codeLensClickHandler)}var r=e("../lib/event"),i=e("../lib/lang"),s=e("../lib/dom");t.setLenses=function(e,t){var n=Number.MAX_VALUE;return a(e),t&&t.forEach(function(t){var r=t.start.row,i=t.start.column,s=e.lineWidgets&&e.lineWidgets[r];if(!s||!s.lenses)s=e.widgetManager.$registerLineWidget({rowCount:1,rowsAbove:1,row:r,column:i,lenses:[]});s.lenses.push(t.command),r a {\n cursor: pointer;\n pointer-events: auto;\n}\n.ace_codeLens > a:hover {\n color: #0000ff;\n text-decoration: underline;\n}\n.ace_dark > .ace_codeLens > a:hover {\n color: #4e94ce;\n}\n","codelense.css",!1)}); (function() { - window.require(["ace/ext/code_lens"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/ext-command_bar.js b/www/js/ace/ext-command_bar.js deleted file mode 100644 index 30a573c69..000000000 --- a/www/js/ace/ext-command_bar.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/ext/command_bar",["require","exports","module","ace/tooltip","ace/lib/event_emitter","ace/lib/lang","ace/lib/dom","ace/lib/oop","ace/lib/useragent"],function(e,t,n){var r=this&&this.__values||function(e){var t=typeof Symbol=="function"&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},i=e("../tooltip").Tooltip,s=e("../lib/event_emitter").EventEmitter,o=e("../lib/lang"),u=e("../lib/dom"),a=e("../lib/oop"),f=e("../lib/useragent"),l="command_bar_tooltip_button",c="command_bar_button_value",h="command_bar_button_caption",p="command_bar_keybinding",d="command_bar_tooltip",v="MoreOptionsButton",m=100,g=4,y=function(e,t){return t.row>e.row?e:t.row===e.row&&t.column>e.column?e:t},b={Ctrl:{mac:"^"},Option:{mac:"\u2325"},Command:{mac:"\u2318"},Cmd:{mac:"\u2318"},Shift:"\u21e7",Left:"\u2190",Right:"\u2192",Up:"\u2191",Down:"\u2193"},w=function(){function e(e,t){var n,s;t=t||{},this.parentNode=e,this.tooltip=new i(this.parentNode),this.moreOptions=new i(this.parentNode),this.maxElementsOnTooltip=t.maxElementsOnTooltip||g,this.$alwaysShow=t.alwaysShow||!1,this.eventListeners={},this.elements={},this.commands={},this.tooltipEl=u.buildDom(["div",{"class":d}],this.tooltip.getElement()),this.moreOptionsEl=u.buildDom(["div",{"class":d+" tooltip_more_options"}],this.moreOptions.getElement()),this.$showTooltipTimer=o.delayedCall(this.$showTooltip.bind(this),t.showDelay||m),this.$hideTooltipTimer=o.delayedCall(this.$hideTooltip.bind(this),t.hideDelay||m),this.$tooltipEnter=this.$tooltipEnter.bind(this),this.$onMouseMove=this.$onMouseMove.bind(this),this.$onChangeScroll=this.$onChangeScroll.bind(this),this.$onEditorChangeSession=this.$onEditorChangeSession.bind(this),this.$scheduleTooltipForHide=this.$scheduleTooltipForHide.bind(this),this.$preventMouseEvent=this.$preventMouseEvent.bind(this);try{for(var a=r(["mousedown","mouseup","click"]),f=a.next();!f.done;f=a.next()){var l=f.value;this.tooltip.getElement().addEventListener(l,this.$preventMouseEvent),this.moreOptions.getElement().addEventListener(l,this.$preventMouseEvent)}}catch(c){n={error:c}}finally{try{f&&!f.done&&(s=a.return)&&s.call(a)}finally{if(n)throw n.error}}}return e.prototype.registerCommand=function(e,t){var n=Object.keys(this.commands).length=f.top&&s.top<=f.bottom&&s.left>=f.left+e.gutterWidth&&s.left<=f.right;if(!l&&this.isShown()){this.$hideTooltip();return}if(l&&!this.isShown()&&this.getAlwaysShow()){this.$showTooltip();return}var c=s.top-o.offsetHeight,h=Math.min(u-o.offsetWidth,s.left),p=c>=0&&c+o.offsetHeight<=a&&h>=0&&h+o.offsetWidth<=u;if(!p){this.$hideTooltip();return}this.tooltip.setPosition(h,c);if(this.isMoreOptionsShown()){c+=o.offsetHeight,h=this.elements[v].getBoundingClientRect().left;var d=this.moreOptions.getElement(),a=window.innerHeight;c+d.offsetHeight>a&&(c-=o.offsetHeight+d.offsetHeight),h+d.offsetWidth>u&&(h=u-d.offsetWidth),this.moreOptions.setPosition(h,c)}},e.prototype.update=function(){Object.keys(this.elements).forEach(this.$updateElement.bind(this))},e.prototype.detach=function(){this.tooltip.hide(),this.moreOptions.hide(),this.$updateOnHoverHandlers(!1),this.editor&&(this.editor.off("changeSession",this.$onEditorChangeSession),this.editor.session&&(this.editor.session.off("changeScrollLeft",this.$onChangeScroll),this.editor.session.off("changeScrollTop",this.$onChangeScroll))),this.$mouseInTooltip=!1,this.editor=null},e.prototype.destroy=function(){this.tooltip&&this.moreOptions&&(this.detach(),this.tooltip.destroy(),this.moreOptions.destroy()),this.eventListeners={},this.commands={},this.elements={},this.tooltip=this.moreOptions=this.parentNode=null},e.prototype.$createCommand=function(e,t,n){var r=n?this.tooltipEl:this.moreOptionsEl,i=[],s=t.bindKey;s&&(typeof s=="object"&&(s=f.isMac?s.mac:s.win),s=s.split("|")[0],i=s.split("-"),i=i.map(function(e){if(b[e]){if(typeof b[e]=="string")return b[e];if(f.isMac&&b[e].mac)return b[e].mac}return e}));var o;n&&t.iconCssClass?o=["div",{"class":["ace_icon_svg",t.iconCssClass].join(" "),"aria-label":t.name+" ("+t.bindKey+")"}]:(o=[["div",{"class":c}],["div",{"class":h},t.name]],i.length&&o.push(["div",{"class":p},i.map(function(e){return["div",e]})])),u.buildDom(["div",{"class":[l,t.cssClass||""].join(" "),ref:e},o],r,this.elements),this.commands[e]=t;var a=function(n){this.editor&&this.editor.focus(),this.$shouldHideMoreOptions=this.isMoreOptionsShown(),!this.elements[e].disabled&&t.exec&&t.exec(this.editor),this.$shouldHideMoreOptions&&this.$setMoreOptionsVisibility(!1),this.update(),n.preventDefault()}.bind(this);this.eventListeners[e]=a,this.elements[e].addEventListener("click",a.bind(this)),this.$updateElement(e)},e.prototype.$setMoreOptionsVisibility=function(e){e?(this.moreOptions.setTheme(this.editor.renderer.theme),this.moreOptions.setClassName(d+"_wrapper"),this.moreOptions.show(),this.update(),this.updatePosition()):this.moreOptions.hide()},e.prototype.$onEditorChangeSession=function(e){e.oldSession&&(e.oldSession.off("changeScrollTop",this.$onChangeScroll),e.oldSession.off("changeScrollLeft",this.$onChangeScroll)),this.detach()},e.prototype.$onChangeScroll=function(){this.editor.renderer&&(this.isShown()||this.getAlwaysShow())&&this.editor.renderer.once("afterRender",this.updatePosition.bind(this))},e.prototype.$onMouseMove=function(e){if(this.$mouseInTooltip)return;var t=this.editor.getCursorPosition(),n=this.editor.renderer.textToScreenCoordinates(t.row,t.column),r=this.editor.renderer.lineHeight,i=e.clientY>=n.pageY&&e.clientY=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},s=e("../../layer/decorators").Decorator,o=function(e){function t(t,n,r){var i=e.call(this,t,n)||this;return i.colors.dark["delete"]="rgba(255, 18, 18, 1)",i.colors.dark.insert="rgba(18, 136, 18, 1)",i.colors.light["delete"]="rgb(255,51,51)",i.colors.light.insert="rgb(32,133,72)",i.$zones=[],i.$forInlineDiff=r,i}return r(t,e),t.prototype.addZone=function(e,t,n){this.$zones.push({startRow:e,endRow:t,type:n})},t.prototype.setSessions=function(e,t){this.sessionA=e,this.sessionB=t},t.prototype.$updateDecorators=function(t){if(typeof this.canvas.getContext!="function")return;e.prototype.$updateDecorators.call(this,t);if(this.$zones.length>0){var n=this.renderer.theme.isDark===!0?this.colors.dark:this.colors.light,r=this.canvas.getContext("2d");this.$setDiffDecorators(r,n)}},t.prototype.$transformPosition=function(e,t){return t=="delete"?this.sessionA.documentToScreenRow(e,0):this.sessionB.documentToScreenRow(e,0)},t.prototype.$setDiffDecorators=function(e,t){function o(e,t){return e.from===t.from?e.to-t.to:e.from-t.from}var n,r,s=this,u=this.$zones;if(u){var a=[],f=u.filter(function(e){return e.type==="delete"}),l=u.filter(function(e){return e.type==="insert"});[f,l].forEach(function(e){e.forEach(function(e,n){var r=s.$transformPosition(e.startRow,e.type)*s.lineHeight,i=s.$transformPosition(e.endRow,e.type)*s.lineHeight+s.lineHeight,o=Math.round(s.heightRatio*r),u=Math.round(s.heightRatio*i),f=1,l=Math.round((o+u)/2),c=u-l;c0&&h&&h.type===e.type&&l-cs.canvasHeight&&(l=s.canvasHeight-c),a.push({type:e.type,from:l-c,to:l+c,color:t[e.type]||null})})}),a=a.sort(o);try{for(var c=i(a),h=c.next();!h.done;h=c.next()){var p=h.value;e.fillStyle=p.color||null;var d=p.from,v=p.to,m=v-d;this.$forInlineDiff?e.fillRect(this.oneZoneWidth,d,2*this.oneZoneWidth,m):p.type=="delete"?e.fillRect(this.oneZoneWidth,d,this.oneZoneWidth,m):e.fillRect(2*this.oneZoneWidth,d,this.oneZoneWidth,m)}}catch(g){n={error:g}}finally{try{h&&!h.done&&(r=c.return)&&r.call(c)}finally{if(n)throw n.error}}}},t.prototype.setZoneWidth=function(){this.oneZoneWidth=Math.round(this.canvasWidth/3)},t}(s);t.ScrollDiffDecorator=o}),define("ace/ext/diff/styles-css.js",["require","exports","module"],function(e,t,n){t.cssText='\n/*\n * Line Markers\n */\n.ace_diff {\n position: absolute;\n z-index: 0;\n}\n.ace_diff.inline {\n z-index: 20;\n}\n/*\n * Light Colors \n */\n.ace_diff.insert {\n background-color: #EFFFF1;\n}\n.ace_diff.delete {\n background-color: #FFF1F1;\n}\n.ace_diff.aligned_diff {\n background: rgba(206, 194, 191, 0.26);\n background: repeating-linear-gradient(\n 45deg,\n rgba(122, 111, 108, 0.26),\n rgba(122, 111, 108, 0.26) 5px,\n rgba(0, 0, 0, 0) 5px,\n rgba(0, 0, 0, 0) 10px \n );\n}\n\n.ace_diff.insert.inline {\n background-color: rgb(74 251 74 / 18%); \n}\n.ace_diff.delete.inline {\n background-color: rgb(251 74 74 / 15%);\n}\n\n.ace_diff.delete.inline.empty {\n background-color: rgba(255, 128, 79, 0.7);\n width: 2px !important;\n}\n\n.ace_diff.insert.inline.empty {\n background-color: rgba(49, 230, 96, 0.7);\n width: 2px !important;\n}\n\n.ace_diff-active-line {\n border-bottom: 1px solid;\n border-top: 1px solid;\n background: transparent;\n position: absolute;\n box-sizing: border-box;\n border-color: #9191ac;\n}\n\n.ace_dark .ace_diff-active-line {\n background: transparent;\n border-color: #75777a;\n}\n \n\n/* gutter changes */\n.ace_mini-diff_gutter-enabled > .ace_gutter-cell,\n.ace_mini-diff_gutter-enabled > .ace_gutter-cell_svg-icons {\n padding-right: 13px;\n}\n\n.ace_mini-diff_gutter_other > .ace_gutter-cell,\n.ace_mini-diff_gutter_other > .ace_gutter-cell_svg-icons {\n display: none;\n}\n\n.ace_mini-diff_gutter_other {\n pointer-events: none;\n}\n\n\n.ace_mini-diff_gutter-enabled > .mini-diff-added {\n background-color: #EFFFF1;\n border-left: 3px solid #2BB534;\n padding-left: 16px;\n display: block;\n}\n\n.ace_mini-diff_gutter-enabled > .mini-diff-deleted {\n background-color: #FFF1F1;\n border-left: 3px solid #EA7158;\n padding-left: 16px;\n display: block;\n}\n\n\n.ace_mini-diff_gutter-enabled > .mini-diff-added:after {\n position: absolute;\n right: 2px;\n content: "+";\n color: darkgray;\n background-color: inherit;\n}\n\n.ace_mini-diff_gutter-enabled > .mini-diff-deleted:after {\n position: absolute;\n right: 2px;\n content: "-";\n color: darkgray;\n background-color: inherit;\n}\n.ace_fade-fold-widgets:hover > .ace_folding-enabled > .mini-diff-added:after,\n.ace_fade-fold-widgets:hover > .ace_folding-enabled > .mini-diff-deleted:after {\n display: none;\n}\n\n.ace_diff_other .ace_selection {\n filter: drop-shadow(1px 2px 3px darkgray);\n}\n\n.ace_hidden_marker-layer .ace_bracket {\n display: none;\n}\n\n\n\n/*\n * Dark Colors \n */\n\n.ace_dark .ace_diff.insert {\n background-color: #212E25;\n}\n.ace_dark .ace_diff.delete {\n background-color: #3F2222;\n}\n\n.ace_dark .ace_mini-diff_gutter-enabled > .mini-diff-added {\n background-color: #212E25;\n border-left-color:#00802F;\n}\n\n.ace_dark .ace_mini-diff_gutter-enabled > .mini-diff-deleted {\n background-color: #3F2222;\n border-left-color: #9C3838;\n}\n\n'}),define("ace/ext/diff/gutter_decorator",["require","exports","module","ace/lib/dom"],function(e,t,n){var r=e("../../lib/dom"),i=function(){function e(e,t){this.gutterClass="ace_mini-diff_gutter-enabled",this.gutterCellsClasses={add:"mini-diff-added","delete":"mini-diff-deleted"},this.editor=e,this.type=t,this.chunks=[],this.attachToEditor()}return e.prototype.attachToEditor=function(){this.renderGutters=this.renderGutters.bind(this),r.addCssClass(this.editor.renderer.$gutterLayer.element,this.gutterClass),this.editor.renderer.$gutterLayer.on("afterRender",this.renderGutters)},e.prototype.renderGutters=function(e,t){var n=this,r=this.editor.renderer.$gutterLayer.$lines.cells;r.forEach(function(e){e.element.classList.remove(Object.values(n.gutterCellsClasses))});var i=this.type===-1?"old":"new",s=this.type===-1?this.gutterCellsClasses.delete:this.gutterCellsClasses.add;this.chunks.forEach(function(e){var t=e[i].start.row,n=e[i].end.row-1;r.forEach(function(e){e.row>=t&&e.row<=n&&e.element.classList.add(s)})})},e.prototype.setDecorations=function(e){this.chunks=e,this.renderGutters()},e.prototype.dispose=function(){r.removeCssClass(this.editor.renderer.$gutterLayer.element,this.gutterClass),this.editor.renderer.$gutterLayer.off("afterRender",this.renderGutters)},e}();t.MinimalGutterDiffDecorator=i}),define("ace/ext/diff/base_diff_view",["require","exports","module","ace/lib/oop","ace/range","ace/lib/dom","ace/config","ace/line_widgets","ace/ext/diff/scroll_diff_decorator","ace/ext/diff/styles-css.js","ace/editor","ace/virtual_renderer","ace/undomanager","ace/layer/decorators","ace/theme/textmate","ace/multi_select","ace/edit_session","ace/ext/diff/gutter_decorator"],function(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,s=[],o;try{while((t===void 0||t-->0)&&!(i=r.next()).done)s.push(i.value)}catch(u){o={error:u}}finally{try{i&&!i.done&&(n=r["return"])&&n.call(r)}finally{if(o)throw o.error}}return s},i=e("../../lib/oop"),s=e("../../range").Range,o=e("../../lib/dom"),u=e("../../config"),a=e("../../line_widgets").LineWidgets,f=e("./scroll_diff_decorator").ScrollDiffDecorator,l=e("./styles-css.js").cssText,c=e("../../editor").Editor,h=e("../../virtual_renderer").VirtualRenderer,p=e("../../undomanager").UndoManager,d=e("../../layer/decorators").Decorator;e("../../theme/textmate"),e("../../multi_select");var v=e("../../edit_session").EditSession,m=e("./gutter_decorator").MinimalGutterDiffDecorator,g={compute:function(e,t,n){return[]}};o.importCssString(l,"diffview.css");var y=function(){function e(e,t){this.onChangeTheme=this.onChangeTheme.bind(this),this.onInput=this.onInput.bind(this),this.onChangeFold=this.onChangeFold.bind(this),this.realign=this.realign.bind(this),this.onSelect=this.onSelect.bind(this),this.onChangeWrapLimit=this.onChangeWrapLimit.bind(this),this.realignPending=!1,this.diffSession,this.chunks,this.inlineDiffEditor=e||!1,this.currentDiffIndex=0,this.diffProvider=g,t&&(this.container=t),this.$ignoreTrimWhitespace=!1,this.$maxDiffs=5e3,this.$maxComputationTimeMs=150,this.$syncSelections=!1,this.$foldUnchangedOnInput=!1,this.markerB=new E(this,1),this.markerA=new E(this,-1)}return e.prototype.$setupModels=function(e){e.diffProvider&&this.setProvider(e.diffProvider),this.showSideA=e.inline==undefined?!0:e.inline==="a";var t={scrollPastEnd:.5,highlightActiveLine:!1,highlightGutterLine:!1,animatedScroll:!0,customScrollbar:!0,vScrollBarAlwaysVisible:!0,fadeFoldWidgets:!0,showFoldWidgets:!0,selectionStyle:"text"};this.savedOptionsA=e.editorA&&e.editorA.getOptions(t),this.savedOptionsB=e.editorB&&e.editorB.getOptions(t);if(!this.inlineDiffEditor||e.inline==="a")this.editorA=e.editorA||this.$setupModel(e.sessionA,e.valueA),this.container&&this.container.appendChild(this.editorA.container),this.editorA.setOptions(t);if(!this.inlineDiffEditor||e.inline==="b")this.editorB=e.editorB||this.$setupModel(e.sessionB,e.valueB),this.container&&this.container.appendChild(this.editorB.container),this.editorB.setOptions(t);if(this.inlineDiffEditor){this.activeEditor=this.showSideA?this.editorA:this.editorB,this.otherSession=this.showSideA?this.sessionB:this.sessionA;var n=this.activeEditor.getOptions();n.readOnly=!0,delete n.mode,this.otherEditor=new c(new h(null),undefined,n),this.showSideA?this.editorB=this.otherEditor:this.editorA=this.otherEditor}this.setDiffSession({sessionA:e.sessionA||(e.editorA?e.editorA.session:new v(e.valueA||"")),sessionB:e.sessionB||(e.editorB?e.editorB.session:new v(e.valueB||"")),chunks:[]}),this.setupScrollbars()},e.prototype.addGutterDecorators=function(){this.gutterDecoratorA||(this.gutterDecoratorA=new m(this.editorA,-1)),this.gutterDecoratorB||(this.gutterDecoratorB=new m(this.editorB,1))},e.prototype.$setupModel=function(e,t){var n=new c(new h,e);return n.session.setUndoManager(new p),t!=undefined&&n.setValue(t,-1),n},e.prototype.foldUnchanged=function(){var e=this.chunks,t="-".repeat(120),n={old:new s(0,0,0,0),"new":new s(0,0,0,0)},r=!1;for(var i=0;i2){var a=n.old.end.row+2,f=this.sessionA.addFold(t,new s(a,0,a+u,Number.MAX_VALUE));a=n.new.end.row+2;var l=this.sessionB.addFold(t,new s(a,0,a+u,Number.MAX_VALUE));if(f||l)r=!0;l&&f&&(f.other=l,l.other=f)}n=o}return r},e.prototype.unfoldUnchanged=function(){var e=this.sessionA.getAllFolds();for(var t=e.length-1;t>=0;t--){var n=e[t];n.placeholder.length==120&&this.sessionA.removeFold(n)}},e.prototype.toggleFoldUnchanged=function(){this.foldUnchanged()||this.unfoldUnchanged()},e.prototype.setDiffSession=function(e){this.diffSession&&(this.$detachSessionsEventHandlers(),this.clearSelectionMarkers()),this.diffSession=e,this.sessionA=this.sessionB=null,this.diffSession&&(this.chunks=this.diffSession.chunks||[],this.editorA&&this.editorA.setSession(e.sessionA),this.editorB&&this.editorB.setSession(e.sessionB),this.sessionA=this.diffSession.sessionA,this.sessionB=this.diffSession.sessionB,this.$attachSessionsEventHandlers(),this.initSelectionMarkers()),this.otherSession=this.showSideA?this.sessionB:this.sessionA},e.prototype.$attachSessionsEventHandlers=function(){},e.prototype.$detachSessionsEventHandlers=function(){},e.prototype.getDiffSession=function(){return this.diffSession},e.prototype.setTheme=function(e){this.editorA&&this.editorA.setTheme(e),this.editorB&&this.editorB.setTheme(e)},e.prototype.getTheme=function(){return(this.editorA||this.editorB).getTheme()},e.prototype.onChangeTheme=function(e){var t=e&&e.theme||this.getTheme();this.editorA&&this.editorA.getTheme()!==t&&this.editorA.setTheme(t),this.editorB&&this.editorB.getTheme()!==t&&this.editorB.setTheme(t)},e.prototype.resize=function(e){this.editorA&&this.editorA.resize(e),this.editorB&&this.editorB.resize(e)},e.prototype.scheduleOnInput=function(){var e=this;if(this.$onInputTimer)return;this.$onInputTimer=setTimeout(function(){e.$onInputTimer=null,e.onInput()})},e.prototype.onInput=function(){var e=this;this.$onInputTimer&&clearTimeout(this.$onInputTimer);var t=this.sessionA.doc.getAllLines(),n=this.sessionB.doc.getAllLines();this.selectionRangeA=null,this.selectionRangeB=null;var r=this.$diffLines(t,n);this.diffSession.chunks=this.chunks=r,this.gutterDecoratorA&&this.gutterDecoratorA.setDecorations(r),this.gutterDecoratorB&&this.gutterDecoratorB.setDecorations(r);if(this.chunks&&this.chunks.length>this.$maxDiffs)return;this.align(),this.editorA&&this.editorA.renderer.updateBackMarkers(),this.editorB&&this.editorB.renderer.updateBackMarkers(),setTimeout(function(){e.updateScrollBarDecorators()},0),this.$foldUnchangedOnInput&&this.foldUnchanged()},e.prototype.setupScrollbars=function(){var e=this,t=function(t){setTimeout(function(){e.$setScrollBarDecorators(t),e.updateScrollBarDecorators()},0)};this.inlineDiffEditor?t(this.activeEditor.renderer):(t(this.editorA.renderer),t(this.editorB.renderer))},e.prototype.$setScrollBarDecorators=function(e){e.$scrollDecorator&&e.$scrollDecorator.destroy(),e.$scrollDecorator=new f(e.scrollBarV,e,this.inlineDiffEditor),e.$scrollDecorator.setSessions(this.sessionA,this.sessionB),e.scrollBarV.setVisible(!0),e.scrollBarV.element.style.bottom=e.scrollBarH.getHeight()+"px"},e.prototype.$resetDecorators=function(e){e.$scrollDecorator&&e.$scrollDecorator.destroy(),e.$scrollDecorator=new d(e.scrollBarV,e)},e.prototype.updateScrollBarDecorators=function(){var e=this;if(this.inlineDiffEditor){if(!this.activeEditor)return;this.activeEditor.renderer.$scrollDecorator.$zones=[]}else{if(!this.editorA||!this.editorB)return;this.editorA.renderer.$scrollDecorator.$zones=[],this.editorB.renderer.$scrollDecorator.$zones=[]}var t=function(e,t){if(!e)return;if(typeof e.renderer.$scrollDecorator.addZone!="function")return;t.old.start.row!=t.old.end.row&&e.renderer.$scrollDecorator.addZone(t.old.start.row,t.old.end.row-1,"delete"),t.new.start.row!=t.new.end.row&&e.renderer.$scrollDecorator.addZone(t.new.start.row,t.new.end.row-1,"insert")};this.inlineDiffEditor?(this.chunks&&this.chunks.forEach(function(n){t(e.activeEditor,n)}),this.activeEditor.renderer.$scrollDecorator.$updateDecorators(this.activeEditor.renderer.layerConfig)):(this.chunks&&this.chunks.forEach(function(n){t(e.editorA,n),t(e.editorB,n)}),this.editorA.renderer.$scrollDecorator.$updateDecorators(this.editorA.renderer.layerConfig),this.editorB.renderer.$scrollDecorator.$updateDecorators(this.editorB.renderer.layerConfig))},e.prototype.$diffLines=function(e,t){return this.diffProvider.compute(e,t,{ignoreTrimWhitespace:this.$ignoreTrimWhitespace,maxComputationTimeMs:this.$maxComputationTimeMs})},e.prototype.setProvider=function(e){this.diffProvider=e},e.prototype.$addWidget=function(e,t){var n=e.lineWidgets[t.row];n&&(t.rowsAbove+=n.rowsAbove>t.rowsAbove?n.rowsAbove:t.rowsAbove,t.rowCount+=n.rowCount),e.lineWidgets[t.row]=t,e.widgetManager.lineWidgets[t.row]=t,e.$resetRowCache(t.row);var r=e.getFoldAt(t.row,0);r&&e.widgetManager.updateOnFold({data:r,action:"add"},e)},e.prototype.$initWidgets=function(e){var t=e.session;t.widgetManager||(t.widgetManager=new a(t),t.widgetManager.attach(e)),e.session.lineWidgets=[],e.session.widgetManager.lineWidgets=[],e.session.$resetRowCache(0)},e.prototype.$screenRow=function(e,t){var n=t.documentToScreenPosition(e).row,r=e.row-t.getLength()+1;return r>0&&(n+=r),n},e.prototype.align=function(){},e.prototype.onChangeWrapLimit=function(e,t){},e.prototype.onSelect=function(e,t){this.searchHighlight(t),this.syncSelect(t)},e.prototype.syncSelect=function(e){if(this.$updatingSelection)return;var t=e.session===this.sessionA,n=e.getRange(),r=t?this.selectionRangeA:this.selectionRangeB;if(r&&n.isEqual(r))return;t?this.selectionRangeA=n:this.selectionRangeB=n,this.$updatingSelection=!0;var i=this.transformRange(n,t);this.$syncSelections&&(t?this.editorB:this.editorA).session.selection.setSelectionRange(i),this.$updatingSelection=!1,t?(this.selectionRangeA=n,this.selectionRangeB=i):(this.selectionRangeA=i,this.selectionRangeB=n),this.updateSelectionMarker(this.syncSelectionMarkerA,this.sessionA,this.selectionRangeA),this.updateSelectionMarker(this.syncSelectionMarkerB,this.sessionB,this.selectionRangeB)},e.prototype.updateSelectionMarker=function(e,t,n){e.setRange(n),t._signal("changeFrontMarker")},e.prototype.onChangeFold=function(e,t){var n=e.data;if(this.$syncingFold||!n||!e.action)return;this.scheduleRealign();var r=t===this.sessionA,i=r?this.sessionB:this.sessionA;e.action==="remove"&&(n.other?(n.other.other=null,i.removeFold(n.other)):n.lineWidget&&(i.widgetManager.addLineWidget(n.lineWidget),n.lineWidget=null,i.$editor&&i.$editor.renderer.updateBackMarkers()));if(e.action==="add"){var s=this.transformRange(n.range,r);if(s.isEmpty()){var o=s.start.row+1;i.lineWidgets[o]&&(n.lineWidget=i.lineWidgets[o],i.widgetManager.removeLineWidget(n.lineWidget),i.$editor&&i.$editor.renderer.updateBackMarkers())}else this.$syncingFold=!0,n.other=i.addFold(n.placeholder,s),n.other&&(n.other.other=n),this.$syncingFold=!1}},e.prototype.scheduleRealign=function(){this.realignPending||(this.realignPending=!0,this.editorA.renderer.on("beforeRender",this.realign),this.editorB.renderer.on("beforeRender",this.realign))},e.prototype.realign=function(){this.realignPending=!0,this.editorA.renderer.off("beforeRender",this.realign),this.editorB.renderer.off("beforeRender",this.realign),this.align(),this.realignPending=!1},e.prototype.detach=function(){if(!this.editorA||!this.editorB)return;this.savedOptionsA&&this.editorA.setOptions(this.savedOptionsA),this.savedOptionsB&&this.editorB.setOptions(this.savedOptionsB),this.editorA.renderer.off("beforeRender",this.realign),this.editorB.renderer.off("beforeRender",this.realign),this.$detachEventHandlers(),this.$removeLineWidgets(this.sessionA),this.$removeLineWidgets(this.sessionB),this.gutterDecoratorA&&this.gutterDecoratorA.dispose(),this.gutterDecoratorB&&this.gutterDecoratorB.dispose(),this.sessionA.selection.clearSelection(),this.sessionB.selection.clearSelection(),this.savedOptionsA&&this.savedOptionsA.customScrollbar&&this.$resetDecorators(this.editorA.renderer),this.savedOptionsB&&this.savedOptionsB.customScrollbar&&this.$resetDecorators(this.editorB.renderer)},e.prototype.$removeLineWidgets=function(e){e.lineWidgets=[],e.widgetManager.lineWidgets=[],e._signal("changeFold",{data:{start:{row:0}}})},e.prototype.$detachEventHandlers=function(){},e.prototype.destroy=function(){this.detach(),this.editorA&&this.editorA.destroy(),this.editorB&&this.editorB.destroy(),this.editorA=this.editorB=null},e.prototype.gotoNext=function(e){var t=this.activeEditor||this.editorA;this.inlineDiffEditor&&(t=this.editorA);var n=t==this.editorA,r=t.selection.lead.row,i=this.findChunkIndex(this.chunks,r,n),o=this.chunks[i+e]||this.chunks[i],u=t.session.getScrollTop();if(o){var a=o[n?"old":"new"],f=Math.max(a.start.row,a.end.row-1);t.selection.setRange(new s(f,0,f,0))}t.renderer.scrollSelectionIntoView(t.selection.lead,t.selection.anchor,.5),t.renderer.animateScrolling(u)},e.prototype.firstDiffSelected=function(){return this.currentDiffIndex<=1},e.prototype.lastDiffSelected=function(){return this.currentDiffIndex>this.chunks.length-1},e.prototype.transformRange=function(e,t){return s.fromPoints(this.transformPosition(e.start,t),this.transformPosition(e.end,t))},e.prototype.transformPosition=function(e,t){var n=this.findChunkIndex(this.chunks,e.row,t),i=this.chunks[n],s=this.sessionB.doc.clonePos,o=s(e),u=r(t?["old","new"]:["new","old"],2),a=u[0],f=u[1],l=0,c=!1;if(i)if(i[a].end.row<=e.row)o.row-=i[a].end.row-i[f].end.row;else if(i.charChanges)for(var h=0;he.row)break;if(d.isMultiLine()&&d.contains(e.row,e.column)){o.row=v.start.row+e.row-d.start.row;var m=v.end.row;v.end.column===0&&m--,o.row>m&&(o.row=m,o.column=(t?this.sessionB:this.sessionA).getLine(m).length,c=!0),o.row=Math.min(o.row,m)}else{o.row=v.start.row;if(d.start.column>e.column)break;c=!0,!d.isEmpty()&&d.contains(e.row,e.column)?(o.column=v.start.column,l=e.column-d.start.column,l=Math.min(l,v.end.column-v.start.column)):(o=s(v.end),l=e.column-d.end.column)}}else i[a].start.row<=e.row&&(o.row+=i[f].start.row-i[a].start.row,o.row>=i[f].end.row&&(o.row=i[f].end.row-1,o.column=(t?this.sessionB:this.sessionA).getLine(o.row).length));if(!c){var g=r(t?[this.sessionA,this.sessionB]:[this.sessionB,this.sessionA],2),y=g[0],b=g[1];l-=this.$getDeltaIndent(y,b,e.row,o.row)}return o.column+=l,o},e.prototype.$getDeltaIndent=function(e,t,n,r){var i=this.$getIndent(e,n),s=this.$getIndent(t,r);return i-s},e.prototype.$getIndent=function(e,t){return e.getLine(t).match(/^\s*/)[0].length},e.prototype.printDiffs=function(){this.chunks.forEach(function(e){console.log(e.toString())})},e.prototype.findChunkIndex=function(e,t,n){for(var r=0;rt)break}return this.currentDiffIndex=r,r-1},e.prototype.searchHighlight=function(e){if(this.$syncSelections||this.inlineDiffEditor)return;var t=e.session,n=t===this.sessionA?this.sessionB:this.sessionA;n.highlight(t.$searchHighlight.regExp),n._signal("changeBackMarker")},e.prototype.initSelectionMarkers=function(){this.syncSelectionMarkerA=new S,this.syncSelectionMarkerB=new S,this.sessionA.addDynamicMarker(this.syncSelectionMarkerA,!0),this.sessionB.addDynamicMarker(this.syncSelectionMarkerB,!0)},e.prototype.clearSelectionMarkers=function(){this.sessionA.removeMarker(this.syncSelectionMarkerA.id),this.sessionB.removeMarker(this.syncSelectionMarkerB.id)},e}();u.defineOptions(y.prototype,"DiffView",{showOtherLineNumbers:{set:function(e){this.gutterLayer&&(this.gutterLayer.$renderer=e?null:b,this.editorA.renderer.updateFull())},initialValue:!0},folding:{set:function(e){this.editorA.setOption("showFoldWidgets",e),this.editorB.setOption("showFoldWidgets",e);if(!e){var t=[],n=[];this.chunks&&this.chunks.forEach(function(e){t.push(e.old.start,e.old.end),n.push(e.new.start,e.new.end)}),this.sessionA.unfold(t),this.sessionB.unfold(n)}}},syncSelections:{set:function(e){}},ignoreTrimWhitespace:{set:function(e){this.scheduleOnInput()}},wrap:{set:function(e){this.sessionA.setOption("wrap",e),this.sessionB.setOption("wrap",e)}},maxDiffs:{value:5e3},theme:{set:function(e){this.setTheme(e)},get:function(){return this.editorA.getTheme()}}});var b={getText:function(t){return""},getWidth:function(){return 0}};t.BaseDiffView=y;var w=function(){function e(t,n,r){this.old=t,this.new=n,this.charChanges=r&&r.map(function(t){return new e(new s(t.originalStartLineNumber,t.originalStartColumn,t.originalEndLineNumber,t.originalEndColumn),new s(t.modifiedStartLineNumber,t.modifiedStartColumn,t.modifiedEndLineNumber,t.modifiedEndColumn))})}return e}(),E=function(){function e(e,t){this.id,this.diffView=e,this.type=t}return e.prototype.update=function(e,t,n,r){var i,o,u,a=this.diffView;this.type===-1?(i="old",o="delete",u="insert"):(i="new",o="insert",u="delete");var f=a.$ignoreTrimWhitespace,l=a.chunks;if(n.lineWidgets&&!a.inlineDiffEditor)for(var c=r.firstRow;c<=r.lastRow;c++){var h=n.lineWidgets[c];if(!h||h.hidden)continue;var p=n.documentToScreenRow(c,0);if(h.rowsAbove>0){var d=new s(p-h.rowsAbove,0,p-1,Number.MAX_VALUE);t.drawFullLineMarker(e,d,"ace_diff aligned_diff",r)}var v=p+h.rowCount-(h.rowsAbove||0),d=new s(p+1,0,v,Number.MAX_VALUE);t.drawFullLineMarker(e,d,"ace_diff aligned_diff",r)}l.forEach(function(a){var l=a[i].start.row,c=a[i].end.row;if(cr.lastRow)return;var h=new s(l,0,c-1,1<<30);l!==c&&(h=h.toScreenRange(n),t.drawFullLineMarker(e,h,"ace_diff "+o,r));if(a.charChanges)for(var p=0;pd.start.row&&d.end.row==a[i].end.row&&(d.end.row--,d.end.column=Number.MAX_VALUE);if(f)for(var v=d.start.row;v<=d.end.row;v++){var m=void 0,g=void 0,y=n.getLine(v).match(/^\s*/)[0].length,b=n.getLine(v).length;v===d.start.row?m=d.start.column:m=y,v===d.end.row?g=d.end.column:g=b;var w=new s(v,m,v,g),E=w.toScreenRange(n);if(y===m&&b===g)continue;var S="inline "+o;w.isEmpty()&&m!==0&&(S="inline "+u+" empty"),t.drawSingleLineMarker(e,E,"ace_diff "+S,r)}else{var x=new s(d.start.row,d.start.column,d.end.row,d.end.column),E=x.toScreenRange(n),S="inline "+o;x.isEmpty()&&d.start.column!==0&&(S="inline empty "+u),E.isMultiLine()?t.drawTextMarker(e,E,"ace_diff "+S,r):t.drawSingleLineMarker(e,E,"ace_diff "+S,r)}}})},e}(),S=function(){function e(){this.id,this.type="fullLine",this.clazz="ace_diff-active-line"}return e.prototype.update=function(e,t,n,r){},e.prototype.setRange=function(e){var t=e.clone();t.end.column++,this.range=t},e}();t.DiffChunk=w,t.DiffHighlight=E}),define("ace/ext/diff/inline_diff_view",["require","exports","module","ace/ext/diff/base_diff_view","ace/virtual_renderer","ace/config"],function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function r(){this.constructor=t}if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");e(t,n),t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),i=e("./base_diff_view").BaseDiffView,s=e("../../virtual_renderer").VirtualRenderer,o=e("../../config"),u=function(e){function t(t,n){var r=this;return t=t||{},t.inline=t.inline||"a",r=e.call(this,!0,n)||this,r.init(t),r}return r(t,e),t.prototype.init=function(e){this.onSelect=this.onSelect.bind(this),this.onAfterRender=this.onAfterRender.bind(this),this.$setupModels(e),this.onChangeTheme(),o.resetOptions(this),o._signal("diffView",this);var t=this.activeEditor.renderer.$padding;this.addGutterDecorators(),this.otherEditor.renderer.setPadding(t),this.textLayer=this.otherEditor.renderer.$textLayer,this.markerLayer=this.otherEditor.renderer.$markerBack,this.gutterLayer=this.otherEditor.renderer.$gutterLayer,this.cursorLayer=this.otherEditor.renderer.$cursorLayer,this.otherEditor.renderer.$updateCachedSize=function(){};var n=this.activeEditor.renderer.$textLayer.element;n.parentNode.insertBefore(this.textLayer.element,n);var r=this.activeEditor.renderer.$markerBack.element;r.parentNode.insertBefore(this.markerLayer.element,r.nextSibling);var i=this.activeEditor.renderer.$gutterLayer.element;i.parentNode.insertBefore(this.gutterLayer.element,i.nextSibling),i.style.position="absolute",this.gutterLayer.element.style.position="absolute",this.gutterLayer.element.style.width="100%",this.gutterLayer.element.classList.add("ace_mini-diff_gutter_other"),this.gutterLayer.$updateGutterWidth=function(){},this.initMouse(),this.initTextInput(),this.initTextLayer(),this.initRenderer(),this.$attachEventHandlers(),this.selectEditor(this.activeEditor)},t.prototype.initRenderer=function(e){var t=this;e?delete this.activeEditor.renderer.$getLongestLine:this.editorA.renderer.$getLongestLine=this.editorB.renderer.$getLongestLine=function(){var e=s.prototype.$getLongestLine;return Math.max(e.call(t.editorA.renderer),e.call(t.editorB.renderer))}},t.prototype.initTextLayer=function(){function r(e,t){var r=0,i=e.length-1,s=-1;while(rt)){s=o;break}i=o-1}}e[s+1]&&e[s+1][n].start.row<=t&&s++;var a=e[s]&&e[s][n];return a&&a.end.row>t?!0:!1}var e=this.textLayer.$renderLine,t=this;this.otherEditor.renderer.$textLayer.$renderLine=function(n,i,s){r(t.chunks,i)&&e.call(this,n,i,s)};var n=this.showSideA?"new":"old"},t.prototype.initTextInput=function(e){e?(this.otherEditor.textInput=this.othertextInput,this.otherEditor.container=this.otherEditorContainer):(this.othertextInput=this.otherEditor.textInput,this.otherEditor.textInput=this.activeEditor.textInput,this.otherEditorContainer=this.otherEditor.container,this.otherEditor.container=this.activeEditor.container)},t.prototype.selectEditor=function(e){e==this.activeEditor?(this.otherEditor.selection.clearSelection(),this.activeEditor.textInput.setHost(this.activeEditor),this.activeEditor.setStyle("ace_diff_other",!1),this.cursorLayer.element.remove(),this.activeEditor.renderer.$cursorLayer.element.style.display="block",this.showSideA&&(this.sessionA.removeMarker(this.syncSelectionMarkerA.id),this.sessionA.addDynamicMarker(this.syncSelectionMarkerA,!0)),this.markerLayer.element.classList.add("ace_hidden_marker-layer"),this.activeEditor.renderer.$markerBack.element.classList.remove("ace_hidden_marker-layer"),this.removeBracketHighlight(this.otherEditor)):(this.activeEditor.selection.clearSelection(),this.activeEditor.textInput.setHost(this.otherEditor),this.activeEditor.setStyle("ace_diff_other"),this.activeEditor.renderer.$cursorLayer.element.parentNode.appendChild(this.cursorLayer.element),this.activeEditor.renderer.$cursorLayer.element.style.display="none",this.activeEditor.$isFocused&&this.otherEditor.onFocus(),this.showSideA&&this.sessionA.removeMarker(this.syncSelectionMarkerA.id),this.markerLayer.element.classList.remove("ace_hidden_marker-layer"),this.activeEditor.renderer.$markerBack.element.classList.add("ace_hidden_marker-layer"),this.removeBracketHighlight(this.activeEditor))},t.prototype.removeBracketHighlight=function(e){var t=e.session;t.$bracketHighlight&&(t.$bracketHighlight.markerIds.forEach(function(e){t.removeMarker(e)}),t.$bracketHighlight=null)},t.prototype.initMouse=function(){var e=this;this.otherEditor.renderer.$loop=this.activeEditor.renderer.$loop,this.otherEditor.renderer.scroller={getBoundingClientRect:function(){return e.activeEditor.renderer.scroller.getBoundingClientRect()},style:this.activeEditor.renderer.scroller.style};var t=function(t){if(!t.domEvent)return;var n=t.editor.renderer.pixelToScreenCoordinates(t.clientX,t.clientY),r=e.activeEditor.session,i=e.otherEditor.session,s=r.screenToDocumentPosition(n.row,n.column,n.offsetX),o=i.screenToDocumentPosition(n.row,n.column,n.offsetX),u=r.documentToScreenPosition(s),a=i.documentToScreenPosition(o);t.editor==e.activeEditor&&(a.row==n.row&&u.row!=n.row?(t.type=="mousedown"&&e.selectEditor(e.otherEditor),t.propagationStopped=!0,t.defaultPrevented=!0,e.otherEditor.$mouseHandler.onMouseEvent(t.type,t.domEvent)):t.type=="mousedown"&&e.selectEditor(e.activeEditor))},n=["mousedown","click","mouseup","dblclick","tripleclick","quadclick"];n.forEach(function(n){e.activeEditor.on(n,t,!0),e.activeEditor.on("gutter"+n,t,!0)});var r=function(t){e.activeEditor.onFocus(t)},i=function(t){e.activeEditor.onBlur(t)};this.otherEditor.on("focus",r),this.otherEditor.on("blur",i),this.onMouseDetach=function(){n.forEach(function(n){e.activeEditor.off(n,t,!0),e.activeEditor.off("gutter"+n,t,!0)}),e.otherEditor.off("focus",r),e.otherEditor.off("blur",i)}},t.prototype.align=function(){var e=this;this.$initWidgets(e.editorA),this.$initWidgets(e.editorB),e.chunks.forEach(function(t){var n=e.$screenRow(t.old.end,e.sessionA)-e.$screenRow(t.old.start,e.sessionA),r=e.$screenRow(t.new.end,e.sessionB)-e.$screenRow(t.new.start,e.sessionB);e.$addWidget(e.sessionA,{rowCount:r,rowsAbove:t.old.end.row===0?r:0,row:t.old.end.row===0?0:t.old.end.row-1}),e.$addWidget(e.sessionB,{rowCount:n,rowsAbove:n,row:t.new.start.row})}),e.sessionA._emit("changeFold",{data:{start:{row:0}}}),e.sessionB._emit("changeFold",{data:{start:{row:0}}})},t.prototype.onChangeWrapLimit=function(){this.sessionB.adjustWrapLimit(this.sessionA.$wrapLimit),this.scheduleRealign()},t.prototype.$attachSessionsEventHandlers=function(){this.$attachSessionEventHandlers(this.editorA,this.markerA),this.$attachSessionEventHandlers(this.editorB,this.markerB),this.sessionA.on("changeWrapLimit",this.onChangeWrapLimit),this.sessionA.on("changeWrapMode",this.onChangeWrapLimit)},t.prototype.$attachSessionEventHandlers=function(e,t){e.session.on("changeFold",this.onChangeFold),e.session.addDynamicMarker(t),e.selection.on("changeCursor",this.onSelect),e.selection.on("changeSelection",this.onSelect)},t.prototype.$detachSessionsEventHandlers=function(){this.$detachSessionHandlers(this.editorA,this.markerA),this.$detachSessionHandlers(this.editorB,this.markerB),this.otherSession.bgTokenizer.lines.fill(undefined),this.sessionA.off("changeWrapLimit",this.onChangeWrapLimit),this.sessionA.off("changeWrapMode",this.onChangeWrapLimit)},t.prototype.$detachSessionHandlers=function(e,t){e.session.removeMarker(t.id),e.selection.off("changeCursor",this.onSelect),e.selection.off("changeSelection",this.onSelect),e.session.off("changeFold",this.onChangeFold)},t.prototype.$attachEventHandlers=function(){this.activeEditor.on("input",this.onInput),this.activeEditor.renderer.on("afterRender",this.onAfterRender),this.otherSession.on("change",this.onInput)},t.prototype.$detachEventHandlers=function(){this.$detachSessionsEventHandlers(),this.activeEditor.off("input",this.onInput),this.activeEditor.renderer.off("afterRender",this.onAfterRender),this.otherSession.off("change",this.onInput),this.textLayer.element.textContent="",this.textLayer.element.remove(),this.gutterLayer.element.textContent="",this.gutterLayer.element.remove(),this.markerLayer.element.textContent="",this.markerLayer.element.remove(),this.onMouseDetach(),this.selectEditor(this.activeEditor),this.clearSelectionMarkers(),this.otherEditor.setSession(null),this.otherEditor.renderer.$loop=null,this.initTextInput(!0),this.initRenderer(!0),this.otherEditor.destroy()},t.prototype.onAfterRender=function(e,t){var n=t.layerConfig,r=this.otherSession,i=this.otherEditor.renderer;r.$scrollTop=t.scrollTop,r.$scrollLeft=t.scrollLeft,["characterWidth","lineHeight","scrollTop","scrollLeft","scrollMargin","$padding","$size","layerConfig","$horizScroll","$vScroll"].forEach(function(e){i[e]=t[e]}),i.$computeLayerConfig();var s=i.layerConfig;this.gutterLayer.update(s),s.firstRowScreen=n.firstRowScreen,i.$cursorLayer.config=s,i.$cursorLayer.update(s),(e&i.CHANGE_LINES||e&i.CHANGE_FULL||e&i.CHANGE_SCROLL||e&i.CHANGE_TEXT)&&this.textLayer.update(s),this.markerLayer.setMarkers(this.otherSession.getMarkers()),this.markerLayer.update(s)},t.prototype.detach=function(){e.prototype.detach.call(this),this.otherEditor&&this.otherEditor.destroy()},t}(i);t.InlineDiffView=u}),define("ace/ext/diff/split_diff_view",["require","exports","module","ace/ext/diff/base_diff_view","ace/config"],function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){function r(){this.constructor=t}if(typeof n!="function"&&n!==null)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");e(t,n),t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),i=e("./base_diff_view").BaseDiffView,s=e("../../config"),o=function(e){function t(t){var n=this;return t=t||{},n=e.call(this)||this,n.init(t),n}return r(t,e),t.prototype.init=function(e){this.onChangeTheme=this.onChangeTheme.bind(this),this.onMouseWheel=this.onMouseWheel.bind(this),this.onScroll=this.onScroll.bind(this),this.$setupModels(e),this.addGutterDecorators(),this.onChangeTheme(),s.resetOptions(this),s._signal("diffView",this),this.$attachEventHandlers()},t.prototype.onChangeWrapLimit=function(){this.scheduleRealign()},t.prototype.align=function(){var e=this;this.$initWidgets(e.editorA),this.$initWidgets(e.editorB),e.chunks.forEach(function(t){var n=e.$screenRow(t.old.start,e.sessionA),r=e.$screenRow(t.new.start,e.sessionB);nr&&e.$addWidget(e.sessionB,{rowCount:n-r,rowsAbove:t.new.start.row===0?n-r:0,row:t.new.start.row===0?0:t.new.start.row-1});var n=e.$screenRow(t.old.end,e.sessionA),r=e.$screenRow(t.new.end,e.sessionB);nr&&e.$addWidget(e.sessionB,{rowCount:n-r,rowsAbove:t.new.end.row===0?n-r:0,row:t.new.end.row===0?0:t.new.end.row-1})}),e.sessionA._emit("changeFold",{data:{start:{row:0}}}),e.sessionB._emit("changeFold",{data:{start:{row:0}}})},t.prototype.onScroll=function(e,t){this.syncScroll(this.sessionA===t?this.editorA.renderer:this.editorB.renderer)},t.prototype.syncScroll=function(e){if(this.$syncScroll==0)return;var t=this.editorA.renderer,n=this.editorB.renderer,r=e==t;if(t.$scrollAnimation&&n.$scrollAnimation)return;var i=Date.now();if(this.scrollSetBy!=e&&i-this.scrollSetAt<500)return;var s=r?t:n;if(this.scrollSetBy!=e){if(r&&this.scrollA==s.session.getScrollTop())return;if(!r&&this.scrollB==s.session.getScrollTop())return}var o=r?n:t,u=s.session.getScrollTop();this.$syncScroll=!1,r?(this.scrollA=s.session.getScrollTop(),this.scrollB=u):(this.scrollA=u,this.scrollB=s.session.getScrollTop()),this.scrollSetBy=e,o.session.setScrollTop(u),this.$syncScroll=!0,this.scrollSetAt=i},t.prototype.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.editor,n=t.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(!n){var r=t==this.editorA?this.editorB:this.editorA;return r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed)&&r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}},t.prototype.$attachSessionsEventHandlers=function(){this.$attachSessionEventHandlers(this.editorA,this.markerA),this.$attachSessionEventHandlers(this.editorB,this.markerB)},t.prototype.$attachSessionEventHandlers=function(e,t){e.session.on("changeScrollTop",this.onScroll),e.session.on("changeFold",this.onChangeFold),e.session.addDynamicMarker(t),e.selection.on("changeCursor",this.onSelect),e.selection.on("changeSelection",this.onSelect),e.session.on("changeWrapLimit",this.onChangeWrapLimit),e.session.on("changeWrapMode",this.onChangeWrapLimit)},t.prototype.$detachSessionsEventHandlers=function(){this.$detachSessionHandlers(this.editorA,this.markerA),this.$detachSessionHandlers(this.editorB,this.markerB)},t.prototype.$detachSessionHandlers=function(e,t){e.session.off("changeScrollTop",this.onScroll),e.session.off("changeFold",this.onChangeFold),e.session.removeMarker(t.id),e.selection.off("changeCursor",this.onSelect),e.selection.off("changeSelection",this.onSelect),e.session.off("changeWrapLimit",this.onChangeWrapLimit),e.session.off("changeWrapMode",this.onChangeWrapLimit)},t.prototype.$attachEventHandlers=function(){this.editorA.renderer.on("themeChange",this.onChangeTheme),this.editorB.renderer.on("themeChange",this.onChangeTheme),this.editorA.on("mousewheel",this.onMouseWheel),this.editorB.on("mousewheel",this.onMouseWheel),this.editorA.on("input",this.onInput),this.editorB.on("input",this.onInput)},t.prototype.$detachEventHandlers=function(){this.$detachSessionsEventHandlers(),this.clearSelectionMarkers(),this.editorA.renderer.off("themeChange",this.onChangeTheme),this.editorB.renderer.off("themeChange",this.onChangeTheme),this.$detachEditorEventHandlers(this.editorA),this.$detachEditorEventHandlers(this.editorB)},t.prototype.$detachEditorEventHandlers=function(e){e.off("mousewheel",this.onMouseWheel),e.off("input",this.onInput)},t}(i);t.SplitDiffView=o}),define("ace/ext/diff/providers/default",["require","exports","module","ace/range","ace/ext/diff/base_diff_view"],function(e,t,n){"use strict";function h(e,t,n){n===void 0&&(n=function(e,t){return e===t});if(e===t)return!0;if(!e||!t)return!1;if(e.length!==t.length)return!1;for(var r=0,i=e.length;rt.length)return new N(t.length,t[t.length-1].length+1);var n=t[e.lineNumber-1];return e.column>n.length+1?new N(e.lineNumber,n.length+1):e}function R(e,t){return e>=1&&e<=t.length}function W(e,t,n,r){var i,o;r===void 0&&(r=!1);var u=[];try{for(var a=s(p(e.map(function(e){return X(e,t,n)}),function(e,t){return e.original.overlapOrTouch(t.original)||e.modified.overlapOrTouch(t.modified)})),f=a.next();!f.done;f=a.next()){var l=f.value,c=l[0],h=l[l.length-1];u.push(new U(c.original.join(h.original),c.modified.join(h.modified),l.map(function(e){return e.innerChanges[0]})))}}catch(d){i={error:d}}finally{try{f&&!f.done&&(o=a.return)&&o.call(a)}finally{if(i)throw i.error}}return S(function(){if(!r&&u.length>0){if(u[0].modified.startLineNumber!==u[0].original.startLineNumber)return!1;if(n.length.lineCount-u[u.length-1].modified.endLineNumberExclusive!==t.length.lineCount-u[u.length-1].original.endLineNumberExclusive)return!1}return x(u,function(e,t){return t.original.startLineNumber-e.original.endLineNumberExclusive===t.modified.startLineNumber-e.modified.endLineNumberExclusive&&e.original.endLineNumberExclusive=n.getLineLength(e.modifiedRange.startLineNumber)&&e.originalRange.startColumn-1>=t.getLineLength(e.originalRange.startLineNumber)&&e.originalRange.startLineNumber<=e.originalRange.endLineNumber+i&&e.modifiedRange.startLineNumber<=e.modifiedRange.endLineNumber+i&&(r=1);var s=new _(e.originalRange.startLineNumber+r,e.originalRange.endLineNumber+1+i),o=new _(e.modifiedRange.startLineNumber+r,e.modifiedRange.endLineNumber+1+i);return new U(s,o,[e])}function Y(e){return e===32||e===9}function ut(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57}function at(e){return e>=65&&e<=90}function lt(e){return ft[e]}function ct(e){return e===10?8:e===13?7:Y(e)?6:e>=97&&e<=122?0:e>=65&&e<=90?1:e>=48&&e<=57?2:e===-1?3:e===44||e===59?5:4}function ht(e,t,n,r,i,s){var o=dt(e,t,n,s),u=o.moves,a=o.excludedChanges;if(!s.isValid())return[];var f=e.filter(function(e){return!a.has(e)}),l=vt(f,r,i,t,n,s);return m(u,l),u=gt(u),u=u.filter(function(e){var n=e.original.toOffsetRange().slice(t).map(function(e){return e.trim()}),r=n.join("\n");return r.length>=15&&pt(n,function(e){return e.length>=2})>=2}),u=yt(e,u),u}function pt(e,t){var n,r,i=0;try{for(var o=s(e),u=o.next();!u.done;u=o.next()){var a=u.value;t(a)&&i++}}catch(f){n={error:f}}finally{try{u&&!u.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return i}function dt(e,t,n,r){var i,o,u,a,f=[],l=e.filter(function(e){return e.modified.isEmpty&&e.original.length>=3}).map(function(e){return new Z(e.original,t,e)}),c=new Set(e.filter(function(e){return e.original.isEmpty&&e.modified.length>=3}).map(function(e){return new Z(e.modified,n,e)})),h=new Set;try{for(var p=s(l),d=p.next();!d.done;d=p.next()){var v=d.value,m=-1,g=void 0;try{for(var y=(u=void 0,s(c)),b=y.next();!b.done;b=y.next()){var w=b.value,E=v.computeSimilarity(w);E>m&&(m=E,g=w)}}catch(S){u={error:S}}finally{try{b&&!b.done&&(a=y.return)&&a.call(y)}finally{if(u)throw u.error}}m>.9&&g&&(c.delete(g),f.push(new I(v.range,g.range)),h.add(v.source),h.add(g.source));if(!r.isValid())return{moves:f,excludedChanges:h}}}catch(x){i={error:x}}finally{try{d&&!d.done&&(o=p.return)&&o.call(p)}finally{if(i)throw i.error}}return{moves:f,excludedChanges:h}}function vt(e,t,n,r,i,o){var u,a,f,l,c,h,p,d,v=[],m=new st;try{for(var w=s(e),E=w.next();!E.done;E=w.next()){var S=E.value;for(var x=S.original.startLineNumber;xr.length||d>i.length)break;if(B.contains(d)||j.contains(p))break;if(!mt(r[p-1],i[d-1],o))break}h>0&&(j.addRange(new _(n.original.startLineNumber-h,n.original.startLineNumber)),B.addRange(new _(n.modified.startLineNumber-h,n.modified.startLineNumber)));var m=void 0;for(m=0;mr.length||d>i.length)break;if(B.contains(d)||j.contains(p))break;if(!mt(r[p-1],i[d-1],o))break}m>0&&(j.addRange(new _(n.original.endLineNumberExclusive,n.original.endLineNumberExclusive+m)),B.addRange(new _(n.modified.endLineNumberExclusive,n.modified.endLineNumberExclusive+m)));if(h>0||m>0)v[t]=new I(new _(n.original.startLineNumber-h,n.original.endLineNumberExclusive+m),new _(n.modified.startLineNumber-h,n.modified.endLineNumberExclusive+m))};for(var x=0;x300&&t.length>300)return!1;var o=new tt,u=o.compute(new ot([e],new C(1,1,1,e.length),!1),new ot([t],new C(1,1,1,t.length),!1),n),a=0,f=$.invert(u.diffs,e.length);try{for(var l=s(f),c=l.next();!c.done;c=l.next()){var h=c.value;h.seq1Range.forEach(function(t){Y(e.charCodeAt(t))||a++})}}catch(p){r={error:p}}finally{try{c&&!c.done&&(i=l.return)&&i.call(l)}finally{if(r)throw r.error}}var v=d(e.length>t.length?e:t),m=a/v>.6&&v>10;return m}function gt(e){if(e.length===0)return e;e.sort(g(function(e){return e.original.startLineNumber},y));var t=[e[0]];for(var n=1;n=0&&o>=0;if(u&&s+o<=2){t[t.length-1]=r.join(i);continue}t.push(i)}return t}function yt(e,t){var n=new M(e);return t=t.filter(function(t){var r=n.findLastMonotonous(function(e){return e.original.startLineNumber0&&(o=o.delta(a))}f.push(o)}return r.length>0&&f.push(r[r.length-1]),f}function Et(e,t,n){if(!e.getBoundaryScore||!t.getBoundaryScore)return n;for(var r=0;r0?n[r-1]:undefined,s=n[r],o=r+1=r.start&&e.seq2Range.start-o>=i.start&&n.isStronglyEqual(e.seq2Range.start-o,e.seq2Range.endExclusive-o)&&of&&(f=d,a=l)}return e.delta(a)}function xt(e,t,n){var r,i,o=[];try{for(var u=s(n),a=u.next();!a.done;a=u.next()){var f=a.value,l=o[o.length-1];if(!l){o.push(f);continue}f.seq1Range.start-l.seq1Range.endExclusive<=2||f.seq2Range.start-l.seq2Range.endExclusive<=2?o[o.length-1]=new $(l.seq1Range.join(f.seq1Range),l.seq2Range.join(f.seq2Range)):o.push(f)}}catch(c){r={error:c}}finally{try{a&&!a.done&&(i=u.return)&&i.call(u)}finally{if(r)throw r.error}}return o}function Tt(e,t,n,r,i){function a(n,a){if(n.offset10){var v=s[0],m=v.seq1Range.intersects(c.seq1Range)||v.seq2Range.intersects(c.seq2Range);if(!m)break;var g=r(e,v.seq1Range.start),y=r(t,v.seq2Range.start),b=new $(g,y),w=b.intersect(v);p+=w.seq1Range.length,d+=w.seq2Range.length,c=c.join(b);if(!(c.seq1Range.endExclusive>=v.seq1Range.endExclusive))break;s.shift()}(i&&p+d0){var f=s.shift();if(f.seq1Range.isEmpty)continue;a(f.getStarts(),f),a(f.getEndExclusives().delta(-1),f)}var l=Nt(n,o);return l}function Nt(e,t){var n=[];while(e.length>0||t.length>0){var r=e[0],i=t[0],s=void 0;r&&(!i||r.seq1Range.start0&&n[n.length-1].seq1Range.endExclusive>=s.seq1Range.start?n[n.length-1]=n[n.length-1].join(s):n.push(s)}return n}function Ct(e,t,n){var r=n;if(r.length===0)return r;var i=0,s;do{s=!1;var o=[r[0]],u=function(t){var n=function(t,n){var r=new T(u.seq1Range.endExclusive,i.seq1Range.start),s=e.getText(r),o=s.replace(/\s/g,"");return o.length<=4&&(t.seq1Range.length+t.seq2Range.length>5||n.seq1Range.length+n.seq2Range.length>5)?!0:!1},i=r[t],u=o[o.length-1],a=n(u,i);a?(s=!0,o[o.length-1]=o[o.length-1].join(i)):o.push(i)};for(var a=1;a5||i.length>500)return!1;var o=e.getText(i).trim();if(o.length>20||o.split(/\r\n|\r|\n/).length>1)return!1;var f=e.countLinesIn(n.seq1Range),l=n.seq1Range.length,c=t.countLinesIn(n.seq2Range),h=n.seq2Range.length,p=e.countLinesIn(r.seq1Range),d=r.seq1Range.length,v=t.countLinesIn(r.seq2Range),m=r.seq2Range.length,g=130;return Math.pow(Math.pow(y(f*40+l),1.5)+Math.pow(y(c*40+h),1.5),1.5)+Math.pow(Math.pow(y(p*40+d),1.5)+Math.pow(y(v*40+m),1.5),1.5)>Math.pow(Math.pow(g,1.5),1.5)*1.3?!0:!1},u=r[n],a=o[o.length-1],f=i(a,u);f?(s=!0,o[o.length-1]=o[o.length-1].join(u)):o.push(u)};for(var a=1;a0&&e.trim().length<=3&&n.seq1Range.length+n.seq2Range.length>100}var i=n,o=e.extendToFullLines(n.seq1Range),u=e.getText(new T(o.start,n.seq1Range.start));s(u)&&(i=i.deltaStart(-u.length));var a=e.getText(new T(n.seq1Range.endExclusive,o.endExclusive));s(a)&&(i=i.deltaEnd(a.length));var l=$.fromOffsetPairs(t?t.getEndExclusives():J.zero,r?r.getStarts():J.max),c=i.intersect(l);f.length>0&&c.getStarts().equals(f[f.length-1].getEndExclusives())?f[f.length-1]=f[f.length-1].join(c):f.push(c)}),f}function At(e){var t=0;while(t0&&s[s.length-1])&&(u[0]===6||u[0]===2)){n=0;continue}if(u[0]===3&&(!s||u[1]>s[0]&&u[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},o,u,a,f,l,c,y=function(e,t){return e-t},w=function(e){function t(n){var r=e.call(this,n||"An unexpected bug occurred.")||this;return Object.setPrototypeOf(r,t.prototype),r}return r(t,e),t}(Error),T=function(){function e(e,t){this.start=e,this.endExclusive=t;if(e>t)throw new w("Invalid range: ".concat(this.toString()))}return e.fromTo=function(t,n){return new e(t,n)},e.addRange=function(t,n){var r=0;while(rn?undefined:new e(t,n)},e.ofLength=function(t){return new e(0,t)},e.ofStartAndLength=function(t,n){return new e(t,t+n)},e.emptyAt=function(t){return new e(t,t)},Object.defineProperty(e.prototype,"isEmpty",{get:function(){return this.start===this.endExclusive},enumerable:!1,configurable:!0}),e.prototype.delta=function(t){return new e(this.start+t,this.endExclusive+t)},e.prototype.deltaStart=function(t){return new e(this.start+t,this.endExclusive)},e.prototype.deltaEnd=function(t){return new e(this.start,this.endExclusive+t)},Object.defineProperty(e.prototype,"length",{get:function(){return this.endExclusive-this.start},enumerable:!1,configurable:!0}),e.prototype.toString=function(){return"[".concat(this.start,", ").concat(this.endExclusive,")")},e.prototype.equals=function(e){return this.start===e.start&&this.endExclusive===e.endExclusive},e.prototype.containsRange=function(e){return this.start<=e.start&&e.endExclusive<=this.endExclusive},e.prototype.contains=function(e){return this.start<=e&&e=e.endExclusive},e.prototype.slice=function(e){return e.slice(this.start,this.endExclusive)},e.prototype.substring=function(e){return e.substring(this.start,this.endExclusive)},e.prototype.clip=function(e){if(this.isEmpty)throw new w("Invalid clipping range: ".concat(this.toString()));return Math.max(this.start,Math.min(this.endExclusive-1,e))},e.prototype.clipCyclic=function(e){if(this.isEmpty)throw new w("Invalid clipping range: ".concat(this.toString()));return e=this.endExclusive?this.start+(e-this.start)%this.length:e},e.prototype.map=function(e){var t=[];for(var n=this.start;nn||e===n&&t>r?(this.startLineNumber=n,this.startColumn=r,this.endLineNumber=e,this.endColumn=t):(this.startLineNumber=e,this.startColumn=t,this.endLineNumber=n,this.endColumn=r)}return e.prototype.isEmpty=function(){return e.isEmpty(this)},e.isEmpty=function(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn},e.prototype.containsPosition=function(t){return e.containsPosition(this,t)},e.containsPosition=function(e,t){return t.lineNumbere.endLineNumber?!1:t.lineNumber===e.startLineNumber&&t.columne.endColumn?!1:!0},e.prototype.containsRange=function(t){return e.containsRange(this,t)},e.containsRange=function(e,t){return t.startLineNumbere.endLineNumber||t.endLineNumber>e.endLineNumber?!1:t.startLineNumber===e.startLineNumber&&t.startColumne.endColumn?!1:!0},e.prototype.strictContainsRange=function(t){return e.strictContainsRange(this,t)},e.strictContainsRange=function(e,t){return t.startLineNumbere.endLineNumber||t.endLineNumber>e.endLineNumber?!1:t.startLineNumber===e.startLineNumber&&t.startColumn<=e.startColumn?!1:t.endLineNumber===e.endLineNumber&&t.endColumn>=e.endColumn?!1:!0},e.prototype.plusRange=function(t){return e.plusRange(this,t)},e.plusRange=function(t,n){var r,i,s,o;return n.startLineNumbert.endLineNumber?(s=n.endLineNumber,o=n.endColumn):n.endLineNumber===t.endLineNumber?(s=n.endLineNumber,o=Math.max(n.endColumn,t.endColumn)):(s=t.endLineNumber,o=t.endColumn),new e(r,i,s,o)},e.prototype.intersectRanges=function(t){return e.intersectRanges(this,t)},e.intersectRanges=function(t,n){var r=t.startLineNumber,i=t.startColumn,s=t.endLineNumber,o=t.endColumn,u=n.startLineNumber,a=n.startColumn,f=n.endLineNumber,l=n.endColumn;return rf?(s=f,o=l):s===f&&(o=Math.min(o,l)),r>s?null:r===s&&i>o?null:new e(r,i,s,o)},e.prototype.equalsRange=function(t){return e.equalsRange(this,t)},e.equalsRange=function(e,t){return!e&&!t?!0:!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn},e.prototype.getEndPosition=function(){return e.getEndPosition(this)},e.getEndPosition=function(e){return new N(e.endLineNumber,e.endColumn)},e.prototype.getStartPosition=function(){return e.getStartPosition(this)},e.getStartPosition=function(e){return new N(e.startLineNumber,e.startColumn)},e.prototype.collapseToStart=function(){return e.collapseToStart(this)},e.collapseToStart=function(t){return new e(t.startLineNumber,t.startColumn,t.startLineNumber,t.startColumn)},e.prototype.collapseToEnd=function(){return e.collapseToEnd(this)},e.collapseToEnd=function(t){return new e(t.endLineNumber,t.endColumn,t.endLineNumber,t.endColumn)},e.fromPositions=function(t,n){return n===void 0&&(n=t),new e(t.lineNumber,t.column,n.lineNumber,n.column)},e}(),M=function(){function e(e){this._array=e,this._findLastMonotonousLastIdx=0}return e.prototype.findLastMonotonous=function(e){var t,n;if(u.assertInvariants){if(this._prevFindLastPredicate)try{for(var r=s(this._array),i=r.next();!i.done;i=r.next()){var o=i.value;if(this._prevFindLastPredicate(o)&&!e(o))throw new Error("MonotonousArray: current predicate must be weaker than (or equal to) the previous predicate.")}}catch(a){t={error:a}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}this._prevFindLastPredicate=e}var f=L(this._array,e,this._findLastMonotonousLastIdx);return this._findLastMonotonousLastIdx=f+1,f===-1?undefined:this._array[f]},e}();u=M,function(){u.assertInvariants=!1}();var _=function(){function e(e,t){if(e>t)throw new w("startLineNumber ".concat(e," cannot be after endLineNumberExclusive ").concat(t));this.startLineNumber=e,this.endLineNumberExclusive=t}return e.fromRangeInclusive=function(t){return new e(t.startLineNumber,t.endLineNumber+1)},e.join=function(t){if(t.length===0)throw new w("lineRanges cannot be empty");var n=t[0].startLineNumber,r=t[0].endLineNumberExclusive;for(var i=1;i=e.startLineNumber}),n=L(this._normalizedRanges,function(t){return t.startLineNumber<=e.endLineNumberExclusive})+1;if(t===n)this._normalizedRanges.splice(t,0,e);else if(t===n-1){var r=this._normalizedRanges[t];this._normalizedRanges[t]=r.join(e)}else{var r=this._normalizedRanges[t].join(this._normalizedRanges[n-1]).join(e);this._normalizedRanges.splice(t,n-t,r)}},e.prototype.contains=function(e){var t=k(this._normalizedRanges,function(t){return t.startLineNumber<=e});return!!t&&t.endLineNumberExclusive>e},e.prototype.subtractFrom=function(t){var n=O(this._normalizedRanges,function(e){return e.endLineNumberExclusive>=t.startLineNumber}),r=L(this._normalizedRanges,function(e){return e.startLineNumber<=t.endLineNumberExclusive})+1;if(n===r)return new e([t]);var i=[],s=t.startLineNumber;for(var o=n;os&&i.push(new _(s,u.startLineNumber)),s=u.endLineNumberExclusive}return s=1),this._getLineContent=e,this._lineCount=t}return e.prototype.getValueOfRange=function(e){if(e.startLineNumber===e.endLineNumber)return this._getLineContent(e.startLineNumber).substring(e.startColumn-1,e.endColumn-1);var t=this._getLineContent(e.startLineNumber).substring(e.startColumn-1);for(var n=e.startLineNumber+1;n1&&this.modified.startLineNumber>1)return new z(C.fromPositions(q(new N(this.original.startLineNumber-1,Number.MAX_SAFE_INTEGER),e),q(new N(this.original.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),e)),C.fromPositions(q(new N(this.modified.startLineNumber-1,Number.MAX_SAFE_INTEGER),t),q(new N(this.modified.endLineNumberExclusive-1,Number.MAX_SAFE_INTEGER),t)));throw new w},e}(),U=function(e){function t(t,n,r){var i=e.call(this,t,n)||this;return i.innerChanges=r,i}return r(t,e),t.fromRangeMappings=function(e){var n=_.join(e.map(function(e){return _.fromRangeInclusive(e.originalRange)})),r=_.join(e.map(function(e){return _.fromRangeInclusive(e.modifiedRange)}));return new t(n,r,e)},t.prototype.flip=function(){var e;return new t(this.modified,this.original,(e=this.innerChanges)===null||e===void 0?void 0:e.map(function(e){return e.flip()}))},t.prototype.withInnerChangesFromLineRanges=function(){return new t(this.original,this.modified,[this.toRangeMapping()])},t}(I),z=function(){function e(e,t){this.originalRange=e,this.modifiedRange=t}return e.join=function(e){if(e.length===0)throw new w("Cannot join an empty list of range mappings");var t=e[0];for(var n=1;n0&&a>0&&s.get(u-1,a-1)===3&&(c+=o.get(u-1,a-1)),c+=r?r(u,a):1):c=-1;var h=Math.max(f,l,c);if(h===c){var p=u>0&&a>0?o.get(u-1,a-1):0;o.set(u,a,p+1),s.set(u,a,3)}else h===f?(o.set(u,a,0),s.set(u,a,1)):h===l&&(o.set(u,a,0),s.set(u,a,2));i.set(u,a,h)}var d=[],v=e.length,m=t.length,y=e.length-1,b=t.length-1;while(y>=0&&b>=0)s.get(y,b)===3?(g(y,b),y--,b--):s.get(y,b)===1?y--:b--;return g(-1,-1),d.reverse(),new V(d,!1)},e}(),tt=function(){function e(){}return e.prototype.compute=function(e,t,n){function s(e,t){while(er.length||v>i.length)continue;var m=s(d,v);u.set(f,m);var g=d===h?a.get(f+1):a.get(f-1);a.set(f,m!==d?new nt(g,d,v,m-d):g);if(u.get(f)===r.length&&u.get(f)-f===i.length)break e}}var y=a.get(f),b=[],w=r.length,E=i.length;for(;;){var S=y?y.x+y.length:0,x=y?y.y+y.length:0;(S!==w||x!==E)&&b.push(new $(new T(S,w),new T(x,E)));if(!y)break;w=y.x,E=y.y,y=y.prev}return b.reverse(),new V(b,!1)},e}(),nt=function(){function e(e,t,n,r){this.prev=e,this.x=t,this.y=n,this.length=r}return e}(),rt=function(){function e(){this.positiveArr=new Int32Array(10),this.negativeArr=new Int32Array(10)}return e.prototype.get=function(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]},e.prototype.set=function(e,t){if(e<0){e=-e-1;if(e>=this.negativeArr.length){var n=this.negativeArr;this.negativeArr=new Int32Array(n.length*2),this.negativeArr.set(n)}this.negativeArr[e]=t}else{if(e>=this.positiveArr.length){var n=this.positiveArr;this.positiveArr=new Int32Array(n.length*2),this.positiveArr.set(n)}this.positiveArr[e]=t}},e}(),it=function(){function e(){this.positiveArr=[],this.negativeArr=[]}return e.prototype.get=function(e){return e<0?(e=-e-1,this.negativeArr[e]):this.positiveArr[e]},e.prototype.set=function(e,t){e<0?(e=-e-1,this.negativeArr[e]=t):this.positiveArr[e]=t},e}(),st=function(){function e(){this.map=new Map}return e.prototype.add=function(e,t){var n=this.map.get(e);n||(n=new Set,this.map.set(e,n)),n.add(t)},e.prototype.forEach=function(e,t){var n=this.map.get(e);if(!n)return;n.forEach(t)},e.prototype.get=function(e){var t=this.map.get(e);return t?t:new Set},e}(),ot=function(){function e(e,t,n){this.lines=e,this.range=t,this.considerWhitespaceChanges=n,this.elements=[],this.firstElementOffsetByLineIdx=[],this.lineStartOffsets=[],this.trimmedWsLengthsByLineIdx=[],this.firstElementOffsetByLineIdx.push(0);for(var r=this.range.startLineNumber;r<=this.range.endLineNumber;r++){var i=e[r-1],s=0;r===this.range.startLineNumber&&this.range.startColumn>1&&(s=this.range.startColumn-1,i=i.substring(s)),this.lineStartOffsets.push(s);var o=0;if(!n){var u=i.trimStart();o=i.length-u.length,i=u.trimEnd()}this.trimmedWsLengthsByLineIdx.push(o);var a=r===this.range.endLineNumber?Math.min(this.range.endColumn-1-s-o,i.length):i.length;for(var f=0;f0?this.elements[e-1]:-1),n=ct(e=this.elements.length)return undefined;if(!ut(this.elements[e]))return undefined;var t=e;while(t>0&&ut(this.elements[t-1]))t--;var n=e;while(n=this.elements.length)return undefined;if(!ut(this.elements[e]))return undefined;var t=e;while(t>0&&ut(this.elements[t-1])&&!at(this.elements[t]))t--;var n=e;while(nt.length)return!1;var n=t[e.lineNumber-1];return e.column<1||e.column>n.length+1?!1:!0}function a(e,t){return e.startLineNumber<1||e.startLineNumber>t.length+1?!1:e.endLineNumberExclusive<1||e.endLineNumberExclusive>t.length+1?!1:!0}var n,r,i,o;try{for(var f=s(D),l=f.next();!l.done;l=f.next()){var c=l.value;if(!c.innerChanges)return!1;try{for(var h=(i=void 0,s(c.innerChanges)),p=h.next();!p.done;p=h.next()){var d=p.value,v=u(d.modifiedRange.getStartPosition(),t)&&u(d.modifiedRange.getEndPosition(),t)&&u(d.originalRange.getStartPosition(),e)&&u(d.originalRange.getEndPosition(),e);if(!v)return!1}}catch(m){i={error:m}}finally{try{p&&!p.done&&(o=h.return)&&o.call(h)}finally{if(i)throw i.error}}if(!a(c.modified,t)||!a(c.original,e))return!1}}catch(g){n={error:g}}finally{try{l&&!l.done&&(r=f.return)&&r.call(f)}finally{if(n)throw n.error}}return!0}),new j(D,P,y)},e.prototype.computeMoves=function(e,t,n,r,i,s,o,u){var a=this,f=ht(e,t,n,r,i,s),l=f.map(function(e){var r=a.refineDiff(t,n,new $(e.original.toOffsetRange(),e.modified.toOffsetRange()),s,o,u),i=W(r.mappings,new B(t),new B(n),!0);return new F(e,i)});return l},e.prototype.refineDiff=function(e,t,n,r,i,s){var o=Mt(n),u=o.toRangeMapping2(e,t),a=new ot(e,u.originalRange,i),f=new ot(t,u.modifiedRange,i),l=a.length+f.length<500?this.dynamicProgrammingDiffing.compute(a,f,r):this.myersDiffingAlgorithm.compute(a,f,r),c=l.diffs;c=bt(a,f,c),c=Tt(a,f,c,function(e,t){return e.findWordContaining(t)}),s.extendToSubwords&&(c=Tt(a,f,c,function(e,t){return e.findSubWordContaining(t)},!0)),c=xt(a,f,c),c=kt(a,f,c);var h=c.map(function(e){return new z(a.translateRange(e.seq1Range),f.translateRange(e.seq2Range))});return{mappings:h,hitTimeout:l.hitTimeout}},e}();t.computeDiff=_t;var Dt=e("../../../range").Range,Pt=e("../base_diff_view").DiffChunk,Ht=function(){function e(){}return e.prototype.compute=function(e,t,n){n||(n={}),n.maxComputationTimeMs||(n.maxComputationTimeMs=500);var r=_t(e,t,n)||[];return r.map(function(e){return new Pt(new Dt(e.origStart,0,e.origEnd,0),new Dt(e.editStart,0,e.editEnd,0),e.charChanges)})},e}();t.DiffProvider=Ht}),define("ace/ext/diff",["require","exports","module","ace/ext/diff/inline_diff_view","ace/ext/diff/split_diff_view","ace/ext/diff/providers/default"],function(e,t,n){function o(e,t){e=e||{},e.diffProvider=e.diffProvider||new s;var n;return e.inline?n=new r(e):n=new i(e),t&&n.setOptions(t),n}var r=e("./diff/inline_diff_view").InlineDiffView,i=e("./diff/split_diff_view").SplitDiffView,s=e("./diff/providers/default").DiffProvider;t.InlineDiffView=r,t.SplitDiffView=i,t.DiffProvider=s,t.createDiffView=o}); (function() { - window.require(["ace/ext/diff"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/ext-elastic_tabstops_lite.js b/www/js/ace/ext-elastic_tabstops_lite.js deleted file mode 100644 index 378fb5d4c..000000000 --- a/www/js/ace/ext-elastic_tabstops_lite.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/ext/elastic_tabstops_lite",["require","exports","module","ace/editor","ace/config"],function(e,t,n){"use strict";var r=function(){function e(e){this.$editor=e;var t=this,n=[],r=!1;this.onAfterExec=function(){r=!1,t.processRows(n),n=[]},this.onExec=function(){r=!0},this.onChange=function(e){r&&(n.indexOf(e.start.row)==-1&&n.push(e.start.row),e.end.row!=e.start.row&&n.push(e.end.row))}}return e.prototype.processRows=function(e){this.$inChange=!0;var t=[];for(var n=0,r=e.length;n-1)continue;var s=this.$findCellWidthsForBlock(i),o=this.$setBlockCellWidthsToMax(s.cellWidths),u=s.firstRow;for(var a=0,f=o.length;a=0){n=this.$cellWidthsForRow(r);if(n.length==0)break;t.unshift(n),r--}var i=r+1;r=e;var s=this.$editor.session.getLength();while(r0&&(this.$editor.session.getDocument().insertInLine({row:e,column:f+1},Array(l+1).join(" ")+" "),this.$editor.session.getDocument().removeInLine(e,f,f+1),r+=l),l<0&&p>=-l&&(this.$editor.session.getDocument().removeInLine(e,f+l,f),r+=l)}},e.prototype.$izip_longest=function(e){if(!e[0])return[];var t=e[0].length,n=e.length;for(var r=1;rt&&(t=i)}var s=[];for(var o=0;o=t.length?t.length:e.length,r=[];for(var i=0;i"a"}),[e]}},{regex:"/\\w*}",onMatch:function(e,t,n){var r=n.shift();return r&&(r.flag=e.slice(1,-1)),this.next=r&&r.tabstopId?"start":"",[r||e]},next:"start"},{regex:/\$(?:\d+|\w+)/,onMatch:function(e,t,n){return[{text:e.slice(1)}]}},{regex:/\${\w+/,onMatch:function(e,t,n){var r={text:e.slice(2)};return n.unshift(r),[r]},next:"formatStringVar"},{regex:/\n/,token:"newline",merge:!1},{regex:/}/,onMatch:function(e,t,n){var r=n.shift();return this.next=r&&r.tabstopId?"start":"",[r||e]},next:"start"}],formatStringVar:[{regex:/:\/\w+}/,onMatch:function(e,t,n){var r=n[0];return r.formatFunction=e.slice(2,-1),[n.shift()]},next:"formatString"},r,{regex:/:[\?\-+]?/,onMatch:function(e,t,n){e[1]=="+"&&(n[0].ifEnd=n[0]),e[1]=="?"&&(n[0].expectElse=!0)},next:"formatString"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"formatString"}]}),e.$tokenizer},e.prototype.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},e.prototype.getVariableValue=function(e,t,n){if(/^\d+$/.test(t))return(this.variables.__||{})[t]||"";if(/^[A-Z]\d+$/.test(t))return(this.variables[t[0]+"__"]||{})[t.substr(1)]||"";t=t.replace(/^TM_/,"");if(!this.variables.hasOwnProperty(t))return"";var r=this.variables[t];return typeof r=="function"&&(r=this.variables[t](e,t,n)),r==null?"":r},e.prototype.tmStrFormat=function(e,t,n){if(!t.fmt)return e;var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gim]/g,""));var s=typeof t.fmt=="string"?this.tokenizeTmSnippet(t.fmt,"formatString"):t.fmt,o=this,u=e.replace(i,function(){var e=o.variables.__;o.variables.__=[].slice.call(arguments);var t=o.resolveVariables(s,n),r="E";for(var i=0;i=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},e.prototype.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):o&&(n[o]=u)}}return t},e.prototype.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r},e}();i.implement(d.prototype,s);var v=function(e,t,n){function l(e){var t=[];for(var n=0;n1?(y=t[t.length-1].length,g+=t.length-1):y+=e.length,b+=e}else e&&(e.start?e.end={row:g,column:y}:e.start={row:g,column:y})}),{text:b,tabstops:a,tokens:u}},m=function(){function e(e){this.index=0,this.ranges=[],this.tabstops=[];if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=o.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)}return e.prototype.attach=function(e){this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.session=e.session,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},e.prototype.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges.length=0,this.tabstops.length=0,this.selectedTabstop=null,this.editor.off("change",this.$onChange),this.editor.off("changeSelection",this.$onChangeSelection),this.editor.off("changeSession",this.$onChangeSession),this.editor.commands.off("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.session=null,this.editor=null},e.prototype.onChange=function(e){var t=e.action[0]=="r",n=this.selectedTabstop||{},r=n.parents||{},i=this.tabstops.slice();for(var s=0;s2&&(this.tabstops.length&&o.push(o.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,o))},e.prototype.addTabstopMarkers=function(e){var t=this.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},e.prototype.removeTabstopMarkers=function(e){var t=this.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},e.prototype.updateTabstopMarkers=function(){if(!this.selectedTabstop)return;var e=this.selectedTabstop.snippetId;this.selectedTabstop.index===0&&e--,this.tabstops.forEach(function(t){t.snippetId===e?this.addTabstopMarkers(t):this.removeTabstopMarkers(t)},this)},e.prototype.removeRange=function(e){var t=e.tabstop.indexOf(e);t!=-1&&e.tabstop.splice(t,1),t=this.ranges.indexOf(e),t!=-1&&this.ranges.splice(t,1),t=e.tabstop.rangeList.ranges.indexOf(e),t!=-1&&e.tabstop.splice(t,1),this.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},e}();m.prototype.keyboardHandler=new f,m.prototype.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1),e.renderer.scrollCursorIntoView()},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1),e.renderer.scrollCursorIntoView()},Esc:function(e){e.tabstopManager.detach()}});var g=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},y=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};r.importCssString("\n.ace_snippet-marker {\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n background: rgba(194, 193, 208, 0.09);\n border: 1px dotted rgba(211, 208, 235, 0.62);\n position: absolute;\n}","snippets.css",!1),t.snippetManager=new d;var b=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(b.prototype)}),define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","ace/config","resources","resources","tabStops","resources","utils","actions"],function(e,t,n){"use strict";var r=e("../keyboard/hash_handler").HashHandler,i=e("../editor").Editor,s=e("../snippets").snippetManager,o=e("../range").Range,u=e("../config"),a,f,l=function(){function e(){}return e.prototype.setupContext=function(e){this.ace=e,this.indentation=e.session.getTabString(),a||(a=window.emmet);var t=a.resources||a.require("resources");t.setVariable("indentation",this.indentation),this.$syntax=null,this.$syntax=this.getSyntax()},e.prototype.getSelectionRange=function(){var e=this.ace.getSelectionRange(),t=this.ace.session.doc;return{start:t.positionToIndex(e.start),end:t.positionToIndex(e.end)}},e.prototype.createSelection=function(e,t){var n=this.ace.session.doc;this.ace.selection.setRange({start:n.indexToPosition(e),end:n.indexToPosition(t)})},e.prototype.getCurrentLineRange=function(){var e=this.ace,t=e.getCursorPosition().row,n=e.session.getLine(t).length,r=e.session.doc.positionToIndex({row:t,column:0});return{start:r,end:r+n}},e.prototype.getCaretPos=function(){var e=this.ace.getCursorPosition();return this.ace.session.doc.positionToIndex(e)},e.prototype.setCaretPos=function(e){var t=this.ace.session.doc.indexToPosition(e);this.ace.selection.moveToPosition(t)},e.prototype.getCurrentLine=function(){var e=this.ace.getCursorPosition().row;return this.ace.session.getLine(e)},e.prototype.replaceContent=function(e,t,n,r){n==null&&(n=t==null?this.getContent().length:t),t==null&&(t=0);var i=this.ace,u=i.session.doc,a=o.fromPoints(u.indexToPosition(t),u.indexToPosition(n));i.session.remove(a),a.end=a.start,e=this.$updateTabstops(e),s.insertSnippet(i,e)},e.prototype.getContent=function(){return this.ace.getValue()},e.prototype.getSyntax=function(){if(this.$syntax)return this.$syntax;var e=this.ace.session.$modeId.split("/").pop();if(e=="html"||e=="php"){var t=this.ace.getCursorPosition(),n=this.ace.session.getState(t.row);typeof n!="string"&&(n=n[0]),n&&(n=n.split("-"),n.length>1?e=n[0]:e=="php"&&(e="html"))}return e},e.prototype.getProfileName=function(){var e=a.resources||a.require("resources");switch(this.getSyntax()){case"css":return"css";case"xml":case"xsl":return"xml";case"html":var t=e.getVariable("profile");return t||(t=this.ace.session.getLines(0,2).join("").search(/]+XHTML/i)!=-1?"xhtml":"html"),t;default:var n=this.ace.session.$mode;return n.emmetConfig&&n.emmetConfig.profile||"xhtml"}},e.prototype.prompt=function(e){return prompt(e)},e.prototype.getSelection=function(){return this.ace.session.getTextRange()},e.prototype.getFilePath=function(){return""},e.prototype.$updateTabstops=function(e){var t=1e3,n=0,r=null,i=a.tabStops||a.require("tabStops"),s=a.resources||a.require("resources"),o=s.getVocabulary("user"),u={tabstop:function(e){var s=parseInt(e.group,10),o=s===0;o?s=++n:s+=t;var a=e.placeholder;a&&(a=i.processText(a,u));var f="${"+s+(a?":"+a:"")+"}";return o&&(r=[e.start,f]),f},escape:function(e){return e=="$"?"\\$":e=="\\"?"\\\\":e}};e=i.processText(e,u);if(o.variables.insert_final_tabstop&&!/\$\{0\}$/.test(e))e+="${0}";else if(r){var f=a.utils?a.utils.common:a.require("utils");e=f.replaceSubstring(e,"${0}",r[0],r[1])}return e},e}(),c={expand_abbreviation:{mac:"ctrl+alt+e",win:"alt+e"},match_pair_outward:{mac:"ctrl+d",win:"ctrl+,"},match_pair_inward:{mac:"ctrl+j",win:"ctrl+shift+0"},matching_pair:{mac:"ctrl+alt+j",win:"alt+j"},next_edit_point:"alt+right",prev_edit_point:"alt+left",toggle_comment:{mac:"command+/",win:"ctrl+/"},split_join_tag:{mac:"shift+command+'",win:"shift+ctrl+`"},remove_tag:{mac:"command+'",win:"shift+ctrl+;"},evaluate_math_expression:{mac:"shift+command+y",win:"shift+ctrl+y"},increment_number_by_1:"ctrl+up",decrement_number_by_1:"ctrl+down",increment_number_by_01:"alt+up",decrement_number_by_01:"alt+down",increment_number_by_10:{mac:"alt+command+up",win:"shift+alt+up"},decrement_number_by_10:{mac:"alt+command+down",win:"shift+alt+down"},select_next_item:{mac:"shift+command+.",win:"shift+ctrl+."},select_previous_item:{mac:"shift+command+,",win:"shift+ctrl+,"},reflect_css_value:{mac:"shift+command+r",win:"shift+ctrl+r"},encode_decode_data_url:{mac:"shift+ctrl+d",win:"ctrl+'"},expand_abbreviation_with_tab:"Tab",wrap_with_abbreviation:{mac:"shift+ctrl+a",win:"shift+ctrl+a"}},h=new l;t.commands=new r,t.runEmmetCommand=function v(e){if(this.action=="expand_abbreviation_with_tab"){if(!e.selection.isEmpty())return!1;var n=e.selection.lead,r=e.session.getTokenAt(n.row,n.column);if(r&&/\btag\b/.test(r.type))return!1}try{h.setupContext(e);var i=a.actions||a.require("actions");if(this.action=="wrap_with_abbreviation")return setTimeout(function(){i.run("wrap_with_abbreviation",h)},0);var s=i.run(this.action,h)}catch(o){if(!a){var f=t.load(v.bind(this,e));return this.action=="expand_abbreviation_with_tab"?!1:f}e._signal("changeStatus",typeof o=="string"?o:o.message),u.warn(o),s=!1}return s};for(var p in c)t.commands.addCommand({name:"emmet:"+p,action:p,bindKey:c[p],exec:t.runEmmetCommand,multiSelectAction:"forEach"});t.updateCommands=function(e,n){n?e.keyBinding.addKeyboardHandler(t.commands):e.keyBinding.removeKeyboardHandler(t.commands)},t.isSupportedMode=function(e){if(!e)return!1;if(e.emmetConfig)return!0;var t=e.$id||e;return/css|less|scss|sass|stylus|html|php|twig|ejs|handlebars/.test(t)},t.isAvailable=function(e,n){if(/(evaluate_math_expression|expand_abbreviation)$/.test(n))return!0;var r=e.session.$mode,i=t.isSupportedMode(r);if(i&&r.$modes)try{h.setupContext(e),/js|php/.test(h.getSyntax())&&(i=!1)}catch(s){}return i};var d=function(e,n){var r=n;if(!r)return;var i=t.isSupportedMode(r.session.$mode);e.enableEmmet===!1&&(i=!1),i&&t.load(),t.updateCommands(r,i)};t.load=function(e){return typeof f!="string"?(u.warn("script for emmet-core is not loaded"),!1):(u.loadModule(f,function(){f=null,e&&e()}),!0)},t.AceEmmetEditor=l,u.defineOptions(i.prototype,"editor",{enableEmmet:{set:function(e){this[e?"on":"removeListener"]("changeMode",d),d({enableEmmet:!!e},this)},value:!0}}),t.setCore=function(e){typeof e=="string"?f=e:a=e}}); (function() { - window.require(["ace/ext/emmet"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/ext-error_marker.js b/www/js/ace/ext-error_marker.js deleted file mode 100644 index 066ec8746..000000000 --- a/www/js/ace/ext-error_marker.js +++ /dev/null @@ -1,8 +0,0 @@ -; (function() { - window.require(["ace/ext/error_marker"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/ext-hardwrap.js b/www/js/ace/ext-hardwrap.js deleted file mode 100644 index 8694aaac9..000000000 --- a/www/js/ace/ext-hardwrap.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/ext/hardwrap",["require","exports","module","ace/range","ace/editor","ace/config"],function(e,t,n){"use strict";function i(e,t){function m(e,t,n){if(e.lengthn)return{start:o.index,end:o.index+o[2].length};if(s&&s[2])return u=t+s[2].length,{start:u,end:u+s[3].length}}var n=t.column||e.getOption("printMarginColumn"),i=t.allowMerge!=0,s=Math.min(t.startRow,t.endRow),o=Math.max(t.startRow,t.endRow),u=e.session;while(s<=o){var a=u.getLine(s);if(a.length>n){var f=m(a,n,5);if(f){var l=/^\s*/.exec(a)[0];u.replace(new r(s,f.start,s,f.end),"\n"+l)}o++}else if(i&&/\S/.test(a)&&s!=o){var c=u.getLine(s+1);if(c&&/\S/.test(c)){var h=a.replace(/\s+$/,""),p=c.replace(/^\s+/,""),d=h+" "+p,f=m(d,n,5);if(f&&f.start>h.length||d.length"a"}),[e]}},{regex:"/\\w*}",onMatch:function(e,t,n){var r=n.shift();return r&&(r.flag=e.slice(1,-1)),this.next=r&&r.tabstopId?"start":"",[r||e]},next:"start"},{regex:/\$(?:\d+|\w+)/,onMatch:function(e,t,n){return[{text:e.slice(1)}]}},{regex:/\${\w+/,onMatch:function(e,t,n){var r={text:e.slice(2)};return n.unshift(r),[r]},next:"formatStringVar"},{regex:/\n/,token:"newline",merge:!1},{regex:/}/,onMatch:function(e,t,n){var r=n.shift();return this.next=r&&r.tabstopId?"start":"",[r||e]},next:"start"}],formatStringVar:[{regex:/:\/\w+}/,onMatch:function(e,t,n){var r=n[0];return r.formatFunction=e.slice(2,-1),[n.shift()]},next:"formatString"},r,{regex:/:[\?\-+]?/,onMatch:function(e,t,n){e[1]=="+"&&(n[0].ifEnd=n[0]),e[1]=="?"&&(n[0].expectElse=!0)},next:"formatString"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"formatString"}]}),e.$tokenizer},e.prototype.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},e.prototype.getVariableValue=function(e,t,n){if(/^\d+$/.test(t))return(this.variables.__||{})[t]||"";if(/^[A-Z]\d+$/.test(t))return(this.variables[t[0]+"__"]||{})[t.substr(1)]||"";t=t.replace(/^TM_/,"");if(!this.variables.hasOwnProperty(t))return"";var r=this.variables[t];return typeof r=="function"&&(r=this.variables[t](e,t,n)),r==null?"":r},e.prototype.tmStrFormat=function(e,t,n){if(!t.fmt)return e;var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gim]/g,""));var s=typeof t.fmt=="string"?this.tokenizeTmSnippet(t.fmt,"formatString"):t.fmt,o=this,u=e.replace(i,function(){var e=o.variables.__;o.variables.__=[].slice.call(arguments);var t=o.resolveVariables(s,n),r="E";for(var i=0;i=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},e.prototype.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):o&&(n[o]=u)}}return t},e.prototype.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r},e}();i.implement(d.prototype,s);var v=function(e,t,n){function l(e){var t=[];for(var n=0;n1?(y=t[t.length-1].length,g+=t.length-1):y+=e.length,b+=e}else e&&(e.start?e.end={row:g,column:y}:e.start={row:g,column:y})}),{text:b,tabstops:a,tokens:u}},m=function(){function e(e){this.index=0,this.ranges=[],this.tabstops=[];if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=o.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)}return e.prototype.attach=function(e){this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.session=e.session,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},e.prototype.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges.length=0,this.tabstops.length=0,this.selectedTabstop=null,this.editor.off("change",this.$onChange),this.editor.off("changeSelection",this.$onChangeSelection),this.editor.off("changeSession",this.$onChangeSession),this.editor.commands.off("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.session=null,this.editor=null},e.prototype.onChange=function(e){var t=e.action[0]=="r",n=this.selectedTabstop||{},r=n.parents||{},i=this.tabstops.slice();for(var s=0;s2&&(this.tabstops.length&&o.push(o.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,o))},e.prototype.addTabstopMarkers=function(e){var t=this.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},e.prototype.removeTabstopMarkers=function(e){var t=this.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},e.prototype.updateTabstopMarkers=function(){if(!this.selectedTabstop)return;var e=this.selectedTabstop.snippetId;this.selectedTabstop.index===0&&e--,this.tabstops.forEach(function(t){t.snippetId===e?this.addTabstopMarkers(t):this.removeTabstopMarkers(t)},this)},e.prototype.removeRange=function(e){var t=e.tabstop.indexOf(e);t!=-1&&e.tabstop.splice(t,1),t=this.ranges.indexOf(e),t!=-1&&this.ranges.splice(t,1),t=e.tabstop.rangeList.ranges.indexOf(e),t!=-1&&e.tabstop.splice(t,1),this.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},e}();m.prototype.keyboardHandler=new f,m.prototype.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1),e.renderer.scrollCursorIntoView()},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1),e.renderer.scrollCursorIntoView()},Esc:function(e){e.tabstopManager.detach()}});var g=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},y=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};r.importCssString("\n.ace_snippet-marker {\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n background: rgba(194, 193, 208, 0.09);\n border: 1px dotted rgba(211, 208, 235, 0.62);\n position: absolute;\n}","snippets.css",!1),t.snippetManager=new d;var b=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(b.prototype)}),define("ace/autocomplete/inline_screenreader",["require","exports","module"],function(e,t,n){"use strict";var r=function(){function e(e){this.editor=e,this.screenReaderDiv=document.createElement("div"),this.screenReaderDiv.classList.add("ace_screenreader-only"),this.editor.container.appendChild(this.screenReaderDiv)}return e.prototype.setScreenReaderContent=function(e){!this.popup&&this.editor.completer&&this.editor.completer.popup&&(this.popup=this.editor.completer.popup,this.popup.renderer.on("afterRender",function(){var e=this.popup.getRow(),t=this.popup.renderer.$textLayer,n=t.element.childNodes[e-t.config.firstRow];if(n){var r="doc-tooltip ";for(var i=0;i=c?r="bottom":r="top"),r==="top"?(h.bottom=e.top-this.$borderSize,h.top=h.bottom-c):r==="bottom"&&(h.top=e.top+t+this.$borderSize,h.bottom=h.top+c);var v=h.top>=0&&h.bottom<=a;if(!s&&!v)return!1;v?l.$maxPixelHeight=null:r==="top"?l.$maxPixelHeight=d:l.$maxPixelHeight=p,r==="top"?(o.style.top="",o.style.bottom=a+u-h.bottom+"px",n.isTopdown=!1):(o.style.top=h.top+"px",o.style.bottom="",n.isTopdown=!0),o.style.display="";var m=e.left;return m+o.offsetWidth>f&&(m=f-o.offsetWidth),o.style.left=m+"px",o.style.right="",n.isOpen||(n.isOpen=!0,this._signal("show"),i=null),n.anchorPos=e,n.anchor=r,!0},n.show=function(e,t,n){this.tryShow(e,t,n?"bottom":undefined,!0)},n.goTo=function(e){var t=this.getRow(),n=this.session.getLength()-1;switch(e){case"up":t=t<=0?n:t-1;break;case"down":t=t>=n?-1:t+1;break;case"start":t=0;break;case"end":t=n}this.setRow(t)},n.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},n.$imageSize=0,n.$borderSize=1,n}return e}();a.importCssString('\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #CAD6FA;\n z-index: 1;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #3a674e;\n}\n.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid #abbffe;\n margin-top: -1px;\n background: rgba(233,233,253,0.4);\n position: absolute;\n z-index: 2;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid rgba(109, 150, 13, 0.8);\n background: rgba(58, 103, 78, 0.62);\n}\n.ace_completion-meta {\n opacity: 0.5;\n margin-left: 0.9em;\n}\n.ace_completion-message {\n margin-left: 0.9em;\n color: blue;\n}\n.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #2d69c7;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #93ca12;\n}\n.ace_editor.ace_autocomplete {\n width: 300px;\n z-index: 200000;\n border: 1px lightgray solid;\n position: fixed;\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n line-height: 1.4;\n background: #fefefe;\n color: #111;\n}\n.ace_dark.ace_editor.ace_autocomplete {\n border: 1px #484747 solid;\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\n line-height: 1.4;\n background: #25282c;\n color: #c1c1c1;\n}\n.ace_autocomplete .ace_text-layer {\n width: calc(100% - 8px);\n}\n.ace_autocomplete .ace_line {\n display: flex;\n align-items: center;\n}\n.ace_autocomplete .ace_line > * {\n min-width: 0;\n flex: 0 0 auto;\n}\n.ace_autocomplete .ace_line .ace_ {\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ace_autocomplete .ace_completion-spacer {\n flex: 1;\n}\n.ace_autocomplete.ace_loading:after {\n content: "";\n position: absolute;\n top: 0px;\n height: 2px;\n width: 8%;\n background: blue;\n z-index: 100;\n animation: ace_progress 3s infinite linear;\n animation-delay: 300ms;\n transform: translateX(-100%) scaleX(1);\n}\n@keyframes ace_progress {\n 0% { transform: translateX(-100%) scaleX(1) }\n 50% { transform: translateX(625%) scaleX(2) } \n 100% { transform: translateX(1500%) scaleX(3) } \n}\n@media (prefers-reduced-motion) {\n .ace_autocomplete.ace_loading:after {\n transform: translateX(625%) scaleX(2);\n animation: none;\n }\n}\n',"autocompletion.css",!1),t.AcePopup=m,t.$singleLineEditor=v,t.getAriaId=c}),define("ace/autocomplete/util",["require","exports","module"],function(e,t,n){"use strict";t.parForEach=function(e,t,n){var r=0,i=e.length;i===0&&n();for(var s=0;s=0;s--){if(!n.test(e[s]))break;i.push(e[s])}return i.reverse().join("")},t.retrieveFollowingIdentifier=function(e,t,n){n=n||r;var i=[];for(var s=t;s0)for(var t=this.popup.getFirstVisibleRow();t<=this.popup.getLastVisibleRow();t++){var n=this.popup.getData(t);n&&(!e||n.hideInlinePreview)&&this.$seen(n)}},e.prototype.$onPopupShow=function(e){this.$onPopupChange(e),this.stickySelection=!1,this.stickySelectionDelay>=0&&this.stickySelectionTimer.schedule(this.stickySelectionDelay)},e.prototype.observeLayoutChanges=function(){if(this.$elements||!this.editor)return;window.addEventListener("resize",this.onLayoutChange,{passive:!0}),window.addEventListener("wheel",this.mousewheelListener);var e=this.editor.container.parentNode,t=[];while(e)t.push(e),e.addEventListener("scroll",this.onLayoutChange,{passive:!0}),e=e.parentNode;this.$elements=t},e.prototype.unObserveLayoutChanges=function(){var e=this;window.removeEventListener("resize",this.onLayoutChange,{passive:!0}),window.removeEventListener("wheel",this.mousewheelListener),this.$elements&&this.$elements.forEach(function(t){t.removeEventListener("scroll",e.onLayoutChange,{passive:!0})}),this.$elements=null},e.prototype.onLayoutChange=function(){if(!this.popup.isOpen)return this.unObserveLayoutChanges();this.$updatePopupPosition(),this.updateDocTooltip()},e.prototype.$updatePopupPosition=function(){var e=this.editor,t=e.renderer,n=t.layerConfig.lineHeight,r=t.$cursorLayer.getPixelPosition(this.base,!0);r.left-=this.popup.getTextLeftOffset();var i=e.container.getBoundingClientRect();r.top+=i.top-t.layerConfig.offset,r.left+=i.left-e.renderer.scrollLeft,r.left+=t.gutterWidth;var s={top:r.top,left:r.left};t.$ghostText&&t.$ghostTextWidget&&this.base.row===t.$ghostText.position.row&&(s.top+=t.$ghostTextWidget.el.offsetHeight);var o=e.container.getBoundingClientRect().bottom-n,u=othis.filterText&&e.lastIndexOf(this.filterText,0)===0)var t=this.filtered;else var t=this.all;this.filterText=e,t=this.filterCompletions(t,this.filterText),t=t.sort(function(e,t){return t.exactMatch-e.exactMatch||t.$score-e.$score||(e.caption||e.value).localeCompare(t.caption||t.value)});var n=null;t=t.filter(function(e){var t=e.snippet||e.caption||e.value;return t===n?!1:(n=t,!0)}),this.filtered=t},e.prototype.filterCompletions=function(e,t){var n=[],r=t.toUpperCase(),i=t.toLowerCase();e:for(var s=0,o;o=e[s];s++){if(o.skipFilter){o.$score=o.score,n.push(o);continue}var u=!this.ignoreCaption&&o.caption||o.value||o.snippet;if(!u)continue;var a=-1,f=0,l=0,c,h;if(this.exactMatch){if(t!==u.substr(0,t.length))continue e}else{var p=u.toLowerCase().indexOf(i);if(p>-1)l=p;else for(var d=0;d=0?m<0||v0&&(a===-1&&(l+=10),l+=h,f|=1<=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},i=e("../tooltip").Tooltip,s=e("../lib/event_emitter").EventEmitter,o=e("../lib/lang"),u=e("../lib/dom"),a=e("../lib/oop"),f=e("../lib/useragent"),l="command_bar_tooltip_button",c="command_bar_button_value",h="command_bar_button_caption",p="command_bar_keybinding",d="command_bar_tooltip",v="MoreOptionsButton",m=100,g=4,y=function(e,t){return t.row>e.row?e:t.row===e.row&&t.column>e.column?e:t},b={Ctrl:{mac:"^"},Option:{mac:"\u2325"},Command:{mac:"\u2318"},Cmd:{mac:"\u2318"},Shift:"\u21e7",Left:"\u2190",Right:"\u2192",Up:"\u2191",Down:"\u2193"},w=function(){function e(e,t){var n,s;t=t||{},this.parentNode=e,this.tooltip=new i(this.parentNode),this.moreOptions=new i(this.parentNode),this.maxElementsOnTooltip=t.maxElementsOnTooltip||g,this.$alwaysShow=t.alwaysShow||!1,this.eventListeners={},this.elements={},this.commands={},this.tooltipEl=u.buildDom(["div",{"class":d}],this.tooltip.getElement()),this.moreOptionsEl=u.buildDom(["div",{"class":d+" tooltip_more_options"}],this.moreOptions.getElement()),this.$showTooltipTimer=o.delayedCall(this.$showTooltip.bind(this),t.showDelay||m),this.$hideTooltipTimer=o.delayedCall(this.$hideTooltip.bind(this),t.hideDelay||m),this.$tooltipEnter=this.$tooltipEnter.bind(this),this.$onMouseMove=this.$onMouseMove.bind(this),this.$onChangeScroll=this.$onChangeScroll.bind(this),this.$onEditorChangeSession=this.$onEditorChangeSession.bind(this),this.$scheduleTooltipForHide=this.$scheduleTooltipForHide.bind(this),this.$preventMouseEvent=this.$preventMouseEvent.bind(this);try{for(var a=r(["mousedown","mouseup","click"]),f=a.next();!f.done;f=a.next()){var l=f.value;this.tooltip.getElement().addEventListener(l,this.$preventMouseEvent),this.moreOptions.getElement().addEventListener(l,this.$preventMouseEvent)}}catch(c){n={error:c}}finally{try{f&&!f.done&&(s=a.return)&&s.call(a)}finally{if(n)throw n.error}}}return e.prototype.registerCommand=function(e,t){var n=Object.keys(this.commands).length=f.top&&s.top<=f.bottom&&s.left>=f.left+e.gutterWidth&&s.left<=f.right;if(!l&&this.isShown()){this.$hideTooltip();return}if(l&&!this.isShown()&&this.getAlwaysShow()){this.$showTooltip();return}var c=s.top-o.offsetHeight,h=Math.min(u-o.offsetWidth,s.left),p=c>=0&&c+o.offsetHeight<=a&&h>=0&&h+o.offsetWidth<=u;if(!p){this.$hideTooltip();return}this.tooltip.setPosition(h,c);if(this.isMoreOptionsShown()){c+=o.offsetHeight,h=this.elements[v].getBoundingClientRect().left;var d=this.moreOptions.getElement(),a=window.innerHeight;c+d.offsetHeight>a&&(c-=o.offsetHeight+d.offsetHeight),h+d.offsetWidth>u&&(h=u-d.offsetWidth),this.moreOptions.setPosition(h,c)}},e.prototype.update=function(){Object.keys(this.elements).forEach(this.$updateElement.bind(this))},e.prototype.detach=function(){this.tooltip.hide(),this.moreOptions.hide(),this.$updateOnHoverHandlers(!1),this.editor&&(this.editor.off("changeSession",this.$onEditorChangeSession),this.editor.session&&(this.editor.session.off("changeScrollLeft",this.$onChangeScroll),this.editor.session.off("changeScrollTop",this.$onChangeScroll))),this.$mouseInTooltip=!1,this.editor=null},e.prototype.destroy=function(){this.tooltip&&this.moreOptions&&(this.detach(),this.tooltip.destroy(),this.moreOptions.destroy()),this.eventListeners={},this.commands={},this.elements={},this.tooltip=this.moreOptions=this.parentNode=null},e.prototype.$createCommand=function(e,t,n){var r=n?this.tooltipEl:this.moreOptionsEl,i=[],s=t.bindKey;s&&(typeof s=="object"&&(s=f.isMac?s.mac:s.win),s=s.split("|")[0],i=s.split("-"),i=i.map(function(e){if(b[e]){if(typeof b[e]=="string")return b[e];if(f.isMac&&b[e].mac)return b[e].mac}return e}));var o;n&&t.iconCssClass?o=["div",{"class":["ace_icon_svg",t.iconCssClass].join(" "),"aria-label":t.name+" ("+t.bindKey+")"}]:(o=[["div",{"class":c}],["div",{"class":h},t.name]],i.length&&o.push(["div",{"class":p},i.map(function(e){return["div",e]})])),u.buildDom(["div",{"class":[l,t.cssClass||""].join(" "),ref:e},o],r,this.elements),this.commands[e]=t;var a=function(n){this.editor&&this.editor.focus(),this.$shouldHideMoreOptions=this.isMoreOptionsShown(),!this.elements[e].disabled&&t.exec&&t.exec(this.editor),this.$shouldHideMoreOptions&&this.$setMoreOptionsVisibility(!1),this.update(),n.preventDefault()}.bind(this);this.eventListeners[e]=a,this.elements[e].addEventListener("click",a.bind(this)),this.$updateElement(e)},e.prototype.$setMoreOptionsVisibility=function(e){e?(this.moreOptions.setTheme(this.editor.renderer.theme),this.moreOptions.setClassName(d+"_wrapper"),this.moreOptions.show(),this.update(),this.updatePosition()):this.moreOptions.hide()},e.prototype.$onEditorChangeSession=function(e){e.oldSession&&(e.oldSession.off("changeScrollTop",this.$onChangeScroll),e.oldSession.off("changeScrollLeft",this.$onChangeScroll)),this.detach()},e.prototype.$onChangeScroll=function(){this.editor.renderer&&(this.isShown()||this.getAlwaysShow())&&this.editor.renderer.once("afterRender",this.updatePosition.bind(this))},e.prototype.$onMouseMove=function(e){if(this.$mouseInTooltip)return;var t=this.editor.getCursorPosition(),n=this.editor.renderer.textToScreenCoordinates(t.row,t.column),r=this.editor.renderer.lineHeight,i=e.clientY>=n.pageY&&e.clientYs)continue;l.range.start.row===a?u++:(a=l.range.start.row,u=0);if(u>200)continue;var c=l.range.clipRows(i,s);if(c.start.row===c.end.row&&c.start.column===c.end.column)continue;var h=c.toScreenRange(n);if(h.isEmpty()){o=n.getNextFoldLine(c.end.row,o),o&&o.end.row>c.end.row&&(i=o.end.row);continue}this.markerType==="fullLine"?t.drawFullLineMarker(e,h,l.className,r):h.isMultiLine()?this.markerType==="line"?t.drawMultiLineMarker(e,h,l.className,r):t.drawTextMarker(e,h,l.className,r):t.drawSingleLineMarker(e,h,l.className+" ace_br15",r)}},e}();r.prototype.MAX_MARKERS=1e4,t.MarkerGroup=r}),define("ace/autocomplete/text_completer",["require","exports","module","ace/range"],function(e,t,n){function s(e,t){var n=e.getTextRange(r.fromPoints({row:0,column:0},t));return n.split(i).length-1}function o(e,t){var n=s(e,t),r=e.getValue().split(i),o=Object.create(null),u=r[n];return r.forEach(function(e,t){if(!e||e===u)return;var i=Math.abs(n-t),s=r.length-i;o[e]?o[e]=Math.max(s,o[e]):o[e]=s}),o}var r=e("../range").Range,i=/[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/;t.getCompletions=function(e,t,n,r,i){var s=o(t,n),u=Object.keys(s);i(null,u.map(function(e){return{caption:e,value:e,score:s[e],meta:"local"}}))}}),define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/marker_group","ace/autocomplete/text_completer","ace/editor","ace/config"],function(e,t,n){"use strict";var r=e("../snippets").snippetManager,i=e("../autocomplete").Autocomplete,s=e("../config"),o=e("../lib/lang"),u=e("../autocomplete/util"),a=e("../marker_group").MarkerGroup,f=e("../autocomplete/text_completer"),l={getCompletions:function(e,t,n,r,i){if(t.$mode.completer)return t.$mode.completer.getCompletions(e,t,n,r,i);var s=e.session.getState(n.row),o=t.$mode.getCompletions(s,t,n,r);o=o.map(function(e){return e.completerId=l.id,e}),i(null,o)},id:"keywordCompleter"},c=function(e){var t={};return e.replace(/\${(\d+)(:(.*?))?}/g,function(e,n,r,i){return t[n]=i||""}).replace(/\$(\d+?)/g,function(e,n){return t[n]})},h={getCompletions:function(e,t,n,i,s){var o=[],u=t.getTokenAt(n.row,n.column);u&&u.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\.xml$/)?o.push("html-tag"):o=r.getActiveScopes(e);var a=r.snippetMap,f=[];o.forEach(function(e){var t=a[e]||[];for(var n=t.length;n--;){var r=t[n],i=r.name||r.tabTrigger;if(!i)continue;f.push({caption:i,snippet:r.content,meta:r.tabTrigger&&!r.name?r.tabTrigger+"\u21e5 ":"snippet",completerId:h.id})}},this),s(null,f)},getDocTooltip:function(e){e.snippet&&!e.docHTML&&(e.docHTML=["",o.escapeHTML(e.caption),"","
      ",o.escapeHTML(c(e.snippet))].join(""))},id:"snippetCompleter"},p=[h,f,l];t.setCompleters=function(e){p.length=0,e&&p.push.apply(p,e)},t.addCompleter=function(e){p.push(e)},t.textCompleter=f,t.keyWordCompleter=l,t.snippetCompleter=h;var d={name:"expandSnippet",exec:function(e){return r.expandWithTab(e)},bindKey:"Tab"},v=function(e,t){m(t.session.$mode)},m=function(e){typeof e=="string"&&(e=s.$modes[e]);if(!e)return;r.files||(r.files={}),g(e.$id,e.snippetFileId),e.modes&&e.modes.forEach(m)},g=function(e,t){if(!t||!e||r.files[e])return;r.files[e]={},s.loadModule(t,function(t){if(!t)return;r.files[e]=t,!t.snippets&&t.snippetText&&(t.snippets=r.parseSnippetFile(t.snippetText)),r.register(t.snippets||[],t.scope),t.includeScopes&&(r.snippetMap[t.scope].includeScopes=t.includeScopes,t.includeScopes.forEach(function(e){m("ace/mode/"+e)}))})},y=function(e){var t=e.editor,n=t.completer&&t.completer.activated;if(e.command.name==="backspace")n&&!u.getCompletionPrefix(t)&&t.completer.detach();else if(e.command.name==="insertstring"&&!n){b=e;var r=e.editor.$liveAutocompletionDelay;r?w.delay(r):E(e)}},b,w=o.delayedCall(function(){E(b)},0),E=function(e){var t=e.editor,n=u.getCompletionPrefix(t),r=e.args,s=u.triggerAutocomplete(t,r);if(n&&n.length>=t.$liveAutocompletionThreshold||s){var o=i.for(t);o.autoShown=!0,o.showPopup(t)}},S=e("../editor").Editor;e("../config").defineOptions(S.prototype,"editor",{enableBasicAutocompletion:{set:function(e){e?(i.for(this),this.completers||(this.completers=Array.isArray(e)?e:p),this.commands.addCommand(i.startCommand)):this.commands.removeCommand(i.startCommand)},value:!1},enableLiveAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:p),this.commands.on("afterExec",y)):this.commands.off("afterExec",y)},value:!1},liveAutocompletionDelay:{initialValue:0},liveAutocompletionThreshold:{initialValue:0},enableSnippets:{set:function(e){e?(this.commands.addCommand(d),this.on("changeMode",v),v(null,this)):(this.commands.removeCommand(d),this.off("changeMode",v))},value:!1}}),t.MarkerGroup=a}),define("ace/ext/inline_autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/inline","ace/autocomplete","ace/autocomplete","ace/editor","ace/autocomplete/util","ace/lib/dom","ace/lib/lang","ace/ext/command_bar","ace/ext/command_bar","ace/ext/language_tools","ace/ext/language_tools","ace/ext/language_tools","ace/config"],function(e,t,n){"use strict";var r=e("../keyboard/hash_handler").HashHandler,i=e("../autocomplete/inline").AceInline,s=e("../autocomplete").FilteredList,o=e("../autocomplete").CompletionProvider,u=e("../editor").Editor,a=e("../autocomplete/util"),f=e("../lib/dom"),l=e("../lib/lang"),c=e("./command_bar").CommandBarTooltip,h=e("./command_bar").BUTTON_CLASS_NAME,p=e("./language_tools").snippetCompleter,d=e("./language_tools").textCompleter,v=e("./language_tools").keyWordCompleter,m=function(e,t){t.completer&&t.completer.destroy()},g=function(){function e(e){this.editor=e,this.keyboardHandler=new r(this.commands),this.$index=-1,this.blurListener=this.blurListener.bind(this),this.changeListener=this.changeListener.bind(this),this.changeTimer=l.delayedCall(function(){this.updateCompletions()}.bind(this))}return e.prototype.getInlineRenderer=function(){return this.inlineRenderer||(this.inlineRenderer=new i),this.inlineRenderer},e.prototype.getInlineTooltip=function(){return this.inlineTooltip||(this.inlineTooltip=e.createInlineTooltip(document.body||document.documentElement)),this.inlineTooltip},e.prototype.show=function(e){this.activated=!0,this.editor.completer!==this&&(this.editor.completer&&this.editor.completer.detach(),this.editor.completer=this),this.editor.on("changeSelection",this.changeListener),this.editor.on("blur",this.blurListener),this.updateCompletions(e)},e.prototype.$open=function(){this.editor.textInput.setAriaOptions&&this.editor.textInput.setAriaOptions({}),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler),this.getInlineTooltip().attach(this.editor),this.$index===-1?this.setIndex(0):this.$showCompletion(),this.changeTimer.cancel()},e.prototype.insertMatch=function(){var e=this.getCompletionProvider().insertByIndex(this.editor,this.$index);return this.detach(),e},e.prototype.changeListener=function(e){var t=this.editor.selection.lead;(t.row!=this.base.row||t.column=0},e.prototype.setIndex=function(e){if(!this.completions||!this.completions.filtered)return;var t=Math.max(-1,Math.min(this.completions.filtered.length-1,e));t!==this.$index&&(this.$index=t,this.$showCompletion())},e.prototype.getCompletionProvider=function(e){return this.completionProvider||(this.completionProvider=new o(e)),this.completionProvider},e.prototype.$showCompletion=function(){this.getInlineRenderer().show(this.editor,this.completions.filtered[this.$index],this.completions.filterText)||this.getInlineRenderer().hide(),this.inlineTooltip&&this.inlineTooltip.isShown()&&this.inlineTooltip.update()},e.prototype.$updatePrefix=function(){var e=this.editor.getCursorPosition(),t=this.editor.session.getTextRange({start:this.base,end:e});return this.completions.setFilter(t),this.completions.filtered.length?this.completions.filtered.length==1&&this.completions.filtered[0].value==t&&!this.completions.filtered[0].snippet?this.detach():(this.$open(this.editor,t),t):this.detach()},e.prototype.updateCompletions=function(e){var t="";if(e&&e.matches){var n=this.editor.getSelectionRange().start;return this.base=this.editor.session.doc.createAnchor(n.row,n.column),this.base.$insertRight=!0,this.completions=new s(e.matches),this.$open(this.editor,"")}this.base&&this.completions&&(t=this.$updatePrefix());var r=this.editor.getSession(),n=this.editor.getCursorPosition(),t=a.getCompletionPrefix(this.editor);this.base=r.doc.createAnchor(n.row,n.column-t.length),this.base.$insertRight=!0;var e={exactMatch:!0,ignoreCaption:!0};this.getCompletionProvider({prefix:t,base:this.base,pos:n}).provideCompletions(this.editor,e,function(e,t,n){var r=t.filtered,i=a.getCompletionPrefix(this.editor);if(n){if(!r.length)return this.detach();if(r.length==1&&r[0].value==i&&!r[0].snippet)return this.detach()}this.completions=t,this.$open(this.editor,i)}.bind(this))},e.prototype.detach=function(){this.editor&&(this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.off("changeSelection",this.changeListener),this.editor.off("blur",this.blurListener)),this.changeTimer.cancel(),this.inlineTooltip&&this.inlineTooltip.detach(),this.setIndex(-1),this.completionProvider&&this.completionProvider.detach(),this.inlineRenderer&&this.inlineRenderer.isOpen()&&this.inlineRenderer.hide(),this.base&&this.base.detach(),this.activated=!1,this.completionProvider=this.completions=this.base=null},e.prototype.destroy=function(){this.detach(),this.inlineRenderer&&this.inlineRenderer.destroy(),this.inlineTooltip&&this.inlineTooltip.destroy(),this.editor&&this.editor.completer==this&&(this.editor.off("destroy",m),this.editor.completer=null),this.inlineTooltip=this.editor=this.inlineRenderer=null},e.prototype.updateDocTooltip=function(){},e}();g.prototype.commands={Previous:{bindKey:"Alt-[",name:"Previous",exec:function(e){e.completer.goTo("prev")}},Next:{bindKey:"Alt-]",name:"Next",exec:function(e){e.completer.goTo("next")}},Accept:{bindKey:{win:"Tab|Ctrl-Right",mac:"Tab|Cmd-Right"},name:"Accept",exec:function(e){return e.completer.insertMatch()}},Close:{bindKey:"Esc",name:"Close",exec:function(e){e.completer.detach()}}},g.for=function(e){return e.completer instanceof g?e.completer:(e.completer&&(e.completer.destroy(),e.completer=null),e.completer=new g(e),e.once("destroy",m),e.completer)},g.startCommand={name:"startInlineAutocomplete",exec:function(e,t){var n=g.for(e);n.show(t)},bindKey:{win:"Alt-C",mac:"Option-C"}};var y=[p,d,v];e("../config").defineOptions(u.prototype,"editor",{enableInlineAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:y),this.commands.addCommand(g.startCommand)):this.commands.removeCommand(g.startCommand)},value:!1}}),g.createInlineTooltip=function(e){var t=new c(e);return t.registerCommand("Previous",Object.assign({},g.prototype.commands.Previous,{enabled:!0,type:"button",iconCssClass:"ace_arrow_rotated"})),t.registerCommand("Position",{enabled:!1,getValue:function(e){return e?[e.completer.getIndex()+1,e.completer.getLength()].join("/"):""},type:"text",cssClass:"completion_position"}),t.registerCommand("Next",Object.assign({},g.prototype.commands.Next,{enabled:!0,type:"button",iconCssClass:"ace_arrow"})),t.registerCommand("Accept",Object.assign({},g.prototype.commands.Accept,{enabled:function(e){return!!e&&e.completer.getIndex()>=0},type:"button"})),t.registerCommand("ShowTooltip",{name:"Always Show Tooltip",exec:function(){t.setAlwaysShow(!t.getAlwaysShow())},enabled:!0,getValue:function(){return t.getAlwaysShow()},type:"checkbox"}),t},f.importCssString('\n\n.ace_icon_svg.ace_arrow,\n.ace_icon_svg.ace_arrow_rotated {\n -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUuODM3MDEgMTVMNC41ODc1MSAxMy43MTU1TDEwLjE0NjggOEw0LjU4NzUxIDIuMjg0NDZMNS44MzcwMSAxTDEyLjY0NjUgOEw1LjgzNzAxIDE1WiIgZmlsbD0iYmxhY2siLz48L3N2Zz4=");\n}\n\n.ace_icon_svg.ace_arrow_rotated {\n transform: rotate(180deg);\n}\n\ndiv.'.concat(h,".completion_position {\n padding: 0;\n}\n"),"inlineautocomplete.css",!1),t.InlineAutocomplete=g}); (function() { - window.require(["ace/ext/inline_autocomplete"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/ext-keybinding_menu.js b/www/js/ace/ext-keybinding_menu.js deleted file mode 100644 index 397fda3ee..000000000 --- a/www/js/ace/ext-keybinding_menu.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/ext/menu_tools/settings_menu.css",["require","exports","module"],function(e,t,n){n.exports="#ace_settingsmenu, #kbshortcutmenu {\n background-color: #F7F7F7;\n color: black;\n box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\n padding: 1em 0.5em 2em 1em;\n overflow: auto;\n position: absolute;\n margin: 0;\n bottom: 0;\n right: 0;\n top: 0;\n z-index: 9991;\n cursor: default;\n}\n\n.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\n box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\n background-color: rgba(255, 255, 255, 0.6);\n color: black;\n}\n\n.ace_optionsMenuEntry:hover {\n background-color: rgba(100, 100, 100, 0.1);\n transition: all 0.3s\n}\n\n.ace_closeButton {\n background: rgba(245, 146, 146, 0.5);\n border: 1px solid #F48A8A;\n border-radius: 50%;\n padding: 7px;\n position: absolute;\n right: -8px;\n top: -8px;\n z-index: 100000;\n}\n.ace_closeButton{\n background: rgba(245, 146, 146, 0.9);\n}\n.ace_optionsMenuKey {\n color: darkslateblue;\n font-weight: bold;\n}\n.ace_optionsMenuCommand {\n color: darkcyan;\n font-weight: normal;\n}\n.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {\n vertical-align: middle;\n}\n\n.ace_optionsMenuEntry button[ace_selected_button=true] {\n background: #e7e7e7;\n box-shadow: 1px 0px 2px 0px #adadad inset;\n border-color: #adadad;\n}\n.ace_optionsMenuEntry button {\n background: white;\n border: 1px solid lightgray;\n margin: 0px;\n}\n.ace_optionsMenuEntry button:hover{\n background: #f0f0f0;\n}"}),define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/ext/menu_tools/overlay_page","ace/lib/dom","ace/ext/menu_tools/settings_menu.css"],function(e,t,n){"use strict";var r=e("../../lib/dom"),i=e("./settings_menu.css");r.importCssString(i,"settings_menu.css",!1),n.exports.overlayPage=function(t,n,r){function o(e){e.keyCode===27&&u()}function u(){if(!i)return;document.removeEventListener("keydown",o),i.parentNode.removeChild(i),t&&t.focus(),i=null,r&&r()}function a(e){s=e,e&&(i.style.pointerEvents="none",n.style.pointerEvents="auto")}var i=document.createElement("div"),s=!1;return i.style.cssText="margin: 0; padding: 0; position: fixed; top:0; bottom:0; left:0; right:0;z-index: 9990; "+(t?"background-color: rgba(0, 0, 0, 0.3);":""),i.addEventListener("click",function(e){s||u()}),document.addEventListener("keydown",o),n.addEventListener("click",function(e){e.stopPropagation()}),i.appendChild(n),document.body.appendChild(i),t&&t.blur(),{close:u,setIgnoreFocusOut:a}}}),define("ace/ext/menu_tools/get_editor_keyboard_shortcuts",["require","exports","module","ace/ext/menu_tools/get_editor_keyboard_shortcuts","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../../lib/keys");n.exports.getEditorKeybordShortcuts=function(e){var t=r.KEY_MODS,n=[],i={};return e.keyBinding.$handlers.forEach(function(e){var t=e.commandKeyBinding;for(var r in t){var s=r.replace(/(^|-)\w/g,function(e){return e.toUpperCase()}),o=t[r];Array.isArray(o)||(o=[o]),o.forEach(function(e){typeof e!="string"&&(e=e.name),i[e]?i[e].key+="|"+s:(i[e]={key:s,command:e},n.push(i[e]))})}}),n}}),define("ace/ext/keybinding_menu",["require","exports","module","ace/editor","ace/ext/menu_tools/overlay_page","ace/ext/menu_tools/get_editor_keyboard_shortcuts"],function(e,t,n){"use strict";function i(t){if(!document.getElementById("kbshortcutmenu")){var n=e("./menu_tools/overlay_page").overlayPage,r=e("./menu_tools/get_editor_keyboard_shortcuts").getEditorKeybordShortcuts,i=r(t),s=document.createElement("div"),o=i.reduce(function(e,t){return e+'
      '+t.command+" : "+''+t.key+"
      "},"");s.id="kbshortcutmenu",s.innerHTML="

      Keyboard Shortcuts

      "+o+"
    • ",n(t,s)}}var r=e("../editor").Editor;n.exports.init=function(e){r.prototype.showKeyboardShortcuts=function(){i(this)},e.commands.addCommands([{name:"showKeyboardShortcuts",bindKey:{win:"Ctrl-Alt-h",mac:"Command-Alt-h"},exec:function(e,t){e.showKeyboardShortcuts()}}])}}); (function() { - window.require(["ace/ext/keybinding_menu"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/ext-language_tools.js b/www/js/ace/ext-language_tools.js deleted file mode 100644 index 17c486781..000000000 --- a/www/js/ace/ext-language_tools.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"],function(e,t,n){"use strict";function p(e){var t=(new Date).toLocaleString("en-us",e);return t.length==1?"0"+t:t}var r=e("./lib/dom"),i=e("./lib/oop"),s=e("./lib/event_emitter").EventEmitter,o=e("./lib/lang"),u=e("./range").Range,a=e("./range_list").RangeList,f=e("./keyboard/hash_handler").HashHandler,l=e("./tokenizer").Tokenizer,c=e("./clipboard"),h={CURRENT_WORD:function(e){return e.session.getTextRange(e.session.getWordRange())},SELECTION:function(e,t,n){var r=e.session.getTextRange();return n?r.replace(/\n\r?([ \t]*\S)/g,"\n"+n+"$1"):r},CURRENT_LINE:function(e){return e.session.getLine(e.getCursorPosition().row)},PREV_LINE:function(e){return e.session.getLine(e.getCursorPosition().row-1)},LINE_INDEX:function(e){return e.getCursorPosition().row},LINE_NUMBER:function(e){return e.getCursorPosition().row+1},SOFT_TABS:function(e){return e.session.getUseSoftTabs()?"YES":"NO"},TAB_SIZE:function(e){return e.session.getTabSize()},CLIPBOARD:function(e){return c.getText&&c.getText()},FILENAME:function(e){return/[^/\\]*$/.exec(this.FILEPATH(e))[0]},FILENAME_BASE:function(e){return/[^/\\]*$/.exec(this.FILEPATH(e))[0].replace(/\.[^.]*$/,"")},DIRECTORY:function(e){return this.FILEPATH(e).replace(/[^/\\]*$/,"")},FILEPATH:function(e){return"/not implemented.txt"},WORKSPACE_NAME:function(){return"Unknown"},FULLNAME:function(){return"Unknown"},BLOCK_COMMENT_START:function(e){var t=e.session.$mode||{};return t.blockComment&&t.blockComment.start||""},BLOCK_COMMENT_END:function(e){var t=e.session.$mode||{};return t.blockComment&&t.blockComment.end||""},LINE_COMMENT:function(e){var t=e.session.$mode||{};return t.lineCommentStart||""},CURRENT_YEAR:p.bind(null,{year:"numeric"}),CURRENT_YEAR_SHORT:p.bind(null,{year:"2-digit"}),CURRENT_MONTH:p.bind(null,{month:"numeric"}),CURRENT_MONTH_NAME:p.bind(null,{month:"long"}),CURRENT_MONTH_NAME_SHORT:p.bind(null,{month:"short"}),CURRENT_DATE:p.bind(null,{day:"2-digit"}),CURRENT_DAY_NAME:p.bind(null,{weekday:"long"}),CURRENT_DAY_NAME_SHORT:p.bind(null,{weekday:"short"}),CURRENT_HOUR:p.bind(null,{hour:"2-digit",hour12:!1}),CURRENT_MINUTE:p.bind(null,{minute:"2-digit"}),CURRENT_SECOND:p.bind(null,{second:"2-digit"})};h.SELECTED_TEXT=h.SELECTION;var d=function(){function e(){this.snippetMap={},this.snippetNameMap={},this.variables=h}return e.prototype.getTokenizer=function(){return e.$tokenizer||this.createTokenizer()},e.prototype.createTokenizer=function(){function t(e){return e=e.substr(1),/^\d+$/.test(e)?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function n(e){return"(?:[^\\\\"+e+"]|\\\\.)"}var r={regex:"/("+n("/")+"+)/",onMatch:function(e,t,n){var r=n[0];return r.fmtString=!0,r.guard=e.slice(1,-1),r.flag="",""},next:"formatString"};return e.$tokenizer=new l({start:[{regex:/\\./,onMatch:function(e,t,n){var r=e[1];return r=="}"&&n.length?e=r:"`$\\".indexOf(r)!=-1&&(e=r),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:t},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(e,n,r){var i=t(e.substr(1));return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+n("\\|")+"*\\|",onMatch:function(e,t,n){var r=e.slice(1,-1).replace(/\\[,|\\]|,/g,function(e){return e.length==2?e[1]:"\0"}).split("\0").map(function(e){return{value:e}});return n[0].choices=r,[r[0]]},next:"start"},r,{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:/:/,onMatch:function(e,t,n){return n.length&&n[0].expectElse?(n[0].expectElse=!1,n[0].ifEnd={elseEnd:n[0]},[n[0].ifEnd]):":"}},{regex:/\\./,onMatch:function(e,t,n){var r=e[1];return r=="}"&&n.length?e=r:"`$\\".indexOf(r)!=-1?e=r:r=="n"?e="\n":r=="t"?e=" ":"ulULE".indexOf(r)!=-1&&(e={changeCase:r,local:r>"a"}),[e]}},{regex:"/\\w*}",onMatch:function(e,t,n){var r=n.shift();return r&&(r.flag=e.slice(1,-1)),this.next=r&&r.tabstopId?"start":"",[r||e]},next:"start"},{regex:/\$(?:\d+|\w+)/,onMatch:function(e,t,n){return[{text:e.slice(1)}]}},{regex:/\${\w+/,onMatch:function(e,t,n){var r={text:e.slice(2)};return n.unshift(r),[r]},next:"formatStringVar"},{regex:/\n/,token:"newline",merge:!1},{regex:/}/,onMatch:function(e,t,n){var r=n.shift();return this.next=r&&r.tabstopId?"start":"",[r||e]},next:"start"}],formatStringVar:[{regex:/:\/\w+}/,onMatch:function(e,t,n){var r=n[0];return r.formatFunction=e.slice(2,-1),[n.shift()]},next:"formatString"},r,{regex:/:[\?\-+]?/,onMatch:function(e,t,n){e[1]=="+"&&(n[0].ifEnd=n[0]),e[1]=="?"&&(n[0].expectElse=!0)},next:"formatString"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"formatString"}]}),e.$tokenizer},e.prototype.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},e.prototype.getVariableValue=function(e,t,n){if(/^\d+$/.test(t))return(this.variables.__||{})[t]||"";if(/^[A-Z]\d+$/.test(t))return(this.variables[t[0]+"__"]||{})[t.substr(1)]||"";t=t.replace(/^TM_/,"");if(!this.variables.hasOwnProperty(t))return"";var r=this.variables[t];return typeof r=="function"&&(r=this.variables[t](e,t,n)),r==null?"":r},e.prototype.tmStrFormat=function(e,t,n){if(!t.fmt)return e;var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gim]/g,""));var s=typeof t.fmt=="string"?this.tokenizeTmSnippet(t.fmt,"formatString"):t.fmt,o=this,u=e.replace(i,function(){var e=o.variables.__;o.variables.__=[].slice.call(arguments);var t=o.resolveVariables(s,n),r="E";for(var i=0;i=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},e.prototype.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):o&&(n[o]=u)}}return t},e.prototype.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r},e}();i.implement(d.prototype,s);var v=function(e,t,n){function l(e){var t=[];for(var n=0;n1?(y=t[t.length-1].length,g+=t.length-1):y+=e.length,b+=e}else e&&(e.start?e.end={row:g,column:y}:e.start={row:g,column:y})}),{text:b,tabstops:a,tokens:u}},m=function(){function e(e){this.index=0,this.ranges=[],this.tabstops=[];if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=o.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)}return e.prototype.attach=function(e){this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.session=e.session,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},e.prototype.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges.length=0,this.tabstops.length=0,this.selectedTabstop=null,this.editor.off("change",this.$onChange),this.editor.off("changeSelection",this.$onChangeSelection),this.editor.off("changeSession",this.$onChangeSession),this.editor.commands.off("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.session=null,this.editor=null},e.prototype.onChange=function(e){var t=e.action[0]=="r",n=this.selectedTabstop||{},r=n.parents||{},i=this.tabstops.slice();for(var s=0;s2&&(this.tabstops.length&&o.push(o.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,o))},e.prototype.addTabstopMarkers=function(e){var t=this.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},e.prototype.removeTabstopMarkers=function(e){var t=this.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},e.prototype.updateTabstopMarkers=function(){if(!this.selectedTabstop)return;var e=this.selectedTabstop.snippetId;this.selectedTabstop.index===0&&e--,this.tabstops.forEach(function(t){t.snippetId===e?this.addTabstopMarkers(t):this.removeTabstopMarkers(t)},this)},e.prototype.removeRange=function(e){var t=e.tabstop.indexOf(e);t!=-1&&e.tabstop.splice(t,1),t=this.ranges.indexOf(e),t!=-1&&this.ranges.splice(t,1),t=e.tabstop.rangeList.ranges.indexOf(e),t!=-1&&e.tabstop.splice(t,1),this.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},e}();m.prototype.keyboardHandler=new f,m.prototype.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1),e.renderer.scrollCursorIntoView()},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1),e.renderer.scrollCursorIntoView()},Esc:function(e){e.tabstopManager.detach()}});var g=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},y=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};r.importCssString("\n.ace_snippet-marker {\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n background: rgba(194, 193, 208, 0.09);\n border: 1px dotted rgba(211, 208, 235, 0.62);\n position: absolute;\n}","snippets.css",!1),t.snippetManager=new d;var b=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(b.prototype)}),define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/config","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../virtual_renderer").VirtualRenderer,i=e("../editor").Editor,s=e("../range").Range,o=e("../lib/event"),u=e("../lib/lang"),a=e("../lib/dom"),f=e("../config").nls,l=e("./../lib/useragent"),c=function(e){return"suggest-aria-id:".concat(e)},h=l.isSafari?"menu":"listbox",p=l.isSafari?"menuitem":"option",d=l.isSafari?"aria-current":"aria-selected",v=function(e){var t=new r(e);t.$maxLines=4;var n=new i(t);return n.setHighlightActiveLine(!1),n.setShowPrintMargin(!1),n.renderer.setShowGutter(!1),n.renderer.setHighlightGutterLine(!1),n.$mouseHandler.$focusTimeout=0,n.$highlightTagPending=!0,n},m=function(){function e(e){var t=a.createElement("div"),n=v(t);e&&e.appendChild(t),t.style.display="none",n.renderer.content.style.cursor="default",n.renderer.setStyle("ace_autocomplete"),n.renderer.$textLayer.element.setAttribute("role",h),n.renderer.$textLayer.element.setAttribute("aria-roledescription",f("autocomplete.popup.aria-roledescription","Autocomplete suggestions")),n.renderer.$textLayer.element.setAttribute("aria-label",f("autocomplete.popup.aria-label","Autocomplete suggestions")),n.renderer.textarea.setAttribute("aria-hidden","true"),n.setOption("displayIndentGuides",!1),n.setOption("dragDelay",150);var r=function(){};n.focus=r,n.$isFocused=!0,n.renderer.$cursorLayer.restartTimer=r,n.renderer.$cursorLayer.element.style.opacity="0",n.renderer.$maxLines=8,n.renderer.$keepTextAreaAtCursor=!1,n.setHighlightActiveLine(!1),n.session.highlight(""),n.session.$searchHighlight.clazz="ace_highlight-marker",n.on("mousedown",function(e){var t=e.getDocumentPosition();n.selection.moveToPosition(t),m.start.row=m.end.row=t.row,e.stop()});var i,l=new s(-1,0,-1,Infinity),m=new s(-1,0,-1,Infinity);m.id=n.session.addMarker(m,"ace_active-line","fullLine"),n.setSelectOnHover=function(e){e?l.id&&(n.session.removeMarker(l.id),l.id=null):l.id=n.session.addMarker(l,"ace_line-hover","fullLine")},n.setSelectOnHover(!1),n.on("mousemove",function(e){if(!i){i=e;return}if(i.x==e.x&&i.y==e.y)return;i=e,i.scrollTop=n.renderer.scrollTop,n.isMouseOver=!0;var t=i.getDocumentPosition().row;l.start.row!=t&&(l.id||n.setRow(t),y(t))}),n.renderer.on("beforeRender",function(){if(i&&l.start.row!=-1){i.$pos=null;var e=i.getDocumentPosition().row;l.id||n.setRow(e),y(e,!0)}}),n.renderer.on("afterRender",function(){var e=n.renderer.$textLayer;for(var t=e.config.firstRow,r=e.config.lastRow;t<=r;t++){var i=e.element.childNodes[t-e.config.firstRow];i.setAttribute("role",p),i.setAttribute("aria-roledescription",f("autocomplete.popup.item.aria-roledescription","item")),i.setAttribute("aria-setsize",n.data.length),i.setAttribute("aria-describedby","doc-tooltip"),i.setAttribute("aria-posinset",t+1);var s=n.getData(t);if(s){var o="".concat(s.caption||s.value).concat(s.meta?", ".concat(s.meta):"");i.setAttribute("aria-label",o)}var u=i.querySelectorAll(".ace_completion-highlight");u.forEach(function(e){e.setAttribute("role","mark")})}}),n.renderer.on("afterRender",function(){var e=n.getRow(),t=n.renderer.$textLayer,r=t.element.childNodes[e-t.config.firstRow],i=document.activeElement;r!==n.selectedNode&&n.selectedNode&&(a.removeCssClass(n.selectedNode,"ace_selected"),n.selectedNode.removeAttribute(d),n.selectedNode.removeAttribute("id")),i.removeAttribute("aria-activedescendant"),n.selectedNode=r;if(r){var s=c(e);a.addCssClass(r,"ace_selected"),r.id=s,t.element.setAttribute("aria-activedescendant",s),i.setAttribute("aria-activedescendant",s),r.setAttribute(d,"true")}});var g=function(){y(-1)},y=function(e,t){e!==l.start.row&&(l.start.row=l.end.row=e,t||n.session._emit("changeBackMarker"),n._emit("changeHoverMarker"))};n.getHoveredRow=function(){return l.start.row},o.addListener(n.container,"mouseout",function(){n.isMouseOver=!1,g()}),n.on("hide",g),n.on("changeSelection",g),n.session.doc.getLength=function(){return n.data.length},n.session.doc.getLine=function(e){var t=n.data[e];return typeof t=="string"?t:t&&t.value||""};var b=n.session.bgTokenizer;return b.$tokenizeRow=function(e){function s(e,n){e&&r.push({type:(t.className||"")+(n||""),value:e})}var t=n.data[e],r=[];if(!t)return r;typeof t=="string"&&(t={value:t});var i=t.caption||t.value||t.name,o=i.toLowerCase(),u=(n.filterText||"").toLowerCase(),a=0,f=0;for(var l=0;l<=u.length;l++)if(l!=f&&(t.matchMask&1<=c?r="bottom":r="top"),r==="top"?(h.bottom=e.top-this.$borderSize,h.top=h.bottom-c):r==="bottom"&&(h.top=e.top+t+this.$borderSize,h.bottom=h.top+c);var v=h.top>=0&&h.bottom<=a;if(!s&&!v)return!1;v?l.$maxPixelHeight=null:r==="top"?l.$maxPixelHeight=d:l.$maxPixelHeight=p,r==="top"?(o.style.top="",o.style.bottom=a+u-h.bottom+"px",n.isTopdown=!1):(o.style.top=h.top+"px",o.style.bottom="",n.isTopdown=!0),o.style.display="";var m=e.left;return m+o.offsetWidth>f&&(m=f-o.offsetWidth),o.style.left=m+"px",o.style.right="",n.isOpen||(n.isOpen=!0,this._signal("show"),i=null),n.anchorPos=e,n.anchor=r,!0},n.show=function(e,t,n){this.tryShow(e,t,n?"bottom":undefined,!0)},n.goTo=function(e){var t=this.getRow(),n=this.session.getLength()-1;switch(e){case"up":t=t<=0?n:t-1;break;case"down":t=t>=n?-1:t+1;break;case"start":t=0;break;case"end":t=n}this.setRow(t)},n.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},n.$imageSize=0,n.$borderSize=1,n}return e}();a.importCssString('\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #CAD6FA;\n z-index: 1;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #3a674e;\n}\n.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid #abbffe;\n margin-top: -1px;\n background: rgba(233,233,253,0.4);\n position: absolute;\n z-index: 2;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid rgba(109, 150, 13, 0.8);\n background: rgba(58, 103, 78, 0.62);\n}\n.ace_completion-meta {\n opacity: 0.5;\n margin-left: 0.9em;\n}\n.ace_completion-message {\n margin-left: 0.9em;\n color: blue;\n}\n.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #2d69c7;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #93ca12;\n}\n.ace_editor.ace_autocomplete {\n width: 300px;\n z-index: 200000;\n border: 1px lightgray solid;\n position: fixed;\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n line-height: 1.4;\n background: #fefefe;\n color: #111;\n}\n.ace_dark.ace_editor.ace_autocomplete {\n border: 1px #484747 solid;\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\n line-height: 1.4;\n background: #25282c;\n color: #c1c1c1;\n}\n.ace_autocomplete .ace_text-layer {\n width: calc(100% - 8px);\n}\n.ace_autocomplete .ace_line {\n display: flex;\n align-items: center;\n}\n.ace_autocomplete .ace_line > * {\n min-width: 0;\n flex: 0 0 auto;\n}\n.ace_autocomplete .ace_line .ace_ {\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ace_autocomplete .ace_completion-spacer {\n flex: 1;\n}\n.ace_autocomplete.ace_loading:after {\n content: "";\n position: absolute;\n top: 0px;\n height: 2px;\n width: 8%;\n background: blue;\n z-index: 100;\n animation: ace_progress 3s infinite linear;\n animation-delay: 300ms;\n transform: translateX(-100%) scaleX(1);\n}\n@keyframes ace_progress {\n 0% { transform: translateX(-100%) scaleX(1) }\n 50% { transform: translateX(625%) scaleX(2) } \n 100% { transform: translateX(1500%) scaleX(3) } \n}\n@media (prefers-reduced-motion) {\n .ace_autocomplete.ace_loading:after {\n transform: translateX(625%) scaleX(2);\n animation: none;\n }\n}\n',"autocompletion.css",!1),t.AcePopup=m,t.$singleLineEditor=v,t.getAriaId=c}),define("ace/autocomplete/inline_screenreader",["require","exports","module"],function(e,t,n){"use strict";var r=function(){function e(e){this.editor=e,this.screenReaderDiv=document.createElement("div"),this.screenReaderDiv.classList.add("ace_screenreader-only"),this.editor.container.appendChild(this.screenReaderDiv)}return e.prototype.setScreenReaderContent=function(e){!this.popup&&this.editor.completer&&this.editor.completer.popup&&(this.popup=this.editor.completer.popup,this.popup.renderer.on("afterRender",function(){var e=this.popup.getRow(),t=this.popup.renderer.$textLayer,n=t.element.childNodes[e-t.config.firstRow];if(n){var r="doc-tooltip ";for(var i=0;i=0;s--){if(!n.test(e[s]))break;i.push(e[s])}return i.reverse().join("")},t.retrieveFollowingIdentifier=function(e,t,n){n=n||r;var i=[];for(var s=t;s0)for(var t=this.popup.getFirstVisibleRow();t<=this.popup.getLastVisibleRow();t++){var n=this.popup.getData(t);n&&(!e||n.hideInlinePreview)&&this.$seen(n)}},e.prototype.$onPopupShow=function(e){this.$onPopupChange(e),this.stickySelection=!1,this.stickySelectionDelay>=0&&this.stickySelectionTimer.schedule(this.stickySelectionDelay)},e.prototype.observeLayoutChanges=function(){if(this.$elements||!this.editor)return;window.addEventListener("resize",this.onLayoutChange,{passive:!0}),window.addEventListener("wheel",this.mousewheelListener);var e=this.editor.container.parentNode,t=[];while(e)t.push(e),e.addEventListener("scroll",this.onLayoutChange,{passive:!0}),e=e.parentNode;this.$elements=t},e.prototype.unObserveLayoutChanges=function(){var e=this;window.removeEventListener("resize",this.onLayoutChange,{passive:!0}),window.removeEventListener("wheel",this.mousewheelListener),this.$elements&&this.$elements.forEach(function(t){t.removeEventListener("scroll",e.onLayoutChange,{passive:!0})}),this.$elements=null},e.prototype.onLayoutChange=function(){if(!this.popup.isOpen)return this.unObserveLayoutChanges();this.$updatePopupPosition(),this.updateDocTooltip()},e.prototype.$updatePopupPosition=function(){var e=this.editor,t=e.renderer,n=t.layerConfig.lineHeight,r=t.$cursorLayer.getPixelPosition(this.base,!0);r.left-=this.popup.getTextLeftOffset();var i=e.container.getBoundingClientRect();r.top+=i.top-t.layerConfig.offset,r.left+=i.left-e.renderer.scrollLeft,r.left+=t.gutterWidth;var s={top:r.top,left:r.left};t.$ghostText&&t.$ghostTextWidget&&this.base.row===t.$ghostText.position.row&&(s.top+=t.$ghostTextWidget.el.offsetHeight);var o=e.container.getBoundingClientRect().bottom-n,u=othis.filterText&&e.lastIndexOf(this.filterText,0)===0)var t=this.filtered;else var t=this.all;this.filterText=e,t=this.filterCompletions(t,this.filterText),t=t.sort(function(e,t){return t.exactMatch-e.exactMatch||t.$score-e.$score||(e.caption||e.value).localeCompare(t.caption||t.value)});var n=null;t=t.filter(function(e){var t=e.snippet||e.caption||e.value;return t===n?!1:(n=t,!0)}),this.filtered=t},e.prototype.filterCompletions=function(e,t){var n=[],r=t.toUpperCase(),i=t.toLowerCase();e:for(var s=0,o;o=e[s];s++){if(o.skipFilter){o.$score=o.score,n.push(o);continue}var u=!this.ignoreCaption&&o.caption||o.value||o.snippet;if(!u)continue;var a=-1,f=0,l=0,c,h;if(this.exactMatch){if(t!==u.substr(0,t.length))continue e}else{var p=u.toLowerCase().indexOf(i);if(p>-1)l=p;else for(var d=0;d=0?m<0||v0&&(a===-1&&(l+=10),l+=h,f|=1<s)continue;l.range.start.row===a?u++:(a=l.range.start.row,u=0);if(u>200)continue;var c=l.range.clipRows(i,s);if(c.start.row===c.end.row&&c.start.column===c.end.column)continue;var h=c.toScreenRange(n);if(h.isEmpty()){o=n.getNextFoldLine(c.end.row,o),o&&o.end.row>c.end.row&&(i=o.end.row);continue}this.markerType==="fullLine"?t.drawFullLineMarker(e,h,l.className,r):h.isMultiLine()?this.markerType==="line"?t.drawMultiLineMarker(e,h,l.className,r):t.drawTextMarker(e,h,l.className,r):t.drawSingleLineMarker(e,h,l.className+" ace_br15",r)}},e}();r.prototype.MAX_MARKERS=1e4,t.MarkerGroup=r}),define("ace/autocomplete/text_completer",["require","exports","module","ace/range"],function(e,t,n){function s(e,t){var n=e.getTextRange(r.fromPoints({row:0,column:0},t));return n.split(i).length-1}function o(e,t){var n=s(e,t),r=e.getValue().split(i),o=Object.create(null),u=r[n];return r.forEach(function(e,t){if(!e||e===u)return;var i=Math.abs(n-t),s=r.length-i;o[e]?o[e]=Math.max(s,o[e]):o[e]=s}),o}var r=e("../range").Range,i=/[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/;t.getCompletions=function(e,t,n,r,i){var s=o(t,n),u=Object.keys(s);i(null,u.map(function(e){return{caption:e,value:e,score:s[e],meta:"local"}}))}}),define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/marker_group","ace/autocomplete/text_completer","ace/editor","ace/config"],function(e,t,n){"use strict";var r=e("../snippets").snippetManager,i=e("../autocomplete").Autocomplete,s=e("../config"),o=e("../lib/lang"),u=e("../autocomplete/util"),a=e("../marker_group").MarkerGroup,f=e("../autocomplete/text_completer"),l={getCompletions:function(e,t,n,r,i){if(t.$mode.completer)return t.$mode.completer.getCompletions(e,t,n,r,i);var s=e.session.getState(n.row),o=t.$mode.getCompletions(s,t,n,r);o=o.map(function(e){return e.completerId=l.id,e}),i(null,o)},id:"keywordCompleter"},c=function(e){var t={};return e.replace(/\${(\d+)(:(.*?))?}/g,function(e,n,r,i){return t[n]=i||""}).replace(/\$(\d+?)/g,function(e,n){return t[n]})},h={getCompletions:function(e,t,n,i,s){var o=[],u=t.getTokenAt(n.row,n.column);u&&u.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\.xml$/)?o.push("html-tag"):o=r.getActiveScopes(e);var a=r.snippetMap,f=[];o.forEach(function(e){var t=a[e]||[];for(var n=t.length;n--;){var r=t[n],i=r.name||r.tabTrigger;if(!i)continue;f.push({caption:i,snippet:r.content,meta:r.tabTrigger&&!r.name?r.tabTrigger+"\u21e5 ":"snippet",completerId:h.id})}},this),s(null,f)},getDocTooltip:function(e){e.snippet&&!e.docHTML&&(e.docHTML=["",o.escapeHTML(e.caption),"","
      ",o.escapeHTML(c(e.snippet))].join(""))},id:"snippetCompleter"},p=[h,f,l];t.setCompleters=function(e){p.length=0,e&&p.push.apply(p,e)},t.addCompleter=function(e){p.push(e)},t.textCompleter=f,t.keyWordCompleter=l,t.snippetCompleter=h;var d={name:"expandSnippet",exec:function(e){return r.expandWithTab(e)},bindKey:"Tab"},v=function(e,t){m(t.session.$mode)},m=function(e){typeof e=="string"&&(e=s.$modes[e]);if(!e)return;r.files||(r.files={}),g(e.$id,e.snippetFileId),e.modes&&e.modes.forEach(m)},g=function(e,t){if(!t||!e||r.files[e])return;r.files[e]={},s.loadModule(t,function(t){if(!t)return;r.files[e]=t,!t.snippets&&t.snippetText&&(t.snippets=r.parseSnippetFile(t.snippetText)),r.register(t.snippets||[],t.scope),t.includeScopes&&(r.snippetMap[t.scope].includeScopes=t.includeScopes,t.includeScopes.forEach(function(e){m("ace/mode/"+e)}))})},y=function(e){var t=e.editor,n=t.completer&&t.completer.activated;if(e.command.name==="backspace")n&&!u.getCompletionPrefix(t)&&t.completer.detach();else if(e.command.name==="insertstring"&&!n){b=e;var r=e.editor.$liveAutocompletionDelay;r?w.delay(r):E(e)}},b,w=o.delayedCall(function(){E(b)},0),E=function(e){var t=e.editor,n=u.getCompletionPrefix(t),r=e.args,s=u.triggerAutocomplete(t,r);if(n&&n.length>=t.$liveAutocompletionThreshold||s){var o=i.for(t);o.autoShown=!0,o.showPopup(t)}},S=e("../editor").Editor;e("../config").defineOptions(S.prototype,"editor",{enableBasicAutocompletion:{set:function(e){e?(i.for(this),this.completers||(this.completers=Array.isArray(e)?e:p),this.commands.addCommand(i.startCommand)):this.commands.removeCommand(i.startCommand)},value:!1},enableLiveAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:p),this.commands.on("afterExec",y)):this.commands.off("afterExec",y)},value:!1},liveAutocompletionDelay:{initialValue:0},liveAutocompletionThreshold:{initialValue:0},enableSnippets:{set:function(e){e?(this.commands.addCommand(d),this.on("changeMode",v),v(null,this)):(this.commands.removeCommand(d),this.off("changeMode",v))},value:!1}}),t.MarkerGroup=a}); (function() { - window.require(["ace/ext/language_tools"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/ext-linking.js b/www/js/ace/ext-linking.js deleted file mode 100644 index 593593dee..000000000 --- a/www/js/ace/ext-linking.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function i(e){var n=e.editor,r=e.getAccelKey();if(r){var n=e.editor,i=e.getDocumentPosition(),s=n.session,o=s.getTokenAt(i.row,i.column);t.previousLinkingHover&&t.previousLinkingHover!=o&&n._emit("linkHoverOut"),n._emit("linkHover",{position:i,token:o}),t.previousLinkingHover=o}else t.previousLinkingHover&&(n._emit("linkHoverOut"),t.previousLinkingHover=!1)}function s(e){var t=e.getAccelKey(),n=e.getButton();if(n==0&&t){var r=e.editor,i=e.getDocumentPosition(),s=r.session,o=s.getTokenAt(i.row,i.column);r._emit("linkClick",{position:i,token:o})}}var r=e("../editor").Editor;e("../config").defineOptions(r.prototype,"editor",{enableLinking:{set:function(e){e?(this.on("click",s),this.on("mousemove",i)):(this.off("click",s),this.off("mousemove",i))},value:!1}}),t.previousLinkingHover=!1}); (function() { - window.require(["ace/ext/linking"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/ext-modelist.js b/www/js/ace/ext-modelist.js deleted file mode 100644 index d883ad317..000000000 --- a/www/js/ace/ext-modelist.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/ext/modelist",["require","exports","module"],function(e,t,n){"use strict";function i(e){var t=a.text,n=e.split(/[\/\\]/).pop();for(var i=0;i=c?r="bottom":r="top"),r==="top"?(h.bottom=e.top-this.$borderSize,h.top=h.bottom-c):r==="bottom"&&(h.top=e.top+t+this.$borderSize,h.bottom=h.top+c);var v=h.top>=0&&h.bottom<=a;if(!s&&!v)return!1;v?l.$maxPixelHeight=null:r==="top"?l.$maxPixelHeight=d:l.$maxPixelHeight=p,r==="top"?(o.style.top="",o.style.bottom=a+u-h.bottom+"px",n.isTopdown=!1):(o.style.top=h.top+"px",o.style.bottom="",n.isTopdown=!0),o.style.display="";var m=e.left;return m+o.offsetWidth>f&&(m=f-o.offsetWidth),o.style.left=m+"px",o.style.right="",n.isOpen||(n.isOpen=!0,this._signal("show"),i=null),n.anchorPos=e,n.anchor=r,!0},n.show=function(e,t,n){this.tryShow(e,t,n?"bottom":undefined,!0)},n.goTo=function(e){var t=this.getRow(),n=this.session.getLength()-1;switch(e){case"up":t=t<=0?n:t-1;break;case"down":t=t>=n?-1:t+1;break;case"start":t=0;break;case"end":t=n}this.setRow(t)},n.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},n.$imageSize=0,n.$borderSize=1,n}return e}();a.importCssString('\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #CAD6FA;\n z-index: 1;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #3a674e;\n}\n.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid #abbffe;\n margin-top: -1px;\n background: rgba(233,233,253,0.4);\n position: absolute;\n z-index: 2;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid rgba(109, 150, 13, 0.8);\n background: rgba(58, 103, 78, 0.62);\n}\n.ace_completion-meta {\n opacity: 0.5;\n margin-left: 0.9em;\n}\n.ace_completion-message {\n margin-left: 0.9em;\n color: blue;\n}\n.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #2d69c7;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #93ca12;\n}\n.ace_editor.ace_autocomplete {\n width: 300px;\n z-index: 200000;\n border: 1px lightgray solid;\n position: fixed;\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n line-height: 1.4;\n background: #fefefe;\n color: #111;\n}\n.ace_dark.ace_editor.ace_autocomplete {\n border: 1px #484747 solid;\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\n line-height: 1.4;\n background: #25282c;\n color: #c1c1c1;\n}\n.ace_autocomplete .ace_text-layer {\n width: calc(100% - 8px);\n}\n.ace_autocomplete .ace_line {\n display: flex;\n align-items: center;\n}\n.ace_autocomplete .ace_line > * {\n min-width: 0;\n flex: 0 0 auto;\n}\n.ace_autocomplete .ace_line .ace_ {\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ace_autocomplete .ace_completion-spacer {\n flex: 1;\n}\n.ace_autocomplete.ace_loading:after {\n content: "";\n position: absolute;\n top: 0px;\n height: 2px;\n width: 8%;\n background: blue;\n z-index: 100;\n animation: ace_progress 3s infinite linear;\n animation-delay: 300ms;\n transform: translateX(-100%) scaleX(1);\n}\n@keyframes ace_progress {\n 0% { transform: translateX(-100%) scaleX(1) }\n 50% { transform: translateX(625%) scaleX(2) } \n 100% { transform: translateX(1500%) scaleX(3) } \n}\n@media (prefers-reduced-motion) {\n .ace_autocomplete.ace_loading:after {\n transform: translateX(625%) scaleX(2);\n animation: none;\n }\n}\n',"autocompletion.css",!1),t.AcePopup=m,t.$singleLineEditor=v,t.getAriaId=c}),define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"],function(e,t,n){"use strict";function p(e){var t=(new Date).toLocaleString("en-us",e);return t.length==1?"0"+t:t}var r=e("./lib/dom"),i=e("./lib/oop"),s=e("./lib/event_emitter").EventEmitter,o=e("./lib/lang"),u=e("./range").Range,a=e("./range_list").RangeList,f=e("./keyboard/hash_handler").HashHandler,l=e("./tokenizer").Tokenizer,c=e("./clipboard"),h={CURRENT_WORD:function(e){return e.session.getTextRange(e.session.getWordRange())},SELECTION:function(e,t,n){var r=e.session.getTextRange();return n?r.replace(/\n\r?([ \t]*\S)/g,"\n"+n+"$1"):r},CURRENT_LINE:function(e){return e.session.getLine(e.getCursorPosition().row)},PREV_LINE:function(e){return e.session.getLine(e.getCursorPosition().row-1)},LINE_INDEX:function(e){return e.getCursorPosition().row},LINE_NUMBER:function(e){return e.getCursorPosition().row+1},SOFT_TABS:function(e){return e.session.getUseSoftTabs()?"YES":"NO"},TAB_SIZE:function(e){return e.session.getTabSize()},CLIPBOARD:function(e){return c.getText&&c.getText()},FILENAME:function(e){return/[^/\\]*$/.exec(this.FILEPATH(e))[0]},FILENAME_BASE:function(e){return/[^/\\]*$/.exec(this.FILEPATH(e))[0].replace(/\.[^.]*$/,"")},DIRECTORY:function(e){return this.FILEPATH(e).replace(/[^/\\]*$/,"")},FILEPATH:function(e){return"/not implemented.txt"},WORKSPACE_NAME:function(){return"Unknown"},FULLNAME:function(){return"Unknown"},BLOCK_COMMENT_START:function(e){var t=e.session.$mode||{};return t.blockComment&&t.blockComment.start||""},BLOCK_COMMENT_END:function(e){var t=e.session.$mode||{};return t.blockComment&&t.blockComment.end||""},LINE_COMMENT:function(e){var t=e.session.$mode||{};return t.lineCommentStart||""},CURRENT_YEAR:p.bind(null,{year:"numeric"}),CURRENT_YEAR_SHORT:p.bind(null,{year:"2-digit"}),CURRENT_MONTH:p.bind(null,{month:"numeric"}),CURRENT_MONTH_NAME:p.bind(null,{month:"long"}),CURRENT_MONTH_NAME_SHORT:p.bind(null,{month:"short"}),CURRENT_DATE:p.bind(null,{day:"2-digit"}),CURRENT_DAY_NAME:p.bind(null,{weekday:"long"}),CURRENT_DAY_NAME_SHORT:p.bind(null,{weekday:"short"}),CURRENT_HOUR:p.bind(null,{hour:"2-digit",hour12:!1}),CURRENT_MINUTE:p.bind(null,{minute:"2-digit"}),CURRENT_SECOND:p.bind(null,{second:"2-digit"})};h.SELECTED_TEXT=h.SELECTION;var d=function(){function e(){this.snippetMap={},this.snippetNameMap={},this.variables=h}return e.prototype.getTokenizer=function(){return e.$tokenizer||this.createTokenizer()},e.prototype.createTokenizer=function(){function t(e){return e=e.substr(1),/^\d+$/.test(e)?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function n(e){return"(?:[^\\\\"+e+"]|\\\\.)"}var r={regex:"/("+n("/")+"+)/",onMatch:function(e,t,n){var r=n[0];return r.fmtString=!0,r.guard=e.slice(1,-1),r.flag="",""},next:"formatString"};return e.$tokenizer=new l({start:[{regex:/\\./,onMatch:function(e,t,n){var r=e[1];return r=="}"&&n.length?e=r:"`$\\".indexOf(r)!=-1&&(e=r),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:t},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(e,n,r){var i=t(e.substr(1));return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+n("\\|")+"*\\|",onMatch:function(e,t,n){var r=e.slice(1,-1).replace(/\\[,|\\]|,/g,function(e){return e.length==2?e[1]:"\0"}).split("\0").map(function(e){return{value:e}});return n[0].choices=r,[r[0]]},next:"start"},r,{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:/:/,onMatch:function(e,t,n){return n.length&&n[0].expectElse?(n[0].expectElse=!1,n[0].ifEnd={elseEnd:n[0]},[n[0].ifEnd]):":"}},{regex:/\\./,onMatch:function(e,t,n){var r=e[1];return r=="}"&&n.length?e=r:"`$\\".indexOf(r)!=-1?e=r:r=="n"?e="\n":r=="t"?e=" ":"ulULE".indexOf(r)!=-1&&(e={changeCase:r,local:r>"a"}),[e]}},{regex:"/\\w*}",onMatch:function(e,t,n){var r=n.shift();return r&&(r.flag=e.slice(1,-1)),this.next=r&&r.tabstopId?"start":"",[r||e]},next:"start"},{regex:/\$(?:\d+|\w+)/,onMatch:function(e,t,n){return[{text:e.slice(1)}]}},{regex:/\${\w+/,onMatch:function(e,t,n){var r={text:e.slice(2)};return n.unshift(r),[r]},next:"formatStringVar"},{regex:/\n/,token:"newline",merge:!1},{regex:/}/,onMatch:function(e,t,n){var r=n.shift();return this.next=r&&r.tabstopId?"start":"",[r||e]},next:"start"}],formatStringVar:[{regex:/:\/\w+}/,onMatch:function(e,t,n){var r=n[0];return r.formatFunction=e.slice(2,-1),[n.shift()]},next:"formatString"},r,{regex:/:[\?\-+]?/,onMatch:function(e,t,n){e[1]=="+"&&(n[0].ifEnd=n[0]),e[1]=="?"&&(n[0].expectElse=!0)},next:"formatString"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"formatString"}]}),e.$tokenizer},e.prototype.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},e.prototype.getVariableValue=function(e,t,n){if(/^\d+$/.test(t))return(this.variables.__||{})[t]||"";if(/^[A-Z]\d+$/.test(t))return(this.variables[t[0]+"__"]||{})[t.substr(1)]||"";t=t.replace(/^TM_/,"");if(!this.variables.hasOwnProperty(t))return"";var r=this.variables[t];return typeof r=="function"&&(r=this.variables[t](e,t,n)),r==null?"":r},e.prototype.tmStrFormat=function(e,t,n){if(!t.fmt)return e;var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gim]/g,""));var s=typeof t.fmt=="string"?this.tokenizeTmSnippet(t.fmt,"formatString"):t.fmt,o=this,u=e.replace(i,function(){var e=o.variables.__;o.variables.__=[].slice.call(arguments);var t=o.resolveVariables(s,n),r="E";for(var i=0;i=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},e.prototype.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):o&&(n[o]=u)}}return t},e.prototype.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r},e}();i.implement(d.prototype,s);var v=function(e,t,n){function l(e){var t=[];for(var n=0;n1?(y=t[t.length-1].length,g+=t.length-1):y+=e.length,b+=e}else e&&(e.start?e.end={row:g,column:y}:e.start={row:g,column:y})}),{text:b,tabstops:a,tokens:u}},m=function(){function e(e){this.index=0,this.ranges=[],this.tabstops=[];if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=o.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)}return e.prototype.attach=function(e){this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.session=e.session,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},e.prototype.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges.length=0,this.tabstops.length=0,this.selectedTabstop=null,this.editor.off("change",this.$onChange),this.editor.off("changeSelection",this.$onChangeSelection),this.editor.off("changeSession",this.$onChangeSession),this.editor.commands.off("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.session=null,this.editor=null},e.prototype.onChange=function(e){var t=e.action[0]=="r",n=this.selectedTabstop||{},r=n.parents||{},i=this.tabstops.slice();for(var s=0;s2&&(this.tabstops.length&&o.push(o.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,o))},e.prototype.addTabstopMarkers=function(e){var t=this.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},e.prototype.removeTabstopMarkers=function(e){var t=this.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},e.prototype.updateTabstopMarkers=function(){if(!this.selectedTabstop)return;var e=this.selectedTabstop.snippetId;this.selectedTabstop.index===0&&e--,this.tabstops.forEach(function(t){t.snippetId===e?this.addTabstopMarkers(t):this.removeTabstopMarkers(t)},this)},e.prototype.removeRange=function(e){var t=e.tabstop.indexOf(e);t!=-1&&e.tabstop.splice(t,1),t=this.ranges.indexOf(e),t!=-1&&this.ranges.splice(t,1),t=e.tabstop.rangeList.ranges.indexOf(e),t!=-1&&e.tabstop.splice(t,1),this.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},e}();m.prototype.keyboardHandler=new f,m.prototype.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1),e.renderer.scrollCursorIntoView()},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1),e.renderer.scrollCursorIntoView()},Esc:function(e){e.tabstopManager.detach()}});var g=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},y=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};r.importCssString("\n.ace_snippet-marker {\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n background: rgba(194, 193, 208, 0.09);\n border: 1px dotted rgba(211, 208, 235, 0.62);\n position: absolute;\n}","snippets.css",!1),t.snippetManager=new d;var b=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(b.prototype)}),define("ace/autocomplete/inline_screenreader",["require","exports","module"],function(e,t,n){"use strict";var r=function(){function e(e){this.editor=e,this.screenReaderDiv=document.createElement("div"),this.screenReaderDiv.classList.add("ace_screenreader-only"),this.editor.container.appendChild(this.screenReaderDiv)}return e.prototype.setScreenReaderContent=function(e){!this.popup&&this.editor.completer&&this.editor.completer.popup&&(this.popup=this.editor.completer.popup,this.popup.renderer.on("afterRender",function(){var e=this.popup.getRow(),t=this.popup.renderer.$textLayer,n=t.element.childNodes[e-t.config.firstRow];if(n){var r="doc-tooltip ";for(var i=0;i=0;s--){if(!n.test(e[s]))break;i.push(e[s])}return i.reverse().join("")},t.retrieveFollowingIdentifier=function(e,t,n){n=n||r;var i=[];for(var s=t;s0)for(var t=this.popup.getFirstVisibleRow();t<=this.popup.getLastVisibleRow();t++){var n=this.popup.getData(t);n&&(!e||n.hideInlinePreview)&&this.$seen(n)}},e.prototype.$onPopupShow=function(e){this.$onPopupChange(e),this.stickySelection=!1,this.stickySelectionDelay>=0&&this.stickySelectionTimer.schedule(this.stickySelectionDelay)},e.prototype.observeLayoutChanges=function(){if(this.$elements||!this.editor)return;window.addEventListener("resize",this.onLayoutChange,{passive:!0}),window.addEventListener("wheel",this.mousewheelListener);var e=this.editor.container.parentNode,t=[];while(e)t.push(e),e.addEventListener("scroll",this.onLayoutChange,{passive:!0}),e=e.parentNode;this.$elements=t},e.prototype.unObserveLayoutChanges=function(){var e=this;window.removeEventListener("resize",this.onLayoutChange,{passive:!0}),window.removeEventListener("wheel",this.mousewheelListener),this.$elements&&this.$elements.forEach(function(t){t.removeEventListener("scroll",e.onLayoutChange,{passive:!0})}),this.$elements=null},e.prototype.onLayoutChange=function(){if(!this.popup.isOpen)return this.unObserveLayoutChanges();this.$updatePopupPosition(),this.updateDocTooltip()},e.prototype.$updatePopupPosition=function(){var e=this.editor,t=e.renderer,n=t.layerConfig.lineHeight,r=t.$cursorLayer.getPixelPosition(this.base,!0);r.left-=this.popup.getTextLeftOffset();var i=e.container.getBoundingClientRect();r.top+=i.top-t.layerConfig.offset,r.left+=i.left-e.renderer.scrollLeft,r.left+=t.gutterWidth;var s={top:r.top,left:r.left};t.$ghostText&&t.$ghostTextWidget&&this.base.row===t.$ghostText.position.row&&(s.top+=t.$ghostTextWidget.el.offsetHeight);var o=e.container.getBoundingClientRect().bottom-n,u=othis.filterText&&e.lastIndexOf(this.filterText,0)===0)var t=this.filtered;else var t=this.all;this.filterText=e,t=this.filterCompletions(t,this.filterText),t=t.sort(function(e,t){return t.exactMatch-e.exactMatch||t.$score-e.$score||(e.caption||e.value).localeCompare(t.caption||t.value)});var n=null;t=t.filter(function(e){var t=e.snippet||e.caption||e.value;return t===n?!1:(n=t,!0)}),this.filtered=t},e.prototype.filterCompletions=function(e,t){var n=[],r=t.toUpperCase(),i=t.toLowerCase();e:for(var s=0,o;o=e[s];s++){if(o.skipFilter){o.$score=o.score,n.push(o);continue}var u=!this.ignoreCaption&&o.caption||o.value||o.snippet;if(!u)continue;var a=-1,f=0,l=0,c,h;if(this.exactMatch){if(t!==u.substr(0,t.length))continue e}else{var p=u.toLowerCase().indexOf(i);if(p>-1)l=p;else for(var d=0;d=0?m<0||v0&&(a===-1&&(l+=10),l+=h,f|=1<0?e=x():e=o.getValue();var t=m?m.getData(m.getRow()):e;t&&!t.error&&(E(),n.onAccept&&n.onAccept({value:e,item:t},o))}function E(){v.close(),r&&r(),p=null}function S(){if(n.getCompletions){var e;n.getPrefix&&(e=n.getPrefix(o));var t=n.getCompletions(o);m.setData(t,e),m.resize(!0)}}function x(){var e=m.getData(m.getRow());if(e&&!e.error)return e.value||e.caption||e}if(typeof t=="object")return d(e,"",t,n);if(p){var i=p;e=i.editor,i.close();if(i.name&&i.name==n.name)return}if(n.$type)return d[n.$type](e,r);var o=a();o.session.setUndoManager(new f);var h=s.buildDom(["div",{"class":"ace_prompt_container"+(n.hasDescription?" input-box-with-description":"")}]),v=c(e,h,E);h.appendChild(o.container),e&&(e.cmdLine=o,o.setOption("fontSize",e.getOption("fontSize"))),t&&o.setValue(t,1),n.selection&&o.selection.setRange({start:o.session.doc.indexToPosition(n.selection[0]),end:o.session.doc.indexToPosition(n.selection[1])});if(n.getCompletions){var m=new u;m.renderer.setStyle("ace_autocomplete_inline"),m.container.style.display="block",m.container.style.maxWidth="600px",m.container.style.width="100%",m.container.style.marginTop="3px",m.renderer.setScrollMargin(2,2,0,0),m.autoSelect=!1,m.renderer.$maxLines=15,m.setRow(-1),m.on("click",function(e){var t=m.getData(m.getRow());t.error||(o.setValue(t.value||t.name||t),b(),e.stop())}),h.appendChild(m.container),S()}if(n.$rules){var g=new l(n.$rules);o.session.bgTokenizer.setTokenizer(g)}n.placeholder&&o.setOption("placeholder",n.placeholder);if(n.hasDescription){var y=s.buildDom(["div",{"class":"ace_prompt_text_container"}]);s.buildDom(n.prompt||"Press 'Enter' to confirm or 'Escape' to cancel",y),h.appendChild(y)}v.setIgnoreFocusOut(n.ignoreFocusOut);var w={Enter:b,"Esc|Shift-Esc":function(){n.onCancel&&n.onCancel(o.getValue(),o),E()}};m&&Object.assign(w,{Up:function(e){m.goTo("up"),x()},Down:function(e){m.goTo("down"),x()},"Ctrl-Up|Ctrl-Home":function(e){m.goTo("start"),x()},"Ctrl-Down|Ctrl-End":function(e){m.goTo("end"),x()},Tab:function(e){m.goTo("down"),x()},PageUp:function(e){m.gotoPageUp(),x()},PageDown:function(e){m.gotoPageDown(),x()}}),o.commands.bindKeys(w),o.on("input",function(){n.onInput&&n.onInput(),S()}),o.resize(!0),m&&m.resize(!0),o.focus(),p={close:E,name:n.name,editor:e}}var r=e("../config").nls,i=e("../range").Range,s=e("../lib/dom"),o=e("../autocomplete").FilteredList,u=e("../autocomplete/popup").AcePopup,a=e("../autocomplete/popup").$singleLineEditor,f=e("../undomanager").UndoManager,l=e("../tokenizer").Tokenizer,c=e("./menu_tools/overlay_page").overlayPage,h=e("./modelist"),p;d.gotoLine=function(e,t){function n(e){return Array.isArray(e)||(e=[e]),e.map(function(e){var t=e.isBackwards?e.start:e.end,n=e.isBackwards?e.end:e.start,r=n.row,i=r+1+":"+n.column;return n.row==t.row?n.column!=t.column&&(i+=">:"+t.column):i+=">"+(t.row+1)+":"+t.column,i}).reverse().join(", ")}d(e,":"+n(e.selection.toJSON()),{name:"gotoLine",selection:[1,Number.MAX_VALUE],onAccept:function(t){var n=t.value,r=d.gotoLine._history;r||(d.gotoLine._history=r=[]),r.indexOf(n)!=-1&&r.splice(r.indexOf(n),1),r.unshift(n),r.length>20&&(r.length=20);var s=e.getCursorPosition(),o=[];n.replace(/^:/,"").split(/,/).map(function(t){function u(){var t=n[r++];if(!t)return;if(t[0]=="c"){var i=parseInt(t.slice(1))||0;return e.session.doc.indexToPosition(i)}var o=s.row,u=0;return/\d/.test(t)&&(o=parseInt(t)-1,t=n[r++]),t==":"&&(t=n[r++],/\d/.test(t)&&(u=parseInt(t)||0)),{row:o,column:u}}var n=t.split(/([<>:+-]|c?\d+)|[^c\d<>:+-]+/).filter(Boolean),r=0;s=u();var a=i.fromPoints(s,s);n[r]==">"?(r++,a.end=u()):n[r]=="<"&&(r++,a.start=u()),o.unshift(a)}),e.selection.fromJSON(o);var u=e.renderer.scrollTop;e.renderer.scrollSelectionIntoView(e.selection.anchor,e.selection.cursor,.5),e.renderer.animateScrolling(u)},history:function(){return d.gotoLine._history?d.gotoLine._history:[]},getCompletions:function(t){var n=t.getValue(),r=n.replace(/^:/,"").split(":"),i=Math.min(parseInt(r[0])||1,e.session.getLength())-1,s=e.session.getLine(i),o=n+" "+s;return[o].concat(this.history())},$rules:{start:[{regex:/\d+/,token:"string"},{regex:/[:,><+\-c]/,token:"keyword"}]}})},d.commands=function(e,t){function n(e){return(e||"").replace(/^./,function(e){return e.toUpperCase(e)}).replace(/[a-z][A-Z]/g,function(e){return e[0]+" "+e[1].toLowerCase(e)})}function i(t){var r=[],i={};return e.keyBinding.$handlers.forEach(function(e){var s=e.platform,o=e.byName;for(var u in o){var a=o[u].bindKey;typeof a!="string"&&(a=a&&a[s]||"");var f=o[u],l=f.description||n(f.name);Array.isArray(f)||(f=[f]),f.forEach(function(e){typeof e!="string"&&(e=e.name);var n=t.find(function(t){return t===e});n||(i[e]?i[e].key+="|"+a:(i[e]={key:a,command:e,description:l},r.push(i[e])))})}}),r}var s=["insertstring","inserttext","setIndentation","paste"],u=i(s);u=u.map(function(e){return{value:e.description,meta:e.key,command:e.command}}),d(e,"",{name:"commands",selection:[0,Number.MAX_VALUE],maxHistoryCount:5,onAccept:function(t){if(t.item){var n=t.item.command;this.addToHistory(t.item),e.execCommand(n)}},addToHistory:function(e){var t=this.history();t.unshift(e),delete e.message;for(var n=1;n0&&t.length>this.maxHistoryCount&&t.splice(t.length-1,1),d.commands.history=t},history:function(){return d.commands.history||[]},getPrefix:function(e){var t=e.getCursorPosition(),n=e.getValue();return n.substring(0,t.column)},getCompletions:function(e){function t(e,t){var n=JSON.parse(JSON.stringify(e)),r=new o(n);return r.filterCompletions(n,t)}function n(e,t){if(!t||!t.length)return e;var n=[];t.forEach(function(e){n.push(e.command)});var r=[];return e.forEach(function(e){n.indexOf(e.command)===-1&&r.push(e)}),r}var i=this.getPrefix(e),s=t(this.history(),i),a=n(u,s);a=t(a,i),s.length&&a.length&&(s[0].message=r("prompt.recently-used","Recently used"),a[0].message=r("prompt.other-commands","Other commands"));var f=s.concat(a);return f.length>0?f:[{value:r("prompt.no-matching-commands","No matching commands"),error:1}]}})},d.modes=function(e,t){var n=h.modes;n=n.map(function(e){return{value:e.caption,mode:e.name}}),d(e,"",{name:"modes",selection:[0,Number.MAX_VALUE],onAccept:function(t){if(t.item){var n="ace/mode/"+t.item.mode;e.session.setMode(n)}},getPrefix:function(e){var t=e.getCursorPosition(),n=e.getValue();return n.substring(0,t.column)},getCompletions:function(e){function t(e,t){var n=JSON.parse(JSON.stringify(e)),r=new o(n);return r.filterCompletions(n,t)}var r=this.getPrefix(e),i=t(n,r);return i.length>0?i:[{caption:"No mode matching",value:"No mode matching",error:1}]}})},s.importCssString(".ace_prompt_container {\n max-width: 603px;\n width: 100%;\n margin: 20px auto;\n padding: 3px;\n background: white;\n border-radius: 2px;\n box-shadow: 0px 2px 3px 0px #555;\n}","promtp.css",!1),t.prompt=d}); (function() { - window.require(["ace/ext/prompt"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/ext-rtl.js b/www/js/ace/ext-rtl.js deleted file mode 100644 index ae034299b..000000000 --- a/www/js/ace/ext-rtl.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/ext/rtl",["require","exports","module","ace/editor","ace/config"],function(e,t,n){"use strict";function s(e,t){var n=t.getSelection().lead;t.session.$bidiHandler.isRtlLine(n.row)&&n.column===0&&(t.session.$bidiHandler.isMoveLeftOperation&&n.row>0?t.getSelection().moveCursorTo(n.row-1,t.session.getLine(n.row-1).length):t.getSelection().isEmpty()?n.column+=1:n.setPosition(n.row,n.column+1))}function o(e){e.editor.session.$bidiHandler.isMoveLeftOperation=/gotoleft|selectleft|backspace|removewordleft/.test(e.command.name)}function u(e,t){var n=t.session;n.$bidiHandler.currentRow=null;if(n.$bidiHandler.isRtlLine(e.start.row)&&e.action==="insert"&&e.lines.length>1)for(var r=e.start.row;rl)break;if(!c[0]){t.lastIndex=a+=i.skipEmptyMatch(o,a,n);if(a>=o.length)break}}}this.searchCounter.textContent=f("search-box.search-counter","$0 of $1",[s,r>l?l+"+":r])},e.prototype.findNext=function(){this.find(!0,!1)},e.prototype.findPrev=function(){this.find(!0,!0)},e.prototype.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},e.prototype.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},e.prototype.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},e.prototype.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},e.prototype.hide=function(){this.active=!1,this.setSearchRange(null),this.editor.off("changeSession",this.setSession),this.editor.off("input",this.$onEditorInput),this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},e.prototype.show=function(e,t){this.active=!0,this.editor.on("changeSession",this.setSession),this.editor.on("input",this.$onEditorInput),this.element.style.display="",this.replaceOption.checked=t,this.editor.$search.$options.regExp&&(e=i.escapeRegExp(e)),e!=undefined&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb),this.$syncOptions(!0)},e.prototype.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput},e}(),h=new u;h.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.replaceOption.checked=!1,e.$syncOptions(),e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){if(e.editor.getReadOnly())return;e.replaceOption.checked=!0,e.$syncOptions(),e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),h.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}},{name:"toggleReplace",exec:function(e){e.replaceOption.checked=!e.replaceOption.checked,e.$syncOptions()}},{name:"searchInSelection",exec:function(e){e.searchOption.checked=!e.searchRange,e.setSearchRange(e.searchOption.checked&&e.editor.getSelectionRange()),e.$syncOptions()}}]);var p=new u([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]);c.prototype.$searchBarKb=h,c.prototype.$closeSearchBarKb=p,t.SearchBox=c,t.Search=function(e,t){var n=e.searchBox||new c(e),r=e.session.selection.getRange(),i=r.isMultiLine()?"":e.session.getTextRange(r);n.show(i,t)}}); (function() { - window.require(["ace/ext/searchbox"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/ext-settings_menu.js b/www/js/ace/ext-settings_menu.js deleted file mode 100644 index 1740de13a..000000000 --- a/www/js/ace/ext-settings_menu.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/ext/menu_tools/settings_menu.css",["require","exports","module"],function(e,t,n){n.exports="#ace_settingsmenu, #kbshortcutmenu {\n background-color: #F7F7F7;\n color: black;\n box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\n padding: 1em 0.5em 2em 1em;\n overflow: auto;\n position: absolute;\n margin: 0;\n bottom: 0;\n right: 0;\n top: 0;\n z-index: 9991;\n cursor: default;\n}\n\n.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\n box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\n background-color: rgba(255, 255, 255, 0.6);\n color: black;\n}\n\n.ace_optionsMenuEntry:hover {\n background-color: rgba(100, 100, 100, 0.1);\n transition: all 0.3s\n}\n\n.ace_closeButton {\n background: rgba(245, 146, 146, 0.5);\n border: 1px solid #F48A8A;\n border-radius: 50%;\n padding: 7px;\n position: absolute;\n right: -8px;\n top: -8px;\n z-index: 100000;\n}\n.ace_closeButton{\n background: rgba(245, 146, 146, 0.9);\n}\n.ace_optionsMenuKey {\n color: darkslateblue;\n font-weight: bold;\n}\n.ace_optionsMenuCommand {\n color: darkcyan;\n font-weight: normal;\n}\n.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {\n vertical-align: middle;\n}\n\n.ace_optionsMenuEntry button[ace_selected_button=true] {\n background: #e7e7e7;\n box-shadow: 1px 0px 2px 0px #adadad inset;\n border-color: #adadad;\n}\n.ace_optionsMenuEntry button {\n background: white;\n border: 1px solid lightgray;\n margin: 0px;\n}\n.ace_optionsMenuEntry button:hover{\n background: #f0f0f0;\n}"}),define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/ext/menu_tools/overlay_page","ace/lib/dom","ace/ext/menu_tools/settings_menu.css"],function(e,t,n){"use strict";var r=e("../../lib/dom"),i=e("./settings_menu.css");r.importCssString(i,"settings_menu.css",!1),n.exports.overlayPage=function(t,n,r){function o(e){e.keyCode===27&&u()}function u(){if(!i)return;document.removeEventListener("keydown",o),i.parentNode.removeChild(i),t&&t.focus(),i=null,r&&r()}function a(e){s=e,e&&(i.style.pointerEvents="none",n.style.pointerEvents="auto")}var i=document.createElement("div"),s=!1;return i.style.cssText="margin: 0; padding: 0; position: fixed; top:0; bottom:0; left:0; right:0;z-index: 9990; "+(t?"background-color: rgba(0, 0, 0, 0.3);":""),i.addEventListener("click",function(e){s||u()}),document.addEventListener("keydown",o),n.addEventListener("click",function(e){e.stopPropagation()}),i.appendChild(n),document.body.appendChild(i),t&&t.blur(),{close:u,setIgnoreFocusOut:a}}}),define("ace/ext/modelist",["require","exports","module"],function(e,t,n){"use strict";function i(e){var t=a.text,n=e.split(/[\/\\]/).pop();for(var i=0;i 0!";if(e==this.$splits)return;if(e>this.$splits){while(this.$splitse)t=this.$editors[this.$splits-1],this.$container.removeChild(t.container),this.$splits--;this.resize()},this.getSplits=function(){return this.$splits},this.getEditor=function(e){return this.$editors[e]},this.getCurrentEditor=function(){return this.$cEditor},this.focus=function(){this.$cEditor.focus()},this.blur=function(){this.$cEditor.blur()},this.setTheme=function(e){this.$editors.forEach(function(t){t.setTheme(e)})},this.setKeyboardHandler=function(e){this.$editors.forEach(function(t){t.setKeyboardHandler(e)})},this.forEach=function(e,t){this.$editors.forEach(e,t)},this.$fontSize="",this.setFontSize=function(e){this.$fontSize=e,this.forEach(function(t){t.setFontSize(e)})},this.$cloneSession=function(e){var t=new a(e.getDocument(),e.getMode()),n=e.getUndoManager();return t.setUndoManager(n),t.setTabSize(e.getTabSize()),t.setUseSoftTabs(e.getUseSoftTabs()),t.setOverwrite(e.getOverwrite()),t.setBreakpoints(e.getBreakpoints()),t.setUseWrapMode(e.getUseWrapMode()),t.setUseWorker(e.getUseWorker()),t.setWrapLimitRange(e.$wrapLimitRange.min,e.$wrapLimitRange.max),t.$foldData=e.$cloneFoldData(),t},this.setSession=function(e,t){var n;t==null?n=this.$cEditor:n=this.$editors[t];var r=this.$editors.some(function(t){return t.session===e});return r&&(e=this.$cloneSession(e)),n.setSession(e),e},this.getOrientation=function(){return this.$orientation},this.setOrientation=function(e){if(this.$orientation==e)return;this.$orientation=e,this.resize()},this.resize=function(){var e=this.$container.clientWidth,t=this.$container.clientHeight,n;if(this.$orientation==this.BESIDE){var r=e/this.$splits;for(var i=0;i")}return this.textContent&&e.push(this.textContent),this.type!="fragment"&&e.push(""),e.join("")},e}(),l={createTextNode:function(e,t){return a(e)},createElement:function(e){return new f(e)},createFragment:function(){return new f("fragment")}},c=function(){this.config={},this.dom=l};c.prototype=i.prototype;var h=function(e,t,n){var r=e.className.match(/lang-(\w+)/),i=t.mode||r&&"ace/mode/"+r[1];if(!i)return!1;var s=t.theme||"ace/theme/textmate",o="",a=[];if(e.firstElementChild){var f=0;for(var l=0;l");return}e.push("")}var s=null,o={mode:"Mode:",wrap:"Soft Wrap:",theme:"Theme:",fontSize:"Font Size:",showGutter:"Display Gutter:",keybindings:"Keyboard",showPrintMargin:"Show Print Margin:",useSoftTabs:"Use Soft Tabs:",showInvisibles:"Show Invisibles"},u={mode:{text:"Plain",javascript:"JavaScript",xml:"XML",html:"HTML",css:"CSS",scss:"SCSS",python:"Python",php:"PHP",java:"Java",ruby:"Ruby",c_cpp:"C/C++",coffee:"CoffeeScript",json:"json",perl:"Perl",clojure:"Clojure",ocaml:"OCaml",csharp:"C#",haxe:"haXe",svg:"SVG",textile:"Textile",groovy:"Groovy",liquid:"Liquid",Scala:"Scala"},theme:{clouds:"Clouds",clouds_midnight:"Clouds Midnight",cobalt:"Cobalt",crimson_editor:"Crimson Editor",dawn:"Dawn",gob:"Green on Black",eclipse:"Eclipse",idle_fingers:"Idle Fingers",kr_theme:"Kr Theme",merbivore:"Merbivore",merbivore_soft:"Merbivore Soft",mono_industrial:"Mono Industrial",monokai:"Monokai",pastel_on_dark:"Pastel On Dark",solarized_dark:"Solarized Dark",solarized_light:"Solarized Light",textmate:"Textmate",twilight:"Twilight",vibrant_ink:"Vibrant Ink"},showGutter:s,fontSize:{"10px":"10px","11px":"11px","12px":"12px","14px":"14px","16px":"16px"},wrap:{off:"Off",40:"40",80:"80",free:"Free"},keybindings:{ace:"ace",vim:"vim",emacs:"emacs"},showPrintMargin:s,useSoftTabs:s,showInvisibles:s},a=[];a.push("");for(var l in t.defaultOptions)a.push(""),a.push("");a.push("
      SettingValue
      ",o[l],""),f(a,l,u[l],i.getOption(l)),a.push("
      "),e.innerHTML=a.join("");var c=function(e){var t=e.currentTarget;i.setOption(t.title,t.value)},h=function(e){var t=e.currentTarget;i.setOption(t.title,t.checked)},p=e.getElementsByTagName("select");for(var d=0;d0&&!(s%l)&&!(f%l)&&(r[l]=(r[l]||0)+1),n[f]=(n[f]||0)+1}s=f}while(up.score&&(p={score:v,length:u})}if(p.score&&p.score>1.4)var m=p.length;if(i>d+1){if(m==1||di+1)return{ch:" ",length:m}},t.detectIndentation=function(e){var n=e.getLines(0,1e3),r=t.$detectIndentation(n)||{};return r.ch&&e.setUseSoftTabs(r.ch==" "),r.length&&e.setTabSize(r.length),r},t.trimTrailingSpace=function(e,t){var n=e.getDocument(),r=n.getAllLines(),i=t&&t.trimEmpty?-1:0,s=[],o=-1;t&&t.keepCursorPosition&&(e.selection.rangeCount?e.selection.rangeList.ranges.forEach(function(e,t,n){var r=n[t+1];if(r&&r.cursor.row==e.cursor.row)return;s.push(e.cursor)}):s.push(e.selection.getCursor()),o=0);var u=s[o]&&s[o].row;for(var a=0,f=r.length;ai&&(c=s[o].column),o++,u=s[o]?s[o].row:-1),c>i&&n.removeInLine(a,c,l.length)}},t.convertIndentation=function(e,t,n){var i=e.getTabString()[0],s=e.getTabSize();n||(n=s),t||(t=i);var o=t==" "?t:r.stringRepeat(t,n),u=e.doc,a=u.getAllLines(),f={},l={};for(var c=0,h=a.length;c30&&this.$data.shift()},append:function(e){var t=this.$data.length-1,n=this.$data[t]||"";e&&(n+=e),n&&(this.$data[t]=n)},get:function(e){return e=e||1,this.$data.slice(this.$data.length-e,this.$data.length).reverse().join("\n")},pop:function(){return this.$data.length>1&&this.$data.pop(),this.get()},rotate:function(){return this.$data.unshift(this.$data.pop()),this.get()}}}); (function() { - window.require(["ace/keyboard/emacs"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/keybinding-sublime.js b/www/js/ace/keybinding-sublime.js deleted file mode 100644 index 3d1e5ff49..000000000 --- a/www/js/ace/keybinding-sublime.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/keyboard/sublime",["require","exports","module","ace/keyboard/hash_handler"],function(e,t,n){"use strict";function i(e,t,n){function f(e){return e?/\s/.test(e)?"s":e=="_"?"_":e.toUpperCase()==e&&e.toLowerCase()!=e?"W":e.toUpperCase()!=e&&e.toLowerCase()==e?"w":"o":"-"}var r=e.selection,i=r.lead.row,s=r.lead.column,o=e.session.getLine(i);if(!o[s+t]){var u=(n?"selectWord":"moveCursorShortWord")+(t==1?"Right":"Left");return e.selection[u]()}t==-1&&s--;while(o[s]){var a=f(o[s])+f(o[s+t]);s+=t;if(t==1){if(a=="WW"&&f(o[s+1])=="w")break}else{if(a=="wW"){if(f(o[s-1])=="W"){s-=1;break}continue}if(a=="Ww")break}if(/w[s_oW]|_[sWo]|o[s_wW]|s[W]|W[so]/.test(a))break}t==-1&&s++,n?e.selection.moveCursorTo(i,s):e.selection.moveTo(i,s)}var r=e("../keyboard/hash_handler").HashHandler;t.handler=new r,t.handler.addCommands([{name:"find_all_under",exec:function(e){e.selection.isEmpty()&&e.selection.selectWord(),e.findAll()},readOnly:!0},{name:"find_under",exec:function(e){e.selection.isEmpty()&&e.selection.selectWord(),e.findNext()},readOnly:!0},{name:"find_under_prev",exec:function(e){e.selection.isEmpty()&&e.selection.selectWord(),e.findPrevious()},readOnly:!0},{name:"find_under_expand",exec:function(e){e.selectMore(1,!1,!0)},scrollIntoView:"animate",readOnly:!0},{name:"find_under_expand_skip",exec:function(e){e.selectMore(1,!0,!0)},scrollIntoView:"animate",readOnly:!0},{name:"delete_to_hard_bol",exec:function(e){var t=e.selection.getCursor();e.session.remove({start:{row:t.row,column:0},end:t})},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"delete_to_hard_eol",exec:function(e){var t=e.selection.getCursor();e.session.remove({start:t,end:{row:t.row,column:Infinity}})},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"moveToWordStartLeft",exec:function(e){e.selection.moveCursorLongWordLeft(),e.clearSelection()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"moveToWordEndRight",exec:function(e){e.selection.moveCursorLongWordRight(),e.clearSelection()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"selectToWordStartLeft",exec:function(e){var t=e.selection;t.$moveSelection(t.moveCursorLongWordLeft)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"selectToWordEndRight",exec:function(e){var t=e.selection;t.$moveSelection(t.moveCursorLongWordRight)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"selectSubWordRight",exec:function(e){i(e,1,!0)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectSubWordLeft",exec:function(e){i(e,-1,!0)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"moveSubWordRight",exec:function(e){i(e,1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"moveSubWordLeft",exec:function(e){i(e,-1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0}]),[{bindKey:{mac:"cmd-k cmd-backspace|cmd-backspace",win:"ctrl-shift-backspace|ctrl-k ctrl-backspace"},name:"removetolinestarthard"},{bindKey:{mac:"cmd-k cmd-k|cmd-delete|ctrl-k",win:"ctrl-shift-delete|ctrl-k ctrl-k"},name:"removetolineendhard"},{bindKey:{mac:"cmd-shift-d",win:"ctrl-shift-d"},name:"duplicateSelection"},{bindKey:{mac:"cmd-l",win:"ctrl-l"},name:"expandtoline"},{bindKey:{mac:"cmd-shift-a",win:"ctrl-shift-a"},name:"expandSelection",args:{to:"tag"}},{bindKey:{mac:"cmd-shift-j",win:"ctrl-shift-j"},name:"expandSelection",args:{to:"indentation"}},{bindKey:{mac:"ctrl-shift-m",win:"ctrl-shift-m"},name:"expandSelection",args:{to:"brackets"}},{bindKey:{mac:"cmd-shift-space",win:"ctrl-shift-space"},name:"expandSelection",args:{to:"scope"}},{bindKey:{mac:"ctrl-cmd-g",win:"alt-f3"},name:"find_all_under"},{bindKey:{mac:"alt-cmd-g",win:"ctrl-f3"},name:"find_under"},{bindKey:{mac:"shift-alt-cmd-g",win:"ctrl-shift-f3"},name:"find_under_prev"},{bindKey:{mac:"cmd-g",win:"f3"},name:"findnext"},{bindKey:{mac:"shift-cmd-g",win:"shift-f3"},name:"findprevious"},{bindKey:{mac:"cmd-d",win:"ctrl-d"},name:"find_under_expand"},{bindKey:{mac:"cmd-k cmd-d",win:"ctrl-k ctrl-d"},name:"find_under_expand_skip"},{bindKey:{mac:"cmd-alt-[",win:"ctrl-shift-["},name:"toggleFoldWidget"},{bindKey:{mac:"cmd-alt-]",win:"ctrl-shift-]"},name:"unfold"},{bindKey:{mac:"cmd-k cmd-0|cmd-k cmd-j",win:"ctrl-k ctrl-0|ctrl-k ctrl-j"},name:"unfoldall"},{bindKey:{mac:"cmd-k cmd-1",win:"ctrl-k ctrl-1"},name:"foldOther",args:{level:1}},{bindKey:{win:"ctrl-left",mac:"alt-left"},name:"moveToWordStartLeft"},{bindKey:{win:"ctrl-right",mac:"alt-right"},name:"moveToWordEndRight"},{bindKey:{win:"ctrl-shift-left",mac:"alt-shift-left"},name:"selectToWordStartLeft"},{bindKey:{win:"ctrl-shift-right",mac:"alt-shift-right"},name:"selectToWordEndRight"},{bindKey:{mac:"ctrl-alt-shift-right|ctrl-shift-right",win:"alt-shift-right"},name:"selectSubWordRight"},{bindKey:{mac:"ctrl-alt-shift-left|ctrl-shift-left",win:"alt-shift-left"},name:"selectSubWordLeft"},{bindKey:{mac:"ctrl-alt-right|ctrl-right",win:"alt-right"},name:"moveSubWordRight"},{bindKey:{mac:"ctrl-alt-left|ctrl-left",win:"alt-left"},name:"moveSubWordLeft"},{bindKey:{mac:"ctrl-m",win:"ctrl-m"},name:"jumptomatching",args:{to:"brackets"}},{bindKey:{mac:"ctrl-f6",win:"ctrl-f6"},name:"goToNextError"},{bindKey:{mac:"ctrl-shift-f6",win:"ctrl-shift-f6"},name:"goToPreviousError"},{bindKey:{mac:"ctrl-o"},name:"splitline"},{bindKey:{mac:"ctrl-shift-w",win:"alt-shift-w"},name:"surrowndWithTag"},{bindKey:{mac:"cmd-alt-.",win:"alt-."},name:"close_tag"},{bindKey:{mac:"cmd-j",win:"ctrl-j"},name:"joinlines"},{bindKey:{mac:"ctrl--",win:"alt--"},name:"jumpBack"},{bindKey:{mac:"ctrl-shift--",win:"alt-shift--"},name:"jumpForward"},{bindKey:{mac:"cmd-k cmd-l",win:"ctrl-k ctrl-l"},name:"tolowercase"},{bindKey:{mac:"cmd-k cmd-u",win:"ctrl-k ctrl-u"},name:"touppercase"},{bindKey:{mac:"cmd-shift-v",win:"ctrl-shift-v"},name:"paste_and_indent"},{bindKey:{mac:"cmd-k cmd-v|cmd-alt-v",win:"ctrl-k ctrl-v"},name:"paste_from_history"},{bindKey:{mac:"cmd-shift-enter",win:"ctrl-shift-enter"},name:"addLineBefore"},{bindKey:{mac:"cmd-enter",win:"ctrl-enter"},name:"addLineAfter"},{bindKey:{mac:"ctrl-shift-k",win:"ctrl-shift-k"},name:"removeline"},{bindKey:{mac:"ctrl-alt-up",win:"ctrl-up"},name:"scrollup"},{bindKey:{mac:"ctrl-alt-down",win:"ctrl-down"},name:"scrolldown"},{bindKey:{mac:"cmd-a",win:"ctrl-a"},name:"selectall"},{bindKey:{linux:"alt-shift-down",mac:"ctrl-shift-down",win:"ctrl-alt-down"},name:"addCursorBelow"},{bindKey:{linux:"alt-shift-up",mac:"ctrl-shift-up",win:"ctrl-alt-up"},name:"addCursorAbove"},{bindKey:{mac:"cmd-k cmd-c|ctrl-l",win:"ctrl-k ctrl-c"},name:"centerselection"},{bindKey:{mac:"f5",win:"f9"},name:"sortlines"},{bindKey:{mac:"ctrl-f5",win:"ctrl-f9"},name:"sortlines",args:{caseSensitive:!0}},{bindKey:{mac:"cmd-shift-l",win:"ctrl-shift-l"},name:"splitSelectionIntoLines"},{bindKey:{mac:"ctrl-cmd-down",win:"ctrl-shift-down"},name:"movelinesdown"},{bindKey:{mac:"ctrl-cmd-up",win:"ctrl-shift-up"},name:"movelinesup"},{bindKey:{mac:"alt-down",win:"alt-down"},name:"modifyNumberDown"},{bindKey:{mac:"alt-up",win:"alt-up"},name:"modifyNumberUp"},{bindKey:{mac:"cmd-/",win:"ctrl-/"},name:"togglecomment"},{bindKey:{mac:"cmd-alt-/",win:"ctrl-shift-/"},name:"toggleBlockComment"},{bindKey:{linux:"ctrl-alt-q",mac:"ctrl-q",win:"ctrl-q"},name:"togglerecording"},{bindKey:{linux:"ctrl-alt-shift-q",mac:"ctrl-shift-q",win:"ctrl-shift-q"},name:"replaymacro"},{bindKey:{mac:"ctrl-t",win:"ctrl-t"},name:"transpose"}].forEach(function(e){var n=t.handler.commands[e.name];n&&(n.bindKey=e.bindKey),t.handler.bindKey(e.bindKey,n||e.name)})}); (function() { - window.require(["ace/keyboard/sublime"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/keybinding-vim.js b/www/js/ace/keybinding-vim.js deleted file mode 100644 index 9560c7de5..000000000 --- a/www/js/ace/keybinding-vim.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/ext/hardwrap",["require","exports","module","ace/range","ace/editor","ace/config"],function(e,t,n){"use strict";function i(e,t){function m(e,t,n){if(e.lengthn)return{start:o.index,end:o.index+o[2].length};if(s&&s[2])return u=t+s[2].length,{start:u,end:u+s[3].length}}var n=t.column||e.getOption("printMarginColumn"),i=t.allowMerge!=0,s=Math.min(t.startRow,t.endRow),o=Math.max(t.startRow,t.endRow),u=e.session;while(s<=o){var a=u.getLine(s);if(a.length>n){var f=m(a,n,5);if(f){var l=/^\s*/.exec(a)[0];u.replace(new r(s,f.start,s,f.end),"\n"+l)}o++}else if(i&&/\S/.test(a)&&s!=o){var c=u.getLine(s+1);if(c&&/\S/.test(c)){var h=a.replace(/\s+$/,""),p=c.replace(/^\s+/,""),d=h+" "+p,f=m(d,n,5);if(f&&f.start>h.length||d.length"+t(e.head):Array.isArray(e)?"["+e.map(function(e){return t(e)})+"]":JSON.stringify(e)}var e="";for(var n=0;n=n.ch-1){var r=e.getLine(t.line),i=r.charCodeAt(t.ch);55296<=i&&i<=55551&&(n.ch+=1)}return{start:t,end:n}}function C(e){e.setOption("disableInput",!0),e.setOption("showCursorWhenSelecting",!1),m.signal(e,"vim-mode-change",{mode:"normal"}),e.on("cursorActivity",cr),Y(e),m.on(e.getInputField(),"paste",L(e))}function k(e){e.setOption("disableInput",!1),e.off("cursorActivity",cr),m.off(e.getInputField(),"paste",L(e)),e.state.vim=null,Wn&&clearTimeout(Wn)}function L(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=function(){t.insertMode||(e.setCursor(Mt(e.getCursor(),0,1)),kt.enterInsertMode(e,{},t))}),t.onPasteFn}function j(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function F(e){return/^[a-z]$/.test(e)}function I(e){return"()[]{}".indexOf(e)!=-1}function q(e){return A.test(e)}function R(e){return H.test(e)}function U(e){return/^\s*$/.test(e)}function z(e){return".?!".indexOf(e)!=-1}function W(e,t){for(var n=0;n|./gi,o;while(o=s.exec(t)){var u=o[0],a=i.insertMode;if(st){ot(u);continue}var f=nt.handleKey(e,u,"mapping");if(!f&&a&&i.insertMode){if(u[0]=="<"){var l=u.toLowerCase().slice(1,-1),c=l.split("-");l=c.pop()||"";if(l=="lt")u="<";else if(l=="space")u=" ";else if(l=="cr")u="\n";else{if(lt.hasOwnProperty(l)){u=lt[l],mr(e,u);continue}u=u[0],s.lastIndex=o.index+1}}e.replaceSelection(u)}}}finally{rt.pop(),it=rt.length?r:!1;if(!rt.length&&st){var h=st;st=null,qn(e,h)}}}function ct(e,t){var n=e.key;if(ft[n])return;n.length>1&&n[0]=="n"&&(n=n.replace("Numpad","")),n=at[n]||n;var r="";e.ctrlKey&&(r+="C-"),e.altKey&&(r+="A-"),e.metaKey&&(r+="M-"),m.isMac&&e.altKey&&!e.metaKey&&!e.ctrlKey&&(r=r.slice(2)),(r||n.length>1)&&e.shiftKey&&(r+="S-");if(t&&!t.expectLiteralNext&&n.length==1)if(N.keymap&&n in N.keymap){if(N.remapCtrl!=0||!r)n=N.keymap[n]}else if(n.charCodeAt(0)>255){var i=e.code&&e.code.slice(-1)||"";e.shiftKey||(i=i.toLowerCase()),i&&(n=i)}return r+=n,r.length>1&&(r="<"+r+">"),r}function ht(e,t){N.string!==e&&(N=pt(e)),N.remapCtrl=t}function pt(e){function n(e){return e.split(/\\?(.)/).filter(Boolean)}var t={};return e?(e.split(/((?:[^\\,]|\\.)+),/).map(function(e){if(!e)return;var r=e.split(/((?:[^\\;]|\\.)+);/);if(r.length==3){var i=n(r[1]),s=n(r[2]);if(i.length!==s.length)return;for(var o=0;oa&&(l=-1),a+=l,a>u&&(a-=2)}return new w(s,a)}function Ot(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function Mt(e,t,n){return typeof t=="object"&&(n=t.ch,t=t.line),new w(e.line+t,e.ch+n)}function _t(e,t,n,r){r.operator&&(n="operatorPending");var i,s=[],o=[],u=it?t.length-x:0;for(var a=u;a",r=t.slice(-10)=="";if(n||r){var i=t.length-(n?11:10),s=e.slice(0,i),o=t.slice(0,i);return s==o&&e.length>i?"full":o.indexOf(s)==0?"partial":!1}return e==t?"full":t.indexOf(e)==0?"partial":!1}function Pt(e){var t=/^.*(<[^>]+>)$/.exec(e),n=t?t[1]:e.slice(-1);if(n.length>1)switch(n){case"":n="\n";break;case"":n=" ";break;default:n=""}return n}function Ht(e,t,n){return function(){for(var r=0;r2&&(t=It.apply(undefined,Array.prototype.slice.call(arguments,1))),Ft(e,t)?e:t}function qt(e,t){return arguments.length>2&&(t=qt.apply(undefined,Array.prototype.slice.call(arguments,1))),Ft(e,t)?t:e}function Rt(e,t,n){var r=Ft(e,t),i=Ft(t,n);return r&&i}function Ut(e,t){return e.getLine(t).length}function zt(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function Wt(e){return e.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}function Xt(e,t,n){var r=Ut(e,t),i=(new Array(n-r+1)).join(" ");e.setCursor(new w(t,r)),e.replaceRange(i,e.getCursor())}function Vt(e,t){var n=[],r=e.listSelections(),i=Bt(e.clipPos(t)),s=!jt(t,i),o=e.getCursor("head"),u=Jt(r,o),a=jt(r[u].head,r[u].anchor),f=r.length-1,l=f-u>u?f:0,c=r[l].anchor,h=Math.min(c.line,i.line),p=Math.max(c.line,i.line),d=c.ch,v=i.ch,m=r[l].head.ch-d,g=v-d;m>0&&g<=0?(d++,s||v--):m<0&&g>=0?(d--,a||v++):m<0&&g==-1&&(d--,v++);for(var y=h;y<=p;y++){var b={anchor:new w(y,d),head:new w(y,v)};n.push(b)}return e.setSelections(n),t.ch=v,c.ch=d,c}function $t(e,t,n){var r=[];for(var i=0;ia&&(i.line=a),i.ch=Ut(e,i.line)}else i.ch=0,s.ch=Ut(e,s.line);return{ranges:[{anchor:s,head:i}],primary:0}}if(n=="block"){var f=Math.min(s.line,i.line),l=s.ch,c=Math.max(s.line,i.line),h=i.ch;l0&&s&&U(s);s=i.pop())n.line--,n.ch=0;s?(n.line--,n.ch=Ut(e,n.line)):n.ch=0}}function rn(e,t,n){t.ch=0,n.ch=0,n.line++}function sn(e){if(!e)return 0;var t=e.search(/\S/);return t==-1?e.length:t}function on(e,t,n){var r=t.inclusive,i=t.innerWord,s=t.bigWord,o=t.noSymbol,u=t.multiline,a=n||en(e),f=e.getLine(a.line),l=f,c=a.line,h=c,p=a.ch,d,v=o?O[0]:M[0];if(i&&/\s/.test(f.charAt(p)))v=function(e){return/\s/.test(e)};else{while(!v(f.charAt(p))){p++;if(p>=f.length){if(!u)return null;p--,d=pn(e,a,!0,s,!0);break}}s?v=M[0]:(v=O[0],v(f.charAt(p))||(v=O[1]))}var m=p,g=p;while(v(f.charAt(g))&&g>=0)g--;g++;if(d)m=d.to,h=d.line,l=e.getLine(h),!l&&m==0&&m++;else while(v(f.charAt(m))&&m0)g--;!g&&!b&&(g=E)}}return{start:new w(c,g),end:new w(h,m)}}function un(e,t,n){var r=t;if(!m.findMatchingTag||!m.findEnclosingTag)return{start:r,end:r};var i=m.findMatchingTag(e,t)||m.findEnclosingTag(e,t);return!i||!i.open||!i.close?{start:r,end:r}:n?{start:i.open.from,end:i.close.to}:{start:i.open.to,end:i.close.from}}function an(e,t,n){jt(t,n)||Z.jumpList.add(e,t,n)}function fn(e,t){Z.lastCharacterSearch.increment=e,Z.lastCharacterSearch.forward=t.forward,Z.lastCharacterSearch.selectedCharacter=t.selectedCharacter}function hn(e,t,n,r){var i=Bt(e.getCursor()),s=n?1:-1,o=n?e.lineCount():-1,u=i.ch,a=i.line,f=e.getLine(a),l={lineText:f,nextCh:f.charAt(u),lastCh:null,index:u,symb:r,reverseSymb:(n?{")":"(","}":"{"}:{"(":")","{":"}"})[r],forward:n,depth:0,curMoveThrough:!1},c=ln[r];if(!c)return i;var h=cn[c].init,p=cn[c].isComplete;h&&h(l);while(a!==o&&t){l.index+=s,l.nextCh=l.lineText.charAt(l.index);if(!l.nextCh){a+=s,l.lineText=e.getLine(a)||"";if(s>0)l.index=0;else{var d=l.lineText.length;l.index=d>0?d-1:0}l.nextCh=l.lineText.charAt(l.index)}p(l)&&(i.line=a,i.ch=l.index,t--)}return l.nextCh||l.curMoveThrough?new w(a,l.index):i}function pn(e,t,n,r,i){var s=t.line,o=t.ch,u=e.getLine(s),a=n?1:-1,f=r?M:O;if(i&&u==""){s+=a,u=e.getLine(s);if(!j(e,s))return null;o=n?0:u.length}for(;;){if(i&&u=="")return{from:0,to:0,line:s};var l=a>0?u.length:-1,c=l,h=l;while(o!=l){var p=!1;for(var d=0;d0?0:u.length}}function dn(e,t,n,r,i,s){var o=Bt(t),u=[];(r&&!i||!r&&i)&&n++;var a=!r||!i;for(var f=0;f0?1:-1;var n=e.ace.session.getFoldLine(t);n&&t+r>n.start.row&&t+r0?n.end.row:n.start.row)-t)}var s=t.line,o=e.firstLine(),u=e.lastLine(),a,f,l=s;if(r){while(o<=l&&l<=u&&n>0)p(l),h(l,r)&&n--,l+=r;return new w(l,0)}var d=e.state.vim;if(d.visualLine&&h(s,1,!0)){var v=d.sel.anchor;h(v.line,-1,!0)&&(!i||v.line!=s)&&(s+=1)}var m=c(s);for(l=s;l<=u&&n;l++)h(l,1,!0)&&(!i||c(l)!=m)&&n--;f=new w(l,0),l>u&&!m?m=!0:i=!1;for(l=s;l>o;l--)if(!i||c(l)==m||l==s)if(h(l,-1,!0))break;return a=new w(l,0),{start:a,end:f}}function En(e,t,n,r,i){function s(e){e.pos+e.dir<0||e.pos+e.dir>=e.line.length?e.line=null:e.pos+=e.dir}function o(e,t,n,r){var o=e.getLine(t),u={line:o,ln:t,pos:n,dir:r};if(u.line==="")return{ln:u.ln,pos:u.pos};var a=u.pos;s(u);while(u.line!==null){a=u.pos;if(z(u.line[u.pos])){if(!i)return{ln:u.ln,pos:u.pos+1};s(u);while(u.line!==null){if(!U(u.line[u.pos]))break;a=u.pos,s(u)}return{ln:u.ln,pos:a+1}}s(u)}return{ln:u.ln,pos:a+1}}function u(e,t,n,r){var o=e.getLine(t),u={line:o,ln:t,pos:n,dir:r};if(u.line==="")return{ln:u.ln,pos:u.pos};var a=u.pos;s(u);while(u.line!==null){if(!U(u.line[u.pos])&&!z(u.line[u.pos]))a=u.pos;else if(z(u.line[u.pos]))return i?U(u.line[u.pos+1])?{ln:u.ln,pos:u.pos+1}:{ln:u.ln,pos:a}:{ln:u.ln,pos:a};s(u)}return u.line=o,i&&U(u.line[u.pos])?{ln:u.ln,pos:u.pos}:{ln:u.ln,pos:a}}var a={ln:t.line,pos:t.ch};while(n>0)r<0?a=u(e,a.ln,a.pos,r):a=o(e,a.ln,a.pos,r),n--;return new w(a.ln,a.pos)}function Sn(e,t,n,r){function i(e,t){if(t.pos+t.dir<0||t.pos+t.dir>=t.line.length){t.ln+=t.dir;if(!j(e,t.ln)){t.line=null,t.ln=null,t.pos=null;return}t.line=e.getLine(t.ln),t.pos=t.dir>0?0:t.line.length-1}else t.pos+=t.dir}function s(e,t,n,r){var s=e.getLine(t),o=s==="",u={line:s,ln:t,pos:n,dir:r},a={ln:u.ln,pos:u.pos},f=u.line==="";i(e,u);while(u.line!==null){a.ln=u.ln,a.pos=u.pos;if(u.line===""&&!f)return{ln:u.ln,pos:u.pos};if(o&&u.line!==""&&!U(u.line[u.pos]))return{ln:u.ln,pos:u.pos};z(u.line[u.pos])&&!o&&(u.pos===u.line.length-1||U(u.line[u.pos+1]))&&(o=!0),i(e,u)}var s=e.getLine(a.ln);a.pos=0;for(var l=s.length-1;l>=0;--l)if(!U(s[l])){a.pos=l;break}return a}function o(e,t,n,r){var s=e.getLine(t),o={line:s,ln:t,pos:n,dir:r},u={ln:o.ln,pos:null},a=o.line==="";i(e,o);while(o.line!==null){if(o.line===""&&!a)return u.pos!==null?u:{ln:o.ln,pos:o.pos};if(!(!z(o.line[o.pos])||u.pos===null||o.ln===u.ln&&o.pos+1===u.pos))return u;o.line!==""&&!U(o.line[o.pos])&&(a=!1,u={ln:o.ln,pos:o.pos}),i(e,o)}var s=e.getLine(u.ln);u.pos=0;for(var f=0;f0)r<0?u=o(e,u.ln,u.pos,r):u=s(e,u.ln,u.pos,r),n--;return new w(u.ln,u.pos)}function xn(e,t,n,r){var i=t,s,o,u={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/,"<":/[<>]/,">":/[<>]/}[n],a={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{","<":"<",">":"<"}[n],f=e.getLine(i.line).charAt(i.ch),l=f===a?1:0;s=e.scanForBracket(new w(i.line,i.ch+l),-1,undefined,{bracketRegex:u}),o=e.scanForBracket(new w(i.line,i.ch+l),1,undefined,{bracketRegex:u});if(!s||!o)return null;s=s.pos,o=o.pos;if(s.line==o.line&&s.ch>o.ch||s.line>o.line){var c=s;s=o,o=c}return r?o.ch+=1:s.ch+=1,{start:s,end:o}}function Tn(e,t,n,r){var i=Bt(t),s=e.getLine(i.line),o=s.split(""),u,a,f,l,c=o.indexOf(n);if(i.ch-1&&!u;f--)o[f]==n&&(u=f+1);if(u&&!a)for(f=u,l=o.length;f=t&&e<=n:e==t}function Qn(e){var t=e.ace.renderer;return{top:t.getFirstFullyVisibleRow(),bottom:t.getLastFullyVisibleRow()}}function Gn(e,t,n){if(n=="'"||n=="`")return Z.jumpList.find(e,-1)||new w(0,0);if(n==".")return Yn(e);var r=t.marks[n];return r&&r.find()}function Yn(e){if(e.getLastEditEnd)return e.getLastEditEnd();var t=e.doc.history.done;for(var n=t.length;n--;)if(t[n].changes)return Bt(t[n].changes[0].to)}function nr(e,t,n,r,i,s,o,u,a){function p(){e.operation(function(){while(!f)d(),g();y()})}function d(){var t=e.getRange(s.from(),s.to()),n=t.replace(o,u),r=s.to().line;s.replace(n),c=s.to().line,i+=c-r,h=c":case"":case"":y(r)}return f&&y(r),!0}e.state.vim.exMode=!0;var f=!1,l,c,h;g();if(f){Fn(e,"No matches for "+o.source);return}if(!t){p(),a&&a();return}qn(e,{prefix:jn("span","replace with ",jn("strong",u)," (y/n/a/q/l)"),onKeyDown:b})}function rr(e,t){var n=e.state.vim,r=Z.macroModeState,i=Z.registerController.getRegister("."),s=r.isPlaying,o=r.lastInsertModeChanges;s||(e.off("change",lr),n.insertEnd&&n.insertEnd.clear(),n.insertEnd=null,m.off(e.getInputField(),"keydown",dr)),!s&&n.insertModeRepeat>1&&(vr(e,n,n.insertModeRepeat-1,!0),n.lastEditInputState.repeatOverride=n.insertModeRepeat),delete n.insertModeRepeat,n.insertMode=!1,t||e.setCursor(e.getCursor().line,e.getCursor().ch-1),e.setOption("keyMap","vim"),e.setOption("disableInput",!0),e.toggleOverwrite(!1),i.setText(o.changes.join("")),m.signal(e,"vim-mode-change",{mode:"normal"}),r.isRecording&&ar(r)}function ir(e){S.unshift(e)}function sr(e,t,n,r,i){var s={keys:e,type:t};s[t]=n,s[t+"Args"]=r;for(var o in i)s[o]=i[o];ir(s)}function or(e,t,n,r){var i=Z.registerController.getRegister(r);if(r==":"){i.keyBuffer[0]&&tr.processCommand(e,i.keyBuffer[0]),n.isPlaying=!1;return}var s=i.keyBuffer,o=0;n.isPlaying=!0,n.replaySearchQueries=i.searchQueries.slice(0);for(var u=0;u|<\w+>|./.exec(a),l=f[0],a=a.substring(f.index+l.length),nt.handleKey(e,l,"macro");if(t.insertMode){var c=i.insertModeChanges[o++].changes;Z.macroModeState.lastInsertModeChanges.changes=c,gr(e,c,1),rr(e)}}}n.isPlaying=!1}function ur(e,t){if(e.isPlaying)return;var n=e.latestRegister,r=Z.registerController.getRegister(n);r&&r.pushText(t)}function ar(e){if(e.isPlaying)return;var t=e.latestRegister,n=Z.registerController.getRegister(t);n&&n.pushInsertModeChanges&&n.pushInsertModeChanges(e.lastInsertModeChanges)}function fr(e,t){if(e.isPlaying)return;var n=e.latestRegister,r=Z.registerController.getRegister(n);r&&r.pushSearchQuery&&r.pushSearchQuery(t)}function lr(e,t){var n=Z.macroModeState,r=n.lastInsertModeChanges;if(!n.isPlaying){var i=e.state.vim;while(t){r.expectCursorActivityForChange=!0;if(r.ignoreCount>1)r.ignoreCount--;else if(t.origin=="+input"||t.origin=="paste"||t.origin===undefined){var s=e.listSelections().length;s>1&&(r.ignoreCount=s);var o=t.text.join("\n");r.maybeReset&&(r.changes=[],r.maybeReset=!1);if(o)if(e.state.overwrite&&!/\n/.test(o))r.changes.push([o]);else{if(o.length>1){var u=i&&i.insertEnd&&i.insertEnd.find(),a=e.getCursor();if(u&&u.line==a.line){var f=u.ch-a.ch;f>0&&f",qt(i,r))}else!t.insertMode&&!n&&(t.lastHPos=e.getCursor().ch)}function pr(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 dr(e){var t=Z.macroModeState,n=t.lastInsertModeChanges,r=m.keyName?m.keyName(e):e.key;if(!r)return;if(r.indexOf("Delete")!=-1||r.indexOf("Backspace")!=-1)n.maybeReset&&(n.changes=[],n.maybeReset=!1),n.changes.push(new pr(r,e))}function vr(e,t,n,r){function u(){s?Et.processAction(e,t,t.lastEditActionCommand):Et.evalInput(e,t)}function a(n){if(i.lastInsertModeChanges.changes.length>0){n=t.lastEditActionCommand?n:1;var r=i.lastInsertModeChanges;gr(e,r.changes,n)}}var i=Z.macroModeState;i.isPlaying=!0;var s=!!t.lastEditActionCommand,o=t.inputState;t.inputState=t.lastEditInputState;if(s&&t.lastEditActionCommand.interlaceInsertRepeat)for(var f=0;f1&&t[0]=="n"&&(t=t.replace("numpad","")),t=yr[t]||t;var i="";n.ctrlKey&&(i+="C-"),n.altKey&&(i+="A-"),(i||t.length>1)&&n.shiftKey&&(i+="S-");if(r&&!r.expectLiteralNext&&t.length==1)if(N.keymap&&t in N.keymap){if(N.remapCtrl!==!1||!i)t=N.keymap[t]}else if(t.charCodeAt(0)>255){var s=n.code&&n.code.slice(-1)||"";n.shiftKey||(s=s.toLowerCase()),s&&(t=s)}return i+=t,i.length>1&&(i="<"+i+">"),i}function Er(e){var t=new e.constructor;return Object.keys(e).forEach(function(n){if(n=="insertEnd")return;var r=e[n];Array.isArray(r)?r=r.slice():r&&typeof r=="object"&&r.constructor!=Object&&(r=Er(r)),t[n]=r}),e.sel&&(t.sel={head:e.sel.head&&Bt(e.sel.head),anchor:e.sel.anchor&&Bt(e.sel.anchor)}),t}function Sr(e,t,n){var r=!1,i=nt.maybeInitVimState_(e),s=i.visualBlock||i.wasInVisualBlock,o=e.ace.inMultiSelectMode;i.wasInVisualBlock&&!o?i.wasInVisualBlock=!1:o&&i.visualBlock&&(i.wasInVisualBlock=!0);if(t==""&&!i.insertMode&&!i.visualMode&&o)e.ace.exitMultiSelectMode();else if(s||!o||e.ace.inVirtualSelectionMode)r=nt.handleKey(e,t,n);else{var u=Er(i),a=i.inputState.changeQueueList||[];e.operation(function(){e.curOp.isVimOp=!0;var s=0;e.ace.forEachSelection(function(){var i=e.ace.selection;e.state.vim.lastHPos=i.$desiredColumn==null?i.lead.column:i.$desiredColumn,e.state.vim.inputState.changeQueue=a[s];var o=e.getCursor("head"),f=e.getCursor("anchor"),l=Ft(o,f)?0:-1,c=Ft(o,f)?-1:0;o=Mt(o,0,l),f=Mt(f,0,c),e.state.vim.sel.head=o,e.state.vim.sel.anchor=f,r=wr(e,t,n),i.$desiredColumn=e.state.vim.lastHPos==-1?null:e.state.vim.lastHPos,e.ace.inVirtualSelectionMode&&(a[s]=e.state.vim.inputState.changeQueue),e.virtualSelectionMode()&&(e.state.vim=Er(u)),s++}),e.curOp.cursorActivity&&!r&&(e.curOp.cursorActivity=!1),i.status=e.state.vim.status,e.state.vim=i,i.inputState.changeQueueList=a,i.inputState.changeQueue=null},!0)}return r&&!i.visualMode&&!i.insert&&i.visualMode!=e.somethingSelected()&&hr(e,i,!0),r}function Tr(e,t){t.off("beforeEndOperation",Tr);var n=t.state.cm.vimCmd;n&&t.execCommand(n.exec?n:n.name,n.args),t.curOp=t.prevOp}var i=e("../range").Range,s=e("../lib/event_emitter").EventEmitter,o=e("../lib/dom"),u=e("../lib/oop"),a=e("../lib/keys"),f=e("../lib/event"),l=e("../search").Search,c=e("../lib/useragent"),h=e("../search_highlight").SearchHighlight,p=e("../commands/multi_select_commands"),d=e("../mode/text").Mode.prototype.tokenRe,v=e("../ext/hardwrap").hardWrap;e("../multi_select");var m=function(e){this.ace=e,this.state={},this.marks={},this.options={},this.$uid=0,this.onChange=this.onChange.bind(this),this.onSelectionChange=this.onSelectionChange.bind(this),this.onBeforeEndOperation=this.onBeforeEndOperation.bind(this),this.ace.on("change",this.onChange),this.ace.on("changeSelection",this.onSelectionChange),this.ace.on("beforeEndOperation",this.onBeforeEndOperation)};m.Pos=function(e,t){if(!(this instanceof w))return new w(e,t);this.line=e,this.ch=t},m.defineOption=function(e,t,n){},m.commands={redo:function(e){e.ace.redo()},undo:function(e){e.ace.undo()},newlineAndIndent:function(e){e.ace.insert("\n")},goLineLeft:function(e){e.ace.selection.moveCursorLineStart()},goLineRight:function(e){e.ace.selection.moveCursorLineEnd()}},m.keyMap={},m.addClass=m.rmClass=function(){},m.e_stop=m.e_preventDefault=f.stopEvent,m.keyName=function(e){var t=a[e.keyCode]||e.key||"";return t.length==1&&(t=t.toUpperCase()),t=f.getModifierString(e).replace(/(^|-)\w/g,function(e){return e.toUpperCase()})+t,t},m.keyMap["default"]=function(e){return function(t){var n=t.ace.commands.commandKeyBinding[e.toLowerCase()];return n&&t.ace.execCommand(n)!==!1}},m.lookupKey=function Nr(e,t,n){t||(t="default"),typeof t=="string"&&(t=m.keyMap[t]||m.keyMap["default"]);var r=typeof t=="function"?t(e):t[e];if(r===!1)return"nothing";if(r==="...")return"multi";if(r!=null&&n(r))return"handled";if(t.fallthrough){if(!Array.isArray(t.fallthrough))return Nr(e,t.fallthrough,n);for(var i=0;i0){a.row+=s,a.column+=a.row==r.row?o:0;continue}!t&&l<=0&&(a.row=n.row,a.column=n.column,l===0&&(a.bias=1))}};var e=function(e,t,n,r){this.cm=e,this.id=t,this.row=n,this.column=r,e.marks[this.id]=this};e.prototype.clear=function(){delete this.cm.marks[this.id]},e.prototype.find=function(){return y(this)},this.setBookmark=function(t,n){var r=new e(this,this.$uid++,t.line,t.ch);if(!n||!n.insertLeft)r.$insertRight=!0;return this.marks[r.id]=r,r},this.moveH=function(e,t){if(t=="char"){var n=this.ace.selection;n.clearSelection(),n.moveCursorBy(0,e)}},this.findPosV=function(e,t,n,r){if(n=="page"){var i=this.ace.renderer,s=i.layerConfig;t*=Math.floor(s.height/s.lineHeight),n="line"}if(n=="line"){var o=this.ace.session.documentToScreenPosition(e.line,e.ch);r!=null&&(o.column=r),o.row+=t,o.row=Math.min(Math.max(0,o.row),this.ace.session.getScreenLength()-1);var u=this.ace.session.screenToDocumentPosition(o.row,o.column);return y(u)}debugger},this.charCoords=function(e,t){if(t=="div"||!t){var n=this.ace.session.documentToScreenPosition(e.line,e.ch);return{left:n.column,top:n.row}}if(t=="local"){var r=this.ace.renderer,n=this.ace.session.documentToScreenPosition(e.line,e.ch),i=r.layerConfig.lineHeight,s=r.layerConfig.characterWidth,o=i*n.row;return{left:n.column*s,top:o,bottom:o+i}}},this.coordsChar=function(e,t){var n=this.ace.renderer;if(t=="local"){var r=Math.max(0,Math.floor(e.top/n.lineHeight)),i=Math.max(0,Math.floor(e.left/n.characterWidth)),s=n.session.screenToDocumentPosition(r,i);return y(s)}if(t=="div")throw"not implemented"},this.getSearchCursor=function(e,t,n){var r=!1,i=!1;e instanceof RegExp&&!e.global&&(r=!e.ignoreCase,e=e.source,i=!0),e=="\\n"&&(e="\n",i=!1);var s=new l;t.ch==undefined&&(t.ch=Number.MAX_VALUE);var o={row:t.line,column:t.ch},u=this,a=null;return{findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(t){s.setOptions({needle:e,caseSensitive:r,wrap:!1,backwards:t,regExp:i,start:a||o});var n=s.find(u.ace.session);return a=n,a&&[!a.isEmpty()]},from:function(){return a&&y(a.start)},to:function(){return a&&y(a.end)},replace:function(e){a&&(a.end=u.ace.session.doc.replace(a,e))}}},this.scrollTo=function(e,t){var n=this.ace.renderer,r=n.layerConfig,i=r.maxHeight;i-=(n.$size.scrollerHeight-n.lineHeight)*n.$scrollPastEnd,t!=null&&this.ace.session.setScrollTop(Math.max(0,Math.min(t,i))),e!=null&&this.ace.session.setScrollLeft(Math.max(0,Math.min(e,r.width)))},this.scrollInfo=function(){return 0},this.scrollIntoView=function(e,t){if(e){var n=this.ace.renderer,r={top:0,bottom:t};n.scrollCursorIntoView(g(e),n.lineHeight*2/n.$size.scrollerHeight,r)}},this.getLine=function(e){return this.ace.session.getLine(e)},this.getRange=function(e,t){return this.ace.session.getTextRange(new i(e.line,e.ch,t.line,t.ch))},this.replaceRange=function(e,t,n){n||(n=t);var r=new i(t.line,t.ch,n.line,n.ch);return this.ace.session.$clipRangeToDocument(r),this.ace.session.replace(r,e)},this.replaceSelection=this.replaceSelections=function(e){var t=Array.isArray(e)&&e,n=this.ace.selection;if(this.ace.inVirtualSelectionMode){this.ace.session.replace(n.getRange(),t?e[0]||"":e);return}n.inVirtualSelectionMode=!0;var r=n.rangeList.ranges;r.length||(r=[this.ace.multiSelect.getRange()]);for(var i=r.length;i--;)this.ace.session.replace(r[i],t?e[i]||"":e);n.inVirtualSelectionMode=!1},this.getSelection=function(){return this.ace.getSelectedText()},this.getSelections=function(){return this.listSelections().map(function(e){return this.getRange(e.anchor,e.head)},this)},this.getInputField=function(){return this.ace.textInput.getElement()},this.getWrapperElement=function(){return this.ace.container};var t={indentWithTabs:"useSoftTabs",indentUnit:"tabSize",tabSize:"tabSize",firstLineNumber:"firstLineNumber",readOnly:"readOnly"};this.setOption=function(e,n){this.state[e]=n;switch(e){case"indentWithTabs":e=t[e],n=!n;break;case"keyMap":this.state.$keyMap=n;return;default:e=t[e]}e&&this.ace.setOption(e,n)},this.getOption=function(e){var n,r=t[e];r&&(n=this.ace.getOption(r));switch(e){case"indentWithTabs":return e=t[e],!n;case"keyMap":return this.state.$keyMap||"vim"}return r?n:this.state[e]},this.toggleOverwrite=function(e){return this.state.overwrite=e,this.ace.setOverwrite(e)},this.addOverlay=function(e){if(!this.$searchHighlight||!this.$searchHighlight.session){var t=new h(null,"ace_highlight-marker","text"),n=this.ace.session.addDynamicMarker(t);t.id=n.id,t.session=this.ace.session,t.destroy=function(e){t.session.off("change",t.updateOnChange),t.session.off("changeEditor",t.destroy),t.session.removeMarker(t.id),t.session=null},t.updateOnChange=function(e){var n=e.start.row;n==e.end.row?t.cache[n]=undefined:t.cache.splice(n,t.cache.length)},t.session.on("changeEditor",t.destroy),t.session.on("change",t.updateOnChange)}var r=new RegExp(e.query.source,"gmi");this.$searchHighlight=e.highlight=t,this.$searchHighlight.setRegexp(r),this.ace.renderer.updateBackMarkers()},this.removeOverlay=function(e){this.$searchHighlight&&this.$searchHighlight.session&&this.$searchHighlight.destroy()},this.getScrollInfo=function(){var e=this.ace.renderer,t=e.layerConfig;return{left:e.scrollLeft,top:e.scrollTop,height:t.maxHeight,width:t.width,clientHeight:t.height,clientWidth:t.width}},this.getValue=function(){return this.ace.getValue()},this.setValue=function(e){return this.ace.setValue(e,-1)},this.getTokenTypeAt=function(e){var t=this.ace.session.getTokenAt(e.line,e.ch);return t&&/comment|string/.test(t.type)?"string":""},this.findMatchingBracket=function(e){var t=this.ace.session.findMatchingBracket(g(e));return{to:t&&y(t)}},this.findMatchingTag=function(e){var t=this.ace.session.getMatchingTags(g(e));if(!t)return;return{open:{from:y(t.openTag.start),to:y(t.openTag.end)},close:{from:y(t.closeTag.start),to:y(t.closeTag.end)}}},this.indentLine=function(e,t){t===!0?this.ace.session.indentRows(e,e," "):t===!1&&this.ace.session.outdentRows(new i(e,0,e,0))},this.indexFromPos=function(e){return this.ace.session.doc.positionToIndex(g(e))},this.posFromIndex=function(e){return y(this.ace.session.doc.indexToPosition(e))},this.focus=function(e){return this.ace.textInput.focus()},this.blur=function(e){return this.ace.blur()},this.defaultTextHeight=function(e){return this.ace.renderer.layerConfig.lineHeight},this.scanForBracket=function(e,t,n,r){var i=r.bracketRegex.source,s=/paren|text|operator|tag/;if(t==1)var o=this.ace.session.$findClosingBracket(i.slice(1,2),g(e),s);else{var o=this.ace.session.$findOpeningBracket(i.slice(-2,-1),{row:e.line,column:e.ch+1},s);!o&&r.bracketRegex&&r.bracketRegex.test(this.getLine(e.line)[e.ch-1])&&(o={row:e.line,column:e.ch-1})}return o&&{pos:y(o)}},this.refresh=function(){return this.ace.resize(!0)},this.getMode=function(){return{name:this.getOption("mode")}},this.execCommand=function(e){if(m.commands.hasOwnProperty(e))return m.commands[e](this);if(e=="indentAuto")return this.ace.execCommand("autoindent");console.log(e+" is not implemented")},this.getLineNumber=function(e){var t=this.$lineHandleChanges;if(!t)return null;var n=e.row;for(var r=0;r0)return null;n-=i.end.row-i.start.row}}return n},this.getLineHandle=function(e){return this.$lineHandleChanges||(this.$lineHandleChanges=[]),{text:this.ace.session.getLine(e),row:e}},this.releaseLineHandles=function(){this.$lineHandleChanges=undefined},this.getLastEditEnd=function(){var e=this.ace.session.$undoManager;if(e&&e.$lastDelta)return y(e.$lastDelta.end)}}.call(m.prototype);var b=m.StringStream=function(e,t){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};b.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||undefined},next:function(){if(this.post},eatSpace:function(){var e=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this.string.length},skipTo:function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},backUp:function(e){this.pos-=e},column:function(){throw"not implemented"},indentation:function(){throw"not implemented"},match:function(e,t,n){if(typeof e!="string"){var s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&t!==!1&&(this.pos+=s[0].length),s)}var r=function(e){return n?e.toLowerCase():e},i=this.string.substr(this.pos,e.length);if(r(i)==r(e))return t!==!1&&(this.pos+=e.length),!0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}}},m.defineExtension=function(e,t){m.prototype[e]=t},o.importCssString(".normal-mode .ace_cursor{\n border: none;\n background-color: rgba(255,0,0,0.5);\n}\n.normal-mode .ace_hidden-cursors .ace_cursor{\n background-color: transparent;\n border: 1px solid red;\n opacity: 0.7\n}\n.ace_dialog {\n position: absolute;\n left: 0; right: 0;\n background: inherit;\n z-index: 15;\n padding: .1em .8em;\n overflow: hidden;\n color: inherit;\n}\n.ace_dialog-top {\n border-bottom: 1px solid #444;\n top: 0;\n}\n.ace_dialog-bottom {\n border-top: 1px solid #444;\n bottom: 0;\n}\n.ace_dialog input {\n border: none;\n outline: none;\n background: transparent;\n width: 20em;\n color: inherit;\n font-family: monospace;\n}","vimMode",!1),function(){function e(e,t,n){var r=e.ace.container,i;return i=r.appendChild(document.createElement("div")),n?i.className="ace_dialog ace_dialog-bottom":i.className="ace_dialog ace_dialog-top",typeof t=="string"?i.innerHTML=t:i.appendChild(t),i}function t(e,t){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=t}m.defineExtension("openDialog",function(n,r,i){function a(e){if(typeof e=="string")f.value=e;else{if(o)return;if(e&&e.type=="blur"&&document.activeElement===f)return;u.state.dialog==s&&(u.state.dialog=null,u.focus()),o=!0,s.remove(),i.onClose&&i.onClose(s);var t=u;t.state.vim&&(t.state.vim.status=null,t.ace._signal("changeStatus"),t.ace.renderer.$loop.schedule(t.ace.renderer.CHANGE_CURSOR))}}if(this.virtualSelectionMode())return;i||(i={}),t(this,null);var s=e(this,n,i.bottom),o=!1,u=this;this.state.dialog=s;var f=s.getElementsByTagName("input")[0],l;if(f)i.value&&(f.value=i.value,i.selectValueOnOpen!==!1&&f.select()),i.onInput&&m.on(f,"input",function(e){i.onInput(e,f.value,a)}),i.onKeyUp&&m.on(f,"keyup",function(e){i.onKeyUp(e,f.value,a)}),m.on(f,"keydown",function(e){if(i&&i.onKeyDown&&i.onKeyDown(e,f.value,a))return;e.keyCode==13&&r(f.value);if(e.keyCode==27||i.closeOnEnter!==!1&&e.keyCode==13)m.e_stop(e),a()}),i.closeOnBlur!==!1&&m.on(f,"blur",a),f.focus();else if(l=s.getElementsByTagName("button")[0])m.on(l,"click",function(){a(),u.focus()}),i.closeOnBlur!==!1&&m.on(l,"blur",a),l.focus();return a}),m.defineExtension("openNotification",function(n,r){function a(){if(s)return;s=!0,clearTimeout(o),i.remove()}if(this.virtualSelectionMode())return;t(this,a);var i=e(this,n,r&&r.bottom),s=!1,o,u=r&&typeof r.duration!="undefined"?r.duration:5e3;return m.on(i,"click",function(e){m.e_preventDefault(e),a()}),u&&(o=setTimeout(a,u)),a})}();var w=m.Pos,S=[{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"}],x=S.length,T=[{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"}],N=pt(""),A=/[\d]/,O=[m.isWordChar,function(e){return e&&!m.isWordChar(e)&&!/\s/.test(e)}],M=[function(e){return/\S/.test(e)}],_=["<",">"],D=["-",'"',".",":","_","/","+"],P=/^\w$/,H;try{H=new RegExp("^[\\p{Lu}]$","u")}catch(B){H=/^[A-Z]$/}var X={};V("filetype",undefined,"string",["ft"],function(e,t){if(t===undefined)return;if(e===undefined){var n=t.getOption("mode");return n=="null"?"":n}var n=e==""?"null":e;t.setOption("mode",n)}),V("textwidth",80,"number",["tw"],function(e,t){if(t===undefined)return;if(e===undefined){var n=t.getOption("textwidth");return n}var r=Math.round(e);r>1&&t.setOption("textwidth",r)});var K=function(){function s(s,o,u){function l(n){var r=++t%e,o=i[r];o&&o.clear(),i[r]=s.setBookmark(n)}var a=t%e,f=i[a];if(f){var c=f.find();c&&!jt(c,o)&&l(o)}else l(o);l(u),n=t,r=t-e+1,r<0&&(r=0)}function o(s,o){t+=o,t>n?t=n:t0?1:-1,f,l=s.getCursor();do{t+=a,u=i[(e+t)%e];if(u&&(f=u.find())&&!jt(l,f))break}while(tr)}return u}function u(e,n){var r=t,i=o(e,n);return t=r,i&&i.find()}var e=100,t=-1,n=0,r=0,i=new Array(e);return{cachedCursor:undefined,add:s,find:u,move:o}},Q=function(e){return e?{changes:e.changes,expectCursorActivityForChange:e.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};G.prototype={exitMacroRecordMode:function(){var e=Z.macroModeState;e.onRecordingDone&&e.onRecordingDone(),e.onRecordingDone=undefined,e.isRecording=!1},enterMacroRecordMode:function(e,t){var n=Z.registerController.getRegister(t);if(n){n.clear(),this.latestRegister=t;if(e.openDialog){var r=jn("span",{"class":"cm-vim-message"},"recording @"+t);this.onRecordingDone=e.openDialog(r,null,{bottom:!0})}this.isRecording=!0}}};var Z,tt,nt={enterVimMode:C,leaveVimMode:k,buildKeyMap:function(){},getRegisterController:function(){return Z.registerController},resetVimGlobalState_:et,getVimGlobalState_:function(){return Z},maybeInitVimState_:Y,suppressErrorLogging:!1,InsertModeKey:pr,map:function(e,t,n){tr.map(e,t,n)},unmap:function(e,t){return tr.unmap(e,t)},noremap:function(e,t,n){tr.map(e,t,n,!0)},mapclear:function(e){var t=S.length,n=x,r=S.slice(0,t-n);S=S.slice(t-n);if(e)for(var i=r.length-1;i>=0;i--){var s=r[i];if(e!==s.context)if(s.context)this._mapCommand(s);else{var o=["normal","insert","visual"];for(var u in o)if(o[u]!==e){var a={};for(var f in s)a[f]=s[f];a.context=o[u],this._mapCommand(a)}}}},langmap:ht,vimKeyFromEvent:ct,setOption:$,getOption:J,defineOption:V,defineEx:function(e,t,n){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');er[e]=n,tr.commandMap_[t]={name:e,shortName:t,type:"api"}},handleKey:function(e,t,n){var r=this.findKey(e,t,n);if(typeof r=="function")return r()},multiSelectHandleKey:Sr,findKey:function(e,t,n){function i(){var r=Z.macroModeState;if(r.isRecording){if(t=="q")return r.exitMacroRecordMode(),vt(e),!0;n!="mapping"&&ur(r,t)}}function s(){if(t==""){if(r.visualMode)tn(e);else{if(!r.insertMode)return;rr(e)}return vt(e),!0}}function o(){if(s())return!0;r.inputState.keyBuffer.push(t);var n=r.inputState.keyBuffer.join(""),i=t.length==1,o=Et.matchCommand(n,S,r.inputState,"insert"),u=r.inputState.changeQueue;if(o.type=="none")return vt(e),!1;if(o.type=="partial"){o.expectLiteralNext&&(r.expectLiteralNext=!0),tt&&window.clearTimeout(tt),tt=i&&window.setTimeout(function(){r.insertMode&&r.inputState.keyBuffer.length&&vt(e)},J("insertModeEscKeysTimeout"));if(i){var a=e.listSelections();if(!u||u.removed.length!=a.length)u=r.inputState.changeQueue=new mt;u.inserted+=t;for(var f=0;f0||this.motionRepeat.length>0)e=1,this.prefixRepeat.length>0&&(e*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(e*=parseInt(this.motionRepeat.join(""),10));return e},gt.prototype={setText:function(e,t,n){this.keyBuffer=[e||""],this.linewise=!!t,this.blockwise=!!n},pushText:function(e,t){t&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(e)},pushInsertModeChanges:function(e){this.insertModeChanges.push(Q(e))},pushSearchQuery:function(e){this.searchQueries.push(e)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},bt.prototype={pushText:function(e,t,n,r,i){if(e==="_")return;r&&n.charAt(n.length-1)!=="\n"&&(n+="\n");var s=this.isValidRegister(e)?this.getRegister(e):null;if(!s){switch(t){case"yank":this.registers[0]=new gt(n,r,i);break;case"delete":case"change":n.indexOf("\n")==-1?this.registers["-"]=new gt(n,r):(this.shiftNumericRegisters_(),this.registers[1]=new gt(n,r))}this.unnamedRegister.setText(n,r,i);return}var o=R(e);o?s.pushText(n,r):s.setText(n,r,i),e==="+"&&typeof navigator!="undefined"&&typeof navigator.clipboard!="undefined"&&typeof navigator.clipboard.readText=="function"&&navigator.clipboard.writeText(n),this.unnamedRegister.setText(s.toString(),r)},getRegister:function(e){return this.isValidRegister(e)?(e=e.toLowerCase(),this.registers[e]||(this.registers[e]=new gt),this.registers[e]):this.unnamedRegister},isValidRegister:function(e){return e&&(W(e,D)||P.test(e))},shiftNumericRegisters_:function(){for(var e=9;e>=2;e--)this.registers[e]=this.getRegister(""+(e-1))}},wt.prototype={nextMatch:function(e,t){var n=this.historyBuffer,r=t?-1:1;this.initialPrefix===null&&(this.initialPrefix=e);for(var i=this.iterator+r;t?i>=0:i=n.length)return this.iterator=n.length,this.initialPrefix;if(i<0)return e},pushInput:function(e){var t=this.historyBuffer.indexOf(e);t>-1&&this.historyBuffer.splice(t,1),e.length&&this.historyBuffer.push(e)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var Et={matchCommand:function(e,t,n,r){var i=_t(e,t,r,n);if(!i.full&&!i.partial)return{type:"none"};if(!i.full&&i.partial)return{type:"partial",expectLiteralNext:i.partial.length==1&&i.partial[0].keys.slice(-11)==""};var s;for(var o=0;o"||s.keys.slice(-10)==""){var a=Pt(e);if(!a||a.length>1)return{type:"clear"};n.selectedCharacter=a}return{type:"full",command:s}},processCommand:function(e,t,n){t.inputState.repeatOverride=n.repeatOverride;switch(n.type){case"motion":this.processMotion(e,t,n);break;case"operator":this.processOperator(e,t,n);break;case"operatorMotion":this.processOperatorMotion(e,t,n);break;case"action":this.processAction(e,t,n);break;case"search":this.processSearch(e,t,n);break;case"ex":case"keyToEx":this.processEx(e,t,n);break;default:}},processMotion:function(e,t,n){t.inputState.motion=n.motion,t.inputState.motionArgs=Ot(n.motionArgs),this.evalInput(e,t)},processOperator:function(e,t,n){var r=t.inputState;if(r.operator){if(r.operator==n.operator){r.motion="expandToLine",r.motionArgs={linewise:!0},this.evalInput(e,t);return}vt(e)}r.operator=n.operator,r.operatorArgs=Ot(n.operatorArgs),n.keys.length>1&&(r.operatorShortcut=n.keys),n.exitVisualBlock&&(t.visualBlock=!1,Yt(e)),t.visualMode&&this.evalInput(e,t)},processOperatorMotion:function(e,t,n){var r=t.visualMode,i=Ot(n.operatorMotionArgs);i&&r&&i.visualLine&&(t.visualLine=!0),this.processOperator(e,t,n),r||this.processMotion(e,t,n)},processAction:function(e,t,n){var r=t.inputState,i=r.getRepeat(),s=!!i,o=Ot(n.actionArgs)||{};r.selectedCharacter&&(o.selectedCharacter=r.selectedCharacter),n.operator&&this.processOperator(e,t,n),n.motion&&this.processMotion(e,t,n),(n.motion||n.operator)&&this.evalInput(e,t),o.repeat=i||1,o.repeatIsExplicit=s,o.registerName=r.registerName,vt(e),t.lastMotion=null,n.isEdit&&this.recordLastEdit(t,r,n),kt[n.action](e,o,t)},processSearch:function(e,t,n){function a(r,i,s){Z.searchHistoryController.pushInput(r),Z.searchHistoryController.reset();try{Un(e,r,i,s)}catch(o){Fn(e,"Invalid regex: "+r),vt(e);return}Et.processMotion(e,t,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:n.searchArgs.toJumplist}})}function f(e){a(e,!0,!0);var t=Z.macroModeState;t.isRecording&&fr(t,e)}function l(t,n,i){var s=ct(t),o,a;s==""||s==""?(o=s==""?!0:!1,a=t.target?t.target.selectionEnd:0,n=Z.searchHistoryController.nextMatch(n,o)||"",i(n),a&&t.target&&(t.target.selectionEnd=t.target.selectionStart=Math.min(a,t.target.value.length))):s&&s!=""&&s!=""&&Z.searchHistoryController.reset();var f;try{f=Un(e,n,!0,!0)}catch(t){}f?e.scrollIntoView(Vn(e,!r,f),30):(Jn(e),e.scrollTo(u.left,u.top))}function c(t,n,r){var i=ct(t);i==""||i==""||i==""||i==""&&n==""?(Z.searchHistoryController.pushInput(n),Z.searchHistoryController.reset(),Un(e,o),Jn(e),e.scrollTo(u.left,u.top),m.e_stop(t),vt(e),r(),e.focus()):i==""||i==""?m.e_stop(t):i==""&&(m.e_stop(t),r(""))}if(!e.getSearchCursor)return;var r=n.searchArgs.forward,i=n.searchArgs.wholeWordOnly;Cn(e).setReversed(!r);var s=r?"/":"?",o=Cn(e).getQuery(),u=e.getScrollInfo();switch(n.searchArgs.querySrc){case"prompt":var h=Z.macroModeState;if(h.isPlaying){var p=h.replaySearchQueries.shift();a(p,!0,!1)}else qn(e,{onClose:f,prefix:s,desc:"(JavaScript regexp)",onKeyUp:l,onKeyDown:c});break;case"wordUnderCursor":var d=on(e,{noSymbol:!0}),v=!0;d||(d=on(e,{noSymbol:!1}),v=!1);if(!d){Fn(e,"No word under cursor"),vt(e);return}var p=e.getLine(d.start.line).substring(d.start.ch,d.end.ch);v&&i?p="\\b"+p+"\\b":p=Wt(p),Z.jumpList.cachedCursor=e.getCursor(),e.setCursor(d.start),a(p,!0,!1)}},processEx:function(e,t,n){function r(t){Z.exCommandHistoryController.pushInput(t),Z.exCommandHistoryController.reset(),tr.processCommand(e,t),e.state.vim&&vt(e)}function i(t,n,r){var i=ct(t),s,o;if(i==""||i==""||i==""||i==""&&n=="")Z.exCommandHistoryController.pushInput(n),Z.exCommandHistoryController.reset(),m.e_stop(t),vt(e),r(),e.focus();i==""||i==""?(m.e_stop(t),s=i==""?!0:!1,o=t.target?t.target.selectionEnd:0,n=Z.exCommandHistoryController.nextMatch(n,s)||"",r(n),o&&t.target&&(t.target.selectionEnd=t.target.selectionStart=Math.min(o,t.target.value.length))):i==""?(m.e_stop(t),r("")):i&&i!=""&&i!=""&&Z.exCommandHistoryController.reset()}n.type=="keyToEx"?tr.processCommand(e,n.exArgs.input):t.visualMode?qn(e,{onClose:r,prefix:":",value:"'<,'>",onKeyDown:i,selectValueOnOpen:!1}):qn(e,{onClose:r,prefix:":",onKeyDown:i})},evalInput:function(e,t){var n=t.inputState,r=n.motion,i=n.motionArgs||{},s=n.operator,o=n.operatorArgs||{},u=n.registerName,a=t.sel,f=Bt(t.visualMode?At(e,a.head):e.getCursor("head")),l=Bt(t.visualMode?At(e,a.anchor):e.getCursor("anchor")),c=Bt(f),h=Bt(l),p,d,v;s&&this.recordLastEdit(t,n),n.repeatOverride!==undefined?v=n.repeatOverride:v=n.getRepeat();if(v>0&&i.explicitRepeat)i.repeatIsExplicit=!0;else if(i.noRepeat||!i.explicitRepeat&&v===0)v=1,i.repeatIsExplicit=!1;n.selectedCharacter&&(i.selectedCharacter=o.selectedCharacter=n.selectedCharacter),i.repeat=v,vt(e);if(r){var m=St[r](e,f,i,t,n);t.lastMotion=St[r];if(!m)return;if(i.toJumplist){!s&&e.ace.curOp!=null&&(e.ace.curOp.command.scrollIntoView="center-animate");var g=Z.jumpList,y=g.cachedCursor;y?(an(e,y,m),delete g.cachedCursor):an(e,f,m)}m instanceof Array?(d=m[0],p=m[1]):p=m,p||(p=Bt(f));if(t.visualMode){if(!t.visualBlock||p.ch!==Infinity)p=At(e,p,c);d&&(d=At(e,d)),d=d||h,a.anchor=d,a.head=p,Yt(e),yn(e,t,"<",Ft(d,p)?d:p),yn(e,t,">",Ft(d,p)?p:d)}else s||(e.ace.curOp&&(e.ace.curOp.vimDialogScroll="center-animate"),p=At(e,p,c),e.setCursor(p.line,p.ch))}if(s){if(o.lastSel){d=h;var b=o.lastSel,S=Math.abs(b.head.line-b.anchor.line),x=Math.abs(b.head.ch-b.anchor.ch);b.visualLine?p=new w(h.line+S,h.ch):b.visualBlock?p=new w(h.line+S,h.ch+x):b.head.line==b.anchor.line?p=new w(h.line,h.ch+x):p=new w(h.line+S,h.ch),t.visualMode=!0,t.visualLine=b.visualLine,t.visualBlock=b.visualBlock,a=t.sel={anchor:d,head:p},Yt(e)}else t.visualMode&&(o.lastSel={anchor:Bt(a.anchor),head:Bt(a.head),visualBlock:t.visualBlock,visualLine:t.visualLine});var T,N,C,k,L;if(t.visualMode){T=It(a.head,a.anchor),N=qt(a.head,a.anchor),C=t.visualLine||o.linewise,k=t.visualBlock?"block":C?"line":"char";var A=E(e,T,N);L=Zt(e,{anchor:A.start,head:A.end},k);if(C){var O=L.ranges;if(k=="block")for(var M=0;Mf&&i.line==f)return vn(e,t,n,r,!0);var l=e.ace.session.getFoldLine(u);return l&&(n.forward?u>l.start.row&&(u=l.end.row+1):u=l.start.row),n.toFirstChar&&(s=sn(e.getLine(u)),r.lastHPos=s),r.lastHSPos=e.charCoords(new w(u,s),"div").left,new w(u,s)},moveByDisplayLines:function(e,t,n,r){var i=t;switch(r.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:r.lastHSPos=e.charCoords(i,"div").left}var s=n.repeat,o=e.findPosV(i,n.forward?s:-s,"line",r.lastHSPos);if(o.hitSide)if(n.forward)var u=e.charCoords(o,"div"),a={top:u.top+8,left:r.lastHSPos},o=e.coordsChar(a,"div");else{var f=e.charCoords(new w(e.firstLine(),0),"div");f.left=r.lastHSPos,o=e.coordsChar(f,"div")}return r.lastHPos=o.ch,o},moveByPage:function(e,t,n){var r=t,i=n.repeat;return e.findPosV(r,n.forward?i:-i,"page")},moveByParagraph:function(e,t,n){var r=n.forward?1:-1;return wn(e,t,n.repeat,r)},moveBySentence:function(e,t,n){var r=n.forward?1:-1;return Sn(e,t,n.repeat,r)},moveByScroll:function(e,t,n,r){var i=e.getScrollInfo(),s=null,o=n.repeat;o||(o=i.clientHeight/(2*e.defaultTextHeight()));var u=e.charCoords(t,"local");n.repeat=o,s=St.moveByDisplayLines(e,t,n,r);if(!s)return null;var a=e.charCoords(s,"local");return e.scrollTo(null,i.top+a.top-u.top),s},moveByWords:function(e,t,n){return dn(e,t,n.repeat,!!n.forward,!!n.wordEnd,!!n.bigWord)},moveTillCharacter:function(e,t,n){var r=n.repeat,i=mn(e,r,n.forward,n.selectedCharacter,t),s=n.forward?-1:1;return fn(s,n),i?(i.ch+=s,i):null},moveToCharacter:function(e,t,n){var r=n.repeat;return fn(0,n),mn(e,r,n.forward,n.selectedCharacter,t)||t},moveToSymbol:function(e,t,n){var r=n.repeat;return hn(e,r,n.forward,n.selectedCharacter)||t},moveToColumn:function(e,t,n,r){var i=n.repeat;return r.lastHPos=i-1,r.lastHSPos=e.charCoords(t,"div").left,gn(e,i)},moveToEol:function(e,t,n,r){return vn(e,t,n,r,!1)},moveToFirstNonWhiteSpaceCharacter:function(e,t){var n=t;return new w(n.line,sn(e.getLine(n.line)))},moveToMatchedSymbol:function(e,t){var n=t,r=n.line,i=n.ch,s=e.getLine(r),o;for(;i]/.test(s[i])?/[(){}[\]<>]/:/[(){}[\]]/,f=e.findMatchingBracket(new w(r,i+1),{bracketRegex:a});return f.to}return n},moveToStartOfLine:function(e,t){return new w(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,n){var r=n.forward?e.lastLine():e.firstLine();return n.repeatIsExplicit&&(r=n.repeat-e.getOption("firstLineNumber")),new w(r,sn(e.getLine(r)))},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,n,r){var i={"(":")",")":"(","{":"}","}":"{","[":"]","]":"[","<":">",">":"<"},s={"'":!0,'"':!0,"`":!0},o=n.selectedCharacter;o=="b"?o="(":o=="B"&&(o="{");var u=!n.textObjectInner,a,f;if(i[o]){f=!0,a=xn(e,t,o,u);if(!a){var l=e.getSearchCursor(new RegExp("\\"+o,"g"),t);l.find()&&(a=xn(e,l.from(),o,u))}}else if(s[o])f=!0,a=Tn(e,t,o,u);else if(o==="W"||o==="w"){var c=n.repeat||1;while(c-->0){var h=on(e,{inclusive:u,innerWord:!u,bigWord:o==="W",noSymbol:o==="W",multiline:!0},a&&a.end);h&&(a||(a=h),a.end=h.end)}}else if(o==="p"){a=wn(e,t,n.repeat,0,u),n.linewise=!0;if(r.visualMode)r.visualLine||(r.visualLine=!0);else{var p=r.inputState.operatorArgs;p&&(p.linewise=!0),a.end.line--}}else if(o==="t")a=un(e,t,u);else if(o==="s"){var d=e.getLine(t.line);t.ch>0&&z(d[t.ch])&&(t.ch-=1);var v=En(e,t,n.repeat,1,u),m=En(e,t,n.repeat,-1,u);U(e.getLine(m.line)[m.ch])&&U(e.getLine(v.line)[v.ch-1])&&(m={line:m.line,ch:m.ch+1}),a={start:m,end:v}}return a?e.state.vim.visualMode?Gt(e,a.start,a.end,f):[a.start,a.end]:null},repeatLastCharacterSearch:function(e,t,n){var r=Z.lastCharacterSearch,i=n.repeat,s=n.forward===r.forward,o=(r.increment?1:0)*(s?-1:1);e.moveH(-o,"char"),n.inclusive=s?!0:!1;var u=mn(e,i,s,r.selectedCharacter);return u?(u.ch+=o,u):(e.moveH(o,"char"),t)}},Nt={change:function(e,t,n){var r,i,s=e.state.vim,o=n[0].anchor,u=n[0].head;if(!s.visualMode){i=e.getRange(o,u);var a=s.lastEditInputState||{};if(a.motion=="moveByWords"&&!U(i)){var f=/\s+$/.exec(i);f&&a.motionArgs&&a.motionArgs.forward&&(u=Mt(u,0,-f[0].length),i=i.slice(0,-f[0].length))}t.linewise&&(o=new w(o.line,sn(e.getLine(o.line))),u.line>o.line&&(u=new w(u.line-1,Number.MAX_VALUE))),e.replaceRange("",o,u),r=o}else if(t.fullLine)u.ch=Number.MAX_VALUE,u.line--,e.setSelection(o,u),i=e.getSelection(),e.replaceSelection(""),r=o;else{i=e.getSelection();var l=Tt("",n.length);e.replaceSelections(l),r=It(n[0].head,n[0].anchor)}Z.registerController.pushText(t.registerName,"change",i,t.linewise,n.length>1),kt.enterInsertMode(e,{head:r},e.state.vim)},"delete":function(e,t,n){var r,i,s=e.state.vim;if(!s.visualBlock){var o=n[0].anchor,u=n[0].head;t.linewise&&u.line!=e.firstLine()&&o.line==e.lastLine()&&o.line==u.line-1&&(o.line==e.firstLine()?o.ch=0:o=new w(o.line-1,Ut(e,o.line-1))),i=e.getRange(o,u),e.replaceRange("",o,u),r=o,t.linewise&&(r=St.moveToFirstNonWhiteSpaceCharacter(e,o))}else{i=e.getSelection();var a=Tt("",n.length);e.replaceSelections(a),r=It(n[0].head,n[0].anchor)}return Z.registerController.pushText(t.registerName,"delete",i,t.linewise,s.visualBlock),At(e,r)},indent:function(e,t,n){var r=e.state.vim,i=r.visualMode?t.repeat:1;if(r.visualBlock){var s=e.getOption("tabSize"),o=e.getOption("indentWithTabs")?" ":" ".repeat(s),u;for(var a=n.length-1;a>=0;a--){u=It(n[a].anchor,n[a].head);if(t.indentRight)e.replaceRange(o.repeat(i),u,u);else{var f=e.getLine(u.line),l=0;for(var c=0;cs&&t.linewise&&u--,t.keepCursor?r:new w(u,0)},changeCase:function(e,t,n,r,i){var s=e.getSelections(),o=[],u=t.toLower;for(var a=0;af.top?(a.line+=(u-f.top)/i,a.line=Math.ceil(a.line),e.setCursor(a),f=e.charCoords(a,"local"),e.scrollTo(null,f.top)):e.scrollTo(null,u);else{var l=u+e.getScrollInfo().clientHeight;l=i.anchor.line?s=Mt(i.head,0,1):s=new w(i.anchor.line,0)}else if(r=="inplace"){if(n.visualMode)return}else r=="lastEdit"&&(s=Yn(e)||s);e.setOption("disableInput",!1),t&&t.replace?(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),m.signal(e,"vim-mode-change",{mode:"replace"})):(e.toggleOverwrite(!1),e.setOption("keyMap","vim-insert"),m.signal(e,"vim-mode-change",{mode:"insert"})),Z.macroModeState.isPlaying||(e.on("change",lr),n.insertEnd&&n.insertEnd.clear(),n.insertEnd=e.setBookmark(s,{insertLeft:!0}),m.on(e.getInputField(),"keydown",dr)),n.visualMode&&tn(e),$t(e,s,o)},toggleVisualMode:function(e,t,n){var r=t.repeat,i=e.getCursor(),s;if(!n.visualMode){n.visualMode=!0,n.visualLine=!!t.linewise,n.visualBlock=!!t.blockwise,s=At(e,new w(i.line,i.ch+r-1));var o=E(e,i,s);n.sel={anchor:o.start,head:o.end},m.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""}),Yt(e),yn(e,n,"<",It(i,s)),yn(e,n,">",qt(i,s))}else n.visualLine^t.linewise||n.visualBlock^t.blockwise?(n.visualLine=!!t.linewise,n.visualBlock=!!t.blockwise,m.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""}),Yt(e)):tn(e)},reselectLastSelection:function(e,t,n){var r=n.lastSelection;n.visualMode&&Qt(e,n);if(r){var i=r.anchorMark.find(),s=r.headMark.find();if(!i||!s)return;n.sel={anchor:i,head:s},n.visualMode=!0,n.visualLine=r.visualLine,n.visualBlock=r.visualBlock,Yt(e),yn(e,n,"<",It(i,s)),yn(e,n,">",qt(i,s)),m.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""})}},joinLines:function(e,t,n){var r,i;if(n.visualMode){r=e.getCursor("anchor"),i=e.getCursor("head");if(Ft(i,r)){var s=i;i=r,r=s}i.ch=Ut(e,i.line)-1}else{var o=Math.max(t.repeat,2);r=e.getCursor(),i=At(e,new w(r.line+o-1,Infinity))}var u=0;for(var a=r.line;a1)var r=Array(t.repeat+1).join(r);var p=i.linewise,d=i.blockwise;if(d){r=r.split("\n"),p&&r.pop();for(var v=0;ve.lastLine()&&e.replaceRange("\n",new w(N,0));var C=Ut(e,N);Ca.length&&(s=a.length),o=new w(i.line,s)}var f=E(e,i,o);i=f.start,o=f.end;if(r=="\n")n.visualMode||e.replaceRange("",i,o),(m.commands.newlineAndIndentContinueComment||m.commands.newlineAndIndent)(e);else{var l=e.getRange(i,o);l=l.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,r),l=l.replace(/[^\n]/g,r);if(n.visualBlock){var c=(new Array(e.getOption("tabSize")+1)).join(" ");l=e.getSelection(),l=l.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,r),l=l.replace(/\t/g,c).replace(/[^\n]/g,r).split("\n"),e.replaceSelections(l)}else e.replaceRange(l,i,o);n.visualMode?(i=Ft(u[0].anchor,u[0].head)?u[0].anchor:u[0].head,e.setCursor(i),tn(e,!1)):e.setCursor(Mt(o,0,-1))}},incrementNumberToken:function(e,t){var n=e.getCursor(),r=e.getLine(n.line),i=/(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi,s,o,u,a;while((s=i.exec(r))!==null){o=s.index,u=o+s[0].length;if(n.ch=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?!0:!1}},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}}};V("pcre",!0,"boolean"),Nn.prototype={getQuery:function(){return Z.query},setQuery:function(e){Z.query=e},getOverlay:function(){return this.searchOverlay},setOverlay:function(e){this.searchOverlay=e},isReversed:function(){return Z.isReversed},setReversed:function(e){Z.isReversed=e},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(e){this.annotate=e}};var _n={"\\n":"\n","\\r":"\r","\\t":" "},Pn={"\\/":"/","\\\\":"\\","\\n":"\n","\\r":"\r","\\t":" ","\\&":"&"},Wn=0,Zn=function(){this.buildCommandMap_()};Zn.prototype={processCommand:function(e,t,n){var r=this;e.operation(function(){e.curOp.isVimOp=!0,r._processCommand(e,t,n)})},_processCommand:function(e,t,n){var r=e.state.vim,i=Z.registerController.getRegister(":"),s=i.toString(),o=new m.StringStream(t);i.setText(t);var u=n||{};u.input=t;try{this.parseInput_(e,o,u)}catch(a){throw Fn(e,a.toString()),a}r.visualMode&&tn(e);var f,l;if(!u.commandName)u.line!==undefined&&(l="move");else{f=this.matchCommand_(u.commandName);if(f){l=f.name,f.excludeFromCommandHistory&&i.setText(s),this.parseCommandArgs_(o,u,f);if(f.type=="exToKey"){ut(e,f.toKeys,f);return}if(f.type=="exToEx"){this.processCommand(e,f.toInput);return}}}if(!l){Fn(e,'Not an editor command ":'+t+'"');return}try{er[l](e,u),(!f||!f.possiblyAsync)&&u.callback&&u.callback()}catch(a){throw Fn(e,a.toString()),a}},parseInput_:function(e,t,n){t.eatWhile(":"),t.eat("%")?(n.line=e.firstLine(),n.lineEnd=e.lastLine()):(n.line=this.parseLineSpec_(e,t),n.line!==undefined&&t.eat(",")&&(n.lineEnd=this.parseLineSpec_(e,t)));if(n.line==undefined)if(e.state.vim.visualMode){var r=Gn(e,e.state.vim,"<");n.selectionLine=r&&r.line,r=Gn(e,e.state.vim,">"),n.selectionLineEnd=r&&r.line}else n.selectionLine=e.getCursor().line;else n.selectionLine=n.line,n.selectionLineEnd=n.lineEnd;var i=t.match(/^(\w+|!!|@@|[!#&*<=>@~])/);return i?n.commandName=i[1]:n.commandName=t.match(/.*/)[0],n},parseLineSpec_:function(e,t){var n=t.match(/^(\d+)/);if(n)return parseInt(n[1],10)-1;switch(t.next()){case".":return this.parseLineSpecOffset_(t,e.getCursor().line);case"$":return this.parseLineSpecOffset_(t,e.lastLine());case"'":var r=t.next(),i=Gn(e,e.state.vim,r);if(!i)throw new Error("Mark not set");return this.parseLineSpecOffset_(t,i.line);case"-":case"+":return t.backUp(1),this.parseLineSpecOffset_(t,e.getCursor().line);default:return t.backUp(1),undefined}},parseLineSpecOffset_:function(e,t){var n=e.match(/^([+-])?(\d+)/);if(n){var r=parseInt(n[2],10);n[1]=="-"?t-=r:t+=r}return t},parseCommandArgs_:function(e,t,n){if(e.eol())return;t.argString=e.match(/.*/)[0];var r=n.argDelimiter||/\s+/,i=zt(t.argString).split(r);i.length&&i[0]&&(t.args=i)},matchCommand_:function(e){for(var t=e.length;t>0;t--){var n=e.substring(0,t);if(this.commandMap_[n]){var r=this.commandMap_[n];if(r.name.indexOf(e)===0)return r}}return null},buildCommandMap_:function(){this.commandMap_={};for(var e=0;e1)return"Invalid arguments";s=a&&"decimal"||f&&"hex"||l&&"octal"}u[2]&&(o=new RegExp(u[2].substr(1,u[2].length-2),r?"i":""))}}function S(e,t){if(n){var i;i=e,e=t,t=i}r&&(e=e.toLowerCase(),t=t.toLowerCase());var o=s&&d.exec(e),u=s&&d.exec(t);return o?(o=parseInt((o[1]+o[2]).toLowerCase(),v),u=parseInt((u[1]+u[2]).toLowerCase(),v),o-u):e=f){Fn(e,"Invalid argument: "+t.argString.substring(i));return}for(var l=0;l<=f-a;l++){var c=String.fromCharCode(a+l);delete n.marks[c]}}else delete n.marks[s]}}},tr=new Zn;V("insertModeEscKeysTimeout",200,"number"),m.Vim=nt;var yr={"return":"CR",backspace:"BS","delete":"Del",esc:"Esc",left:"Left",right:"Right",up:"Up",down:"Down",space:"Space",insert:"Ins",home:"Home",end:"End",pageup:"PageUp",pagedown:"PageDown",enter:"CR"},wr=nt.handleKey.bind(nt);nt.handleKey=function(e,t,n){return e.operation(function(){return wr(e,t,n)},!0)},et(),t.CodeMirror=m;var xr=nt.maybeInitVimState_;t.handler={$id:"ace/keyboard/vim",drawCursor:function(e,t,n,r,s){var u=this.state.vim||{},a=n.characterWidth,f=n.lineHeight,l=t.top,c=t.left;if(!u.insertMode){var h=r.cursor?i.comparePoints(r.cursor,r.start)<=0:s.selection.isBackwards()||s.selection.isEmpty();!h&&c>a&&(c-=a)}!u.insertMode&&u.status&&(f/=2,l+=f),o.translate(e,c,l),o.setStyle(e.style,"width",a+"px"),o.setStyle(e.style,"height",f+"px")},$getDirectionForHighlight:function(e){var t=e.state.cm,n=xr(t);if(!n.insertMode)return e.session.selection.isBackwards()||e.session.selection.isEmpty()},handleKeyboard:function(e,t,n,r,i){var s=e.editor,o=s.state.cm,u=xr(o);if(r==-1)return;u.insertMode||(t==-1?(n.charCodeAt(0)>255&&e.inputKey&&(n=e.inputKey,n&&e.inputHash==4&&(n=n.toUpperCase())),e.inputChar=n):t==4||t==0?e.inputKey==n&&e.inputHash==t&&e.inputChar?(n=e.inputChar,t=-1):(e.inputChar=null,e.inputKey=n,e.inputHash=t):e.inputChar=e.inputKey=null);if(o.state.overwrite&&u.insertMode&&n=="backspace"&&t==0)return{command:"gotoleft"};if(n=="c"&&t==1&&!c.isMac&&s.getCopyText())return s.once("copy",function(){u.insertMode?s.selection.clearSelection():o.operation(function(){tn(o)})}),{command:"null",passEvent:!0};if(n=="esc"&&!u.insertMode&&!u.visualMode&&!o.ace.inMultiSelectMode){var a=Cn(o),f=a.getOverlay();f&&o.removeOverlay(f)}if(t==-1||t&1||t===0&&n.length>1){var l=u.insertMode,h=br(t,n,i||{},u);u.status==null&&(u.status="");var p=Sr(o,h,"user");u=xr(o),p&&u.status!=null?u.status+=h:u.status==null&&(u.status=""),o._signal("changeStatus");if(!p&&(t!=-1||l))return;return{command:"null",passEvent:!p}}},attach:function(e){function n(){var n=xr(t).insertMode;t.ace.renderer.setStyle("normal-mode",!n),e.textInput.setCommandMode(!n),e.renderer.$keepTextAreaAtCursor=n,e.renderer.$blockCursor=!n}e.state||(e.state={});var t=new m(e);e.state.cm=t,e.$vimModeHandler=this,C(t),xr(t).status=null,t.on("vim-command-done",function(){if(t.virtualSelectionMode())return;xr(t).status=null,t.ace._signal("changeStatus"),t.ace.session.markUndoGroup()}),t.on("changeStatus",function(){t.ace.renderer.updateCursor(),t.ace._signal("changeStatus")}),t.on("vim-mode-change",function(){if(t.virtualSelectionMode())return;n(),t._signal("changeStatus")}),n(),e.renderer.$cursorLayer.drawCursor=this.drawCursor.bind(t)},detach:function(e){var t=e.state.cm;k(t),t.destroy(),e.state.cm=null,e.$vimModeHandler=null,e.renderer.$cursorLayer.drawCursor=null,e.renderer.setStyle("normal-mode",!1),e.textInput.setCommandMode(!1),e.renderer.$keepTextAreaAtCursor=!0},getStatusText:function(e){var t=e.state.cm,n=xr(t);if(n.insertMode)return"INSERT";var r="";return n.visualMode&&(r+="VISUAL",n.visualLine&&(r+=" LINE"),n.visualBlock&&(r+=" BLOCK")),n.status&&(r+=(r?" ":"")+n.status),r}},nt.defineOption({name:"wrap",set:function(e,t){t&&t.ace.setOption("wrap",e)},type:"boolean"},!1),nt.defineEx("write","w",function(){console.log(":write is not implemented")}),S.push({keys:"zc",type:"action",action:"fold",actionArgs:{open:!1}},{keys:"zC",type:"action",action:"fold",actionArgs:{open:!1,all:!0}},{keys:"zo",type:"action",action:"fold",actionArgs:{open:!0}},{keys:"zO",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"za",type:"action",action:"fold",actionArgs:{toggle:!0}},{keys:"zA",type:"action",action:"fold",actionArgs:{toggle:!0,all:!0}},{keys:"zf",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"zd",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"addCursorAbove"}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"addCursorBelow"}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"addCursorAboveSkipCurrent"}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"addCursorBelowSkipCurrent"}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"selectMoreBefore"}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"selectMoreAfter"}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"selectNextBefore"}},{keys:"",type:"action",action:"aceCommand",actionArgs:{name:"selectNextAfter"}}),S.push({keys:"gq",type:"operator",operator:"hardWrap"}),nt.defineOperator("hardWrap",function(e,t,n,r,i){var s=n[0].anchor.line,o=n[0].head.line;return t.linewise&&o--,v(e.ace,{startRow:s,endRow:o}),w(o,0)}),V("textwidth",undefined,"number",["tw"],function(e,t){if(t===undefined)return;if(e===undefined){var n=t.ace.getOption("printMarginColumn");return n}var r=Math.round(e);r>1&&t.ace.setOption("printMarginColumn",r)}),kt.aceCommand=function(e,t,n){e.vimCmd=t,e.ace.inVirtualSelectionMode?e.ace.on("beforeEndOperation",Tr):Tr(null,e.ace)},kt.fold=function(e,t,n){e.ace.execCommand(["toggleFoldWidget","toggleFoldWidget","foldOther","unfoldall"][(t.all?2:0)+(t.open?1:0)])},x=S.length,t.handler.defaultKeymap=S,t.handler.actions=kt,t.Vim=nt}); (function() { - window.require(["ace/keyboard/vim"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/keybinding-vscode.js b/www/js/ace/keybinding-vscode.js deleted file mode 100644 index 32da4c800..000000000 --- a/www/js/ace/keybinding-vscode.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/keyboard/vscode",["require","exports","module","ace/keyboard/hash_handler","ace/config"],function(e,t,n){"use strict";var r=e("../keyboard/hash_handler").HashHandler,i=e("../config");t.handler=new r,t.handler.$id="ace/keyboard/vscode",t.handler.addCommands([{name:"toggleWordWrap",exec:function(e){var t=e.session.getUseWrapMode();e.session.setUseWrapMode(!t)},readOnly:!0},{name:"navigateToLastEditLocation",exec:function(e){var t=e.session.getUndoManager().$lastDelta,n=t.action=="remove"?t.start:t.end;e.moveCursorTo(n.row,n.column),e.clearSelection()}},{name:"replaceAll",exec:function(e){e.searchBox?e.searchBox.active===!0&&e.searchBox.replaceOption.checked===!0&&e.searchBox.replaceAll():i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"replaceOne",exec:function(e){e.searchBox?e.searchBox.active===!0&&e.searchBox.replaceOption.checked===!0&&e.searchBox.replace():i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"selectAllMatches",exec:function(e){e.searchBox?e.searchBox.active===!0&&e.searchBox.findAll():i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!1)})}},{name:"toggleFindCaseSensitive",exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!1);var n=e.searchBox;n.caseSensitiveOption.checked=!n.caseSensitiveOption.checked,n.$syncOptions()})}},{name:"toggleFindInSelection",exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!1);var n=e.searchBox;n.searchOption.checked=!n.searchRange,n.setSearchRange(n.searchOption.checked&&n.editor.getSelectionRange()),n.$syncOptions()})}},{name:"toggleFindRegex",exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!1);var n=e.searchBox;n.regExpOption.checked=!n.regExpOption.checked,n.$syncOptions()})}},{name:"toggleFindWholeWord",exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!1);var n=e.searchBox;n.wholeWordOption.checked=!n.wholeWordOption.checked,n.$syncOptions()})}},{name:"removeSecondaryCursors",exec:function(e){var t=e.selection.ranges;t&&t.length>1?e.selection.toSingleRange(t[t.length-1]):e.selection.clearSelection()}}]),[{bindKey:{mac:"Ctrl-G",win:"Ctrl-G"},name:"gotoline"},{bindKey:{mac:"Command-Shift-L|Command-F2",win:"Ctrl-Shift-L|Ctrl-F2"},name:"findAll"},{bindKey:{mac:"Shift-F8|Shift-Option-F8",win:"Shift-F8|Shift-Alt-F8"},name:"goToPreviousError"},{bindKey:{mac:"F8|Option-F8",win:"F8|Alt-F8"},name:"goToNextError"},{bindKey:{mac:"Command-Shift-P|F1",win:"Ctrl-Shift-P|F1"},name:"openCommandPalette"},{bindKey:{mac:"Shift-Option-Up",win:"Alt-Shift-Up"},name:"copylinesup"},{bindKey:{mac:"Shift-Option-Down",win:"Alt-Shift-Down"},name:"copylinesdown"},{bindKey:{mac:"Command-Shift-K",win:"Ctrl-Shift-K"},name:"removeline"},{bindKey:{mac:"Command-Enter",win:"Ctrl-Enter"},name:"addLineAfter"},{bindKey:{mac:"Command-Shift-Enter",win:"Ctrl-Shift-Enter"},name:"addLineBefore"},{bindKey:{mac:"Command-Shift-\\",win:"Ctrl-Shift-\\"},name:"jumptomatching"},{bindKey:{mac:"Command-]",win:"Ctrl-]"},name:"blockindent"},{bindKey:{mac:"Command-[",win:"Ctrl-["},name:"blockoutdent"},{bindKey:{mac:"Ctrl-PageDown",win:"Alt-PageDown"},name:"pagedown"},{bindKey:{mac:"Ctrl-PageUp",win:"Alt-PageUp"},name:"pageup"},{bindKey:{mac:"Shift-Option-A",win:"Shift-Alt-A"},name:"toggleBlockComment"},{bindKey:{mac:"Option-Z",win:"Alt-Z"},name:"toggleWordWrap"},{bindKey:{mac:"Command-G",win:"F3|Ctrl-K Ctrl-D"},name:"findnext"},{bindKey:{mac:"Command-Shift-G",win:"Shift-F3"},name:"findprevious"},{bindKey:{mac:"Option-Enter",win:"Alt-Enter"},name:"selectAllMatches"},{bindKey:{mac:"Command-D",win:"Ctrl-D"},name:"selectMoreAfter"},{bindKey:{mac:"Command-K Command-D",win:"Ctrl-K Ctrl-D"},name:"selectOrFindNext"},{bindKey:{mac:"Shift-Option-I",win:"Shift-Alt-I"},name:"splitSelectionIntoLines"},{bindKey:{mac:"Command-K M",win:"Ctrl-K M"},name:"modeSelect"},{bindKey:{mac:"Command-Option-[",win:"Ctrl-Shift-["},name:"toggleFoldWidget"},{bindKey:{mac:"Command-Option-]",win:"Ctrl-Shift-]"},name:"toggleFoldWidget"},{bindKey:{mac:"Command-K Command-0",win:"Ctrl-K Ctrl-0"},name:"foldall"},{bindKey:{mac:"Command-K Command-J",win:"Ctrl-K Ctrl-J"},name:"unfoldall"},{bindKey:{mac:"Command-K Command-1",win:"Ctrl-K Ctrl-1"},name:"foldOther"},{bindKey:{mac:"Command-K Command-Q",win:"Ctrl-K Ctrl-Q"},name:"navigateToLastEditLocation"},{bindKey:{mac:"Command-K Command-R|Command-K Command-S",win:"Ctrl-K Ctrl-R|Ctrl-K Ctrl-S"},name:"showKeyboardShortcuts"},{bindKey:{mac:"Command-K Command-X",win:"Ctrl-K Ctrl-X"},name:"trimTrailingSpace"},{bindKey:{mac:"Shift-Down|Command-Shift-Down",win:"Shift-Down|Ctrl-Shift-Down"},name:"selectdown"},{bindKey:{mac:"Shift-Up|Command-Shift-Up",win:"Shift-Up|Ctrl-Shift-Up"},name:"selectup"},{bindKey:{mac:"Command-Alt-Enter",win:"Ctrl-Alt-Enter"},name:"replaceAll"},{bindKey:{mac:"Command-Shift-1",win:"Ctrl-Shift-1"},name:"replaceOne"},{bindKey:{mac:"Option-C",win:"Alt-C"},name:"toggleFindCaseSensitive"},{bindKey:{mac:"Option-L",win:"Alt-L"},name:"toggleFindInSelection"},{bindKey:{mac:"Option-R",win:"Alt-R"},name:"toggleFindRegex"},{bindKey:{mac:"Option-W",win:"Alt-W"},name:"toggleFindWholeWord"},{bindKey:{mac:"Command-L",win:"Ctrl-L"},name:"expandtoline"},{bindKey:{mac:"Shift-Esc",win:"Shift-Esc"},name:"removeSecondaryCursors"}].forEach(function(e){var n=t.handler.commands[e.name];n&&(n.bindKey=e.bindKey),t.handler.bindKey(e.bindKey,n||e.name)})}); (function() { - window.require(["ace/keyboard/vscode"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-abap.js b/www/js/ace/mode-abap.js deleted file mode 100644 index 9adf964a2..000000000 --- a/www/js/ace/mode-abap.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/abap_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"variable.language":"this",keyword:"ADD ALIAS ALIASES ASCENDING ASSERT ASSIGN ASSIGNING AT BACK CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY DATA DEFINE DEFINITION DEFERRED DELETE DESCENDING DESCRIBE DETAIL DIVIDE DO ELSE ELSEIF ENDAT ENDCASE ENDCLASS ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDTRY ENDWHILE EVENT EVENTS EXEC EXIT EXPORT EXPORTING EXTRACT FETCH FIELDS FORM FORMAT FREE FROM FUNCTION GENERATE GET HIDE IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION LEAVE LIKE LINE LOAD LOCAL LOOP MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY ON OVERLAY OPTIONAL OTHERS PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT RAISE RANGES READ RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURN RETURNING ROLLBACK SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES UNASSIGN ULINE UNPACK UPDATE WHEN WHILE WINDOW WRITE OCCURS STRUCTURE OBJECT PROPERTY CASTING APPEND RAISING VALUE COLOR CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT ID NUMBER FOR TITLE OUTPUT WITH EXIT USING INTO WHERE GROUP BY HAVING ORDER BY SINGLE APPENDING CORRESPONDING FIELDS OF TABLE LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER UP TO ROWS CONNECTING EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN","constant.language":"TRUE FALSE NULL SPACE","support.type":"c n i p f d t x string xstring decfloat16 decfloat34","keyword.operator":"abs sign ceil floor trunc frac acos asin atan cos sin tan abapOperator cosh sinh tanh exp log log10 sqrt strlen xstrlen charlen numofchar dbmaxlen lines"},"text",!0," "),t="WITH\\W+(?:HEADER\\W+LINE|FRAME|KEY)|NO\\W+STANDARD\\W+PAGE\\W+HEADING|EXIT\\W+FROM\\W+STEP\\W+LOOP|BEGIN\\W+OF\\W+(?:BLOCK|LINE)|BEGIN\\W+OF|END\\W+OF\\W+(?:BLOCK|LINE)|END\\W+OF|NO\\W+INTERVALS|RESPECTING\\W+BLANKS|SEPARATED\\W+BY|USING\\W+(?:EDIT\\W+MASK)|WHERE\\W+(?:LINE)|RADIOBUTTON\\W+GROUP|REF\\W+TO|(?:PUBLIC|PRIVATE|PROTECTED)(?:\\W+SECTION)?|DELETING\\W+(?:TRAILING|LEADING)(?:ALL\\W+OCCURRENCES)|(?:FIRST|LAST)\\W+OCCURRENCE|INHERITING\\W+FROM|LINE-COUNT|ADD-CORRESPONDING|AUTHORITY-CHECK|BREAK-POINT|CLASS-DATA|CLASS-METHODS|CLASS-METHOD|DIVIDE-CORRESPONDING|EDITOR-CALL|END-OF-DEFINITION|END-OF-PAGE|END-OF-SELECTION|FIELD-GROUPS|FIELD-SYMBOLS|FUNCTION-POOL|MOVE-CORRESPONDING|MULTIPLY-CORRESPONDING|NEW-LINE|NEW-PAGE|NEW-SECTION|PRINT-CONTROL|RP-PROVIDE-FROM-LAST|SELECT-OPTIONS|SELECTION-SCREEN|START-OF-SELECTION|SUBTRACT-CORRESPONDING|SYNTAX-CHECK|SYNTAX-TRACE|TOP-OF-PAGE|TYPE-POOL|TYPE-POOLS|LINE-SIZE|LINE-COUNT|MESSAGE-ID|DISPLAY-MODE|READ(?:-ONLY)?|IS\\W+(?:NOT\\W+)?(?:ASSIGNED|BOUND|INITIAL|SUPPLIED)";this.$rules={start:[{token:"string",regex:"`",next:"string"},{token:"string",regex:"'",next:"qstring"},{token:"doc.comment",regex:/^\*.+/},{token:"comment",regex:/".+$/},{token:"invalid",regex:"\\.{2,}"},{token:"keyword.operator",regex:/\W[\-+%=<>*]\W|\*\*|[~:,\.&$]|->*?|=>/},{token:"paren.lparen",regex:"[\\[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"constant.numeric",regex:"[+-]?\\d+\\b"},{token:"variable.parameter",regex:/sy|pa?\d\d\d\d\|t\d\d\d\.|innnn/},{token:"keyword",regex:t},{token:"variable.parameter",regex:/\w+-\w[\-\w]*/},{token:e,regex:"\\b\\w+\\b"},{caseInsensitive:!0}],qstring:[{token:"constant.language.escape",regex:"''"},{token:"string",regex:"'",next:"start"},{defaultToken:"string"}],string:[{token:"constant.language.escape",regex:"``"},{token:"string",regex:"`",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.AbapHighlightRules=s}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<0-9]*)",comment:"Notes"},{token:"zupfnoter.jumptarget.string.quoted",regex:'[\\"!]\\^\\:.*?[\\"!]',comment:"Zupfnoter jumptarget"},{token:"zupfnoter.goto.string.quoted",regex:'[\\"!]\\^\\@.*?[\\"!]',comment:"Zupfnoter goto"},{token:"zupfnoter.annotation.string.quoted",regex:'[\\"!]\\^\\!.*?[\\"!]',comment:"Zupfnoter annoation"},{token:"zupfnoter.annotationref.string.quoted",regex:'[\\"!]\\^\\#.*?[\\"!]',comment:"Zupfnoter annotation reference"},{token:"chordname.string.quoted",regex:'[\\"!]\\^.*?[\\"!]',comment:"abc chord"},{token:"string.quoted",regex:'[\\"!].*?[\\"!]',comment:"abc annotation"}]},this.normalizeRules()};s.metaData={fileTypes:["abc"],name:"ABC",scopeName:"text.abcnotation"},r.inherits(s,i),t.ABCHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/abc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/abc_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./abc_highlight_rules").ABCHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="%",this.$id="ace/mode/abc",this.snippetFileId="ace/snippets/abc"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/abc"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-actionscript.js b/www/js/ace/mode-actionscript.js deleted file mode 100644 index 52c40f9b6..000000000 --- a/www/js/ace/mode-actionscript.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/actionscript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"support.class.actionscript.2",regex:"\\b(?:R(?:ecordset|DBMSResolver|adioButton(?:Group)?)|X(?:ML(?:Socket|Node|Connector)?|UpdateResolverDataHolder)|M(?:M(?:Save|Execute)|icrophoneMicrophone|o(?:use|vieClip(?:Loader)?)|e(?:nu(?:Bar)?|dia(?:Controller|Display|Playback))|ath)|B(?:yName|inding|utton)|S(?:haredObject|ystem|crollPane|t(?:yleSheet|age|ream)|ound|e(?:ndEvent|rviceObject)|OAPCall|lide)|N(?:umericStepper|et(?:stream|S(?:tream|ervices)|Connection|Debug(?:Config)?))|C(?:heckBox|o(?:ntextMenu(?:Item)?|okie|lor|m(?:ponentMixins|boBox))|ustomActions|lient|amera)|T(?:ypedValue|ext(?:Snapshot|Input|F(?:ield|ormat)|Area)|ree|AB)|Object|D(?:ownload|elta(?:Item|Packet)?|at(?:e(?:Chooser|Field)?|a(?:G(?:lue|rid)|Set|Type)))|U(?:RL|TC|IScrollBar)|P(?:opUpManager|endingCall|r(?:intJob|o(?:duct|gressBar)))|E(?:ndPoint|rror)|Video|Key|F(?:RadioButton|GridColumn|MessageBox|BarChart|S(?:croll(?:Bar|Pane)|tyleFormat|plitView)|orm|C(?:heckbox|omboBox|alendar)|unction|T(?:icker|ooltip(?:Lite)?|ree(?:Node)?)|IconButton|D(?:ataGrid|raggablePane)|P(?:ieChart|ushButton|ro(?:gressBar|mptBox))|L(?:i(?:stBox|neChart)|oadingBox)|AdvancedMessageBox)|W(?:indow|SDLURL|ebService(?:Connector)?)|L(?:ist|o(?:calConnection|ad(?:er|Vars)|g)|a(?:unch|bel))|A(?:sBroadcaster|cc(?:ordion|essibility)|S(?:Set(?:Native|PropFlags)|N(?:ew|ative)|C(?:onstructor|lamp(?:2)?)|InstanceOf)|pplication|lert|rray))\\b"},{token:"support.function.actionscript.2",regex:"\\b(?:s(?:h(?:ift|ow(?:GridLines|Menu|Border|Settings|Headers|ColumnHeaders|Today|Preferences)?|ad(?:ow|ePane))|c(?:hema|ale(?:X|Mode|Y|Content)|r(?:oll(?:Track|Drag)?|een(?:Resolution|Color|DPI)))|t(?:yleSheet|op(?:Drag|A(?:nimation|llSounds|gent))?|epSize|a(?:tus|rt(?:Drag|A(?:nimation|gent))?))|i(?:n|ze|lence(?:TimeOut|Level))|o(?:ngname|urce|rt(?:Items(?:By)?|On(?:HeaderRelease)?|able(?:Columns)?)?)|u(?:ppressInvalidCalls|bstr(?:ing)?)|p(?:li(?:ce|t)|aceCol(?:umnsEqually|lumnsEqually))|e(?:nd(?:DefaultPushButtonEvent|AndLoad)?|curity|t(?:R(?:GB|o(?:otNode|w(?:Height|Count))|esizable(?:Columns)?|a(?:nge|te))|G(?:ain|roupName)|X(?:AxisTitle)?|M(?:i(?:n(?:imum|utes)|lliseconds)|o(?:nth(?:Names)?|tionLevel|de)|ultilineMode|e(?:ssage|nu(?:ItemEnabled(?:At)?|EnabledAt)|dia)|a(?:sk|ximum))|B(?:u(?:tton(?:s|Width)|fferTime)|a(?:seTabIndex|ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Target|P(?:osition|roperties)|barState|Location)|t(?:yle(?:Property)?|opOnFocus|at(?:us|e))|i(?:ze|lenceLevel)|ort(?:able(?:Columns)?|Function)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)?|Style|Color|ed(?:Node(?:s)?|Cell|I(?:nd(?:ices|ex)|tem(?:s)?))?|able))|kin|m(?:oothness|allScroll))|H(?:ighlight(?:s|Color)|Scroll|o(?:urs|rizontal)|eader(?:Symbol|Height|Text|Property|Format|Width|Location)?|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:ode(?:Properties|ExpansionHandler)|ewTextFormat)|C(?:h(?:ildNodes|a(?:ngeHandler|rt(?:Title|EventHandler)))|o(?:ntent(?:Size)?|okie|lumns)|ell(?:Symbol|Data)|l(?:i(?:ckHandler|pboard)|oseHandler)|redentials)|T(?:ype(?:dVaule)?|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:out(?:Handler)?)?)|oggle|extFormat|ransform)|I(?:s(?:Branch|Open)|n(?:terval|putProperty)|con(?:SymbolName)?|te(?:rator|m(?:ByKey|Symbol)))|Orientation|D(?:i(?:splay(?:Range|Graphics|Mode|Clip|Text|edMonth)|rection)|uration|e(?:pth(?:Below|To|Above)|fault(?:GatewayURL|Mappings|NodeIconSymbolName)|l(?:iveryMode|ay)|bug(?:ID)?)|a(?:yOfWeekNames|t(?:e(?:Filter)?|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Provider|All(?:Height|Property|Format|Width))?))|ra(?:wConnectors|gContent))|U(?:se(?:Shadow|HandCursor|EchoSuppression|rInput|Fade)|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear))|P(?:osition|ercentComplete|an(?:e(?:M(?:inimumSize|aximumSize)|Size|Title))?|ro(?:pert(?:y(?:Data)?|iesAt)|gress))|E(?:nabled|dit(?:Handler|able)|xpand(?:NodeTrigger|erSymbolName))|V(?:Scroll|olume|alue(?:Source)?)|KeyFrameInterval|Quality|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|ocus|ullYear|ps|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:opback|adTarget)|a(?:rgeScroll|bel(?:Source|Placement)?))|A(?:s(?:Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:e(?:State(?:Handler)?|Handler)|ateHandler)|utoH(?:ideScrollBar|eight)))?|paratorBefore|ek|lect(?:ion(?:Disabled|Unfocused)?|ed(?:Node(?:s)?|Child|I(?:nd(?:ices|ex)|tem(?:s)?)|Dat(?:e|a))?|able(?:Ranges)?)|rver(?:String)?)|kip|qrt|wapDepths|lice|aveToSharedObj|moothing)|h(?:scroll(?:Policy)?|tml(?:Text)?|i(?:t(?:Test(?:TextNearPos)?|Area)|de(?:BuiltInItems|Child)?|ghlight(?:2D|3D)?)|orizontal|e(?:ight|ader(?:Re(?:nderer|lease)|Height|Text))|P(?:osition|ageScrollSize)|a(?:s(?:childNodes|MP3|S(?:creen(?:Broadcast|Playback)|treaming(?:Video|Audio)|ort)|Next|OwnProperty|Pr(?:inting|evious)|EmbeddedVideo|VideoEncoder|A(?:ccesibility|udio(?:Encoder)?))|ndlerName)|LineScrollSize)|ye(?:sLabel|ar)|n(?:o(?:t|de(?:Name|Close|Type|Open|Value)|Label)|u(?:llValue|mChild(?:S(?:creens|lides)|ren|Forms))|e(?:w(?:Item|line|Value|LocationDialog)|xt(?:S(?:cene|ibling|lide)|TabIndex|Value|Frame)?)?|ame(?:s)?)|c(?:h(?:ildNodes|eck|a(?:nge(?:sPending)?|r(?:CodeAt|At))|r)|o(?:s|n(?:st(?:ant|ructor)|nect|c(?:urrency|at)|t(?:ent(?:Type|Path)?|ains|rol(?:Placement|lerPolicy))|denseWhite|version)|py|l(?:or|umn(?:Stretch|Name(?:s)?|Count))|m(?:p(?:onent|lete)|ment))|u(?:stomItems|ePoint(?:s)?|r(?:veTo|Value|rent(?:Slide|ChildSlide|Item|F(?:ocused(?:S(?:creen|lide)|Form)|ps))))|e(?:il|ll(?:Renderer|Press|Edit|Focus(?:In|Out)))|l(?:i(?:ck|ents)|o(?:se(?:Button|Pane)?|ne(?:Node)?)|ear(?:S(?:haredObjects|treams)|Timeout|Interval)?)|a(?:ncelLabel|tch|p(?:tion|abilities)|l(?:cFields|l(?:e(?:e|r))?))|reate(?:GatewayConnection|Menu|Se(?:rver|gment)|C(?:hild(?:AtDepth)?|l(?:ient|ass(?:ChildAtDepth|Object(?:AtDepth)?))|all)|Text(?:Node|Field)|Item|Object(?:AtDepth)?|PopUp|E(?:lement|mptyMovieClip)))|t(?:h(?:is|row)|ype(?:of|Name)?|i(?:tle(?:StyleDeclaration)?|me(?:out)?)|o(?:talTime|String|olTipText|p|UpperCase|ggle(?:HighQuality)?|Lo(?:caleString|werCase))|e(?:st|llTarget|xt(?:RightMargin|Bold|S(?:ize|elected)|Height|Color|I(?:ndent|talic)|Disabled|Underline|F(?:ield|ont)|Width|LeftMargin|Align)?)|a(?:n|rget(?:Path)?|b(?:Stops|Children|Index|Enabled|leName))|r(?:y|igger|ac(?:e|k(?:AsMenu)?)))|i(?:s(?:Running|Branch|NaN|Con(?:soleOpen|nected)|Toggled|Installed|Open|D(?:own|ebugger)|P(?:urchased|ro(?:totypeOf|pertyEnumerable))|Empty|F(?:inite|ullyPopulated)|Local|Active)|n(?:s(?:tall|ertBefore)|cludeDeltaPacketInfo|t|it(?:ialize|Component|Pod|A(?:pplication|gent))?|de(?:nt|terminate|x(?:InParent(?:Slide|Form)?|Of)?)|put|validate|finity|LocalInternetCache)?|con(?:F(?:ield|unction))?|t(?:e(?:ratorScrolled|m(?:s|RollO(?:ut|ver)|ClassName))|alic)|d3|p|fFrameLoaded|gnore(?:Case|White))|o(?:s|n(?:R(?:ollO(?:ut|ver)|e(?:s(?:ize|ult)|l(?:ease(?:Outside)?|aseOutside)))|XML|Mouse(?:Move|Down|Up|Wheel)|S(?:ync|croller|tatus|oundComplete|e(?:tFocus|lect(?:edItem)?))|N(?:oticeEvent|etworkChange)|C(?:hanged|onnect|l(?:ipEvent|ose))|ID3|D(?:isconnect|eactivate|ata|ragO(?:ut|ver))|Un(?:install|load)|P(?:aymentResult|ress)|EnterFrame|K(?:illFocus|ey(?:Down|Up))|Fault|Lo(?:ad|g)|A(?:ctiv(?:ity|ate)|ppSt(?:op|art)))?|pe(?:n|ration)|verLayChildren|kLabel|ldValue|r(?:d)?)|d(?:i(?:s(?:connect|play(?:Normal|ed(?:Month|Year)|Full)|able(?:Shader|d(?:Ranges|Days)|CloseBox|Events))|rection)|o(?:cTypeDecl|tall|Decoding|main|LazyDecoding)|u(?:plicateMovieClip|ration)|e(?:stroy(?:ChildAt|Object)|code|fault(?:PushButton(?:Enabled)?|KeydownHandler)?|l(?:ta(?:Packet(?:Changed)?)?|ete(?:PopUp|All)?)|blocking)|a(?:shBoardSave|yNames|ta(?:Provider)?|rkshadow)|r(?:opdown(?:Width)?|a(?:w|gO(?:ut|ver))))|u(?:se(?:Sort|HandCursor|Codepage|EchoSuppression)|n(?:shift|install|derline|escape|format|watch|lo(?:ck|ad(?:Movie(?:Num)?)?))|pdate(?:Results|Mode|I(?:nputProperties|tem(?:ByIndex)?)|P(?:acket|roperties)|View|AfterEvent)|rl)|join|p(?:ixelAspectRatio|o(?:sition|p|w)|u(?:sh|rge|blish)|ercen(?:tComplete|Loaded)|lay(?:head(?:Change|Time)|ing|Hidden|erType)?|a(?:ssword|use|r(?:se(?:XML|CSS|Int|Float)|ent(?:Node|Is(?:S(?:creen|lide)|Form))|ams))|r(?:int(?:Num|AsBitmap(?:Num)?)?|o(?:to(?:type)?|pert(?:y|ies)|gress)|e(?:ss|v(?:ious(?:S(?:ibling|lide)|Value)?|Scene|Frame)|ferred(?:Height|Width))))|e(?:scape|n(?:code(?:r)?|ter(?:Frame)?|dFill|able(?:Shader|d|CloseBox|Events))|dit(?:able|Field|LocationDialog)|v(?:ent|al(?:uate)?)|q|x(?:tended|p|ec(?:ute)?|actSettings)|m(?:phasized(?:StyleDeclaration)?|bedFonts))|v(?:i(?:sible|ewPod)|ScrollPolicy|o(?:id|lume)|ersion|P(?:osition|ageScrollSize)|a(?:l(?:idat(?:ionError|e(?:Property|ActivationKey)?)|ue(?:Of)?)|riable)|LineScrollSize)|k(?:ind|ey(?:Down|Up|Press|FrameInterval))|q(?:sort|uality)|f(?:scommand|i(?:n(?:d(?:Text|First|Last)?|ally)|eldInfo|lter(?:ed|Func)?|rst(?:Slide|Child|DayOfWeek|VisibleNode)?)|o(?:nt|cus(?:In|edCell|Out|Enabled)|r(?:egroundDisabled|mat(?:ter)?))|unctionName|ps|l(?:oor|ush)|ace|romCharCode)|w(?:i(?:th|dth)|ordWrap|atch|riteAccess)|l(?:t|i(?:st(?:Owner)?|ne(?:Style|To))|o(?:c(?:k|a(?:t(?:ion|eByld)|l(?:ToGlobal|FileReadDisable)))|opback|ad(?:Movie(?:Num)?|S(?:crollContent|ound)|ed|Variables(?:Num)?|Application)?|g(?:Changes)?)|e(?:ngth|ft(?:Margin)?|ading)?|a(?:st(?:Slide|Child|Index(?:Of)?)?|nguage|b(?:el(?:Placement|F(?:ield|unction))?|leField)))|a(?:s(?:scociate(?:Controller|Display)|in|pectRatio|function)|nd|c(?:ceptConnection|tiv(?:ityLevel|ePlayControl)|os)|t(?:t(?:ach(?:Movie|Sound|Video|Audio)|ributes)|an(?:2)?)|dd(?:header|RequestHeader|Menu(?:Item(?:At)?|At)?|Sort|Header|No(?:tice|de(?:At)?)|C(?:olumn(?:At)?|uePoint)|T(?:oLocalInternetCache|reeNode(?:At)?)|I(?:con|tem(?:s(?:At)?|At)?)|DeltaItem|P(?:od|age|roperty)|EventListener|View|FieldInfo|Listener|Animation)?|uto(?:Size|Play|KeyNav|Load)|pp(?:endChild|ly(?:Changes|Updates)?)|vHardwareDisable|fterLoaded|l(?:ternateRowColors|ign|l(?:ow(?:InsecureDomain|Domain)|Transitions(?:InDone|OutDone))|bum)|r(?:tist|row|g(?:uments|List))|gent|bs)|r(?:ight(?:Margin)?|o(?:ot(?:S(?:creen|lide)|Form)|und|w(?:Height|Count)|llO(?:ut|ver))|e(?:s(?:yncDepth|t(?:orePane|artAnimation|rict)|iz(?:e|able(?:Columns)?)|olveDelta|ult(?:s)?|ponse)|c(?:o(?:ncile(?:Results|Updates)|rd)|eive(?:Video|Audio))|draw|jectConnection|place(?:Sel|ItemAt|AllItems)?|ve(?:al(?:Child)?|rse)|quest(?:SizeChange|Payment)?|f(?:errer|resh(?:ScrollContent|Destinations|Pane|FromSources)?)|lease(?:Outside)?|ad(?:Only|Access)|gister(?:SkinElement|C(?:olor(?:Style|Name)|lass)|InheritingStyle|Proxy)|move(?:Range|M(?:ovieClip|enu(?:Item(?:At)?|At))|Background|Sort|No(?:tice|de(?:sAt|At)?)|C(?:olum(?:nAt|At)|uePoints)|T(?:extField|reeNode(?:At)?)|Item(?:At)?|Pod|EventListener|FromLocalInternetCache|Listener|All(?:C(?:olumns|uePoints)|Items)?))|a(?:ndom|te|dioDot))|g(?:t|oto(?:Slide|NextSlide|PreviousSlide|FirstSlide|LastSlide|And(?:Stop|Play))|e(?:nre|t(?:R(?:GB|o(?:otNode|wCount)|e(?:sizable|mote))|X(?:AxisTitle)?|M(?:i(?:n(?:imum(?:Size)?|utes)|lliseconds)|onth(?:Names)?|ultilineMode|e(?:ssage|nu(?:ItemAt|EnabledAt|At))|aximum(?:Size)?)|B(?:ytes(?:Total|Loaded)|ounds|utton(?:s|Width)|eginIndex|a(?:ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Position|barState|Location)|t(?:yle(?:Names)?|opOnFocus|ate)|ize|o(?:urce|rtState)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)|Style|ed(?:Node(?:s)?|Cell|Text|I(?:nd(?:ices|ex)|tem(?:s)?))?)|rvice)|moothness|WFVersion)|H(?:ighlight(?:s|Color)|ours|e(?:ight|ader(?:Height|Text|Property|Format|Width|Location)?)|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:o(?:tices|de(?:DisplayedAt|At))|um(?:Children|berAvailable)|e(?:wTextFormat|xtHighestDepth))|C(?:h(?:ild(?:S(?:creen|lide)|Nodes|Form|At)|artTitle)|o(?:n(?:tent|figInfo)|okie|de|unt|lumn(?:Names|Count|Index|At))|uePoint|ellIndex|loseHandler|a(?:ll|retIndex))|T(?:ypedValue|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:stamp|zoneOffset|out(?:State|Handler)|r)?)|oggle|ext(?:Extent|Format)?|r(?:ee(?:NodeAt|Length)|ans(?:form|actionId)))|I(?:s(?:Branch|Open)|n(?:stanceAtDepth|d(?:icesByKey|exByKey))|con(?:SymbolName)?|te(?:rator|m(?:sByKey|By(?:Name|Key)|id|ID|At))|d)|O(?:utput(?:Parameter(?:s|ByName)?|Value(?:s)?)|peration|ri(?:entation|ginalCellData))|D(?:i(?:s(?:play(?:Range|Mode|Clip|Index|edMonth)|kUsage)|rection)|uration|e(?:pth|faultNodeIconSymbolName|l(?:taPacket|ay)|bug(?:Config|ID)?)|a(?:y(?:OfWeekNames)?|t(?:e|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Label|All(?:Height|Property|Format|Width))?))|rawConnectors)|U(?:se(?:Shadow|HandCursor|rInput|Fade)|RL|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear))|P(?:o(?:sition|ds)|ercentComplete|a(?:n(?:e(?:M(?:inimums|aximums)|Height|Title|Width))?|rentNode)|r(?:operty(?:Name|Data)?|efer(?:ences|red(?:Height|Width))))|E(?:n(?:dIndex|abled)|ditingData|x(?:panderSymbolName|andNodeTrigger))|V(?:iewed(?:Pods|Applications)|olume|ersion|alue(?:Source)?)|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|o(?:ntList|cus)|ullYear|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:cal|adTarget)|ength|a(?:stTabIndex|bel(?:Source)?))|A(?:s(?:cii|Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:eState(?:Handler)?|ateHandler)|utoH(?:ideScrollBar|eight)|llItems|gent))?)?|lobal(?:StyleFormat|ToLocal)?|ain|roupName)|x(?:updatePackety|mlDecl)?|m(?:y(?:MethodName|Call)|in(?:imum)?|o(?:nthNames|tion(?:TimeOut|Level)|de(?:lChanged)?|use(?:Move|O(?:ut|ver)|Down(?:Somewhere|Outside)?|Up(?:Somewhere)?|WheelEnabled)|ve(?:To)?)|u(?:ted|lti(?:pleS(?:imultaneousAllowed|elections)|line))|e(?:ssage|nu(?:Show|Hide)?|th(?:od)?|diaType)|a(?:nufacturer|tch|x(?:scroll|hscroll|imum|HPosition|Chars|VPosition)?)|b(?:substring|chr|ord|length))|b(?:ytes(?:Total|Loaded)|indFormat(?:Strings|Function)|o(?:ttom(?:Scroll)?|ld|rder(?:Color)?)|u(?:tton(?:Height|Width)|iltInItems|ffer(?:Time|Length)|llet)|e(?:foreApplyUpdates|gin(?:GradientFill|Fill))|lockIndent|a(?:ndwidth|ckground(?:Style|Color|Disabled)?)|roadcastMessage)|onHTTPStatus)\\b"},{token:"support.constant.actionscript.2",regex:"\\b(?:__proto__|__resolve|_accProps|_alpha|_changed|_currentframe|_droptarget|_flash|_focusrect|_framesloaded|_global|_height|_highquality|_level|_listeners|_lockroot|_name|_parent|_quality|_root|_rotation|_soundbuftime|_target|_totalframes|_url|_visible|_width|_x|_xmouse|_xscale|_y|_ymouse|_yscale)\\b"},{token:"keyword.control.actionscript.2",regex:"\\b(?:dynamic|extends|import|implements|interface|public|private|new|static|super|var|for|in|break|continue|while|do|return|if|else|case|switch)\\b"},{token:"storage.type.actionscript.2",regex:"\\b(?:Boolean|Number|String|Void)\\b"},{token:"constant.language.actionscript.2",regex:"\\b(?:null|undefined|true|false)\\b"},{token:"constant.numeric.actionscript.2",regex:"\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b"},{token:"punctuation.definition.string.begin.actionscript.2",regex:'"',push:[{token:"punctuation.definition.string.end.actionscript.2",regex:'"',next:"pop"},{token:"constant.character.escape.actionscript.2",regex:"\\\\."},{defaultToken:"string.quoted.double.actionscript.2"}]},{token:"punctuation.definition.string.begin.actionscript.2",regex:"'",push:[{token:"punctuation.definition.string.end.actionscript.2",regex:"'",next:"pop"},{token:"constant.character.escape.actionscript.2",regex:"\\\\."},{defaultToken:"string.quoted.single.actionscript.2"}]},{token:"support.constant.actionscript.2",regex:"\\b(?:BACKSPACE|CAPSLOCK|CONTROL|DELETEKEY|DOWN|END|ENTER|HOME|INSERT|LEFT|LN10|LN2|LOG10E|LOG2E|MAX_VALUE|MIN_VALUE|NEGATIVE_INFINITY|NaN|PGDN|PGUP|PI|POSITIVE_INFINITY|RIGHT|SPACE|SQRT1_2|SQRT2|UP)\\b"},{token:"punctuation.definition.comment.actionscript.2",regex:"/\\*",push:[{token:"punctuation.definition.comment.actionscript.2",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.actionscript.2"}]},{token:"punctuation.definition.comment.actionscript.2",regex:"//.*$",push_:[{token:"comment.line.double-slash.actionscript.2",regex:"$",next:"pop"},{defaultToken:"comment.line.double-slash.actionscript.2"}]},{token:"keyword.operator.actionscript.2",regex:"\\binstanceof\\b"},{token:"keyword.operator.symbolic.actionscript.2",regex:"[-!%&*+=/?:]"},{token:["meta.preprocessor.actionscript.2","punctuation.definition.preprocessor.actionscript.2","meta.preprocessor.actionscript.2"],regex:"^([ \\t]*)(#)([a-zA-Z]+)"},{token:["storage.type.function.actionscript.2","meta.function.actionscript.2","entity.name.function.actionscript.2","meta.function.actionscript.2","punctuation.definition.parameters.begin.actionscript.2"],regex:"\\b(function)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()",push:[{token:"punctuation.definition.parameters.end.actionscript.2",regex:"\\)",next:"pop"},{token:"variable.parameter.function.actionscript.2",regex:"[^,)$]+"},{defaultToken:"meta.function.actionscript.2"}]},{token:["storage.type.class.actionscript.2","meta.class.actionscript.2","entity.name.type.class.actionscript.2","meta.class.actionscript.2","storage.modifier.extends.actionscript.2","meta.class.actionscript.2","entity.other.inherited-class.actionscript.2"],regex:"\\b(class)(\\s+)([a-zA-Z_](?:\\w|\\.)*)(?:(\\s+)(extends)(\\s+)([a-zA-Z_](?:\\w|\\.)*))?"}]},this.normalizeRules()};s.metaData={fileTypes:["as"],keyEquivalent:"^~A",name:"ActionScript",scopeName:"source.actionscript.2"},r.inherits(s,i),t.ActionScriptHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/actionscript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/actionscript_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./actionscript_highlight_rules").ActionScriptHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/actionscript",this.snippetFileId="ace/snippets/actionscript"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/actionscript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-ada.js b/www/js/ace/mode-ada.js deleted file mode 100644 index 6b781da45..000000000 --- a/www/js/ace/mode-ada.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/ada_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|array|function|overriding|at|tagged|generic|package|task|begin|goto|pragma|terminate|body|private|then|if|procedure|type|case|in|protected|constant|interface|until||is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce|main",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.AdaHighlightRules=s}),define("ace/mode/ada",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ada_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ada_highlight_rules").AdaHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="--",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*(begin|loop|then|is|do)\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){var r=t+n;return r.match(/^\s*(begin|end)$/)?!0:!1},this.autoOutdent=function(e,t,n){var r=t.getLine(n),i=t.getLine(n-1),s=this.$getIndent(i).length,u=this.$getIndent(r).length;if(u<=s)return;t.outdentRows(new o(n,0,n+2,0))},this.$id="ace/mode/ada"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/ada"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-alda.js b/www/js/ace/mode-alda.js deleted file mode 100644 index 92c1a9d35..000000000 --- a/www/js/ace/mode-alda.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/alda_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={pitch:[{token:"variable.parameter.operator.pitch.alda",regex:/(?:[+\-]+|\=)/},{token:"",regex:"",next:"timing"}],timing:[{token:"string.quoted.operator.timing.alda",regex:/\d+(?:s|ms)?/},{token:"",regex:"",next:"start"}],start:[{token:["constant.language.instrument.alda","constant.language.instrument.alda","meta.part.call.alda","storage.type.nickname.alda","meta.part.call.alda"],regex:/^([a-zA-Z]{2}[\w\-+\'()]*)((?:\s*\/\s*[a-zA-Z]{2}[\w\-+\'()]*)*)(?:(\s*)(\"[a-zA-Z]{2}[\w\-+\'()]*\"))?(\s*:)/},{token:["text","entity.other.inherited-class.voice.alda","text"],regex:/^(\s*)(V\d+)(:)/},{token:"comment.line.number-sign.alda",regex:/#.*$/},{token:"entity.name.function.pipe.measure.alda",regex:/\|/},{token:"comment.block.inline.alda",regex:/\(comment\b/,push:[{token:"comment.block.inline.alda",regex:/\)/,next:"pop"},{defaultToken:"comment.block.inline.alda"}]},{token:"entity.name.function.marker.alda",regex:/%[a-zA-Z]{2}[\w\-+\'()]*/},{token:"entity.name.function.at-marker.alda",regex:/@[a-zA-Z]{2}[\w\-+\'()]*/},{token:"keyword.operator.octave-change.alda",regex:/\bo\d+\b/},{token:"keyword.operator.octave-shift.alda",regex:/[><]/},{token:"keyword.operator.repeat.alda",regex:/\*\s*\d+/},{token:"string.quoted.operator.timing.alda",regex:/[.]|r\d*(?:s|ms)?/},{token:"text",regex:/([cdefgab])/,next:"pitch"},{token:"string.quoted.operator.timing.alda",regex:/~/,next:"timing"},{token:"punctuation.section.embedded.cram.alda",regex:/\}/,next:"timing"},{token:"constant.numeric.subchord.alda",regex:/\//},{todo:{token:"punctuation.section.embedded.cram.alda",regex:/\{/,push:[{token:"punctuation.section.embedded.cram.alda",regex:/\}/,next:"pop"},{include:"$self"}]}},{todo:{token:"keyword.control.sequence.alda",regex:/\[/,push:[{token:"keyword.control.sequence.alda",regex:/\]/,next:"pop"},{include:"$self"}]}},{token:"meta.inline.clojure.alda",regex:/\(/,push:[{token:"meta.inline.clojure.alda",regex:/\)/,next:"pop"},{include:"source.clojure"},{defaultToken:"meta.inline.clojure.alda"}]}]},this.normalizeRules()};s.metaData={scopeName:"source.alda",fileTypes:["alda"],name:"Alda"},r.inherits(s,i),t.AldaHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/alda",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/alda_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./alda_highlight_rules").AldaHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.$id="ace/mode/alda"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/alda"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-apache_conf.js b/www/js/ace/mode-apache_conf.js deleted file mode 100644 index 314157593..000000000 --- a/www/js/ace/mode-apache_conf.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/apache_conf_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["punctuation.definition.comment.apacheconf","comment.line.hash.ini","comment.line.hash.ini"],regex:"^((?:\\s)*)(#)(.*$)"},{token:["punctuation.definition.tag.apacheconf","entity.tag.apacheconf","text","string.value.apacheconf","punctuation.definition.tag.apacheconf"],regex:"(<)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost)(?:(\\s)(.+?))?(>)"},{token:["punctuation.definition.tag.apacheconf","entity.tag.apacheconf","punctuation.definition.tag.apacheconf"],regex:"()"},{token:["keyword.alias.apacheconf","text","string.regexp.apacheconf","text","string.replacement.apacheconf","text"],regex:"(Rewrite(?:Rule|Cond))(\\s+)(.+?)(\\s+)(.+?)($|\\s)"},{token:["keyword.alias.apacheconf","text","entity.status.apacheconf","text","string.regexp.apacheconf","text","string.path.apacheconf","text"],regex:"(RedirectMatch)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?"},{token:["keyword.alias.apacheconf","text","entity.status.apacheconf","text","string.path.apacheconf","text","string.path.apacheconf","text"],regex:"(Redirect)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?"},{token:["keyword.alias.apacheconf","text","string.regexp.apacheconf","text","string.path.apacheconf","text"],regex:"(ScriptAliasMatch|AliasMatch)(\\s+)(.+?)(\\s+)(?:(.+?)(\\s))?"},{token:["keyword.alias.apacheconf","text","string.path.apacheconf","text","string.path.apacheconf","text"],regex:"(RedirectPermanent|RedirectTemp|ScriptAlias|Alias)(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?"},{token:"keyword.core.apacheconf",regex:"\\b(?:AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|TimeOut|TraceEnable|UseCanonicalName)\\b"},{token:"keyword.mpm.apacheconf",regex:"\\b(?:AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\b"},{token:"keyword.access.apacheconf",regex:"\\b(?:Allow|Deny|Order)\\b"},{token:"keyword.actions.apacheconf",regex:"\\b(?:Action|Script)\\b"},{token:"keyword.alias.apacheconf",regex:"\\b(?:Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\b"},{token:"keyword.auth.apacheconf",regex:"\\b(?:AuthAuthoritative|AuthGroupFile|AuthUserFile)\\b"},{token:"keyword.auth_anon.apacheconf",regex:"\\b(?:Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\b"},{token:"keyword.auth_dbm.apacheconf",regex:"\\b(?:AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\b"},{token:"keyword.auth_digest.apacheconf",regex:"\\b(?:AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize)\\b"},{token:"keyword.auth_ldap.apacheconf",regex:"\\b(?:AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\b"},{token:"keyword.autoindex.apacheconf",regex:"\\b(?:AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|ReadmeName)\\b"},{token:"keyword.cache.apacheconf",regex:"\\b(?:CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\b"},{token:"keyword.cern_meta.apacheconf",regex:"\\b(?:MetaDir|MetaFiles|MetaSuffix)\\b"},{token:"keyword.cgi.apacheconf",regex:"\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength)\\b"},{token:"keyword.cgid.apacheconf",regex:"\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\b"},{token:"keyword.charset_lite.apacheconf",regex:"\\b(?:CharsetDefault|CharsetOptions|CharsetSourceEnc)\\b"},{token:"keyword.dav.apacheconf",regex:"\\b(?:Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\b"},{token:"keyword.deflate.apacheconf",regex:"\\b(?:DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\b"},{token:"keyword.dir.apacheconf",regex:"\\b(?:DirectoryIndex|DirectorySlash)\\b"},{token:"keyword.disk_cache.apacheconf",regex:"\\b(?:CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\b"},{token:"keyword.dumpio.apacheconf",regex:"\\b(?:DumpIOInput|DumpIOOutput)\\b"},{token:"keyword.env.apacheconf",regex:"\\b(?:PassEnv|SetEnv|UnsetEnv)\\b"},{token:"keyword.expires.apacheconf",regex:"\\b(?:ExpiresActive|ExpiresByType|ExpiresDefault)\\b"},{token:"keyword.ext_filter.apacheconf",regex:"\\b(?:ExtFilterDefine|ExtFilterOptions)\\b"},{token:"keyword.file_cache.apacheconf",regex:"\\b(?:CacheFile|MMapFile)\\b"},{token:"keyword.headers.apacheconf",regex:"\\b(?:Header|RequestHeader)\\b"},{token:"keyword.imap.apacheconf",regex:"\\b(?:ImapBase|ImapDefault|ImapMenu)\\b"},{token:"keyword.include.apacheconf",regex:"\\b(?:SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\b"},{token:"keyword.isapi.apacheconf",regex:"\\b(?:ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\b"},{token:"keyword.ldap.apacheconf",regex:"\\b(?:LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\b"},{token:"keyword.log.apacheconf",regex:"\\b(?:BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\b"},{token:"keyword.mem_cache.apacheconf",regex:"\\b(?:MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\b"},{token:"keyword.mime.apacheconf",regex:"\\b(?:AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\b"},{token:"keyword.misc.apacheconf",regex:"\\b(?:ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\b"},{token:"keyword.negotiation.apacheconf",regex:"\\b(?:CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\b"},{token:"keyword.nw_ssl.apacheconf",regex:"\\b(?:NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\b"},{token:"keyword.proxy.apacheconf",regex:"\\b(?:AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\b"},{token:"keyword.rewrite.apacheconf",regex:"\\b(?:RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\b"},{token:"keyword.setenvif.apacheconf",regex:"\\b(?:BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\b"},{token:"keyword.so.apacheconf",regex:"\\b(?:LoadFile|LoadModule)\\b"},{token:"keyword.ssl.apacheconf",regex:"\\b(?:SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth)\\b"},{token:"keyword.usertrack.apacheconf",regex:"\\b(?:CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\b"},{token:"keyword.vhost_alias.apacheconf",regex:"\\b(?:VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\b"},{token:["keyword.php.apacheconf","text","entity.property.apacheconf","text","string.value.apacheconf","text"],regex:"\\b(php_value|php_flag)\\b(?:(\\s+)(.+?)(?:(\\s+)(.+?))?)?(\\s)"},{token:["punctuation.variable.apacheconf","variable.env.apacheconf","variable.misc.apacheconf","punctuation.variable.apacheconf"],regex:"(%\\{)(?:(HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\})"},{token:["entity.mime-type.apacheconf","text"],regex:"\\b((?:text|image|application|video|audio)/.+?)(\\s)"},{token:"entity.helper.apacheconf",regex:"\\b(?:from|unset|set|on|off)\\b",caseInsensitive:!0},{token:"constant.integer.apacheconf",regex:"\\b\\d+\\b"},{token:["text","punctuation.definition.flag.apacheconf","string.flag.apacheconf","punctuation.definition.flag.apacheconf","text"],regex:"(\\s)(\\[)(.*?)(\\])(\\s)"}]},this.normalizeRules()};s.metaData={fileTypes:["conf","CONF","htaccess","HTACCESS","htgroups","HTGROUPS","htpasswd","HTPASSWD",".htaccess",".HTACCESS",".htgroups",".HTGROUPS",".htpasswd",".HTPASSWD"],name:"Apache Conf",scopeName:"source.apacheconf"},r.inherits(s,i),t.ApacheConfHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/apache_conf",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/apache_conf_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./apache_conf_highlight_rules").ApacheConfHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/apache_conf"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/apache_conf"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-apex.js b/www/js/ace/mode-apex.js deleted file mode 100644 index 82519ef20..000000000 --- a/www/js/ace/mode-apex.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/apex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/doc_comment_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../mode/text_highlight_rules").TextHighlightRules,s=e("../mode/doc_comment_highlight_rules").DocCommentHighlightRules,o=function(){function t(t){return t.slice(-3)=="__c"?"support.function":e(t)}function n(e,t){return{regex:e+(t.multiline?"":"(?=.)"),token:"string.start",next:[{regex:t.escape,token:"character.escape"},{regex:t.error,token:"error.invalid"},{regex:e+(t.multiline?"":"|$"),token:"string.end",next:t.next||"start"},{defaultToken:"string"}]}}function r(){return[{token:"comment",regex:"\\/\\/(?=.)",next:[s.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}]},s.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:[s.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}]}]}var e=this.createKeywordMapper({"variable.language":"activate|any|autonomous|begin|bigdecimal|byte|cast|char|collect|const|end|exit|export|float|goto|group|having|hint|import|inner|into|join|loop|number|object|of|outer|parallel|pragma|retrieve|returning|search|short|stat|synchronized|then|this_month|transaction|type|when",keyword:"private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final|and|array|as|asc|break|bulk|by|catch|class|commit|continue|convertcurrency|delete|desc|do|else|enum|extends|false|final|finally|for|from|future|global|if|implements|in|insert|instanceof|interface|last_90_days|last_month|last_n_days|last_week|like|limit|list|map|merge|new|next_90_days|next_month|next_n_days|next_week|not|null|nulls|on|or|override|package|return|rollback|savepoint|select|set|sort|super|testmethod|this|this_week|throw|today|tolabel|tomorrow|trigger|true|try|undelete|update|upsert|using|virtual|webservice|where|while|yesterday|switch|case|default","storage.type":"def|boolean|byte|char|short|int|float|pblob|date|datetime|decimal|double|id|integer|long|string|time|void|blob|Object","constant.language":"true|false|null|after|before|count|excludes|first|includes|last|order|sharing|with","support.function":"system|apex|label|apexpages|userinfo|schema"},"identifier",!0);this.$rules={start:[n("'",{escape:/\\[nb'"\\]/,error:/\\./,multiline:!1}),r("c"),{type:"decoration",token:["meta.package.apex","keyword.other.package.apex","meta.package.apex","storage.modifier.package.apex","meta.package.apex","punctuation.terminator.apex"],regex:/^(\s*)(package)\b(?:(\s*)([^ ;$]+)(\s*)((?:;)?))?/},{regex:/@[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/,token:"constant.language"},{regex:/[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/,token:t},{regex:"`#%",token:"error.invalid"},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[LlDdEe][+-]?\d+)?)\b|\.\d+[LlDdEe]/},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[]/,next:"maybe_soql",merge:!1},{token:"paren.lparen",regex:/[\[({]/,next:"start",merge:!1},{token:"paren.rparen",regex:/[\])}]/,merge:!1}],maybe_soql:[{regex:/\s+/,token:"text"},{regex:/(SELECT|FIND)\b/,token:"keyword",caseInsensitive:!0,next:"soql"},{regex:"",token:"none",next:"start"}],soql:[{regex:"(:?ASC|BY|CATEGORY|CUBE|DATA|DESC|END|FIND|FIRST|FOR|FROM|GROUP|HAVING|IN|LAST|LIMIT|NETWORK|NULLS|OFFSET|ORDER|REFERENCE|RETURNING|ROLLUP|SCOPE|SELECT|SNIPPET|TRACKING|TYPEOF|UPDATE|USING|VIEW|VIEWSTAT|WHERE|WITH|AND|OR)\\b",token:"keyword",caseInsensitive:!0},{regex:"(:?target_length|toLabel|convertCurrency|count|Contact|Account|User|FIELDS)\\b",token:"support.function",caseInsensitive:!0},{token:"paren.rparen",regex:/[\]]/,next:"start",merge:!1},n("'",{escape:/\\[nb'"\\]/,error:/\\./,multiline:!1,next:"soql"}),n('"',{escape:/\\[nb'"\\]/,error:/\\./,multiline:!1,next:"soql"}),{regex:/\\./,token:"character.escape"},{regex:/[\?\&\|\!\{\}\[\]\(\)\^\~\*\:\"\'\+\-\,\.=\\\/]/,token:"keyword.operator"}],"log-start":[{token:"timestamp.invisible",regex:/^[\d:.() ]+\|/,next:"log-header"},{token:"timestamp.invisible",regex:/^ (Number of|Maximum)[^:]*:/,next:"log-comment"},{token:"invisible",regex:/^Execute Anonymous:/,next:"log-comment"},{defaultToken:"text"}],"log-comment":[{token:"log-comment",regex:/.*$/,next:"log-start"}],"log-header":[{token:"timestamp.invisible",regex:/((USER_DEBUG|\[\d+\]|DEBUG)\|)+/},{token:"keyword",regex:"(?:EXECUTION_FINISHED|EXECUTION_STARTED|CODE_UNIT_STARTED|CUMULATIVE_LIMIT_USAGE|LIMIT_USAGE_FOR_NS|CUMULATIVE_LIMIT_USAGE_END|CODE_UNIT_FINISHED)"},{regex:"",next:"log-start"}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.normalizeRules()};r.inherits(o,i),t.ApexHighlightRules=o}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/apex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/apex_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";function u(){i.call(this),this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour}var r=e("../lib/oop"),i=e("../mode/text").Mode,s=e("./apex_highlight_rules").ApexHighlightRules,o=e("../mode/folding/cstyle").FoldMode;r.inherits(u,i),u.prototype.lineCommentStart="//",u.prototype.blockComment={start:"/*",end:"*/"},t.Mode=u}); (function() { - window.require(["ace/mode/apex"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-applescript.js b/www/js/ace/mode-applescript.js deleted file mode 100644 index 3abbc69c1..000000000 --- a/www/js/ace/mode-applescript.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/applescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="about|above|after|against|and|around|as|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|contain|contains|continue|copy|div|does|eighth|else|end|equal|equals|error|every|exit|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|into|is|it|its|last|local|me|middle|mod|my|ninth|not|of|on|onto|or|over|prop|property|put|ref|reference|repeat|returning|script|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|try|until|where|while|whose|with|without",t="AppleScript|false|linefeed|return|pi|quote|result|space|tab|true",n="activate|beep|count|delay|launch|log|offset|read|round|run|say|summarize|write",r="alias|application|boolean|class|constant|date|file|integer|list|number|real|record|string|text|character|characters|contents|day|frontmost|id|item|length|month|name|paragraph|paragraphs|rest|reverse|running|time|version|weekday|word|words|year",i=this.createKeywordMapper({"support.function":n,"constant.language":t,"support.type":r,keyword:e},"identifier");this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\(\\*",next:"comment"},{token:"string",regex:'".*?"'},{token:"support.type",regex:"\\b(POSIX file|POSIX path|(date|time) string|quoted form)\\b"},{token:"support.function",regex:"\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\b|^\\s*return\\b"},{token:"constant.language",regex:"\\b(text item delimiters|current application|missing value)\\b"},{token:"keyword",regex:"\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference))\\b"},{token:i,regex:"[a-zA-Z][a-zA-Z0-9_]*\\b"}],comment:[{token:"comment",regex:"\\*\\)",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()};r.inherits(s,i),t.AppleScriptHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/applescript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/applescript_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./applescript_highlight_rules").AppleScriptHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment={start:"(*",end:"*)"},this.$id="ace/mode/applescript"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/applescript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-aql.js b/www/js/ace/mode-aql.js deleted file mode 100644 index 0ffc747e4..000000000 --- a/www/js/ace/mode-aql.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/aql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="for|return|filter|search|sort|limit|let|collect|asc|desc|in|into|insert|update|remove|replace|upsert|options|with|and|or|not|distinct|graph|shortest_path|outbound|inbound|any|all|none|at least|aggregate|like|k_shortest_paths|k_paths|all_shortest_paths|prune|window",t="true|false",n="to_bool|to_number|to_string|to_array|to_list|is_null|is_bool|is_number|is_string|is_array|is_list|is_object|is_document|is_datestring|typename|json_stringify|json_parse|concat|concat_separator|char_length|lower|upper|substring|left|right|trim|reverse|contains|log|log2|log10|exp|exp2|sin|cos|tan|asin|acos|atan|atan2|radians|degrees|pi|regex_test|regex_replace|like|floor|ceil|round|abs|rand|sqrt|pow|length|count|min|max|average|avg|sum|product|median|variance_population|variance_sample|variance|percentile|bit_and|bit_or|bit_xor|bit_negate|bit_test|bit_popcount|bit_shift_left|bit_shift_right|bit_construct|bit_deconstruct|bit_to_string|bit_from_string|first|last|unique|outersection|interleave|in_range|jaccard|matches|merge|merge_recursive|has|attributes|keys|values|unset|unset_recursive|keep|keep_recursive|near|within|within_rectangle|is_in_polygon|distance|fulltext|stddev_sample|stddev_population|stddev|slice|nth|position|contains_array|translate|zip|call|apply|push|append|pop|shift|unshift|remove_value|remove_values|remove_nth|replace_nth|date_now|date_timestamp|date_iso8601|date_dayofweek|date_year|date_month|date_day|date_hour|date_minute|date_second|date_millisecond|date_dayofyear|date_isoweek|date_isoweekyear|date_leapyear|date_quarter|date_days_in_month|date_trunc|date_round|date_add|date_subtract|date_diff|date_compare|date_format|date_utctolocal|date_localtoutc|date_timezone|date_timezones|fail|passthru|v8|sleep|schema_get|schema_validate|shard_id|call_greenspun|version|noopt|noeval|not_null|first_list|first_document|parse_identifier|current_user|current_database|collection_count|pregel_result|collections|document|decode_rev|range|union|union_distinct|minus|intersection|flatten|is_same_collection|check_document|ltrim|rtrim|find_first|find_last|split|substitute|ipv4_to_number|ipv4_from_number|is_ipv4|md5|sha1|sha512|crc32|fnv64|hash|random_token|to_base64|to_hex|encode_uri_component|soundex|assert|warn|is_key|sorted|sorted_unique|count_distinct|count_unique|levenshtein_distance|levenshtein_match|regex_matches|regex_split|ngram_match|ngram_similarity|ngram_positional_similarity|uuid|tokens|exists|starts_with|phrase|min_match|bm25|tfidf|boost|analyzer|cosine_similarity|decay_exp|decay_gauss|decay_linear|l1_distance|l2_distance|minhash|minhash_count|minhash_error|minhash_match|geo_point|geo_multipoint|geo_polygon|geo_multipolygon|geo_linestring|geo_multilinestring|geo_contains|geo_intersects|geo_equals|geo_distance|geo_area|geo_in_range",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"//.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]},this.normalizeRules()};r.inherits(s,i),t.AqlHighlightRules=s}),define("ace/mode/aql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/aql_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./aql_highlight_rules").AqlHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="//",this.$id="ace/mode/aql"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/aql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-asciidoc.js b/www/js/ace/mode-asciidoc.js deleted file mode 100644 index 553903d3e..000000000 --- a/www/js/ace/mode-asciidoc.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/asciidoc_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){function t(e){var t=/\w/.test(e)?"\\b":"(?:\\B|^)";return t+e+"[^"+e+"].*?"+e+"(?![\\w*])"}var e="[a-zA-Z\u00a1-\uffff]+\\b";this.$rules={start:[{token:"empty",regex:/$/},{token:"literal",regex:/^\.{4,}\s*$/,next:"listingBlock"},{token:"literal",regex:/^-{4,}\s*$/,next:"literalBlock"},{token:"string",regex:/^\+{4,}\s*$/,next:"passthroughBlock"},{token:"keyword",regex:/^={4,}\s*$/},{token:"text",regex:/^\s*$/},{token:"empty",regex:"",next:"dissallowDelimitedBlock"}],dissallowDelimitedBlock:[{include:"paragraphEnd"},{token:"comment",regex:"^//.+$"},{token:"keyword",regex:"^(?:NOTE|TIP|IMPORTANT|WARNING|CAUTION):"},{include:"listStart"},{token:"literal",regex:/^\s+.+$/,next:"indentedBlock"},{token:"empty",regex:"",next:"text"}],paragraphEnd:[{token:"doc.comment",regex:/^\/{4,}\s*$/,next:"commentBlock"},{token:"tableBlock",regex:/^\s*[|!]=+\s*$/,next:"tableBlock"},{token:"keyword",regex:/^(?:--|''')\s*$/,next:"start"},{token:"option",regex:/^\[.*\]\s*$/,next:"start"},{token:"pageBreak",regex:/^>{3,}$/,next:"start"},{token:"literal",regex:/^\.{4,}\s*$/,next:"listingBlock"},{token:"titleUnderline",regex:/^(?:={2,}|-{2,}|~{2,}|\^{2,}|\+{2,})\s*$/,next:"start"},{token:"singleLineTitle",regex:/^={1,5}\s+\S.*$/,next:"start"},{token:"otherBlock",regex:/^(?:\*{2,}|_{2,})\s*$/,next:"start"},{token:"optionalTitle",regex:/^\.[^.\s].+$/,next:"start"}],listStart:[{token:"keyword",regex:/^\s*(?:\d+\.|[a-zA-Z]\.|[ixvmIXVM]+\)|\*{1,5}|-|\.{1,5})\s/,next:"listText"},{token:"meta.tag",regex:/^.+(?::{2,4}|;;)(?: |$)/,next:"listText"},{token:"support.function.list.callout",regex:/^(?:<\d+>|\d+>|>) /,next:"text"},{token:"keyword",regex:/^\+\s*$/,next:"start"}],text:[{token:["link","variable.language"],regex:/((?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+)(\[.*?\])/},{token:"link",regex:/(?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+/},{token:"link",regex:/\b[\w\.\/\-]+@[\w\.\/\-]+\b/},{include:"macros"},{include:"paragraphEnd"},{token:"literal",regex:/\+{3,}/,next:"smallPassthrough"},{token:"escape",regex:/\((?:C|TM|R)\)|\.{3}|->|<-|=>|<=|&#(?:\d+|x[a-fA-F\d]+);|(?: |^)--(?=\s+\S)/},{token:"escape",regex:/\\[_*'`+#]|\\{2}[_*'`+#]{2}/},{token:"keyword",regex:/\s\+$/},{token:"text",regex:e},{token:["keyword","string","keyword"],regex:/(<<[\w\d\-$]+,)(.*?)(>>|$)/},{token:"keyword",regex:/<<[\w\d\-$]+,?|>>/},{token:"constant.character",regex:/\({2,3}.*?\){2,3}/},{token:"keyword",regex:/\[\[.+?\]\]/},{token:"support",regex:/^\[{3}[\w\d =\-]+\]{3}/},{include:"quotes"},{token:"empty",regex:/^\s*$/,next:"start"}],listText:[{include:"listStart"},{include:"text"}],indentedBlock:[{token:"literal",regex:/^[\s\w].+$/,next:"indentedBlock"},{token:"literal",regex:"",next:"start"}],listingBlock:[{token:"literal",regex:/^\.{4,}\s*$/,next:"dissallowDelimitedBlock"},{token:"constant.numeric",regex:"<\\d+>"},{token:"literal",regex:"[^<]+"},{token:"literal",regex:"<"}],literalBlock:[{token:"literal",regex:/^-{4,}\s*$/,next:"dissallowDelimitedBlock"},{token:"constant.numeric",regex:"<\\d+>"},{token:"literal",regex:"[^<]+"},{token:"literal",regex:"<"}],passthroughBlock:[{token:"literal",regex:/^\+{4,}\s*$/,next:"dissallowDelimitedBlock"},{token:"literal",regex:e+"|\\d+"},{include:"macros"},{token:"literal",regex:"."}],smallPassthrough:[{token:"literal",regex:/[+]{3,}/,next:"dissallowDelimitedBlock"},{token:"literal",regex:/^\s*$/,next:"dissallowDelimitedBlock"},{token:"literal",regex:e+"|\\d+"},{include:"macros"}],commentBlock:[{token:"doc.comment",regex:/^\/{4,}\s*$/,next:"dissallowDelimitedBlock"},{token:"doc.comment",regex:"^.*$"}],tableBlock:[{token:"tableBlock",regex:/^\s*\|={3,}\s*$/,next:"dissallowDelimitedBlock"},{token:"tableBlock",regex:/^\s*!={3,}\s*$/,next:"innerTableBlock"},{token:"tableBlock",regex:/\|/},{include:"text",noEscape:!0}],innerTableBlock:[{token:"tableBlock",regex:/^\s*!={3,}\s*$/,next:"tableBlock"},{token:"tableBlock",regex:/^\s*|={3,}\s*$/,next:"dissallowDelimitedBlock"},{token:"tableBlock",regex:/!/}],macros:[{token:"macro",regex:/{[\w\-$]+}/},{token:["text","string","text","constant.character","text"],regex:/({)([\w\-$]+)(:)?(.+)?(})/},{token:["text","markup.list.macro","keyword","string"],regex:/(\w+)(footnote(?:ref)?::?)([^\s\[]+)?(\[.*?\])?/},{token:["markup.list.macro","keyword","string"],regex:/([a-zA-Z\-][\w\.\/\-]*::?)([^\s\[]+)(\[.*?\])?/},{token:["markup.list.macro","keyword"],regex:/([a-zA-Z\-][\w\.\/\-]+::?)(\[.*?\])/},{token:"keyword",regex:/^:.+?:(?= |$)/}],quotes:[{token:"string.italic",regex:/__[^_\s].*?__/},{token:"string.italic",regex:t("_")},{token:"keyword.bold",regex:/\*\*[^*\s].*?\*\*/},{token:"keyword.bold",regex:t("\\*")},{token:"literal",regex:t("\\+")},{token:"literal",regex:/\+\+[^+\s].*?\+\+/},{token:"literal",regex:/\$\$.+?\$\$/},{token:"literal",regex:t("`")},{token:"keyword",regex:t("^")},{token:"keyword",regex:t("~")},{token:"keyword",regex:/##?/},{token:"keyword",regex:/(?:\B|^)``|\b''/}]};var n={macro:"constant.character",tableBlock:"doc.comment",titleUnderline:"markup.heading",singleLineTitle:"markup.heading",pageBreak:"string",option:"string.regexp",otherBlock:"markup.list",literal:"support.function",optionalTitle:"constant.numeric",escape:"constant.language.escape",link:"markup.underline.list"};for(var r in this.$rules){var i=this.$rules[r];for(var s=i.length;s--;){var o=i[s];if(o.include||typeof o=="string"){var u=[s,1].concat(this.$rules[o.include||o]);o.noEscape&&(u=u.filter(function(e){return!e.next})),i.splice.apply(i,u)}else o.token in n&&(o.token=n[o.token])}}};r.inherits(s,i),t.AsciidocHighlightRules=s}),define("ace/mode/folding/asciidoc",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.foldingStartMarker=/^(?:\|={10,}|[\.\/=\-~^+]{4,}\s*$|={1,5} )/,this.singleLineHeadingRe=/^={1,5}(?=\s+\S)/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?r[0]=="="?this.singleLineHeadingRe.test(r)?"start":e.getLine(n-1).length!=e.getLine(n).length?"":"start":e.bgTokenizer.getState(n)=="dissallowDelimitedBlock"?"end":"start":""},this.getFoldWidgetRange=function(e,t,n){function l(t){return f=e.getTokens(t)[0],f&&f.type}function d(){var t=f.value.match(p);if(t)return t[0].length;var r=c.indexOf(f.value[0])+1;return r==1&&e.getLine(n-1).length!=e.getLine(n).length?Infinity:r}var r=e.getLine(n),i=r.length,o=e.getLength(),u=n,a=n;if(!r.match(this.foldingStartMarker))return;var f,c=["=","-","~","^","+"],h="markup.heading",p=this.singleLineHeadingRe;if(l(n)==h){var v=d();while(++nu)while(a>u&&(!l(a)||f.value[0]=="["))a--;if(a>u){var y=e.getLine(a).length;return new s(u,i,a,y)}}else{var b=e.bgTokenizer.getState(n);if(b=="dissallowDelimitedBlock"){while(n-->0)if(e.bgTokenizer.getState(n).lastIndexOf("Block")==-1)break;a=n+1;if(au){var y=e.getLine(n).length;return new s(u,5,a,y-5)}}}}}.call(o.prototype)}),define("ace/mode/asciidoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/asciidoc_highlight_rules","ace/mode/folding/asciidoc"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./asciidoc_highlight_rules").AsciidocHighlightRules,o=e("./folding/asciidoc").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){if(e=="listblock"){var r=/^((?:.+)?)([-+*][ ]+)/.exec(t);return r?(new Array(r[1].length+1)).join(" ")+r[2]:""}return this.$getIndent(t)},this.$id="ace/mode/asciidoc"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/asciidoc"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-asl.js b/www/js/ace/mode-asl.js deleted file mode 100644 index 3660eb6af..000000000 --- a/www/js/ace/mode-asl.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/asl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="Default|DefinitionBlock|Device|Method|Else|ElseIf|For|Function|If|Include|Method|Return|Scope|Switch|Case|While|Break|BreakPoint|Continue|NoOp|Wait|True|False|AccessAs|Acquire|Alias|BankField|Buffer|Concatenate|ConcatenateResTemplate|CondRefOf|Connection|CopyObject|CreateBitField|CreateByteField|CreateDWordField|CreateField|CreateQWordField|CreateWordField|DataTableRegion|Debug|DMA|DWordIO|DWordMemory|DWordSpace|EisaId|EISAID|EndDependentFn|Event|ExtendedIO|ExtendedMemory|ExtendedSpace|External|Fatal|Field|FindSetLeftBit|FindSetRightBit|FixedDMA|FixedIO|Fprintf|FromBCD|GpioInt|GpioIo|I2CSerialBusV2|IndexField|Interrupt|IO|IRQ|IRQNoFlags|Load|LoadTable|Match|Memory32|Memory32Fixed|Mid|Mutex|Name|Notify|Offset|ObjectType|OperationRegion|Package|PowerResource|Printf|QWordIO|QWordMemory|QWordSpace|RawDataBuffer|Register|Release|Reset|ResourceTemplate|Signal|SizeOf|Sleep|SPISerialBusV2|Stall|StartDependentFn|StartDependentFnNoPri|Store|ThermalZone|Timer|ToBCD|ToBuffer|ToDecimalString|ToInteger|ToPLD|ToString|ToUUID|UARTSerialBusV2|Unicode|Unload|VendorLong|VendorShort|WordBusNumber|WordIO|WordSpace",t="Add|And|Decrement|Divide|Increment|Index|LAnd|LEqual|LGreater|LGreaterEqual|LLess|LLessEqual|LNot|LNotEqual|LOr|Mod|Multiply|NAnd|NOr|Not|Or|RefOf|Revision|ShiftLeft|ShiftRight|Subtract|XOr|DerefOf",n="AttribQuick|AttribSendReceive|AttribByte|AttribBytes|AttribRawBytes|AttribRawProcessBytes|AttribWord|AttribBlock|AttribProcessCall|AttribBlockProcessCall|AnyAcc|ByteAcc|WordAcc|DWordAcc|QWordAcc|BufferAcc|AddressRangeMemory|AddressRangeReserved|AddressRangeNVS|AddressRangeACPI|RegionSpaceKeyword|FFixedHW|PCC|AddressingMode7Bit|AddressingMode10Bit|DataBitsFive|DataBitsSix|DataBitsSeven|DataBitsEight|DataBitsNine|BusMaster|NotBusMaster|ClockPhaseFirst|ClockPhaseSecond|ClockPolarityLow|ClockPolarityHigh|SubDecode|PosDecode|BigEndianing|LittleEndian|FlowControlNone|FlowControlXon|FlowControlHardware|Edge|Level|ActiveHigh|ActiveLow|ActiveBoth|Decode16|Decode10|IoRestrictionNone|IoRestrictionInputOnly|IoRestrictionOutputOnly|IoRestrictionNoneAndPreserve|Lock|NoLock|MTR|MEQ|MLE|MLT|MGE|MGT|MaxFixed|MaxNotFixed|Cacheable|WriteCombining|Prefetchable|NonCacheable|MinFixed|MinNotFixed|ParityTypeNone|ParityTypeSpace|ParityTypeMark|ParityTypeOdd|ParityTypeEven|PullDefault|PullUp|PullDown|PullNone|PolarityHigh|PolarityLow|ISAOnlyRanges|NonISAOnlyRanges|EntireRange|ReadWrite|ReadOnly|UserDefRegionSpace|SystemIO|SystemMemory|PCI_Config|EmbeddedControl|SMBus|SystemCMOS|PciBarTarget|IPMI|GeneralPurposeIO|GenericSerialBus|ResourceConsumer|ResourceProducer|Serialized|NotSerialized|Shared|Exclusive|SharedAndWake|ExclusiveAndWake|ControllerInitiated|DeviceInitiated|StopBitsZero|StopBitsOne|StopBitsOnePlusHalf|StopBitsTwo|Width8Bit|Width16Bit|Width32Bit|Width64Bit|Width128Bit|Width256Bit|SparseTranslation|DenseTranslation|TypeTranslation|TypeStatic|Preserve|WriteAsOnes|WriteAsZeros|Transfer8|Transfer16|Transfer8_16|ThreeWireMode|FourWireMode",r="UnknownObj|IntObj|StrObj|BuffObj|PkgObj|FieldUnitObj|DeviceObj|EventObj|MethodObj|MutexObj|OpRegionObj|PowerResObj|ProcessorObj|ThermalZoneObj|BuffFieldObj|DDBHandleObj",s="__FILE__|__PATH__|__LINE__|__DATE__|__IASL__",o="One|Ones|Zero",u="Memory24|Processor",a=this.createKeywordMapper({keyword:e,"constant.numeric":o,"keyword.operator":t,"constant.language":s,"storage.type":r,"constant.library":n,"invalid.deprecated":u},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\[",next:"ignoredfield"},{token:"variable",regex:"\\Local[0-7]|\\Arg[0-6]"},{token:"keyword",regex:"#\\s*(?:define|elif|else|endif|error|if|ifdef|ifndef|include|includebuffer|line|pragma|undef|warning)\\b",next:"directive"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"constant.character",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[0-9]+\b/},{token:a,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:/[!\~\*\/%+-<>\^|=&]/},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],ignoredfield:[{token:"comment",regex:"\\]",next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>*s",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]*s',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.ASLHighlightRules=o}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/asl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/asl_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./asl_highlight_rules").ASLHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.$id="ace/mode/asl"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/asl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-assembly_arm32.js b/www/js/ace/mode-assembly_arm32.js deleted file mode 100644 index c11e3f764..000000000 --- a/www/js/ace/mode-assembly_arm32.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/assembly_arm32_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"keyword.control.assembly",regex:"\\b(?:cpsid|cpsie|cps|setend|(?:srs|rfe)(?:ia|ib|da|db|fd|ed|fa|ea)|bkpt|nop|pld|cdp2|mrc2|mrrc2|mcr2|mcrr2|ldc2|stc2|(?:add|adc|sub|sbc|rsb|rsc|mul|mla|umull|umlal|smull|smlal|mvn|and|eor|orr|bic)(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?s?|(?:(?:q|qd)?(?:add|sub)|umaal|smul(?:b|t)(?:b|t)|smulw(?:b|t)|smla(?:b|t)(?:b|t)|smlaw(?:b|t)|smlal(?:b|t)(?:b|t)|smuadx?|smladx?|smlaldx?|smusdx?|smlsdx?|smlsldx?|smmulr?|smmlar?|smmlsr?|mia|miaph|mia(?:b|t)(?:b|t)|clz|(?:s|q|sh|u|uq|uh)(?:add16|sub16|add8|sub8|addsubx|subaddx)|usad8|usada8|mrs|msr|mra|mar|cpy|tst|teq|cmp|cmn|ssat|ssat16|usat|usat16|pkhbt|pkhtb|sxth|sxtb16|sxtb|uxth|uxtb16|uxtb|sxtah|sxtab16|sxtab|uxtah|uxtab16|uxtab|rev|rev16|revsh|sel|b|bl|bx|blx|bxj|swi|svc|ldrex|strex|cdp|mrc|mrrc|mcr|mcrr|ldc|stc)(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?|ldr(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?(?:t|b|bt|sb|h|sh|d)?|str(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?(?:t|b|bt|h|d)?|(?:ldm|stm)(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?(?:ia|ib|da|db|fd|ed|fa|ea)|swp(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?b?|mov(?:t|w)?)\\b",caseInsensitive:!0},{token:"variable.parameter.register.assembly",regex:"\\b(?:r0|r1|r2|r3|r4|r5|r6|r7|r8|r9|r10|r11|r12|r13|r14|r15|fp|ip|sp|lr|pc|cpsr|spsr|c|f|s|x|lsl|lsr|asr|ror|rrx)\\b",caseInsensitive:!0},{token:"constant.character.hexadecimal.assembly",regex:"#0x[A-F0-9]+",caseInsensitive:!0},{token:"constant.character.decimal.assembly",regex:"#[0-9]+"},{token:"string.assembly",regex:/'([^\\']|\\.)*'/},{token:"string.assembly",regex:/"([^\\"]|\\.)*"/},{token:"support.function.directive.assembly",regex:"(?:.section|.global|.text|.asciz|.asciiz|.ascii|.align|.byte|.end|.data|.equ|.extern|.include)"},{token:"entity.name.function.assembly",regex:"^\\s*%%[\\w.]+?:$"},{token:"entity.name.function.assembly",regex:"^\\s*%\\$[\\w.]+?:$"},{token:"entity.name.function.assembly",regex:"^[\\w.]+?:"},{token:"entity.name.function.assembly",regex:"^[\\w.]+?\\b"},{token:"comment.assembly",regex:"\\/\\*",next:"comment"},{token:"comment.assembly",regex:"(?:;|//|@).*$"}],comment:[{token:"comment.assembly",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()};s.metaData={fileTypes:["s"],name:"Assembly ARM32",scopeName:"source.assembly"},r.inherits(s,i),t.AssemblyARM32HighlightRules=s}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&ua){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/astro_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/javascript_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=function(){function r(e){for(var t in this.$rules[e+"jsxAttributes"])if(this.$rules[e+"jsxAttributes"][t].token==="meta.tag.punctuation.tag-close.xml"){this.$rules[e+"jsxAttributes"][t].onMatch=function(t,n,r){return n==r[0]&&r.shift(),t.length==2&&(r[0]==this.nextState&&r[1]--,(!r[1]||r[1]<0)&&r.splice(0,2)),this.next=r[0]||e+"start",[{type:this.token,value:t}]};break}}i.call(this);var e={token:"paren.quasi.start",regex:/{/,next:function(e,t){return e!=="start"&&(e.indexOf("attribute-equals")!==-1?(t.splice(0),t.unshift("tag_stuff")):t.unshift(e)),"inline-js-start"}};for(var t in this.$rules){if(t.startsWith("js")||t.startsWith("css")||t.startsWith("comment"))continue;this.$rules[t].unshift(e)}this.$rules.start.unshift({token:"comment",regex:/^---$/,onMatch:function(e,t,n){return n.splice(0),this.token},next:"javascript-start"}),this.embedRules(s,"javascript-",[{regex:/^---$/,token:"comment",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}]),this.embedRules(s,"inline-js-");var n=[{regex:/}/,token:"paren.quasi.end",onMatch:function(e,t,n){return n[0]==="inline-js-start"?(n.shift(),this.next=n.shift(),this.next.indexOf("string")!==-1?"paren.quasi.end":"paren.rparen"):(this.next=n.shift()||"start",this.token)}},{regex:/{/,token:"paren.lparen",push:"inline-js-start"}];this.$rules["inline-js-start"].unshift(n),this.$rules["inline-js-no_regex"].unshift(n),r.call(this,"javascript-"),r.call(this,"inline-js-"),this.normalizeRules()};r.inherits(o,i),t.AstroHighlightRules=o}),define("ace/mode/behaviour/html",["require","exports","module","ace/lib/oop","ace/mode/behaviour/xml"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour/xml").XmlBehaviour,s=function(){i.call(this)};r.inherits(s,i),t.HtmlBehaviour=s}),define("ace/mode/astro",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/astro_highlight_rules","ace/mode/behaviour/html"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./astro_highlight_rules").AstroHighlightRules,o=e("./behaviour/html").HtmlBehaviour,u=function(){i.call(this),this.HighlightRules=s,this.$behaviour=new o};r.inherits(u,i),function(){this.$id="ace/mode/astro"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/astro"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-autohotkey.js b/www/js/ace/mode-autohotkey.js deleted file mode 100644 index bea80fb96..000000000 --- a/www/js/ace/mode-autohotkey.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/autohotkey_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="And|ByRef|Case|Const|ContinueCase|ContinueLoop|Default|Dim|Do|Else|ElseIf|EndFunc|EndIf|EndSelect|EndSwitch|EndWith|Enum|Exit|ExitLoop|False|For|Func|Global|If|In|Local|Next|Not|Or|ReDim|Return|Select|Step|Switch|Then|To|True|Until|WEnd|While|With|Abs|ACos|AdlibDisable|AdlibEnable|Asc|AscW|ASin|Assign|ATan|AutoItSetOption|AutoItWinGetTitle|AutoItWinSetTitle|Beep|Binary|BinaryLen|BinaryMid|BinaryToString|BitAND|BitNOT|BitOR|BitRotate|BitShift|BitXOR|BlockInput|Break|Call|CDTray|Ceiling|Chr|ChrW|ClipGet|ClipPut|ConsoleRead|ConsoleWrite|ConsoleWriteError|ControlClick|ControlCommand|ControlDisable|ControlEnable|ControlFocus|ControlGetFocus|ControlGetHandle|ControlGetPos|ControlGetText|ControlHide|ControlListView|ControlMove|ControlSend|ControlSetText|ControlShow|ControlTreeView|Cos|Dec|DirCopy|DirCreate|DirGetSize|DirMove|DirRemove|DllCall|DllCallbackFree|DllCallbackGetPtr|DllCallbackRegister|DllClose|DllOpen|DllStructCreate|DllStructGetData|DllStructGetPtr|DllStructGetSize|DllStructSetData|DriveGetDrive|DriveGetFileSystem|DriveGetLabel|DriveGetSerial|DriveGetType|DriveMapAdd|DriveMapDel|DriveMapGet|DriveSetLabel|DriveSpaceFree|DriveSpaceTotal|DriveStatus|EnvGet|EnvSet|EnvUpdate|Eval|Execute|Exp|FileChangeDir|FileClose|FileCopy|FileCreateNTFSLink|FileCreateShortcut|FileDelete|FileExists|FileFindFirstFile|FileFindNextFile|FileGetAttrib|FileGetLongName|FileGetShortcut|FileGetShortName|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileOpen|FileOpenDialog|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileSaveDialog|FileSelectFolder|FileSetAttrib|FileSetTime|FileWrite|FileWriteLine|Floor|FtpSetProxy|GUICreate|GUICtrlCreateAvi|GUICtrlCreateButton|GUICtrlCreateCheckbox|GUICtrlCreateCombo|GUICtrlCreateContextMenu|GUICtrlCreateDate|GUICtrlCreateDummy|GUICtrlCreateEdit|GUICtrlCreateGraphic|GUICtrlCreateGroup|GUICtrlCreateIcon|GUICtrlCreateInput|GUICtrlCreateLabel|GUICtrlCreateList|GUICtrlCreateListView|GUICtrlCreateListViewItem|GUICtrlCreateMenu|GUICtrlCreateMenuItem|GUICtrlCreateMonthCal|GUICtrlCreateObj|GUICtrlCreatePic|GUICtrlCreateProgress|GUICtrlCreateRadio|GUICtrlCreateSlider|GUICtrlCreateTab|GUICtrlCreateTabItem|GUICtrlCreateTreeView|GUICtrlCreateTreeViewItem|GUICtrlCreateUpdown|GUICtrlDelete|GUICtrlGetHandle|GUICtrlGetState|GUICtrlRead|GUICtrlRecvMsg|GUICtrlRegisterListViewSort|GUICtrlSendMsg|GUICtrlSendToDummy|GUICtrlSetBkColor|GUICtrlSetColor|GUICtrlSetCursor|GUICtrlSetData|GUICtrlSetFont|GUICtrlSetDefColor|GUICtrlSetDefBkColor|GUICtrlSetGraphic|GUICtrlSetImage|GUICtrlSetLimit|GUICtrlSetOnEvent|GUICtrlSetPos|GUICtrlSetResizing|GUICtrlSetState|GUICtrlSetStyle|GUICtrlSetTip|GUIDelete|GUIGetCursorInfo|GUIGetMsg|GUIGetStyle|GUIRegisterMsg|GUISetAccelerators()|GUISetBkColor|GUISetCoord|GUISetCursor|GUISetFont|GUISetHelp|GUISetIcon|GUISetOnEvent|GUISetState|GUISetStyle|GUIStartGroup|GUISwitch|Hex|HotKeySet|HttpSetProxy|HWnd|InetGet|InetGetSize|IniDelete|IniRead|IniReadSection|IniReadSectionNames|IniRenameSection|IniWrite|IniWriteSection|InputBox|Int|IsAdmin|IsArray|IsBinary|IsBool|IsDeclared|IsDllStruct|IsFloat|IsHWnd|IsInt|IsKeyword|IsNumber|IsObj|IsPtr|IsString|Log|MemGetStats|Mod|MouseClick|MouseClickDrag|MouseDown|MouseGetCursor|MouseGetPos|MouseMove|MouseUp|MouseWheel|MsgBox|Number|ObjCreate|ObjEvent|ObjGet|ObjName|Opt|Ping|PixelChecksum|PixelGetColor|PixelSearch|PluginClose|PluginOpen|ProcessClose|ProcessExists|ProcessGetStats|ProcessList|ProcessSetPriority|ProcessWait|ProcessWaitClose|ProgressOff|ProgressOn|ProgressSet|Ptr|Random|RegDelete|RegEnumKey|RegEnumVal|RegRead|RegWrite|Round|Run|RunAs|RunAsWait|RunWait|Send|SendKeepActive|SetError|SetExtended|ShellExecute|ShellExecuteWait|Shutdown|Sin|Sleep|SoundPlay|SoundSetWaveVolume|SplashImageOn|SplashOff|SplashTextOn|Sqrt|SRandom|StatusbarGetText|StderrRead|StdinWrite|StdioClose|StdoutRead|String|StringAddCR|StringCompare|StringFormat|StringInStr|StringIsAlNum|StringIsAlpha|StringIsASCII|StringIsDigit|StringIsFloat|StringIsInt|StringIsLower|StringIsSpace|StringIsUpper|StringIsXDigit|StringLeft|StringLen|StringLower|StringMid|StringRegExp|StringRegExpReplace|StringReplace|StringRight|StringSplit|StringStripCR|StringStripWS|StringToBinary|StringTrimLeft|StringTrimRight|StringUpper|Tan|TCPAccept|TCPCloseSocket|TCPConnect|TCPListen|TCPNameToIP|TCPRecv|TCPSend|TCPShutdown|TCPStartup|TimerDiff|TimerInit|ToolTip|TrayCreateItem|TrayCreateMenu|TrayGetMsg|TrayItemDelete|TrayItemGetHandle|TrayItemGetState|TrayItemGetText|TrayItemSetOnEvent|TrayItemSetState|TrayItemSetText|TraySetClick|TraySetIcon|TraySetOnEvent|TraySetPauseIcon|TraySetState|TraySetToolTip|TrayTip|UBound|UDPBind|UDPCloseSocket|UDPOpen|UDPRecv|UDPSend|UDPShutdown|UDPStartup|VarGetType|WinActivate|WinActive|WinClose|WinExists|WinFlash|WinGetCaretPos|WinGetClassList|WinGetClientSize|WinGetHandle|WinGetPos|WinGetProcess|WinGetState|WinGetText|WinGetTitle|WinKill|WinList|WinMenuSelectItem|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinSetOnTop|WinSetState|WinSetTitle|WinSetTrans|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive|ArrayAdd|ArrayBinarySearch|ArrayConcatenate|ArrayDelete|ArrayDisplay|ArrayFindAll|ArrayInsert|ArrayMax|ArrayMaxIndex|ArrayMin|ArrayMinIndex|ArrayPop|ArrayPush|ArrayReverse|ArraySearch|ArraySort|ArraySwap|ArrayToClip|ArrayToString|ArrayTrim|ChooseColor|ChooseFont|ClipBoard_ChangeChain|ClipBoard_Close|ClipBoard_CountFormats|ClipBoard_Empty|ClipBoard_EnumFormats|ClipBoard_FormatStr|ClipBoard_GetData|ClipBoard_GetDataEx|ClipBoard_GetFormatName|ClipBoard_GetOpenWindow|ClipBoard_GetOwner|ClipBoard_GetPriorityFormat|ClipBoard_GetSequenceNumber|ClipBoard_GetViewer|ClipBoard_IsFormatAvailable|ClipBoard_Open|ClipBoard_RegisterFormat|ClipBoard_SetData|ClipBoard_SetDataEx|ClipBoard_SetViewer|ClipPutFile|ColorConvertHSLtoRGB|ColorConvertRGBtoHSL|ColorGetBlue|ColorGetGreen|ColorGetRed|Date_Time_CompareFileTime|Date_Time_DOSDateTimeToArray|Date_Time_DOSDateTimeToFileTime|Date_Time_DOSDateTimeToStr|Date_Time_DOSDateToArray|Date_Time_DOSDateToStr|Date_Time_DOSTimeToArray|Date_Time_DOSTimeToStr|Date_Time_EncodeFileTime|Date_Time_EncodeSystemTime|Date_Time_FileTimeToArray|Date_Time_FileTimeToDOSDateTime|Date_Time_FileTimeToLocalFileTime|Date_Time_FileTimeToStr|Date_Time_FileTimeToSystemTime|Date_Time_GetFileTime|Date_Time_GetLocalTime|Date_Time_GetSystemTime|Date_Time_GetSystemTimeAdjustment|Date_Time_GetSystemTimeAsFileTime|Date_Time_GetSystemTimes|Date_Time_GetTickCount|Date_Time_GetTimeZoneInformation|Date_Time_LocalFileTimeToFileTime|Date_Time_SetFileTime|Date_Time_SetLocalTime|Date_Time_SetSystemTime|Date_Time_SetSystemTimeAdjustment|Date_Time_SetTimeZoneInformation|Date_Time_SystemTimeToArray|Date_Time_SystemTimeToDateStr|Date_Time_SystemTimeToDateTimeStr|Date_Time_SystemTimeToFileTime|Date_Time_SystemTimeToTimeStr|Date_Time_SystemTimeToTzSpecificLocalTime|Date_Time_TzSpecificLocalTimeToSystemTime|DateAdd|DateDayOfWeek|DateDaysInMonth|DateDiff|DateIsLeapYear|DateIsValid|DateTimeFormat|DateTimeSplit|DateToDayOfWeek|DateToDayOfWeekISO|DateToDayValue|DateToMonth|DayValueToDate|DebugBugReportEnv|DebugOut|DebugSetup|Degree|EventLog__Backup|EventLog__Clear|EventLog__Close|EventLog__Count|EventLog__DeregisterSource|EventLog__Full|EventLog__Notify|EventLog__Oldest|EventLog__Open|EventLog__OpenBackup|EventLog__Read|EventLog__RegisterSource|EventLog__Report|FileCountLines|FileCreate|FileListToArray|FilePrint|FileReadToArray|FileWriteFromArray|FileWriteLog|FileWriteToLine|GDIPlus_ArrowCapCreate|GDIPlus_ArrowCapDispose|GDIPlus_ArrowCapGetFillState|GDIPlus_ArrowCapGetHeight|GDIPlus_ArrowCapGetMiddleInset|GDIPlus_ArrowCapGetWidth|GDIPlus_ArrowCapSetFillState|GDIPlus_ArrowCapSetHeight|GDIPlus_ArrowCapSetMiddleInset|GDIPlus_ArrowCapSetWidth|GDIPlus_BitmapCloneArea|GDIPlus_BitmapCreateFromFile|GDIPlus_BitmapCreateFromGraphics|GDIPlus_BitmapCreateFromHBITMAP|GDIPlus_BitmapCreateHBITMAPFromBitmap|GDIPlus_BitmapDispose|GDIPlus_BitmapLockBits|GDIPlus_BitmapUnlockBits|GDIPlus_BrushClone|GDIPlus_BrushCreateSolid|GDIPlus_BrushDispose|GDIPlus_BrushGetType|GDIPlus_CustomLineCapDispose|GDIPlus_Decoders|GDIPlus_DecodersGetCount|GDIPlus_DecodersGetSize|GDIPlus_Encoders|GDIPlus_EncodersGetCLSID|GDIPlus_EncodersGetCount|GDIPlus_EncodersGetParamList|GDIPlus_EncodersGetParamListSize|GDIPlus_EncodersGetSize|GDIPlus_FontCreate|GDIPlus_FontDispose|GDIPlus_FontFamilyCreate|GDIPlus_FontFamilyDispose|GDIPlus_GraphicsClear|GDIPlus_GraphicsCreateFromHDC|GDIPlus_GraphicsCreateFromHWND|GDIPlus_GraphicsDispose|GDIPlus_GraphicsDrawArc|GDIPlus_GraphicsDrawBezier|GDIPlus_GraphicsDrawClosedCurve|GDIPlus_GraphicsDrawCurve|GDIPlus_GraphicsDrawEllipse|GDIPlus_GraphicsDrawImage|GDIPlus_GraphicsDrawImageRect|GDIPlus_GraphicsDrawImageRectRect|GDIPlus_GraphicsDrawLine|GDIPlus_GraphicsDrawPie|GDIPlus_GraphicsDrawPolygon|GDIPlus_GraphicsDrawRect|GDIPlus_GraphicsDrawString|GDIPlus_GraphicsDrawStringEx|GDIPlus_GraphicsFillClosedCurve|GDIPlus_GraphicsFillEllipse|GDIPlus_GraphicsFillPie|GDIPlus_GraphicsFillRect|GDIPlus_GraphicsGetDC|GDIPlus_GraphicsGetSmoothingMode|GDIPlus_GraphicsMeasureString|GDIPlus_GraphicsReleaseDC|GDIPlus_GraphicsSetSmoothingMode|GDIPlus_GraphicsSetTransform|GDIPlus_ImageDispose|GDIPlus_ImageGetGraphicsContext|GDIPlus_ImageGetHeight|GDIPlus_ImageGetWidth|GDIPlus_ImageLoadFromFile|GDIPlus_ImageSaveToFile|GDIPlus_ImageSaveToFileEx|GDIPlus_MatrixCreate|GDIPlus_MatrixDispose|GDIPlus_MatrixRotate|GDIPlus_ParamAdd|GDIPlus_ParamInit|GDIPlus_PenCreate|GDIPlus_PenDispose|GDIPlus_PenGetAlignment|GDIPlus_PenGetColor|GDIPlus_PenGetCustomEndCap|GDIPlus_PenGetDashCap|GDIPlus_PenGetDashStyle|GDIPlus_PenGetEndCap|GDIPlus_PenGetWidth|GDIPlus_PenSetAlignment|GDIPlus_PenSetColor|GDIPlus_PenSetCustomEndCap|GDIPlus_PenSetDashCap|GDIPlus_PenSetDashStyle|GDIPlus_PenSetEndCap|GDIPlus_PenSetWidth|GDIPlus_RectFCreate|GDIPlus_Shutdown|GDIPlus_Startup|GDIPlus_StringFormatCreate|GDIPlus_StringFormatDispose|GetIP|GUICtrlAVI_Close|GUICtrlAVI_Create|GUICtrlAVI_Destroy|GUICtrlAVI_Open|GUICtrlAVI_OpenEx|GUICtrlAVI_Play|GUICtrlAVI_Seek|GUICtrlAVI_Show|GUICtrlAVI_Stop|GUICtrlButton_Click|GUICtrlButton_Create|GUICtrlButton_Destroy|GUICtrlButton_Enable|GUICtrlButton_GetCheck|GUICtrlButton_GetFocus|GUICtrlButton_GetIdealSize|GUICtrlButton_GetImage|GUICtrlButton_GetImageList|GUICtrlButton_GetState|GUICtrlButton_GetText|GUICtrlButton_GetTextMargin|GUICtrlButton_SetCheck|GUICtrlButton_SetFocus|GUICtrlButton_SetImage|GUICtrlButton_SetImageList|GUICtrlButton_SetSize|GUICtrlButton_SetState|GUICtrlButton_SetStyle|GUICtrlButton_SetText|GUICtrlButton_SetTextMargin|GUICtrlButton_Show|GUICtrlComboBox_AddDir|GUICtrlComboBox_AddString|GUICtrlComboBox_AutoComplete|GUICtrlComboBox_BeginUpdate|GUICtrlComboBox_Create|GUICtrlComboBox_DeleteString|GUICtrlComboBox_Destroy|GUICtrlComboBox_EndUpdate|GUICtrlComboBox_FindString|GUICtrlComboBox_FindStringExact|GUICtrlComboBox_GetComboBoxInfo|GUICtrlComboBox_GetCount|GUICtrlComboBox_GetCurSel|GUICtrlComboBox_GetDroppedControlRect|GUICtrlComboBox_GetDroppedControlRectEx|GUICtrlComboBox_GetDroppedState|GUICtrlComboBox_GetDroppedWidth|GUICtrlComboBox_GetEditSel|GUICtrlComboBox_GetEditText|GUICtrlComboBox_GetExtendedUI|GUICtrlComboBox_GetHorizontalExtent|GUICtrlComboBox_GetItemHeight|GUICtrlComboBox_GetLBText|GUICtrlComboBox_GetLBTextLen|GUICtrlComboBox_GetList|GUICtrlComboBox_GetListArray|GUICtrlComboBox_GetLocale|GUICtrlComboBox_GetLocaleCountry|GUICtrlComboBox_GetLocaleLang|GUICtrlComboBox_GetLocalePrimLang|GUICtrlComboBox_GetLocaleSubLang|GUICtrlComboBox_GetMinVisible|GUICtrlComboBox_GetTopIndex|GUICtrlComboBox_InitStorage|GUICtrlComboBox_InsertString|GUICtrlComboBox_LimitText|GUICtrlComboBox_ReplaceEditSel|GUICtrlComboBox_ResetContent|GUICtrlComboBox_SelectString|GUICtrlComboBox_SetCurSel|GUICtrlComboBox_SetDroppedWidth|GUICtrlComboBox_SetEditSel|GUICtrlComboBox_SetEditText|GUICtrlComboBox_SetExtendedUI|GUICtrlComboBox_SetHorizontalExtent|GUICtrlComboBox_SetItemHeight|GUICtrlComboBox_SetMinVisible|GUICtrlComboBox_SetTopIndex|GUICtrlComboBox_ShowDropDown|GUICtrlComboBoxEx_AddDir|GUICtrlComboBoxEx_AddString|GUICtrlComboBoxEx_BeginUpdate|GUICtrlComboBoxEx_Create|GUICtrlComboBoxEx_CreateSolidBitMap|GUICtrlComboBoxEx_DeleteString|GUICtrlComboBoxEx_Destroy|GUICtrlComboBoxEx_EndUpdate|GUICtrlComboBoxEx_FindStringExact|GUICtrlComboBoxEx_GetComboBoxInfo|GUICtrlComboBoxEx_GetComboControl|GUICtrlComboBoxEx_GetCount|GUICtrlComboBoxEx_GetCurSel|GUICtrlComboBoxEx_GetDroppedControlRect|GUICtrlComboBoxEx_GetDroppedControlRectEx|GUICtrlComboBoxEx_GetDroppedState|GUICtrlComboBoxEx_GetDroppedWidth|GUICtrlComboBoxEx_GetEditControl|GUICtrlComboBoxEx_GetEditSel|GUICtrlComboBoxEx_GetEditText|GUICtrlComboBoxEx_GetExtendedStyle|GUICtrlComboBoxEx_GetExtendedUI|GUICtrlComboBoxEx_GetImageList|GUICtrlComboBoxEx_GetItem|GUICtrlComboBoxEx_GetItemEx|GUICtrlComboBoxEx_GetItemHeight|GUICtrlComboBoxEx_GetItemImage|GUICtrlComboBoxEx_GetItemIndent|GUICtrlComboBoxEx_GetItemOverlayImage|GUICtrlComboBoxEx_GetItemParam|GUICtrlComboBoxEx_GetItemSelectedImage|GUICtrlComboBoxEx_GetItemText|GUICtrlComboBoxEx_GetItemTextLen|GUICtrlComboBoxEx_GetList|GUICtrlComboBoxEx_GetListArray|GUICtrlComboBoxEx_GetLocale|GUICtrlComboBoxEx_GetLocaleCountry|GUICtrlComboBoxEx_GetLocaleLang|GUICtrlComboBoxEx_GetLocalePrimLang|GUICtrlComboBoxEx_GetLocaleSubLang|GUICtrlComboBoxEx_GetMinVisible|GUICtrlComboBoxEx_GetTopIndex|GUICtrlComboBoxEx_InitStorage|GUICtrlComboBoxEx_InsertString|GUICtrlComboBoxEx_LimitText|GUICtrlComboBoxEx_ReplaceEditSel|GUICtrlComboBoxEx_ResetContent|GUICtrlComboBoxEx_SetCurSel|GUICtrlComboBoxEx_SetDroppedWidth|GUICtrlComboBoxEx_SetEditSel|GUICtrlComboBoxEx_SetEditText|GUICtrlComboBoxEx_SetExtendedStyle|GUICtrlComboBoxEx_SetExtendedUI|GUICtrlComboBoxEx_SetImageList|GUICtrlComboBoxEx_SetItem|GUICtrlComboBoxEx_SetItemEx|GUICtrlComboBoxEx_SetItemHeight|GUICtrlComboBoxEx_SetItemImage|GUICtrlComboBoxEx_SetItemIndent|GUICtrlComboBoxEx_SetItemOverlayImage|GUICtrlComboBoxEx_SetItemParam|GUICtrlComboBoxEx_SetItemSelectedImage|GUICtrlComboBoxEx_SetMinVisible|GUICtrlComboBoxEx_SetTopIndex|GUICtrlComboBoxEx_ShowDropDown|GUICtrlDTP_Create|GUICtrlDTP_Destroy|GUICtrlDTP_GetMCColor|GUICtrlDTP_GetMCFont|GUICtrlDTP_GetMonthCal|GUICtrlDTP_GetRange|GUICtrlDTP_GetRangeEx|GUICtrlDTP_GetSystemTime|GUICtrlDTP_GetSystemTimeEx|GUICtrlDTP_SetFormat|GUICtrlDTP_SetMCColor|GUICtrlDTP_SetMCFont|GUICtrlDTP_SetRange|GUICtrlDTP_SetRangeEx|GUICtrlDTP_SetSystemTime|GUICtrlDTP_SetSystemTimeEx|GUICtrlEdit_AppendText|GUICtrlEdit_BeginUpdate|GUICtrlEdit_CanUndo|GUICtrlEdit_CharFromPos|GUICtrlEdit_Create|GUICtrlEdit_Destroy|GUICtrlEdit_EmptyUndoBuffer|GUICtrlEdit_EndUpdate|GUICtrlEdit_Find|GUICtrlEdit_FmtLines|GUICtrlEdit_GetFirstVisibleLine|GUICtrlEdit_GetLimitText|GUICtrlEdit_GetLine|GUICtrlEdit_GetLineCount|GUICtrlEdit_GetMargins|GUICtrlEdit_GetModify|GUICtrlEdit_GetPasswordChar|GUICtrlEdit_GetRECT|GUICtrlEdit_GetRECTEx|GUICtrlEdit_GetSel|GUICtrlEdit_GetText|GUICtrlEdit_GetTextLen|GUICtrlEdit_HideBalloonTip|GUICtrlEdit_InsertText|GUICtrlEdit_LineFromChar|GUICtrlEdit_LineIndex|GUICtrlEdit_LineLength|GUICtrlEdit_LineScroll|GUICtrlEdit_PosFromChar|GUICtrlEdit_ReplaceSel|GUICtrlEdit_Scroll|GUICtrlEdit_SetLimitText|GUICtrlEdit_SetMargins|GUICtrlEdit_SetModify|GUICtrlEdit_SetPasswordChar|GUICtrlEdit_SetReadOnly|GUICtrlEdit_SetRECT|GUICtrlEdit_SetRECTEx|GUICtrlEdit_SetRECTNP|GUICtrlEdit_SetRectNPEx|GUICtrlEdit_SetSel|GUICtrlEdit_SetTabStops|GUICtrlEdit_SetText|GUICtrlEdit_ShowBalloonTip|GUICtrlEdit_Undo|GUICtrlHeader_AddItem|GUICtrlHeader_ClearFilter|GUICtrlHeader_ClearFilterAll|GUICtrlHeader_Create|GUICtrlHeader_CreateDragImage|GUICtrlHeader_DeleteItem|GUICtrlHeader_Destroy|GUICtrlHeader_EditFilter|GUICtrlHeader_GetBitmapMargin|GUICtrlHeader_GetImageList|GUICtrlHeader_GetItem|GUICtrlHeader_GetItemAlign|GUICtrlHeader_GetItemBitmap|GUICtrlHeader_GetItemCount|GUICtrlHeader_GetItemDisplay|GUICtrlHeader_GetItemFlags|GUICtrlHeader_GetItemFormat|GUICtrlHeader_GetItemImage|GUICtrlHeader_GetItemOrder|GUICtrlHeader_GetItemParam|GUICtrlHeader_GetItemRect|GUICtrlHeader_GetItemRectEx|GUICtrlHeader_GetItemText|GUICtrlHeader_GetItemWidth|GUICtrlHeader_GetOrderArray|GUICtrlHeader_GetUnicodeFormat|GUICtrlHeader_HitTest|GUICtrlHeader_InsertItem|GUICtrlHeader_Layout|GUICtrlHeader_OrderToIndex|GUICtrlHeader_SetBitmapMargin|GUICtrlHeader_SetFilterChangeTimeout|GUICtrlHeader_SetHotDivider|GUICtrlHeader_SetImageList|GUICtrlHeader_SetItem|GUICtrlHeader_SetItemAlign|GUICtrlHeader_SetItemBitmap|GUICtrlHeader_SetItemDisplay|GUICtrlHeader_SetItemFlags|GUICtrlHeader_SetItemFormat|GUICtrlHeader_SetItemImage|GUICtrlHeader_SetItemOrder|GUICtrlHeader_SetItemParam|GUICtrlHeader_SetItemText|GUICtrlHeader_SetItemWidth|GUICtrlHeader_SetOrderArray|GUICtrlHeader_SetUnicodeFormat|GUICtrlIpAddress_ClearAddress|GUICtrlIpAddress_Create|GUICtrlIpAddress_Destroy|GUICtrlIpAddress_Get|GUICtrlIpAddress_GetArray|GUICtrlIpAddress_GetEx|GUICtrlIpAddress_IsBlank|GUICtrlIpAddress_Set|GUICtrlIpAddress_SetArray|GUICtrlIpAddress_SetEx|GUICtrlIpAddress_SetFocus|GUICtrlIpAddress_SetFont|GUICtrlIpAddress_SetRange|GUICtrlIpAddress_ShowHide|GUICtrlListBox_AddFile|GUICtrlListBox_AddString|GUICtrlListBox_BeginUpdate|GUICtrlListBox_Create|GUICtrlListBox_DeleteString|GUICtrlListBox_Destroy|GUICtrlListBox_Dir|GUICtrlListBox_EndUpdate|GUICtrlListBox_FindInText|GUICtrlListBox_FindString|GUICtrlListBox_GetAnchorIndex|GUICtrlListBox_GetCaretIndex|GUICtrlListBox_GetCount|GUICtrlListBox_GetCurSel|GUICtrlListBox_GetHorizontalExtent|GUICtrlListBox_GetItemData|GUICtrlListBox_GetItemHeight|GUICtrlListBox_GetItemRect|GUICtrlListBox_GetItemRectEx|GUICtrlListBox_GetListBoxInfo|GUICtrlListBox_GetLocale|GUICtrlListBox_GetLocaleCountry|GUICtrlListBox_GetLocaleLang|GUICtrlListBox_GetLocalePrimLang|GUICtrlListBox_GetLocaleSubLang|GUICtrlListBox_GetSel|GUICtrlListBox_GetSelCount|GUICtrlListBox_GetSelItems|GUICtrlListBox_GetSelItemsText|GUICtrlListBox_GetText|GUICtrlListBox_GetTextLen|GUICtrlListBox_GetTopIndex|GUICtrlListBox_InitStorage|GUICtrlListBox_InsertString|GUICtrlListBox_ItemFromPoint|GUICtrlListBox_ReplaceString|GUICtrlListBox_ResetContent|GUICtrlListBox_SelectString|GUICtrlListBox_SelItemRange|GUICtrlListBox_SelItemRangeEx|GUICtrlListBox_SetAnchorIndex|GUICtrlListBox_SetCaretIndex|GUICtrlListBox_SetColumnWidth|GUICtrlListBox_SetCurSel|GUICtrlListBox_SetHorizontalExtent|GUICtrlListBox_SetItemData|GUICtrlListBox_SetItemHeight|GUICtrlListBox_SetLocale|GUICtrlListBox_SetSel|GUICtrlListBox_SetTabStops|GUICtrlListBox_SetTopIndex|GUICtrlListBox_Sort|GUICtrlListBox_SwapString|GUICtrlListBox_UpdateHScroll|GUICtrlListView_AddArray|GUICtrlListView_AddColumn|GUICtrlListView_AddItem|GUICtrlListView_AddSubItem|GUICtrlListView_ApproximateViewHeight|GUICtrlListView_ApproximateViewRect|GUICtrlListView_ApproximateViewWidth|GUICtrlListView_Arrange|GUICtrlListView_BeginUpdate|GUICtrlListView_CancelEditLabel|GUICtrlListView_ClickItem|GUICtrlListView_CopyItems|GUICtrlListView_Create|GUICtrlListView_CreateDragImage|GUICtrlListView_CreateSolidBitMap|GUICtrlListView_DeleteAllItems|GUICtrlListView_DeleteColumn|GUICtrlListView_DeleteItem|GUICtrlListView_DeleteItemsSelected|GUICtrlListView_Destroy|GUICtrlListView_DrawDragImage|GUICtrlListView_EditLabel|GUICtrlListView_EnableGroupView|GUICtrlListView_EndUpdate|GUICtrlListView_EnsureVisible|GUICtrlListView_FindInText|GUICtrlListView_FindItem|GUICtrlListView_FindNearest|GUICtrlListView_FindParam|GUICtrlListView_FindText|GUICtrlListView_GetBkColor|GUICtrlListView_GetBkImage|GUICtrlListView_GetCallbackMask|GUICtrlListView_GetColumn|GUICtrlListView_GetColumnCount|GUICtrlListView_GetColumnOrder|GUICtrlListView_GetColumnOrderArray|GUICtrlListView_GetColumnWidth|GUICtrlListView_GetCounterPage|GUICtrlListView_GetEditControl|GUICtrlListView_GetExtendedListViewStyle|GUICtrlListView_GetGroupInfo|GUICtrlListView_GetGroupViewEnabled|GUICtrlListView_GetHeader|GUICtrlListView_GetHotCursor|GUICtrlListView_GetHotItem|GUICtrlListView_GetHoverTime|GUICtrlListView_GetImageList|GUICtrlListView_GetISearchString|GUICtrlListView_GetItem|GUICtrlListView_GetItemChecked|GUICtrlListView_GetItemCount|GUICtrlListView_GetItemCut|GUICtrlListView_GetItemDropHilited|GUICtrlListView_GetItemEx|GUICtrlListView_GetItemFocused|GUICtrlListView_GetItemGroupID|GUICtrlListView_GetItemImage|GUICtrlListView_GetItemIndent|GUICtrlListView_GetItemParam|GUICtrlListView_GetItemPosition|GUICtrlListView_GetItemPositionX|GUICtrlListView_GetItemPositionY|GUICtrlListView_GetItemRect|GUICtrlListView_GetItemRectEx|GUICtrlListView_GetItemSelected|GUICtrlListView_GetItemSpacing|GUICtrlListView_GetItemSpacingX|GUICtrlListView_GetItemSpacingY|GUICtrlListView_GetItemState|GUICtrlListView_GetItemStateImage|GUICtrlListView_GetItemText|GUICtrlListView_GetItemTextArray|GUICtrlListView_GetItemTextString|GUICtrlListView_GetNextItem|GUICtrlListView_GetNumberOfWorkAreas|GUICtrlListView_GetOrigin|GUICtrlListView_GetOriginX|GUICtrlListView_GetOriginY|GUICtrlListView_GetOutlineColor|GUICtrlListView_GetSelectedColumn|GUICtrlListView_GetSelectedCount|GUICtrlListView_GetSelectedIndices|GUICtrlListView_GetSelectionMark|GUICtrlListView_GetStringWidth|GUICtrlListView_GetSubItemRect|GUICtrlListView_GetTextBkColor|GUICtrlListView_GetTextColor|GUICtrlListView_GetToolTips|GUICtrlListView_GetTopIndex|GUICtrlListView_GetUnicodeFormat|GUICtrlListView_GetView|GUICtrlListView_GetViewDetails|GUICtrlListView_GetViewLarge|GUICtrlListView_GetViewList|GUICtrlListView_GetViewRect|GUICtrlListView_GetViewSmall|GUICtrlListView_GetViewTile|GUICtrlListView_HideColumn|GUICtrlListView_HitTest|GUICtrlListView_InsertColumn|GUICtrlListView_InsertGroup|GUICtrlListView_InsertItem|GUICtrlListView_JustifyColumn|GUICtrlListView_MapIDToIndex|GUICtrlListView_MapIndexToID|GUICtrlListView_RedrawItems|GUICtrlListView_RegisterSortCallBack|GUICtrlListView_RemoveAllGroups|GUICtrlListView_RemoveGroup|GUICtrlListView_Scroll|GUICtrlListView_SetBkColor|GUICtrlListView_SetBkImage|GUICtrlListView_SetCallBackMask|GUICtrlListView_SetColumn|GUICtrlListView_SetColumnOrder|GUICtrlListView_SetColumnOrderArray|GUICtrlListView_SetColumnWidth|GUICtrlListView_SetExtendedListViewStyle|GUICtrlListView_SetGroupInfo|GUICtrlListView_SetHotItem|GUICtrlListView_SetHoverTime|GUICtrlListView_SetIconSpacing|GUICtrlListView_SetImageList|GUICtrlListView_SetItem|GUICtrlListView_SetItemChecked|GUICtrlListView_SetItemCount|GUICtrlListView_SetItemCut|GUICtrlListView_SetItemDropHilited|GUICtrlListView_SetItemEx|GUICtrlListView_SetItemFocused|GUICtrlListView_SetItemGroupID|GUICtrlListView_SetItemImage|GUICtrlListView_SetItemIndent|GUICtrlListView_SetItemParam|GUICtrlListView_SetItemPosition|GUICtrlListView_SetItemPosition32|GUICtrlListView_SetItemSelected|GUICtrlListView_SetItemState|GUICtrlListView_SetItemStateImage|GUICtrlListView_SetItemText|GUICtrlListView_SetOutlineColor|GUICtrlListView_SetSelectedColumn|GUICtrlListView_SetSelectionMark|GUICtrlListView_SetTextBkColor|GUICtrlListView_SetTextColor|GUICtrlListView_SetToolTips|GUICtrlListView_SetUnicodeFormat|GUICtrlListView_SetView|GUICtrlListView_SetWorkAreas|GUICtrlListView_SimpleSort|GUICtrlListView_SortItems|GUICtrlListView_SubItemHitTest|GUICtrlListView_UnRegisterSortCallBack|GUICtrlMenu_AddMenuItem|GUICtrlMenu_AppendMenu|GUICtrlMenu_CheckMenuItem|GUICtrlMenu_CheckRadioItem|GUICtrlMenu_CreateMenu|GUICtrlMenu_CreatePopup|GUICtrlMenu_DeleteMenu|GUICtrlMenu_DestroyMenu|GUICtrlMenu_DrawMenuBar|GUICtrlMenu_EnableMenuItem|GUICtrlMenu_FindItem|GUICtrlMenu_FindParent|GUICtrlMenu_GetItemBmp|GUICtrlMenu_GetItemBmpChecked|GUICtrlMenu_GetItemBmpUnchecked|GUICtrlMenu_GetItemChecked|GUICtrlMenu_GetItemCount|GUICtrlMenu_GetItemData|GUICtrlMenu_GetItemDefault|GUICtrlMenu_GetItemDisabled|GUICtrlMenu_GetItemEnabled|GUICtrlMenu_GetItemGrayed|GUICtrlMenu_GetItemHighlighted|GUICtrlMenu_GetItemID|GUICtrlMenu_GetItemInfo|GUICtrlMenu_GetItemRect|GUICtrlMenu_GetItemRectEx|GUICtrlMenu_GetItemState|GUICtrlMenu_GetItemStateEx|GUICtrlMenu_GetItemSubMenu|GUICtrlMenu_GetItemText|GUICtrlMenu_GetItemType|GUICtrlMenu_GetMenu|GUICtrlMenu_GetMenuBackground|GUICtrlMenu_GetMenuBarInfo|GUICtrlMenu_GetMenuContextHelpID|GUICtrlMenu_GetMenuData|GUICtrlMenu_GetMenuDefaultItem|GUICtrlMenu_GetMenuHeight|GUICtrlMenu_GetMenuInfo|GUICtrlMenu_GetMenuStyle|GUICtrlMenu_GetSystemMenu|GUICtrlMenu_InsertMenuItem|GUICtrlMenu_InsertMenuItemEx|GUICtrlMenu_IsMenu|GUICtrlMenu_LoadMenu|GUICtrlMenu_MapAccelerator|GUICtrlMenu_MenuItemFromPoint|GUICtrlMenu_RemoveMenu|GUICtrlMenu_SetItemBitmaps|GUICtrlMenu_SetItemBmp|GUICtrlMenu_SetItemBmpChecked|GUICtrlMenu_SetItemBmpUnchecked|GUICtrlMenu_SetItemChecked|GUICtrlMenu_SetItemData|GUICtrlMenu_SetItemDefault|GUICtrlMenu_SetItemDisabled|GUICtrlMenu_SetItemEnabled|GUICtrlMenu_SetItemGrayed|GUICtrlMenu_SetItemHighlighted|GUICtrlMenu_SetItemID|GUICtrlMenu_SetItemInfo|GUICtrlMenu_SetItemState|GUICtrlMenu_SetItemSubMenu|GUICtrlMenu_SetItemText|GUICtrlMenu_SetItemType|GUICtrlMenu_SetMenu|GUICtrlMenu_SetMenuBackground|GUICtrlMenu_SetMenuContextHelpID|GUICtrlMenu_SetMenuData|GUICtrlMenu_SetMenuDefaultItem|GUICtrlMenu_SetMenuHeight|GUICtrlMenu_SetMenuInfo|GUICtrlMenu_SetMenuStyle|GUICtrlMenu_TrackPopupMenu|GUICtrlMonthCal_Create|GUICtrlMonthCal_Destroy|GUICtrlMonthCal_GetColor|GUICtrlMonthCal_GetColorArray|GUICtrlMonthCal_GetCurSel|GUICtrlMonthCal_GetCurSelStr|GUICtrlMonthCal_GetFirstDOW|GUICtrlMonthCal_GetFirstDOWStr|GUICtrlMonthCal_GetMaxSelCount|GUICtrlMonthCal_GetMaxTodayWidth|GUICtrlMonthCal_GetMinReqHeight|GUICtrlMonthCal_GetMinReqRect|GUICtrlMonthCal_GetMinReqRectArray|GUICtrlMonthCal_GetMinReqWidth|GUICtrlMonthCal_GetMonthDelta|GUICtrlMonthCal_GetMonthRange|GUICtrlMonthCal_GetMonthRangeMax|GUICtrlMonthCal_GetMonthRangeMaxStr|GUICtrlMonthCal_GetMonthRangeMin|GUICtrlMonthCal_GetMonthRangeMinStr|GUICtrlMonthCal_GetMonthRangeSpan|GUICtrlMonthCal_GetRange|GUICtrlMonthCal_GetRangeMax|GUICtrlMonthCal_GetRangeMaxStr|GUICtrlMonthCal_GetRangeMin|GUICtrlMonthCal_GetRangeMinStr|GUICtrlMonthCal_GetSelRange|GUICtrlMonthCal_GetSelRangeMax|GUICtrlMonthCal_GetSelRangeMaxStr|GUICtrlMonthCal_GetSelRangeMin|GUICtrlMonthCal_GetSelRangeMinStr|GUICtrlMonthCal_GetToday|GUICtrlMonthCal_GetTodayStr|GUICtrlMonthCal_GetUnicodeFormat|GUICtrlMonthCal_HitTest|GUICtrlMonthCal_SetColor|GUICtrlMonthCal_SetCurSel|GUICtrlMonthCal_SetDayState|GUICtrlMonthCal_SetFirstDOW|GUICtrlMonthCal_SetMaxSelCount|GUICtrlMonthCal_SetMonthDelta|GUICtrlMonthCal_SetRange|GUICtrlMonthCal_SetSelRange|GUICtrlMonthCal_SetToday|GUICtrlMonthCal_SetUnicodeFormat|GUICtrlRebar_AddBand|GUICtrlRebar_AddToolBarBand|GUICtrlRebar_BeginDrag|GUICtrlRebar_Create|GUICtrlRebar_DeleteBand|GUICtrlRebar_Destroy|GUICtrlRebar_DragMove|GUICtrlRebar_EndDrag|GUICtrlRebar_GetBandBackColor|GUICtrlRebar_GetBandBorders|GUICtrlRebar_GetBandBordersEx|GUICtrlRebar_GetBandChildHandle|GUICtrlRebar_GetBandChildSize|GUICtrlRebar_GetBandCount|GUICtrlRebar_GetBandForeColor|GUICtrlRebar_GetBandHeaderSize|GUICtrlRebar_GetBandID|GUICtrlRebar_GetBandIdealSize|GUICtrlRebar_GetBandLength|GUICtrlRebar_GetBandLParam|GUICtrlRebar_GetBandMargins|GUICtrlRebar_GetBandMarginsEx|GUICtrlRebar_GetBandRect|GUICtrlRebar_GetBandRectEx|GUICtrlRebar_GetBandStyle|GUICtrlRebar_GetBandStyleBreak|GUICtrlRebar_GetBandStyleChildEdge|GUICtrlRebar_GetBandStyleFixedBMP|GUICtrlRebar_GetBandStyleFixedSize|GUICtrlRebar_GetBandStyleGripperAlways|GUICtrlRebar_GetBandStyleHidden|GUICtrlRebar_GetBandStyleHideTitle|GUICtrlRebar_GetBandStyleNoGripper|GUICtrlRebar_GetBandStyleTopAlign|GUICtrlRebar_GetBandStyleUseChevron|GUICtrlRebar_GetBandStyleVariableHeight|GUICtrlRebar_GetBandText|GUICtrlRebar_GetBarHeight|GUICtrlRebar_GetBKColor|GUICtrlRebar_GetColorScheme|GUICtrlRebar_GetRowCount|GUICtrlRebar_GetRowHeight|GUICtrlRebar_GetTextColor|GUICtrlRebar_GetToolTips|GUICtrlRebar_GetUnicodeFormat|GUICtrlRebar_HitTest|GUICtrlRebar_IDToIndex|GUICtrlRebar_MaximizeBand|GUICtrlRebar_MinimizeBand|GUICtrlRebar_MoveBand|GUICtrlRebar_SetBandBackColor|GUICtrlRebar_SetBandForeColor|GUICtrlRebar_SetBandHeaderSize|GUICtrlRebar_SetBandID|GUICtrlRebar_SetBandIdealSize|GUICtrlRebar_SetBandLength|GUICtrlRebar_SetBandLParam|GUICtrlRebar_SetBandStyle|GUICtrlRebar_SetBandStyleBreak|GUICtrlRebar_SetBandStyleChildEdge|GUICtrlRebar_SetBandStyleFixedBMP|GUICtrlRebar_SetBandStyleFixedSize|GUICtrlRebar_SetBandStyleGripperAlways|GUICtrlRebar_SetBandStyleHidden|GUICtrlRebar_SetBandStyleHideTitle|GUICtrlRebar_SetBandStyleNoGripper|GUICtrlRebar_SetBandStyleTopAlign|GUICtrlRebar_SetBandStyleUseChevron|GUICtrlRebar_SetBandStyleVariableHeight|GUICtrlRebar_SetBandText|GUICtrlRebar_SetBKColor|GUICtrlRebar_SetColorScheme|GUICtrlRebar_SetTextColor|GUICtrlRebar_SetToolTips|GUICtrlRebar_SetUnicodeFormat|GUICtrlRebar_ShowBand|GUICtrlSlider_ClearSel|GUICtrlSlider_ClearTics|GUICtrlSlider_Create|GUICtrlSlider_Destroy|GUICtrlSlider_GetBuddy|GUICtrlSlider_GetChannelRect|GUICtrlSlider_GetLineSize|GUICtrlSlider_GetNumTics|GUICtrlSlider_GetPageSize|GUICtrlSlider_GetPos|GUICtrlSlider_GetPTics|GUICtrlSlider_GetRange|GUICtrlSlider_GetRangeMax|GUICtrlSlider_GetRangeMin|GUICtrlSlider_GetSel|GUICtrlSlider_GetSelEnd|GUICtrlSlider_GetSelStart|GUICtrlSlider_GetThumbLength|GUICtrlSlider_GetThumbRect|GUICtrlSlider_GetThumbRectEx|GUICtrlSlider_GetTic|GUICtrlSlider_GetTicPos|GUICtrlSlider_GetToolTips|GUICtrlSlider_GetUnicodeFormat|GUICtrlSlider_SetBuddy|GUICtrlSlider_SetLineSize|GUICtrlSlider_SetPageSize|GUICtrlSlider_SetPos|GUICtrlSlider_SetRange|GUICtrlSlider_SetRangeMax|GUICtrlSlider_SetRangeMin|GUICtrlSlider_SetSel|GUICtrlSlider_SetSelEnd|GUICtrlSlider_SetSelStart|GUICtrlSlider_SetThumbLength|GUICtrlSlider_SetTic|GUICtrlSlider_SetTicFreq|GUICtrlSlider_SetTipSide|GUICtrlSlider_SetToolTips|GUICtrlSlider_SetUnicodeFormat|GUICtrlStatusBar_Create|GUICtrlStatusBar_Destroy|GUICtrlStatusBar_EmbedControl|GUICtrlStatusBar_GetBorders|GUICtrlStatusBar_GetBordersHorz|GUICtrlStatusBar_GetBordersRect|GUICtrlStatusBar_GetBordersVert|GUICtrlStatusBar_GetCount|GUICtrlStatusBar_GetHeight|GUICtrlStatusBar_GetIcon|GUICtrlStatusBar_GetParts|GUICtrlStatusBar_GetRect|GUICtrlStatusBar_GetRectEx|GUICtrlStatusBar_GetText|GUICtrlStatusBar_GetTextFlags|GUICtrlStatusBar_GetTextLength|GUICtrlStatusBar_GetTextLengthEx|GUICtrlStatusBar_GetTipText|GUICtrlStatusBar_GetUnicodeFormat|GUICtrlStatusBar_GetWidth|GUICtrlStatusBar_IsSimple|GUICtrlStatusBar_Resize|GUICtrlStatusBar_SetBkColor|GUICtrlStatusBar_SetIcon|GUICtrlStatusBar_SetMinHeight|GUICtrlStatusBar_SetParts|GUICtrlStatusBar_SetSimple|GUICtrlStatusBar_SetText|GUICtrlStatusBar_SetTipText|GUICtrlStatusBar_SetUnicodeFormat|GUICtrlStatusBar_ShowHide|GUICtrlTab_Create|GUICtrlTab_DeleteAllItems|GUICtrlTab_DeleteItem|GUICtrlTab_DeselectAll|GUICtrlTab_Destroy|GUICtrlTab_FindTab|GUICtrlTab_GetCurFocus|GUICtrlTab_GetCurSel|GUICtrlTab_GetDisplayRect|GUICtrlTab_GetDisplayRectEx|GUICtrlTab_GetExtendedStyle|GUICtrlTab_GetImageList|GUICtrlTab_GetItem|GUICtrlTab_GetItemCount|GUICtrlTab_GetItemImage|GUICtrlTab_GetItemParam|GUICtrlTab_GetItemRect|GUICtrlTab_GetItemRectEx|GUICtrlTab_GetItemState|GUICtrlTab_GetItemText|GUICtrlTab_GetRowCount|GUICtrlTab_GetToolTips|GUICtrlTab_GetUnicodeFormat|GUICtrlTab_HighlightItem|GUICtrlTab_HitTest|GUICtrlTab_InsertItem|GUICtrlTab_RemoveImage|GUICtrlTab_SetCurFocus|GUICtrlTab_SetCurSel|GUICtrlTab_SetExtendedStyle|GUICtrlTab_SetImageList|GUICtrlTab_SetItem|GUICtrlTab_SetItemImage|GUICtrlTab_SetItemParam|GUICtrlTab_SetItemSize|GUICtrlTab_SetItemState|GUICtrlTab_SetItemText|GUICtrlTab_SetMinTabWidth|GUICtrlTab_SetPadding|GUICtrlTab_SetToolTips|GUICtrlTab_SetUnicodeFormat|GUICtrlToolbar_AddBitmap|GUICtrlToolbar_AddButton|GUICtrlToolbar_AddButtonSep|GUICtrlToolbar_AddString|GUICtrlToolbar_ButtonCount|GUICtrlToolbar_CheckButton|GUICtrlToolbar_ClickAccel|GUICtrlToolbar_ClickButton|GUICtrlToolbar_ClickIndex|GUICtrlToolbar_CommandToIndex|GUICtrlToolbar_Create|GUICtrlToolbar_Customize|GUICtrlToolbar_DeleteButton|GUICtrlToolbar_Destroy|GUICtrlToolbar_EnableButton|GUICtrlToolbar_FindToolbar|GUICtrlToolbar_GetAnchorHighlight|GUICtrlToolbar_GetBitmapFlags|GUICtrlToolbar_GetButtonBitmap|GUICtrlToolbar_GetButtonInfo|GUICtrlToolbar_GetButtonInfoEx|GUICtrlToolbar_GetButtonParam|GUICtrlToolbar_GetButtonRect|GUICtrlToolbar_GetButtonRectEx|GUICtrlToolbar_GetButtonSize|GUICtrlToolbar_GetButtonState|GUICtrlToolbar_GetButtonStyle|GUICtrlToolbar_GetButtonText|GUICtrlToolbar_GetColorScheme|GUICtrlToolbar_GetDisabledImageList|GUICtrlToolbar_GetExtendedStyle|GUICtrlToolbar_GetHotImageList|GUICtrlToolbar_GetHotItem|GUICtrlToolbar_GetImageList|GUICtrlToolbar_GetInsertMark|GUICtrlToolbar_GetInsertMarkColor|GUICtrlToolbar_GetMaxSize|GUICtrlToolbar_GetMetrics|GUICtrlToolbar_GetPadding|GUICtrlToolbar_GetRows|GUICtrlToolbar_GetString|GUICtrlToolbar_GetStyle|GUICtrlToolbar_GetStyleAltDrag|GUICtrlToolbar_GetStyleCustomErase|GUICtrlToolbar_GetStyleFlat|GUICtrlToolbar_GetStyleList|GUICtrlToolbar_GetStyleRegisterDrop|GUICtrlToolbar_GetStyleToolTips|GUICtrlToolbar_GetStyleTransparent|GUICtrlToolbar_GetStyleWrapable|GUICtrlToolbar_GetTextRows|GUICtrlToolbar_GetToolTips|GUICtrlToolbar_GetUnicodeFormat|GUICtrlToolbar_HideButton|GUICtrlToolbar_HighlightButton|GUICtrlToolbar_HitTest|GUICtrlToolbar_IndexToCommand|GUICtrlToolbar_InsertButton|GUICtrlToolbar_InsertMarkHitTest|GUICtrlToolbar_IsButtonChecked|GUICtrlToolbar_IsButtonEnabled|GUICtrlToolbar_IsButtonHidden|GUICtrlToolbar_IsButtonHighlighted|GUICtrlToolbar_IsButtonIndeterminate|GUICtrlToolbar_IsButtonPressed|GUICtrlToolbar_LoadBitmap|GUICtrlToolbar_LoadImages|GUICtrlToolbar_MapAccelerator|GUICtrlToolbar_MoveButton|GUICtrlToolbar_PressButton|GUICtrlToolbar_SetAnchorHighlight|GUICtrlToolbar_SetBitmapSize|GUICtrlToolbar_SetButtonBitMap|GUICtrlToolbar_SetButtonInfo|GUICtrlToolbar_SetButtonInfoEx|GUICtrlToolbar_SetButtonParam|GUICtrlToolbar_SetButtonSize|GUICtrlToolbar_SetButtonState|GUICtrlToolbar_SetButtonStyle|GUICtrlToolbar_SetButtonText|GUICtrlToolbar_SetButtonWidth|GUICtrlToolbar_SetCmdID|GUICtrlToolbar_SetColorScheme|GUICtrlToolbar_SetDisabledImageList|GUICtrlToolbar_SetDrawTextFlags|GUICtrlToolbar_SetExtendedStyle|GUICtrlToolbar_SetHotImageList|GUICtrlToolbar_SetHotItem|GUICtrlToolbar_SetImageList|GUICtrlToolbar_SetIndent|GUICtrlToolbar_SetIndeterminate|GUICtrlToolbar_SetInsertMark|GUICtrlToolbar_SetInsertMarkColor|GUICtrlToolbar_SetMaxTextRows|GUICtrlToolbar_SetMetrics|GUICtrlToolbar_SetPadding|GUICtrlToolbar_SetParent|GUICtrlToolbar_SetRows|GUICtrlToolbar_SetStyle|GUICtrlToolbar_SetStyleAltDrag|GUICtrlToolbar_SetStyleCustomErase|GUICtrlToolbar_SetStyleFlat|GUICtrlToolbar_SetStyleList|GUICtrlToolbar_SetStyleRegisterDrop|GUICtrlToolbar_SetStyleToolTips|GUICtrlToolbar_SetStyleTransparent|GUICtrlToolbar_SetStyleWrapable|GUICtrlToolbar_SetToolTips|GUICtrlToolbar_SetUnicodeFormat|GUICtrlToolbar_SetWindowTheme|GUICtrlTreeView_Add|GUICtrlTreeView_AddChild|GUICtrlTreeView_AddChildFirst|GUICtrlTreeView_AddFirst|GUICtrlTreeView_BeginUpdate|GUICtrlTreeView_ClickItem|GUICtrlTreeView_Create|GUICtrlTreeView_CreateDragImage|GUICtrlTreeView_CreateSolidBitMap|GUICtrlTreeView_Delete|GUICtrlTreeView_DeleteAll|GUICtrlTreeView_DeleteChildren|GUICtrlTreeView_Destroy|GUICtrlTreeView_DisplayRect|GUICtrlTreeView_DisplayRectEx|GUICtrlTreeView_EditText|GUICtrlTreeView_EndEdit|GUICtrlTreeView_EndUpdate|GUICtrlTreeView_EnsureVisible|GUICtrlTreeView_Expand|GUICtrlTreeView_ExpandedOnce|GUICtrlTreeView_FindItem|GUICtrlTreeView_FindItemEx|GUICtrlTreeView_GetBkColor|GUICtrlTreeView_GetBold|GUICtrlTreeView_GetChecked|GUICtrlTreeView_GetChildCount|GUICtrlTreeView_GetChildren|GUICtrlTreeView_GetCount|GUICtrlTreeView_GetCut|GUICtrlTreeView_GetDropTarget|GUICtrlTreeView_GetEditControl|GUICtrlTreeView_GetExpanded|GUICtrlTreeView_GetFirstChild|GUICtrlTreeView_GetFirstItem|GUICtrlTreeView_GetFirstVisible|GUICtrlTreeView_GetFocused|GUICtrlTreeView_GetHeight|GUICtrlTreeView_GetImageIndex|GUICtrlTreeView_GetImageListIconHandle|GUICtrlTreeView_GetIndent|GUICtrlTreeView_GetInsertMarkColor|GUICtrlTreeView_GetISearchString|GUICtrlTreeView_GetItemByIndex|GUICtrlTreeView_GetItemHandle|GUICtrlTreeView_GetItemParam|GUICtrlTreeView_GetLastChild|GUICtrlTreeView_GetLineColor|GUICtrlTreeView_GetNext|GUICtrlTreeView_GetNextChild|GUICtrlTreeView_GetNextSibling|GUICtrlTreeView_GetNextVisible|GUICtrlTreeView_GetNormalImageList|GUICtrlTreeView_GetParentHandle|GUICtrlTreeView_GetParentParam|GUICtrlTreeView_GetPrev|GUICtrlTreeView_GetPrevChild|GUICtrlTreeView_GetPrevSibling|GUICtrlTreeView_GetPrevVisible|GUICtrlTreeView_GetScrollTime|GUICtrlTreeView_GetSelected|GUICtrlTreeView_GetSelectedImageIndex|GUICtrlTreeView_GetSelection|GUICtrlTreeView_GetSiblingCount|GUICtrlTreeView_GetState|GUICtrlTreeView_GetStateImageIndex|GUICtrlTreeView_GetStateImageList|GUICtrlTreeView_GetText|GUICtrlTreeView_GetTextColor|GUICtrlTreeView_GetToolTips|GUICtrlTreeView_GetTree|GUICtrlTreeView_GetUnicodeFormat|GUICtrlTreeView_GetVisible|GUICtrlTreeView_GetVisibleCount|GUICtrlTreeView_HitTest|GUICtrlTreeView_HitTestEx|GUICtrlTreeView_HitTestItem|GUICtrlTreeView_Index|GUICtrlTreeView_InsertItem|GUICtrlTreeView_IsFirstItem|GUICtrlTreeView_IsParent|GUICtrlTreeView_Level|GUICtrlTreeView_SelectItem|GUICtrlTreeView_SelectItemByIndex|GUICtrlTreeView_SetBkColor|GUICtrlTreeView_SetBold|GUICtrlTreeView_SetChecked|GUICtrlTreeView_SetCheckedByIndex|GUICtrlTreeView_SetChildren|GUICtrlTreeView_SetCut|GUICtrlTreeView_SetDropTarget|GUICtrlTreeView_SetFocused|GUICtrlTreeView_SetHeight|GUICtrlTreeView_SetIcon|GUICtrlTreeView_SetImageIndex|GUICtrlTreeView_SetIndent|GUICtrlTreeView_SetInsertMark|GUICtrlTreeView_SetInsertMarkColor|GUICtrlTreeView_SetItemHeight|GUICtrlTreeView_SetItemParam|GUICtrlTreeView_SetLineColor|GUICtrlTreeView_SetNormalImageList|GUICtrlTreeView_SetScrollTime|GUICtrlTreeView_SetSelected|GUICtrlTreeView_SetSelectedImageIndex|GUICtrlTreeView_SetState|GUICtrlTreeView_SetStateImageIndex|GUICtrlTreeView_SetStateImageList|GUICtrlTreeView_SetText|GUICtrlTreeView_SetTextColor|GUICtrlTreeView_SetToolTips|GUICtrlTreeView_SetUnicodeFormat|GUICtrlTreeView_Sort|GUIImageList_Add|GUIImageList_AddBitmap|GUIImageList_AddIcon|GUIImageList_AddMasked|GUIImageList_BeginDrag|GUIImageList_Copy|GUIImageList_Create|GUIImageList_Destroy|GUIImageList_DestroyIcon|GUIImageList_DragEnter|GUIImageList_DragLeave|GUIImageList_DragMove|GUIImageList_Draw|GUIImageList_DrawEx|GUIImageList_Duplicate|GUIImageList_EndDrag|GUIImageList_GetBkColor|GUIImageList_GetIcon|GUIImageList_GetIconHeight|GUIImageList_GetIconSize|GUIImageList_GetIconSizeEx|GUIImageList_GetIconWidth|GUIImageList_GetImageCount|GUIImageList_GetImageInfoEx|GUIImageList_Remove|GUIImageList_ReplaceIcon|GUIImageList_SetBkColor|GUIImageList_SetIconSize|GUIImageList_SetImageCount|GUIImageList_Swap|GUIScrollBars_EnableScrollBar|GUIScrollBars_GetScrollBarInfoEx|GUIScrollBars_GetScrollBarRect|GUIScrollBars_GetScrollBarRGState|GUIScrollBars_GetScrollBarXYLineButton|GUIScrollBars_GetScrollBarXYThumbBottom|GUIScrollBars_GetScrollBarXYThumbTop|GUIScrollBars_GetScrollInfo|GUIScrollBars_GetScrollInfoEx|GUIScrollBars_GetScrollInfoMax|GUIScrollBars_GetScrollInfoMin|GUIScrollBars_GetScrollInfoPage|GUIScrollBars_GetScrollInfoPos|GUIScrollBars_GetScrollInfoTrackPos|GUIScrollBars_GetScrollPos|GUIScrollBars_GetScrollRange|GUIScrollBars_Init|GUIScrollBars_ScrollWindow|GUIScrollBars_SetScrollInfo|GUIScrollBars_SetScrollInfoMax|GUIScrollBars_SetScrollInfoMin|GUIScrollBars_SetScrollInfoPage|GUIScrollBars_SetScrollInfoPos|GUIScrollBars_SetScrollRange|GUIScrollBars_ShowScrollBar|GUIToolTip_Activate|GUIToolTip_AddTool|GUIToolTip_AdjustRect|GUIToolTip_BitsToTTF|GUIToolTip_Create|GUIToolTip_DelTool|GUIToolTip_Destroy|GUIToolTip_EnumTools|GUIToolTip_GetBubbleHeight|GUIToolTip_GetBubbleSize|GUIToolTip_GetBubbleWidth|GUIToolTip_GetCurrentTool|GUIToolTip_GetDelayTime|GUIToolTip_GetMargin|GUIToolTip_GetMarginEx|GUIToolTip_GetMaxTipWidth|GUIToolTip_GetText|GUIToolTip_GetTipBkColor|GUIToolTip_GetTipTextColor|GUIToolTip_GetTitleBitMap|GUIToolTip_GetTitleText|GUIToolTip_GetToolCount|GUIToolTip_GetToolInfo|GUIToolTip_HitTest|GUIToolTip_NewToolRect|GUIToolTip_Pop|GUIToolTip_PopUp|GUIToolTip_SetDelayTime|GUIToolTip_SetMargin|GUIToolTip_SetMaxTipWidth|GUIToolTip_SetTipBkColor|GUIToolTip_SetTipTextColor|GUIToolTip_SetTitle|GUIToolTip_SetToolInfo|GUIToolTip_SetWindowTheme|GUIToolTip_ToolExists|GUIToolTip_ToolToArray|GUIToolTip_TrackActivate|GUIToolTip_TrackPosition|GUIToolTip_TTFToBits|GUIToolTip_Update|GUIToolTip_UpdateTipText|HexToString|IE_Example|IE_Introduction|IE_VersionInfo|IEAction|IEAttach|IEBodyReadHTML|IEBodyReadText|IEBodyWriteHTML|IECreate|IECreateEmbedded|IEDocGetObj|IEDocInsertHTML|IEDocInsertText|IEDocReadHTML|IEDocWriteHTML|IEErrorHandlerDeRegister|IEErrorHandlerRegister|IEErrorNotify|IEFormElementCheckBoxSelect|IEFormElementGetCollection|IEFormElementGetObjByName|IEFormElementGetValue|IEFormElementOptionSelect|IEFormElementRadioSelect|IEFormElementSetValue|IEFormGetCollection|IEFormGetObjByName|IEFormImageClick|IEFormReset|IEFormSubmit|IEFrameGetCollection|IEFrameGetObjByName|IEGetObjById|IEGetObjByName|IEHeadInsertEventScript|IEImgClick|IEImgGetCollection|IEIsFrameSet|IELinkClickByIndex|IELinkClickByText|IELinkGetCollection|IELoadWait|IELoadWaitTimeout|IENavigate|IEPropertyGet|IEPropertySet|IEQuit|IETableGetCollection|IETableWriteToArray|IETagNameAllGetCollection|IETagNameGetCollection|Iif|INetExplorerCapable|INetGetSource|INetMail|INetSmtpMail|IsPressed|MathCheckDiv|Max|MemGlobalAlloc|MemGlobalFree|MemGlobalLock|MemGlobalSize|MemGlobalUnlock|MemMoveMemory|MemMsgBox|MemShowError|MemVirtualAlloc|MemVirtualAllocEx|MemVirtualFree|MemVirtualFreeEx|Min|MouseTrap|NamedPipes_CallNamedPipe|NamedPipes_ConnectNamedPipe|NamedPipes_CreateNamedPipe|NamedPipes_CreatePipe|NamedPipes_DisconnectNamedPipe|NamedPipes_GetNamedPipeHandleState|NamedPipes_GetNamedPipeInfo|NamedPipes_PeekNamedPipe|NamedPipes_SetNamedPipeHandleState|NamedPipes_TransactNamedPipe|NamedPipes_WaitNamedPipe|Net_Share_ConnectionEnum|Net_Share_FileClose|Net_Share_FileEnum|Net_Share_FileGetInfo|Net_Share_PermStr|Net_Share_ResourceStr|Net_Share_SessionDel|Net_Share_SessionEnum|Net_Share_SessionGetInfo|Net_Share_ShareAdd|Net_Share_ShareCheck|Net_Share_ShareDel|Net_Share_ShareEnum|Net_Share_ShareGetInfo|Net_Share_ShareSetInfo|Net_Share_StatisticsGetSvr|Net_Share_StatisticsGetWrk|Now|NowCalc|NowCalcDate|NowDate|NowTime|PathFull|PathMake|PathSplit|ProcessGetName|ProcessGetPriority|Radian|ReplaceStringInFile|RunDOS|ScreenCapture_Capture|ScreenCapture_CaptureWnd|ScreenCapture_SaveImage|ScreenCapture_SetBMPFormat|ScreenCapture_SetJPGQuality|ScreenCapture_SetTIFColorDepth|ScreenCapture_SetTIFCompression|Security__AdjustTokenPrivileges|Security__GetAccountSid|Security__GetLengthSid|Security__GetTokenInformation|Security__ImpersonateSelf|Security__IsValidSid|Security__LookupAccountName|Security__LookupAccountSid|Security__LookupPrivilegeValue|Security__OpenProcessToken|Security__OpenThreadToken|Security__OpenThreadTokenEx|Security__SetPrivilege|Security__SidToStringSid|Security__SidTypeStr|Security__StringSidToSid|SendMessage|SendMessageA|SetDate|SetTime|Singleton|SoundClose|SoundLength|SoundOpen|SoundPause|SoundPlay|SoundPos|SoundResume|SoundSeek|SoundStatus|SoundStop|SQLite_Changes|SQLite_Close|SQLite_Display2DResult|SQLite_Encode|SQLite_ErrCode|SQLite_ErrMsg|SQLite_Escape|SQLite_Exec|SQLite_FetchData|SQLite_FetchNames|SQLite_GetTable|SQLite_GetTable2d|SQLite_LastInsertRowID|SQLite_LibVersion|SQLite_Open|SQLite_Query|SQLite_QueryFinalize|SQLite_QueryReset|SQLite_QuerySingleRow|SQLite_SaveMode|SQLite_SetTimeout|SQLite_Shutdown|SQLite_SQLiteExe|SQLite_Startup|SQLite_TotalChanges|StringAddComma|StringBetween|StringEncrypt|StringInsert|StringProper|StringRepeat|StringReverse|StringSplit|StringToHex|TCPIpToName|TempFile|TicksToTime|Timer_Diff|Timer_GetTimerID|Timer_Init|Timer_KillAllTimers|Timer_KillTimer|Timer_SetTimer|TimeToTicks|VersionCompare|viClose|viExecCommand|viFindGpib|viGpibBusReset|viGTL|viOpen|viSetAttribute|viSetTimeout|WeekNumberISO|WinAPI_AttachConsole|WinAPI_AttachThreadInput|WinAPI_Beep|WinAPI_BitBlt|WinAPI_CallNextHookEx|WinAPI_Check|WinAPI_ClientToScreen|WinAPI_CloseHandle|WinAPI_CommDlgExtendedError|WinAPI_CopyIcon|WinAPI_CreateBitmap|WinAPI_CreateCompatibleBitmap|WinAPI_CreateCompatibleDC|WinAPI_CreateEvent|WinAPI_CreateFile|WinAPI_CreateFont|WinAPI_CreateFontIndirect|WinAPI_CreateProcess|WinAPI_CreateSolidBitmap|WinAPI_CreateSolidBrush|WinAPI_CreateWindowEx|WinAPI_DefWindowProc|WinAPI_DeleteDC|WinAPI_DeleteObject|WinAPI_DestroyIcon|WinAPI_DestroyWindow|WinAPI_DrawEdge|WinAPI_DrawFrameControl|WinAPI_DrawIcon|WinAPI_DrawIconEx|WinAPI_DrawText|WinAPI_EnableWindow|WinAPI_EnumDisplayDevices|WinAPI_EnumWindows|WinAPI_EnumWindowsPopup|WinAPI_EnumWindowsTop|WinAPI_ExpandEnvironmentStrings|WinAPI_ExtractIconEx|WinAPI_FatalAppExit|WinAPI_FillRect|WinAPI_FindExecutable|WinAPI_FindWindow|WinAPI_FlashWindow|WinAPI_FlashWindowEx|WinAPI_FloatToInt|WinAPI_FlushFileBuffers|WinAPI_FormatMessage|WinAPI_FrameRect|WinAPI_FreeLibrary|WinAPI_GetAncestor|WinAPI_GetAsyncKeyState|WinAPI_GetClassName|WinAPI_GetClientHeight|WinAPI_GetClientRect|WinAPI_GetClientWidth|WinAPI_GetCurrentProcess|WinAPI_GetCurrentProcessID|WinAPI_GetCurrentThread|WinAPI_GetCurrentThreadId|WinAPI_GetCursorInfo|WinAPI_GetDC|WinAPI_GetDesktopWindow|WinAPI_GetDeviceCaps|WinAPI_GetDIBits|WinAPI_GetDlgCtrlID|WinAPI_GetDlgItem|WinAPI_GetFileSizeEx|WinAPI_GetFocus|WinAPI_GetForegroundWindow|WinAPI_GetIconInfo|WinAPI_GetLastError|WinAPI_GetLastErrorMessage|WinAPI_GetModuleHandle|WinAPI_GetMousePos|WinAPI_GetMousePosX|WinAPI_GetMousePosY|WinAPI_GetObject|WinAPI_GetOpenFileName|WinAPI_GetOverlappedResult|WinAPI_GetParent|WinAPI_GetProcessAffinityMask|WinAPI_GetSaveFileName|WinAPI_GetStdHandle|WinAPI_GetStockObject|WinAPI_GetSysColor|WinAPI_GetSysColorBrush|WinAPI_GetSystemMetrics|WinAPI_GetTextExtentPoint32|WinAPI_GetWindow|WinAPI_GetWindowDC|WinAPI_GetWindowHeight|WinAPI_GetWindowLong|WinAPI_GetWindowRect|WinAPI_GetWindowText|WinAPI_GetWindowThreadProcessId|WinAPI_GetWindowWidth|WinAPI_GetXYFromPoint|WinAPI_GlobalMemStatus|WinAPI_GUIDFromString|WinAPI_GUIDFromStringEx|WinAPI_HiWord|WinAPI_InProcess|WinAPI_IntToFloat|WinAPI_InvalidateRect|WinAPI_IsClassName|WinAPI_IsWindow|WinAPI_IsWindowVisible|WinAPI_LoadBitmap|WinAPI_LoadImage|WinAPI_LoadLibrary|WinAPI_LoadLibraryEx|WinAPI_LoadShell32Icon|WinAPI_LoadString|WinAPI_LocalFree|WinAPI_LoWord|WinAPI_MakeDWord|WinAPI_MAKELANGID|WinAPI_MAKELCID|WinAPI_MakeLong|WinAPI_MessageBeep|WinAPI_Mouse_Event|WinAPI_MoveWindow|WinAPI_MsgBox|WinAPI_MulDiv|WinAPI_MultiByteToWideChar|WinAPI_MultiByteToWideCharEx|WinAPI_OpenProcess|WinAPI_PointFromRect|WinAPI_PostMessage|WinAPI_PrimaryLangId|WinAPI_PtInRect|WinAPI_ReadFile|WinAPI_ReadProcessMemory|WinAPI_RectIsEmpty|WinAPI_RedrawWindow|WinAPI_RegisterWindowMessage|WinAPI_ReleaseCapture|WinAPI_ReleaseDC|WinAPI_ScreenToClient|WinAPI_SelectObject|WinAPI_SetBkColor|WinAPI_SetCapture|WinAPI_SetCursor|WinAPI_SetDefaultPrinter|WinAPI_SetDIBits|WinAPI_SetEvent|WinAPI_SetFocus|WinAPI_SetFont|WinAPI_SetHandleInformation|WinAPI_SetLastError|WinAPI_SetParent|WinAPI_SetProcessAffinityMask|WinAPI_SetSysColors|WinAPI_SetTextColor|WinAPI_SetWindowLong|WinAPI_SetWindowPos|WinAPI_SetWindowsHookEx|WinAPI_SetWindowText|WinAPI_ShowCursor|WinAPI_ShowError|WinAPI_ShowMsg|WinAPI_ShowWindow|WinAPI_StringFromGUID|WinAPI_SubLangId|WinAPI_SystemParametersInfo|WinAPI_TwipsPerPixelX|WinAPI_TwipsPerPixelY|WinAPI_UnhookWindowsHookEx|WinAPI_UpdateLayeredWindow|WinAPI_UpdateWindow|WinAPI_ValidateClassName|WinAPI_WaitForInputIdle|WinAPI_WaitForMultipleObjects|WinAPI_WaitForSingleObject|WinAPI_WideCharToMultiByte|WinAPI_WindowFromPoint|WinAPI_WriteConsole|WinAPI_WriteFile|WinAPI_WriteProcessMemory|WinNet_AddConnection|WinNet_AddConnection2|WinNet_AddConnection3|WinNet_CancelConnection|WinNet_CancelConnection2|WinNet_CloseEnum|WinNet_ConnectionDialog|WinNet_ConnectionDialog1|WinNet_DisconnectDialog|WinNet_DisconnectDialog1|WinNet_EnumResource|WinNet_GetConnection|WinNet_GetConnectionPerformance|WinNet_GetLastError|WinNet_GetNetworkInformation|WinNet_GetProviderName|WinNet_GetResourceInformation|WinNet_GetResourceParent|WinNet_GetUniversalName|WinNet_GetUser|WinNet_OpenEnum|WinNet_RestoreConnection|WinNet_UseConnection|Word_VersionInfo|WordAttach|WordCreate|WordDocAdd|WordDocAddLink|WordDocAddPicture|WordDocClose|WordDocFindReplace|WordDocGetCollection|WordDocLinkGetCollection|WordDocOpen|WordDocPrint|WordDocPropertyGet|WordDocPropertySet|WordDocSave|WordDocSaveAs|WordErrorHandlerDeRegister|WordErrorHandlerRegister|WordErrorNotify|WordMacroRun|WordPropertyGet|WordPropertySet|WordQuit|ce|comments-end|comments-start|cs|include|include-once|NoTrayIcon|RequireAdmin|AutoIt3Wrapper_Au3Check_Parameters|AutoIt3Wrapper_Au3Check_Stop_OnWarning|AutoIt3Wrapper_Change2CUI|AutoIt3Wrapper_Compression|AutoIt3Wrapper_cvsWrapper_Parameters|AutoIt3Wrapper_Icon|AutoIt3Wrapper_Outfile|AutoIt3Wrapper_Outfile_Type|AutoIt3Wrapper_Plugin_Funcs|AutoIt3Wrapper_Res_Comment|AutoIt3Wrapper_Res_Description|AutoIt3Wrapper_Res_Field|AutoIt3Wrapper_Res_File_Add|AutoIt3Wrapper_Res_Fileversion|AutoIt3Wrapper_Res_FileVersion_AutoIncrement|AutoIt3Wrapper_Res_Icon_Add|AutoIt3Wrapper_Res_Language|AutoIt3Wrapper_Res_LegalCopyright|AutoIt3Wrapper_res_requestedExecutionLevel|AutoIt3Wrapper_Res_SaveSource|AutoIt3Wrapper_Run_After|AutoIt3Wrapper_Run_Au3check|AutoIt3Wrapper_Run_Before|AutoIt3Wrapper_Run_cvsWrapper|AutoIt3Wrapper_Run_Debug_Mode|AutoIt3Wrapper_Run_Obfuscator|AutoIt3Wrapper_Run_Tidy|AutoIt3Wrapper_Tidy_Stop_OnError|AutoIt3Wrapper_UseAnsi|AutoIt3Wrapper_UseUpx|AutoIt3Wrapper_UseX64|AutoIt3Wrapper_Version|EndRegion|forceref|Obfuscator_Ignore_Funcs|Obfuscator_Ignore_Variables|Obfuscator_Parameters|Region|Tidy_Parameters",t="AppDataCommonDir|AppDataDir|AutoItExe|AutoItPID|AutoItUnicode|AutoItVersion|AutoItX64|COM_EventObj|CommonFilesDir|Compiled|ComputerName|ComSpec|CR|CRLF|DesktopCommonDir|DesktopDepth|DesktopDir|DesktopHeight|DesktopRefresh|DesktopWidth|DocumentsCommonDir|error|exitCode|exitMethod|extended|FavoritesCommonDir|FavoritesDir|GUI_CtrlHandle|GUI_CtrlId|GUI_DragFile|GUI_DragId|GUI_DropId|GUI_WinHandle|HomeDrive|HomePath|HomeShare|HotKeyPressed|HOUR|InetGetActive|InetGetBytesRead|IPAddress1|IPAddress2|IPAddress3|IPAddress4|KBLayout|LF|LogonDNSDomain|LogonDomain|LogonServer|MDAY|MIN|MON|MyDocumentsDir|NumParams|OSBuild|OSLang|OSServicePack|OSTYPE|OSVersion|ProcessorArch|ProgramFilesDir|ProgramsCommonDir|ProgramsDir|ScriptDir|ScriptFullPath|ScriptLineNumber|ScriptName|SEC|StartMenuCommonDir|StartMenuDir|StartupCommonDir|StartupDir|SW_DISABLE|SW_ENABLE|SW_HIDE|SW_LOCK|SW_MAXIMIZE|SW_MINIMIZE|SW_RESTORE|SW_SHOW|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWMINNOACTIVE|SW_SHOWNA|SW_SHOWNOACTIVATE|SW_SHOWNORMAL|SW_UNLOCK|SystemDir|TAB|TempDir|TRAY_ID|TrayIconFlashing|TrayIconVisible|UserName|UserProfileDir|WDAY|WindowsDir|WorkingDir|YDAY|YEAR";this.$rules={start:[{token:"comment.line.ahk",regex:"(?:^| );.*$"},{token:"comment.block.ahk",regex:"/\\*",push:[{token:"comment.block.ahk",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.ahk"}]},{token:"doc.comment.ahk",regex:"#cs",push:[{token:"doc.comment.ahk",regex:"#ce",next:"pop"},{defaultToken:"doc.comment.ahk"}]},{token:"keyword.command.ahk",regex:"(?:\\b|^)(?:allowsamelinecomments|clipboardtimeout|commentflag|errorstdout|escapechar|hotkeyinterval|hotkeymodifiertimeout|hotstring|include|includeagain|installkeybdhook|installmousehook|keyhistory|ltrim|maxhotkeysperinterval|maxmem|maxthreads|maxthreadsbuffer|maxthreadsperhotkey|noenv|notrayicon|persistent|singleinstance|usehook|winactivateforce|autotrim|blockinput|click|clipwait|continue|control|controlclick|controlfocus|controlget|controlgetfocus|controlgetpos|controlgettext|controlmove|controlsend|controlsendraw|controlsettext|coordmode|critical|detecthiddentext|detecthiddenwindows|drive|driveget|drivespacefree|edit|endrepeat|envadd|envdiv|envget|envmult|envset|envsub|envupdate|exit|exitapp|fileappend|filecopy|filecopydir|filecreatedir|filecreateshortcut|filedelete|filegetattrib|filegetshortcut|filegetsize|filegettime|filegetversion|fileinstall|filemove|filemovedir|fileread|filereadline|filerecycle|filerecycleempty|fileremovedir|fileselectfile|fileselectfolder|filesetattrib|filesettime|formattime|getkeystate|gosub|goto|groupactivate|groupadd|groupclose|groupdeactivate|gui|guicontrol|guicontrolget|hideautoitwin|hotkey|ifequal|ifexist|ifgreater|ifgreaterorequal|ifinstring|ifless|iflessorequal|ifmsgbox|ifnotequal|ifnotexist|ifnotinstring|ifwinactive|ifwinexist|ifwinnotactive|ifwinnotexist|imagesearch|inidelete|iniread|iniwrite|input|inputbox|keyhistory|keywait|listhotkeys|listlines|listvars|menu|mouseclick|mouseclickdrag|mousegetpos|mousemove|msgbox|onexit|outputdebug|pause|pixelgetcolor|pixelsearch|postmessage|process|progress|random|regdelete|regread|regwrite|reload|repeat|run|runas|runwait|send|sendevent|sendinput|sendmode|sendplay|sendmessage|sendraw|setbatchlines|setcapslockstate|setcontroldelay|setdefaultmousespeed|setenv|setformat|setkeydelay|setmousedelay|setnumlockstate|setscrolllockstate|setstorecapslockmode|settimer|settitlematchmode|setwindelay|setworkingdir|shutdown|sleep|sort|soundbeep|soundget|soundgetwavevolume|soundplay|soundset|soundsetwavevolume|splashimage|splashtextoff|splashtexton|splitpath|statusbargettext|statusbarwait|stringcasesense|stringgetpos|stringleft|stringlen|stringlower|stringmid|stringreplace|stringright|stringsplit|stringtrimleft|stringtrimright|stringupper|suspend|sysget|thread|tooltip|transform|traytip|urldownloadtofile|while|winactivate|winactivatebottom|winclose|winget|wingetactivestats|wingetactivetitle|wingetclass|wingetpos|wingettext|wingettitle|winhide|winkill|winmaximize|winmenuselectitem|winminimize|winminimizeall|winminimizeallundo|winmove|winrestore|winset|winsettitle|winshow|winwait|winwaitactive|winwaitclose|winwaitnotactive)\\b",caseInsensitive:!0},{token:"keyword.control.ahk",regex:"(?:\\b|^)(?:if|else|return|loop|break|for|while|global|local|byref)\\b",caseInsensitive:!0},{token:"support.function.ahk",regex:"(?:\\b|^)(?:abs|acos|asc|asin|atan|ceil|chr|cos|dllcall|exp|fileexist|floor|getkeystate|il_add|il_create|il_destroy|instr|substr|isfunc|islabel|ln|log|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|registercallback|regexmatch|regexreplace|round|sin|tan|sqrt|strlen|sb_seticon|sb_setparts|sb_settext|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist)\\b",caseInsensitive:!0},{token:"variable.predefined.ahk",regex:"(?:\\b|^)(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|programfiles|a_programfiles|a_programs|a_programscommon|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel)\\b",caseInsensitive:!0},{token:"support.constant.ahk",regex:"(?:\\b|^)(?:shift|lshift|rshift|alt|lalt|ralt|control|lcontrol|rcontrol|ctrl|lctrl|rctrl|lwin|rwin|appskey|altdown|altup|shiftdown|shiftup|ctrldown|ctrlup|lwindown|lwinup|rwindown|rwinup|lbutton|rbutton|mbutton|wheelup|wheelleft|wheelright|wheeldown|xbutton1|xbutton2|joy1|joy2|joy3|joy4|joy5|joy6|joy7|joy8|joy9|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy30|joy31|joy32|joyx|joyy|joyz|joyr|joyu|joyv|joypov|joyname|joybuttons|joyaxes|joyinfo|space|tab|enter|escape|esc|backspace|bs|delete|del|insert|ins|pgup|pgdn|home|end|up|down|left|right|printscreen|ctrlbreak|pause|scrolllock|capslock|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadmult|numpadadd|numpadsub|numpaddiv|numpaddot|numpaddel|numpadins|numpadclear|numpadup|numpaddown|numpadleft|numpadright|numpadhome|numpadend|numpadpgup|numpadpgdn|numpadenter|f1|f2|f3|f4|f5|f6|f7|f8|f9|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f20|f21|f22|f23|f24|browser_back|browser_forward|browser_refresh|browser_stop|browser_search|browser_favorites|browser_home|volume_mute|volume_down|volume_up|media_next|media_prev|media_stop|media_play_pause|launch_mail|launch_media|launch_app1|launch_app2)\\b",caseInsensitive:!0},{token:"variable.parameter",regex:"(?:\\b|^)(?:pixel|mouse|screen|relative|rgb|ltrim|rtrim|join|low|belownormal|normal|abovenormal|high|realtime|ahk_id|ahk_pid|ahk_class|ahk_group|between|contains|in|is|integer|float|integerfast|floatfast|number|digit|xdigit|alpha|upper|lower|alnum|time|date|not|or|and|alwaysontop|topmost|top|bottom|transparent|transcolor|redraw|region|id|idlast|processname|minmax|controllist|count|list|capacity|statuscd|eject|lock|unlock|label|filesystem|label|setlabel|serial|type|status|static|seconds|minutes|hours|days|read|parse|logoff|close|error|single|tray|add|rename|check|uncheck|togglecheck|enable|disable|toggleenable|default|nodefault|standard|nostandard|color|delete|deleteall|icon|noicon|tip|click|show|mainwindow|nomainwindow|useerrorlevel|text|picture|pic|groupbox|button|checkbox|radio|dropdownlist|ddl|combobox|listbox|listview|datetime|monthcal|updown|slider|tab|tab2|statusbar|treeview|iconsmall|tile|report|sortdesc|nosort|nosorthdr|grid|hdr|autosize|range|xm|ym|ys|xs|xp|yp|font|resize|owner|submit|nohide|minimize|maximize|restore|noactivate|na|cancel|destroy|center|margin|maxsize|minsize|owndialogs|guiescape|guiclose|guisize|guicontextmenu|guidropfiles|tabstop|section|altsubmit|wrap|hscroll|vscroll|border|top|bottom|buttons|expand|first|imagelist|lines|wantctrla|wantf2|vis|visfirst|number|uppercase|lowercase|limit|password|multi|wantreturn|group|background|bold|italic|strike|underline|norm|backgroundtrans|theme|caption|delimiter|minimizebox|maximizebox|sysmenu|toolwindow|flash|style|exstyle|check3|checked|checkedgray|readonly|password|hidden|left|right|center|notab|section|move|focus|hide|choose|choosestring|text|pos|enabled|disabled|visible|lastfound|lastfoundexist|alttab|shiftalttab|alttabmenu|alttabandmenu|alttabmenudismiss|notimers|interrupt|priority|waitclose|blind|raw|unicode|deref|pow|bitnot|bitand|bitor|bitxor|bitshiftleft|bitshiftright|yes|no|ok|cancel|abort|retry|ignore|tryagain|on|off|all|hkey_local_machine|hkey_users|hkey_current_user|hkey_classes_root|hkey_current_config|hklm|hku|hkcu|hkcr|hkcc|reg_sz|reg_expand_sz|reg_multi_sz|reg_dword|reg_qword|reg_binary|reg_link|reg_resource_list|reg_full_resource_descriptor|reg_resource_requirements_list|reg_dword_big_endian)\\b",caseInsensitive:!0},{keywordMap:{"constant.language":e},regex:"\\w+\\b"},{keywordMap:{"variable.function":t},regex:"@\\w+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"keyword.operator.ahk",regex:"=|==|<>|:=|<|>|\\*|\\/|\\+|:|\\?|\\-"},{token:"punctuation.ahk",regex:/#|`|::|,|%/},{token:"paren",regex:/[{}()]/},{token:["punctuation.quote.double","string.quoted.ahk","punctuation.quote.double"],regex:'(")((?:[^"]|"")*)(")'},{token:["label.ahk","punctuation.definition.label.ahk"],regex:"^([^: ]+)(:)(?!:)"}]},this.normalizeRules()};s.metaData={name:"AutoHotKey",scopeName:"source.ahk",fileTypes:["ahk"],foldingStartMarker:"^\\s*/\\*|^(?![^{]*?;|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|;|/\\*(?!.*?\\*/.*\\S))",foldingStopMarker:"^\\s*\\*/|^\\s*\\}"},r.inherits(s,i),t.AutoHotKeyHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/autohotkey",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/autohotkey_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./autohotkey_highlight_rules").AutoHotKeyHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart=";",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/autohotkey"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/autohotkey"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-basic.js b/www/js/ace/mode-basic.js deleted file mode 100644 index 3384d91ac..000000000 --- a/www/js/ace/mode-basic.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/basic_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"keyword.control":"FOR|TO|NEXT|GOSUB|RETURN|IF|THEN|ELSE|GOTO|ON|WHILE|WEND|TRON|TROFF","entity.name":"Auto|Call|Chain|Clear|Close|Common|Cont|Data|MERGE|ALL|Delete|DIM|EDIT|END|ERASE|ERROR|FIELD|GET|INPUT|KILL|LET|LIST|LLIST|LOAD|LSET|RSET|MERGE|NEW|NULL|OPEN|OUT|POKE|PRINT|PUT|RANDOMIZE|READ|RENUM|RESTORE|RESUME|RUN|SAVE|STOP|SWAP|WAIT|WIDTH","keyword.operator":"Mod|And|Not|Or|Xor|Eqv|Imp","support.function":"ABS|ASC|ATN|CDBL|CINT|COS|CSNG|CVI|CVS|CVD|EOF|EXP|FIX|FRE|INP|INSTR|INT|LEN|LOC|LOG|LPOS|PEEK|POS|RND|SGN|SIN|SPC|SQR|TAB|TAN|USR|VAL|VARPTR"},"identifier",!0);this.$rules={start:[{token:"string",regex:/"(?:\\.|[^"\\])*"/},{token:"support.function",regex:/(HEX|CHR|INPUT|LEFT|MID|MKI|MKS|MKD|OCT|RIGHT|SPACE|STR|STRING)\$/},{token:"entity.name",regex:/(?:DEF\s(?:SEG|USR|FN[a-zA-Z]+)|LINE\sINPUT|L?PRINT#?(?:\sUSING)?|MID\$|ON\sERROR\sGOTO|OPTION\sBASE|WRITE#?|DATE\$|INKEY\$|TIME\$)/},{token:"variable",regex:/[a-zA-Z][a-zA-Z0-9_]{0,38}[$%!#]?(?=\s*=)/},{token:"keyword.operator",regex:/\\|=|\^|\*|\/|\+|\-|<|>|-/},{token:"paren.lparen",regex:/[([]/},{token:"paren.rparen",regex:/[\)\]]/},{token:"constant.numeric",regex:/[+-]?\d+(\.\d+)?([ED][+-]?\d+)?(?:[!#])?/},{token:"constant.numeric",regex:/&[HO]?[0-9A-F]+/},{token:"comment",regex:/REM\s+.*$/},{regex:"\\w+",token:e},{token:"punctiation",regex:/[,;]/}]},this.normalizeRules()};r.inherits(s,i),t.BasicHighlightRules=s}),define("ace/mode/folding/basic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.indentKeywords={tron:1,"while":1,"for":1,troff:-1,wend:-1,next:-1},this.foldingStartMarker=/(?:\s|^)(tron|while|for)\b/i,this.foldingStopMarker=/(?:\b)(troff|next|wend)\b/i,this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarker.test(r),s=this.foldingStopMarker.test(r);if(i||s){var o=s?this.foldingStopMarker.exec(r):this.foldingStartMarker.exec(r),u=o&&o[1].toLowerCase();if(u){var a=e.getTokenAt(n,o.index+2).type;if(a==="keyword.control")return this.basicBlock(e,n,o.index+2)}}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarker.test(r),s=this.foldingStopMarker.test(r);if(i&&!s){var o=this.foldingStartMarker.exec(r),u=o&&o[1].toLowerCase();if(u){var a=e.getTokenAt(n,o.index+2).type;if(a=="keyword.control")return"start"}}if(t!="markbeginend"||!s||i&&s)return"";var o=r.match(this.foldingStopMarker),u=o&&o[1].toLowerCase();return this.indentKeywords[u]&&e.getTokenAt(n,o.index+2).type==="keyword.control"?"end":""},this.basicBlock=function(e,t,n,r){var i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!="keyword.control")return;var a=u.value.toLowerCase(),f=[a],l=this.indentKeywords[a];if(!l)return;var c=l===-1?i.getCurrentTokenColumn():e.getLine(t).length,h=t;i.step=l===-1?i.stepBackward:i.stepForward;while(u=i.step()){a=u.value.toLowerCase();if(u.type!=="keyword.control"||!this.indentKeywords[a])continue;var p=l*this.indentKeywords[a];p>0?f.unshift(a):p<=0&&f.shift();if(f.length===0)break}if(!u)return null;if(r)return i.getCurrentTokenRange();var t=i.getCurrentTokenRow();return l===-1?new s(t,e.getLine(t).length,h,c):new s(h,c,t,i.getCurrentTokenColumn())}}.call(u.prototype)}),define("ace/mode/basic",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/basic_highlight_rules","ace/mode/folding/basic"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./basic_highlight_rules").BasicHighlightRules,o=e("./folding/basic").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour,this.indentKeywords=this.foldingRules.indentKeywords};r.inherits(u,i),function(){this.lineCommentStart=["REM"],this.getMatching=function(e,t,n,r){if(t==undefined){var i=e.selection.lead;n=i.column,t=i.row}r==undefined&&(r=!0);var s=e.getTokenAt(t,n);if(s){var o=s.value.toLowerCase();if(o in this.indentKeywords)return this.foldingRules.basicBlock(e,t,n,r)}},this.$id="ace/mode/basic"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/basic"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-batchfile.js b/www/js/ace/mode-batchfile.js deleted file mode 100644 index 0550234ae..000000000 --- a/www/js/ace/mode-batchfile.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/batchfile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"keyword.command.dosbatch",regex:"\\b(?:append|assoc|at|attrib|break|cacls|cd|chcp|chdir|chkdsk|chkntfs|cls|cmd|color|comp|compact|convert|copy|date|del|dir|diskcomp|diskcopy|doskey|echo|endlocal|erase|fc|find|findstr|format|ftype|graftabl|help|keyb|label|md|mkdir|mode|more|move|path|pause|popd|print|prompt|pushd|rd|recover|ren|rename|replace|restore|rmdir|set|setlocal|shift|sort|start|subst|time|title|tree|type|ver|verify|vol|xcopy)\\b",caseInsensitive:!0},{token:"keyword.control.statement.dosbatch",regex:"\\b(?:goto|call|exit)\\b",caseInsensitive:!0},{token:"keyword.control.conditional.if.dosbatch",regex:"\\bif\\s+not\\s+(?:exist|defined|errorlevel|cmdextversion)\\b",caseInsensitive:!0},{token:"keyword.control.conditional.dosbatch",regex:"\\b(?:if|else)\\b",caseInsensitive:!0},{token:"keyword.control.repeat.dosbatch",regex:"\\bfor\\b",caseInsensitive:!0},{token:"keyword.operator.dosbatch",regex:"\\b(?:EQU|NEQ|LSS|LEQ|GTR|GEQ)\\b"},{token:["doc.comment","comment"],regex:"(?:^|\\b)(rem)($|\\s.*$)",caseInsensitive:!0},{token:"comment.line.colons.dosbatch",regex:"::.*$"},{include:"variable"},{token:"punctuation.definition.string.begin.shell",regex:'"',push:[{token:"punctuation.definition.string.end.shell",regex:'"',next:"pop"},{include:"variable"},{defaultToken:"string.quoted.double.dosbatch"}]},{token:"keyword.operator.pipe.dosbatch",regex:"[|]"},{token:"keyword.operator.redirect.shell",regex:"&>|\\d*>&\\d*|\\d*(?:>>|>|<)|\\d*<&|\\d*<>"}],variable:[{token:"constant.numeric",regex:"%%\\w+|%[*\\d]|%\\w+%"},{token:"constant.numeric",regex:"%~\\d+"},{token:["markup.list","constant.other","markup.list"],regex:"(%)(\\w+)(%?)"}]},this.normalizeRules()};s.metaData={name:"Batch File",scopeName:"source.dosbatch",fileTypes:["bat"]},r.inherits(s,i),t.BatchFileHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/batchfile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/batchfile_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./batchfile_highlight_rules").BatchFileHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="::",this.blockComment="",this.$id="ace/mode/batchfile"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/batchfile"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-bibtex.js b/www/js/ace/mode-bibtex.js deleted file mode 100644 index 97931bb05..000000000 --- a/www/js/ace/mode-bibtex.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/bibtex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:/@Comment\{/,stateName:"bibtexComment",push:[{token:"comment",regex:/}/,next:"pop"},{token:"comment",regex:/\{/,push:"bibtexComment"},{defaultToken:"comment"}]},{token:["keyword","text","paren.lparen","text","variable","text","keyword.operator"],regex:/(@String)(\s*)(\{)(\s*)([a-zA-Z]*)(\s*)(=)/,push:[{token:"paren.rparen",regex:/\}/,next:"pop"},{include:"#misc"},{defaultToken:"text"}]},{token:["keyword","text","paren.lparen","text","variable","text","keyword.operator"],regex:/(@String)(\s*)(\()(\s*)([a-zA-Z]*)(\s*)(=)/,push:[{token:"paren.rparen",regex:/\)/,next:"pop"},{include:"#misc"},{defaultToken:"text"}]},{token:["keyword","text","paren.lparen"],regex:/(@preamble)(\s*)(\()/,push:[{token:"paren.rparen",regex:/\)/,next:"pop"},{include:"#misc"},{defaultToken:"text"}]},{token:["keyword","text","paren.lparen"],regex:/(@preamble)(\s*)(\{)/,push:[{token:"paren.rparen",regex:/\}/,next:"pop"},{include:"#misc"},{defaultToken:"text"}]},{token:["keyword","text","paren.lparen","text","support.class"],regex:/(@[a-zA-Z]+)(\s*)(\{)(\s*)([\w-]+)/,push:[{token:"paren.rparen",regex:/\}/,next:"pop"},{token:["variable","text","keyword.operator"],regex:/([a-zA-Z0-9\!\$\&\*\+\-\.\/\:\;\<\>\?\[\]\^\_\`\|]+)(\s*)(=)/,push:[{token:"text",regex:/(?=[,}])/,next:"pop"},{include:"#misc"},{include:"#integer"},{defaultToken:"text"}]},{token:"punctuation",regex:/,/},{defaultToken:"text"}]},{defaultToken:"comment"}],"#integer":[{token:"constant.numeric.bibtex",regex:/\d+/}],"#misc":[{token:"string",regex:/"/,push:"#string_quotes"},{token:"paren.lparen",regex:/\{/,push:"#string_braces"},{token:"keyword.operator",regex:/#/}],"#string_braces":[{token:"paren.rparen",regex:/\}/,next:"pop"},{token:"invalid.illegal",regex:/@/},{include:"#misc"},{defaultToken:"string"}],"#string_quotes":[{token:"string",regex:/"/,next:"pop"},{include:"#misc"},{defaultToken:"string"}]},this.normalizeRules()};r.inherits(s,i),t.BibTeXHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/bibtex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/bibtex_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./bibtex_highlight_rules").BibTeXHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.$id="ace/mode/bibtex"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/bibtex"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-c9search.js b/www/js/ace/mode-c9search.js deleted file mode 100644 index 35fe30f8a..000000000 --- a/www/js/ace/mode-c9search.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/c9search_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function o(e,t){try{return new RegExp(e,t)}catch(n){}}var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,u=function(){this.$rules={start:[{tokenNames:["c9searchresults.constant.numeric","c9searchresults.text","c9searchresults.text","c9searchresults.keyword"],regex:/(^\s+[0-9]+)(:)(\d*\s?)([^\r\n]+)/,onMatch:function(e,t,n){var r=this.splitRegex.exec(e),i=this.tokenNames,s=[{type:i[0],value:r[1]},{type:i[1],value:r[2]}];r[3]&&(r[3]==" "?s[1]={type:i[1],value:r[2]+" "}:s.push({type:i[1],value:r[3]}));var o=n[1],u=r[4],a,f=0;if(o&&o.exec){o.lastIndex=0;while(a=o.exec(u)){var l=u.substring(f,a.index);f=o.lastIndex,l&&s.push({type:i[2],value:l});if(a[0])s.push({type:i[3],value:a[0]});else if(!l)break}}return f=0;c--){s=r[c];if(a.test(s))break}f=c}if(f!=l){var p=s.length;return a===o&&(p=s.search(/\(Found[^)]+\)$|$/)),new i(f,p,l,0)}}}.call(o.prototype)}),define("ace/mode/c9search",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c9search_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/c9search"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c9search_highlight_rules").C9SearchHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/c9search").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new u};r.inherits(a,i),function(){this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c9search"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/c9search"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-c_cpp.js b/www/js/ace/mode-c_cpp.js deleted file mode 100644 index 8bbb17f6c..000000000 --- a/www/js/ace/mode-c_cpp.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="hypot|hypotf|hypotl|sscanf|system|snprintf|scanf|scalbn|scalbnf|scalbnl|scalbln|scalblnf|scalblnl|sin|sinh|sinhf|sinhl|sinf|sinl|signal|signbit|strstr|strspn|strncpy|strncat|strncmp|strcspn|strchr|strcoll|strcpy|strcat|strcmp|strtoimax|strtod|strtoul|strtoull|strtoumax|strtok|strtof|strtol|strtold|strtoll|strerror|strpbrk|strftime|strlen|strrchr|strxfrm|sprintf|setjmp|setvbuf|setlocale|setbuf|sqrt|sqrtf|sqrtl|swscanf|swprintf|srand|nearbyint|nearbyintf|nearbyintl|nexttoward|nexttowardf|nexttowardl|nextafter|nextafterf|nextafterl|nan|nanf|nanl|csin|csinh|csinhf|csinhl|csinf|csinl|csqrt|csqrtf|csqrtl|ccos|ccosh|ccoshf|ccosf|ccosl|cimag|cimagf|cimagl|ctime|ctan|ctanh|ctanhf|ctanhl|ctanf|ctanl|cos|cosh|coshf|coshl|cosf|cosl|conj|conjf|conjl|copysign|copysignf|copysignl|cpow|cpowf|cpowl|cproj|cprojf|cprojl|ceil|ceilf|ceill|cexp|cexpf|cexpl|clock|clog|clogf|clogl|clearerr|casin|casinh|casinhf|casinhl|casinf|casinl|cacos|cacosh|cacoshf|cacoshl|cacosf|cacosl|catan|catanh|catanhf|catanhl|catanf|catanl|calloc|carg|cargf|cargl|cabs|cabsf|cabsl|creal|crealf|creall|cbrt|cbrtf|cbrtl|time|toupper|tolower|tan|tanh|tanhf|tanhl|tanf|tanl|trunc|truncf|truncl|tgamma|tgammaf|tgammal|tmpnam|tmpfile|isspace|isnormal|isnan|iscntrl|isinf|isdigit|isunordered|isupper|ispunct|isprint|isfinite|iswspace|iswcntrl|iswctype|iswdigit|iswupper|iswpunct|iswprint|iswlower|iswalnum|iswalpha|iswgraph|iswxdigit|iswblank|islower|isless|islessequal|islessgreater|isalnum|isalpha|isgreater|isgreaterequal|isgraph|isxdigit|isblank|ilogb|ilogbf|ilogbl|imaxdiv|imaxabs|div|difftime|_Exit|ungetc|ungetwc|pow|powf|powl|puts|putc|putchar|putwc|putwchar|perror|printf|erf|erfc|erfcf|erfcl|erff|erfl|exit|exp|exp2|exp2f|exp2l|expf|expl|expm1|expm1f|expm1l|vsscanf|vsnprintf|vscanf|vsprintf|vswscanf|vswprintf|vprintf|vfscanf|vfprintf|vfwscanf|vfwprintf|vwscanf|vwprintf|va_start|va_copy|va_end|va_arg|qsort|fscanf|fsetpos|fseek|fclose|ftell|fopen|fdim|fdimf|fdiml|fpclassify|fputs|fputc|fputws|fputwc|fprintf|feholdexcept|fesetenv|fesetexceptflag|fesetround|feclearexcept|fetestexcept|feof|feupdateenv|feraiseexcept|ferror|fegetenv|fegetexceptflag|fegetround|fflush|fwscanf|fwide|fwprintf|fwrite|floor|floorf|floorl|fabs|fabsf|fabsl|fgets|fgetc|fgetpos|fgetws|fgetwc|freopen|free|fread|frexp|frexpf|frexpl|fmin|fminf|fminl|fmod|fmodf|fmodl|fma|fmaf|fmal|fmax|fmaxf|fmaxl|ldiv|ldexp|ldexpf|ldexpl|longjmp|localtime|localeconv|log|log1p|log1pf|log1pl|log10|log10f|log10l|log2|log2f|log2l|logf|logl|logb|logbf|logbl|labs|lldiv|llabs|llrint|llrintf|llrintl|llround|llroundf|llroundl|lrint|lrintf|lrintl|lround|lroundf|lroundl|lgamma|lgammaf|lgammal|wscanf|wcsstr|wcsspn|wcsncpy|wcsncat|wcsncmp|wcscspn|wcschr|wcscoll|wcscpy|wcscat|wcscmp|wcstoimax|wcstod|wcstoul|wcstoull|wcstoumax|wcstok|wcstof|wcstol|wcstold|wcstoll|wcstombs|wcspbrk|wcsftime|wcslen|wcsrchr|wcsrtombs|wcsxfrm|wctob|wctomb|wcrtomb|wprintf|wmemset|wmemchr|wmemcpy|wmemcmp|wmemmove|assert|asctime|asin|asinh|asinhf|asinhl|asinf|asinl|acos|acosh|acoshf|acoshl|acosf|acosl|atoi|atof|atol|atoll|atexit|atan|atanh|atanhf|atanhl|atan2|atan2f|atan2l|atanf|atanl|abs|abort|gets|getc|getchar|getenv|getwc|getwchar|gmtime|rint|rintf|rintl|round|roundf|roundl|rename|realloc|rewind|remove|remquo|remquof|remquol|remainder|remainderf|remainderl|rand|raise|bsearch|btowc|modf|modff|modfl|memset|memchr|memcpy|memcmp|memmove|mktime|malloc|mbsinit|mbstowcs|mbsrtowcs|mbtowc|mblen|mbrtowc|mbrlen",u=function(e){var t="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",n="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",r="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",s="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",u="NULL|true|false|TRUE|FALSE|nullptr",a=this.$keywords=this.createKeywordMapper(Object.assign({"keyword.control":t,"storage.type":n,"storage.modifier":r,"keyword.operator":s,"variable.language":"this","constant.language":u,"support.function.C99.c":o},e),"identifier"),f="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",l=/\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source,c="%"+/(\d+\$)?/.source+/[#0\- +']*/.source+/[,;:_]?/.source+/((-?\d+)|\*(-?\d+\$)?)?/.source+/(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source+/(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source+/(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source;this.$rules={start:[{token:"comment",regex:"//$",next:"start"},{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:"'(?:"+l+"|.)?'"},{token:"string.start",regex:'"',stateName:"qqstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:l},{token:"constant.language.escape",regex:c},{token:"string.end",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"string.start",regex:'R"\\(',stateName:"rawString",next:[{token:"string.end",regex:'\\)"',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:a,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"},{token:"keyword.operator",regex:/--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(u,s),t.c_cppHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp",this.snippetFileId="ace/snippets/c_cpp"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/c_cpp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-cirru.js b/www/js/ace/mode-cirru.js deleted file mode 100644 index 1336df0ad..000000000 --- a/www/js/ace/mode-cirru.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/cirru_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"constant.numeric",regex:/[\d\.]+/},{token:"comment.line.double-dash",regex:/--/,next:"comment"},{token:"storage.modifier",regex:/\(/},{token:"storage.modifier",regex:/,/,next:"line"},{token:"support.function",regex:/[^\(\)"\s{}\[\]]+/,next:"line"},{token:"string.quoted.double",regex:/"/,next:"string"},{token:"storage.modifier",regex:/\)/}],comment:[{token:"comment.line.double-dash",regex:/ +[^\n]+/,next:"start"}],string:[{token:"string.quoted.double",regex:/"/,next:"line"},{token:"constant.character.escape",regex:/\\/,next:"escape"},{token:"string.quoted.double",regex:/[^\\"]+/}],escape:[{token:"constant.character.escape",regex:/./,next:"string"}],line:[{token:"constant.numeric",regex:/[\d\.]+/},{token:"markup.raw",regex:/^\s*/,next:"start"},{token:"storage.modifier",regex:/\$/,next:"start"},{token:"variable.parameter",regex:/[^\(\)"\s{}\[\]]+/},{token:"storage.modifier",regex:/\(/,next:"start"},{token:"storage.modifier",regex:/\)/},{token:"markup.raw",regex:/^ */,next:"start"},{token:"string.quoted.double",regex:/"/,next:"string"}]}};r.inherits(s,i),t.CirruHighlightRules=s}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u=|<>|<|>|!|&&]"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b"},{token:"string",regex:'"',next:"string"},{token:"constant",regex:/:[^()\[\]{}'"\^%`,;\s]+/}],string:[{token:"constant.language.escape",regex:"\\\\.|\\\\$"},{token:"string",regex:'"',next:"start"},{defaultToken:"string"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:'"',next:"start"},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{defaultToken:"string.regexp.charachterclass"}]}};r.inherits(s,i),t.ClojureHighlightRules=s}),define("ace/mode/matching_parens_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\)/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\))/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){var t=e.match(/^(\s+)/);return t?t[1]:""}}).call(i.prototype),t.MatchingParensOutdent=i}),define("ace/mode/clojure",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/clojure_highlight_rules","ace/mode/matching_parens_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./clojure_highlight_rules").ClojureHighlightRules,o=e("./matching_parens_outdent").MatchingParensOutdent,u=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart=";",this.minorIndentFunctions=["defn","defn-","defmacro","def","deftest","testing"],this.$toIndent=function(e){return e.split("").map(function(e){return/\s/.exec(e)?e:" "}).join("")},this.$calculateIndent=function(e,t){var n=this.$getIndent(e),r=0,i,s;for(var o=e.length-1;o>=0;o--){s=e[o],s==="("?(r--,i=!0):s==="("||s==="["||s==="{"?(r--,i=!1):(s===")"||s==="]"||s==="}")&&r++;if(r<0)break}if(!(r<0&&i))return r<0&&!i?this.$toIndent(e.substring(0,o+1)):r>0?(n=n.substring(0,n.length-t.length),n):n;o+=1;var u=o,a="";for(;;){s=e[o];if(s===" "||s===" ")return this.minorIndentFunctions.indexOf(a)!==-1?this.$toIndent(e.substring(0,u-1)+t):this.$toIndent(e.substring(0,o+1));if(s===undefined)return this.$toIndent(e.substring(0,u-1)+t);a+=e[o],o++}},this.getNextLineIndent=function(e,t,n){return this.$calculateIndent(t,n)},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/clojure",this.snippetFileId="ace/snippets/clojure"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/clojure"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-clue.js b/www/js/ace/mode-clue.js deleted file mode 100644 index 5a0dc7629..000000000 --- a/www/js/ace/mode-clue.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/clue_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["keyword.control.directive.clue","text","text"],regex:/(@version)( )(.+?(?=\n))/},{token:["keyword.control.macro.clue","text","text"],regex:/(@macro)( )([A-Za-z_][0-9A-Za-z_]*)/},{token:["keyword.control.import.clue","text","string"],regex:/(@import)( )(".*")/},{token:"meta.preprocessor.macro.invocation.clue",regex:/\$[A-Za-z_][0-9A-Za-z_]*!/},{token:"keyword.control.directive.clue",regex:/@(?:(?:else_)?(?:ifos|iflua|ifdef|ifndef|ifcmp|ifos|iflua|ifdef|ifcmp|if)|else|define|macro|error|print)/},{token:"constant.numeric.integer.hexadecimal.clue",regex:/\b0[xX][0-9A-Fa-f]+(?![pPeE.0-9])\b/},{token:"constant.numeric.float.hexadecimal.clue",regex:/\b0[xX][0-9A-Fa-f]+(?:\.[0-9A-Fa-f]+)?(?:[eE]-?\d*)?(?:[pP][-+]\d+)?\b/},{token:"constant.numeric.integer.clue",regex:/\b\d+(?![pPeE.0-9])/},{token:"constant.numeric.float.clue",regex:/\b\d+(?:\.\d+)?(?:[eE]-?\d*)?/},{token:"punctuation.definition.string.multilined.begin.clue",regex:/'/,push:[{token:"punctuation.definition.string.multilined.end.clue",regex:/'/,next:"pop"},{include:"#escaped_char"},{defaultToken:"string.quoted.single.clue"}]},{token:"punctuation.definition.string.multilined.begin.clue",regex:/"/,push:[{token:"punctuation.definition.string.multilined.end.clue",regex:/"/,next:"pop"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.clue"}]},{token:"punctuation.definition.string.multilined.begin.clue",regex:/`/,push:[{token:"punctuation.definition.string.multilined.end.clue",regex:/`/,next:"pop"},{include:"#escaped_char"},{defaultToken:"string.multiline.clue"}]},{token:"comment.line.double-dash.clue",regex:/\/\/.*/},{token:"punctuation.definition.comment.begin.clue",regex:/\/\*/,push:[{token:"punctuation.definition.comment.end.clue",regex:/\*\//,next:"pop"},{include:"#escaped_char"},{defaultToken:"comment.block.clue"}]},{token:"keyword.control.clue",regex:/\b(?:if|elseif|else|for|of|in|with|while|meta|until|fn|method|return|loop|enum|goto|continue|break|try|catch|match|default|macro)\b/},{token:"keyword.scope.clue",regex:/\b(?:local|global|static)\b/},{token:"constant.language.clue",regex:/\b(?:false|nil|true|_G|_VERSION|math\.(?:pi|huge))\b/},{token:"constant.language.ellipsis.clue",regex:/\.{3}(?!\.)/},{token:"keyword.operator.property.clue",regex:/\.|::/,next:"property_identifier"},{token:"keyword.operator.clue",regex:/\/_|\&|\||\!|\~|\?|\$|@|\+|-|%|#|\*|\/|\^|==?|<=?|>=?|\.{2}|\?\?=?|(?:&&|\|\|)=?/},{token:"variable.language.self.clue",regex:/\bself\b/},{token:"support.function.any-method.clue",regex:/\b[a-zA-Z_][a-zA-Z0-9_]*\b(?=\(\s*)/},{token:"variable.other.clue",regex:/[A-Za-z_][0-9A-Za-z_]*/}],"#escaped_char":[{token:"constant.character.escape.clue",regex:/\\[abfnrtvz\\"'$]/},{token:"constant.character.escape.byte.clue",regex:/\\\d{1,3}/},{token:"constant.character.escape.byte.clue",regex:/\\x[0-9A-Fa-f][0-9A-Fa-f]/},{token:"constant.character.escape.unicode.clue",regex:/\\u\{[0-9A-Fa-f]+\}/},{token:"invalid.illegal.character.escape.clue",regex:/\\./}],property_identifier:[{token:"variable.other.property.clue",regex:/[A-Za-z_][0-9A-Za-z_]*/,next:"start"},{token:"",regex:"",next:"start"}]},this.normalizeRules()};s.metaData={name:"Clue",scopeName:"source.clue"},r.inherits(s,i),t.ClueHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/clue",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/clue_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./clue_highlight_rules").ClueHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.$id="ace/mode/clue"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/clue"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-cobol.js b/www/js/ace/mode-cobol.js deleted file mode 100644 index cd14305b9..000000000 --- a/www/js/ace/mode-cobol.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/cobol_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="ACCEPT|MERGE|SUM|ADD||MESSAGE|TABLE|ADVANCING|MODE|TAPE|AFTER|MULTIPLY|TEST|ALL|NEGATIVE|TEXT|ALPHABET|NEXT|THAN|ALSO|NO|THEN|ALTERNATE|NOT|THROUGH|AND|NUMBER|THRU|ANY|OCCURS|TIME|ARE|OF|TO|AREA|OFF|TOP||ASCENDING|OMITTED|TRUE|ASSIGN|ON|TYPE|AT|OPEN|UNIT|AUTHOR|OR|UNTIL|BEFORE|OTHER|UP|BLANK|OUTPUT|USE|BLOCK|PAGE|USING|BOTTOM|PERFORM|VALUE|BY|PIC|VALUES|CALL|PICTURE|WHEN|CANCEL|PLUS|WITH|CD|POINTER|WRITE|CHARACTER|POSITION||ZERO|CLOSE|POSITIVE|ZEROS|COLUMN|PROCEDURE|ZEROES|COMMA|PROGRAM|COMMON|PROGRAM-ID|COMMUNICATION|QUOTE|COMP|RANDOM|COMPUTE|READ|CONTAINS|RECEIVE|CONFIGURATION|RECORD|CONTINUE|REDEFINES|CONTROL|REFERENCE|COPY|REMAINDER|COUNT|REPLACE|DATA|REPORT|DATE|RESERVE|DAY|RESET|DELETE|RETURN|DESTINATION|REWIND|DISABLE|REWRITE|DISPLAY|RIGHT|DIVIDE|RUN|DOWN|SAME|ELSE|SEARCH|ENABLE|SECTION|END|SELECT|ENVIRONMENT|SENTENCE|EQUAL|SET|ERROR|SIGN|EXIT|SEQUENTIAL|EXTERNAL|SIZE|FLASE|SORT|FILE|SOURCE|LENGTH|SPACE|LESS|STANDARD|LIMIT|START|LINE|STOP|LOCK|STRING|LOW-VALUE|SUBTRACT",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce|main",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"\\*.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.CobolHighlightRules=s}),define("ace/mode/cobol",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cobol_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./cobol_highlight_rules").CobolHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="*",this.$id="ace/mode/cobol"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/cobol"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-coffee.js b/www/js/ace/mode-coffee.js deleted file mode 100644 index 9dfc692e1..000000000 --- a/www/js/ace/mode-coffee.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function s(){var e="[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",t="this|throw|then|try|typeof|super|switch|return|break|by|continue|catch|class|in|instanceof|is|isnt|if|else|extends|for|own|finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|or|on|unless|until|and|yes|yield|export|import|default",n="true|false|null|undefined|NaN|Infinity",r="case|const|function|var|void|with|enum|implements|interface|let|package|private|protected|public|static",i="Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray",s="Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|encodeURIComponent|decodeURI|decodeURIComponent|String|",o="window|arguments|prototype|document",u=this.createKeywordMapper({keyword:t,"constant.language":n,"invalid.illegal":r,"language.support.class":i,"language.support.function":s,"variable.language":o},"identifier"),a={token:["paren.lparen","variable.parameter","paren.rparen","text","storage.type"],regex:/(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source},f=/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/;this.$rules={start:[{token:"constant.numeric",regex:"(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)"},{stateName:"qdoc",token:"string",regex:"'''",next:[{token:"string",regex:"'''",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqdoc",token:"string",regex:'"""',next:[{token:"string",regex:'"""',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qstring",token:"string",regex:"'",next:[{token:"string",regex:"'",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqstring",token:"string.start",regex:'"',next:[{token:"string.end",regex:'"',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"js",token:"string",regex:"`",next:[{token:"string",regex:"`",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{regex:"[{}]",onMatch:function(e,t,n){this.next="";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift()||"";if(this.next.indexOf("string")!=-1)return"paren.string"}return"paren"}},{token:"string.regex",regex:"///",next:"heregex"},{token:"string.regex",regex:/(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/},{token:"comment",regex:"###(?!#)",next:"comment"},{token:"comment",regex:"#.*"},{token:["punctuation.operator","text","identifier"],regex:"(\\.)(\\s*)("+r+")"},{token:"punctuation.operator",regex:"\\.{1,3}"},{token:["keyword","text","language.support.class","text","keyword","text","language.support.class"],regex:"(class)(\\s+)("+e+")(?:(\\s+)(extends)(\\s+)("+e+"))?"},{token:["entity.name.function","text","keyword.operator","text"].concat(a.token),regex:"("+e+")(\\s*)([=:])(\\s*)"+a.regex},a,{token:"variable",regex:"@(?:"+e+")?"},{token:u,regex:e},{token:"punctuation.operator",regex:"\\,|\\."},{token:"storage.type",regex:"[\\-=]>"},{token:"keyword.operator",regex:"(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])"},{token:"paren.lparen",regex:"[({[]"},{token:"paren.rparen",regex:"[\\]})]"},{token:"text",regex:"\\s+"}],heregex:[{token:"string.regex",regex:".*?///[imgy]{0,4}",next:"start"},{token:"comment.regex",regex:"\\s+(?:#.*)?"},{token:"string.regex",regex:"\\S+"}],comment:[{token:"comment",regex:"###",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules;r.inherits(s,i),t.CoffeeHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u|\b(?:else|try|(?:swi|ca)tch(?:\s+[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$|^\s*(else\b\s*)?(?:if|for|while|loop)\b(?!.*\bthen\b)/;this.lineCommentStart="#",this.blockComment={start:"###",end:"###"},this.getNextLineIndent=function(t,n,r){var i=this.$getIndent(n),s=this.getTokenizer().getLineTokens(n,t).tokens;return(!s.length||s[s.length-1].type!=="comment")&&t==="start"&&e.test(n)&&(i+=r),i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/coffee_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/coffee",this.snippetFileId="ace/snippets/coffee"}.call(l.prototype),t.Mode=l}); (function() { - window.require(["ace/mode/coffee"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-coldfusion.js b/www/js/ace/mode-coldfusion.js deleted file mode 100644 index fc2e0c3aa..000000000 --- a/www/js/ace/mode-coldfusion.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/coldfusion_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=e("./html_highlight_rules").HtmlHighlightRules,o=function(){s.call(this),this.$rules.tag[2].token=function(e,t){var n=t.slice(0,2)=="cf"?"keyword":"meta.tag";return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml",n+".tag-name.xml"]};var e=Object.keys(this.$rules).filter(function(e){return/^(js|css)-/.test(e)});this.embedRules({cfmlComment:[{regex:"",token:"comment.end",next:"pop"},{defaultToken:"comment"}]},"",[{regex:"",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/csound_document_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/csound_orchestra_highlight_rules","ace/mode/csound_score_highlight_rules","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./csound_orchestra_highlight_rules").CsoundOrchestraHighlightRules,s=e("./csound_score_highlight_rules").CsoundScoreHighlightRules,o=e("./html_highlight_rules").HtmlHighlightRules,u=e("./text_highlight_rules").TextHighlightRules,a=function(){var e=new i("csound-"),t=new s("csound-score-");this.$rules={start:[{token:["meta.tag.punctuation.tag-open.csound-document","entity.name.tag.begin.csound-document","meta.tag.punctuation.tag-close.csound-document"],regex:/(<)(CsoundSynthesi[sz]er)(>)/,next:"synthesizer"},{defaultToken:"text.csound-document"}],synthesizer:[{token:["meta.tag.punctuation.end-tag-open.csound-document","entity.name.tag.begin.csound-document","meta.tag.punctuation.tag-close.csound-document"],regex:"()",next:"start"},{token:["meta.tag.punctuation.tag-open.csound-document","entity.name.tag.begin.csound-document","meta.tag.punctuation.tag-close.csound-document"],regex:"(<)(CsInstruments)(>)",next:e.embeddedRulePrefix+"start"},{token:["meta.tag.punctuation.tag-open.csound-document","entity.name.tag.begin.csound-document","meta.tag.punctuation.tag-close.csound-document"],regex:"(<)(CsScore)(>)",next:t.embeddedRulePrefix+"start"},{token:["meta.tag.punctuation.tag-open.csound-document","entity.name.tag.begin.csound-document","meta.tag.punctuation.tag-close.csound-document"],regex:"(<)([Hh][Tt][Mm][Ll])(>)",next:"html-start"}]},this.embedRules(e.getRules(),e.embeddedRulePrefix,[{token:["meta.tag.punctuation.end-tag-open.csound-document","entity.name.tag.begin.csound-document","meta.tag.punctuation.tag-close.csound-document"],regex:"()",next:"synthesizer"}]),this.embedRules(t.getRules(),t.embeddedRulePrefix,[{token:["meta.tag.punctuation.end-tag-open.csound-document","entity.name.tag.begin.csound-document","meta.tag.punctuation.tag-close.csound-document"],regex:"()",next:"synthesizer"}]),this.embedRules(o,"html-",[{token:["meta.tag.punctuation.end-tag-open.csound-document","entity.name.tag.begin.csound-document","meta.tag.punctuation.tag-close.csound-document"],regex:"()",next:"synthesizer"}]),this.normalizeRules()};r.inherits(a,u),t.CsoundDocumentHighlightRules=a}),define("ace/mode/csound_document",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csound_document_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./csound_document_highlight_rules").CsoundDocumentHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/csound_document",this.snippetFileId="ace/snippets/csound_document"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/csound_document"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-csound_orchestra.js b/www/js/ace/mode-csound_orchestra.js deleted file mode 100644 index 262addadc..000000000 --- a/www/js/ace/mode-csound_orchestra.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/csound_preprocessor_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){this.embeddedRulePrefix=e===undefined?"":e,this.semicolonComments={token:"comment.line.semicolon.csound",regex:";.*$"},this.comments=[{token:"punctuation.definition.comment.begin.csound",regex:"/\\*",push:[{token:"punctuation.definition.comment.end.csound",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.csound"}]},{token:"comment.line.double-slash.csound",regex:"//.*$"},this.semicolonComments],this.macroUses=[{token:["entity.name.function.preprocessor.csound","punctuation.definition.macro-parameter-value-list.begin.csound"],regex:/(\$[A-Z_a-z]\w*\.?)(\()/,next:"macro parameter value list"},{token:"entity.name.function.preprocessor.csound",regex:/\$[A-Z_a-z]\w*(?:\.|\b)/}],this.numbers=[{token:"constant.numeric.float.csound",regex:/(?:\d+[Ee][+-]?\d+)|(?:\d+\.\d*|\d*\.\d+)(?:[Ee][+-]?\d+)?/},{token:["storage.type.number.csound","constant.numeric.integer.hexadecimal.csound"],regex:/(0[Xx])([0-9A-Fa-f]+)/},{token:"constant.numeric.integer.decimal.csound",regex:/\d+/}],this.bracedStringContents=[{token:"constant.character.escape.csound",regex:/\\(?:[\\abnrt"]|[0-7]{1,3})/},{token:"constant.character.placeholder.csound",regex:/%[#0\- +]*\d*(?:\.\d+)?[diuoxXfFeEgGaAcs]/},{token:"constant.character.escape.csound",regex:/%%/}],this.quotedStringContents=[this.macroUses,this.bracedStringContents];var t=[this.comments,{token:"keyword.preprocessor.csound",regex:/#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+/},{token:"keyword.preprocessor.csound",regex:/#include/,push:[this.comments,{token:"string.csound",regex:/([^ \t])(?:.*?\1)/,next:"pop"}]},{token:"keyword.preprocessor.csound",regex:/#includestr/,push:[this.comments,{token:"string.csound",regex:/([^ \t])(?:.*?\1)/,next:"pop"}]},{token:"keyword.preprocessor.csound",regex:/#[ \t]*define/,next:"define directive"},{token:"keyword.preprocessor.csound",regex:/#(?:ifn?def|undef)\b/,next:"macro directive"},this.macroUses];this.$rules={start:t,"define directive":[this.comments,{token:"entity.name.function.preprocessor.csound",regex:/[A-Z_a-z]\w*/},{token:"punctuation.definition.macro-parameter-name-list.begin.csound",regex:/\(/,next:"macro parameter name list"},{token:"punctuation.definition.macro.begin.csound",regex:/#/,next:"macro body"}],"macro parameter name list":[{token:"variable.parameter.preprocessor.csound",regex:/[A-Z_a-z]\w*/},{token:"punctuation.definition.macro-parameter-name-list.end.csound",regex:/\)/,next:"define directive"}],"macro body":[{token:"constant.character.escape.csound",regex:/\\#/},{token:"punctuation.definition.macro.end.csound",regex:/#/,next:"start"},t],"macro directive":[this.comments,{token:"entity.name.function.preprocessor.csound",regex:/[A-Z_a-z]\w*/,next:"start"}],"macro parameter value list":[{token:"punctuation.definition.macro-parameter-value-list.end.csound",regex:/\)/,next:"start"},{token:"punctuation.definition.string.begin.csound",regex:/"/,next:"macro parameter value quoted string"},this.pushRule({token:"punctuation.macro-parameter-value-parenthetical.begin.csound",regex:/\(/,next:"macro parameter value parenthetical"}),{token:"punctuation.macro-parameter-value-separator.csound",regex:"[#']"}],"macro parameter value quoted string":[{token:"constant.character.escape.csound",regex:/\\[#'()]/},{token:"invalid.illegal.csound",regex:/[#'()]/},{token:"punctuation.definition.string.end.csound",regex:/"/,next:"macro parameter value list"},this.quotedStringContents,{defaultToken:"string.quoted.csound"}],"macro parameter value parenthetical":[{token:"constant.character.escape.csound",regex:/\\\)/},this.popRule({token:"punctuation.macro-parameter-value-parenthetical.end.csound",regex:/\)/}),this.pushRule({token:"punctuation.macro-parameter-value-parenthetical.begin.csound",regex:/\(/,next:"macro parameter value parenthetical"}),t]}};r.inherits(s,i),function(){this.pushRule=function(e){if(Array.isArray(e.next))for(var t=0;t1?r[r.length-1]:r.pop(),e.token}}}}.call(s.prototype),t.CsoundPreprocessorHighlightRules=s}),define("ace/mode/csound_score_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules,s=function(e){i.call(this,e),this.quotedStringContents.push({token:"invalid.illegal.csound-score",regex:/[^"]*$/});var t=this.$rules.start;t.push({token:"keyword.control.csound-score",regex:/[aBbCdefiqstvxy]/},{token:"invalid.illegal.csound-score",regex:/w/},{token:"constant.numeric.language.csound-score",regex:/z/},{token:["keyword.control.csound-score","constant.numeric.integer.decimal.csound-score"],regex:/([nNpP][pP])(\d+)/},{token:"keyword.other.csound-score",regex:/[mn]/,push:[{token:"empty",regex:/$/,next:"pop"},this.comments,{token:"entity.name.label.csound-score",regex:/[A-Z_a-z]\w*/}]},{token:"keyword.preprocessor.csound-score",regex:/r\b/,next:"repeat section"},this.numbers,{token:"keyword.operator.csound-score",regex:"[!+\\-*/^%&|<>#~.]"},this.pushRule({token:"punctuation.definition.string.begin.csound-score",regex:/"/,next:"quoted string"}),this.pushRule({token:"punctuation.braced-loop.begin.csound-score",regex:/{/,next:"loop after left brace"})),this.addRules({"repeat section":[{token:"empty",regex:/$/,next:"start"},this.comments,{token:"constant.numeric.integer.decimal.csound-score",regex:/\d+/,next:"repeat section before label"}],"repeat section before label":[{token:"empty",regex:/$/,next:"start"},this.comments,{token:"entity.name.label.csound-score",regex:/[A-Z_a-z]\w*/,next:"start"}],"quoted string":[this.popRule({token:"punctuation.definition.string.end.csound-score",regex:/"/}),this.quotedStringContents,{defaultToken:"string.quoted.csound-score"}],"loop after left brace":[this.popRule({token:"constant.numeric.integer.decimal.csound-score",regex:/\d+/,next:"loop after repeat count"}),this.comments,{token:"invalid.illegal.csound",regex:/\S.*/}],"loop after repeat count":[this.popRule({token:"entity.name.function.preprocessor.csound-score",regex:/[A-Z_a-z]\w*\b/,next:"loop after macro name"}),this.comments,{token:"invalid.illegal.csound",regex:/\S.*/}],"loop after macro name":[t,this.popRule({token:"punctuation.braced-loop.end.csound-score",regex:/}/})]}),this.normalizeRules()};r.inherits(s,i),t.CsoundScoreHighlightRules=s}),define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="break|do|else|elseif|end|for|function|if|in|local|repeat|return|then|until|while|or|and|not",t="true|false|nil|_G|_VERSION",n="string|xpcall|package|tostring|print|os|unpack|require|getfenv|setmetatable|next|assert|tonumber|io|rawequal|collectgarbage|getmetatable|module|rawset|math|debug|pcall|table|newproxy|type|coroutine|_G|select|gcinfo|pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|load|error|loadfile|sub|upper|len|gfind|rep|find|match|char|dump|gmatch|reverse|byte|format|gsub|lower|preload|loadlib|loaded|loaders|cpath|config|path|seeall|exit|setlocale|date|getenv|difftime|remove|time|clock|tmpname|rename|execute|lines|write|close|flush|open|output|type|read|stderr|stdin|input|stdout|popen|tmpfile|log|max|acos|huge|ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|gethook|setmetatable|setlocal|traceback|setfenv|getinfo|setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|foreachi|maxn|foreach|concat|sort|remove|resume|yield|status|wrap|create|running|__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber",r="string|package|os|io|math|debug|table|coroutine",i="setn|foreach|foreachi|gcinfo|log10|maxn",s=this.createKeywordMapper({keyword:e,"support.function":n,"keyword.deprecated":i,"constant.library":r,"constant.language":t,"variable.language":"self"},"identifier"),o="(?:(?:[1-9]\\d*)|(?:0))",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:"+o+"|"+u+")",f="(?:\\.\\d+)",l="(?:\\d+)",c="(?:(?:"+l+"?"+f+")|(?:"+l+"\\.))",h="(?:"+c+")";this.$rules={start:[{stateName:"bracketedComment",onMatch:function(e,t,n){return n.unshift(this.next,e.length-2,t),"comment"},regex:/\-\-\[=*\[/,next:[{onMatch:function(e,t,n){return e.length==n[1]?(n.shift(),n.shift(),this.next=n.shift()):this.next="","comment"},regex:/\]=*\]/,next:"start"},{defaultToken:"comment.body"}]},{token:"comment",regex:"\\-\\-.*$"},{stateName:"bracketedString",onMatch:function(e,t,n){return n.unshift(this.next,e.length,t),"string.start"},regex:/\[=*\[/,next:[{onMatch:function(e,t,n){return e.length==n[1]?(n.shift(),n.shift(),this.next=n.shift()):this.next="","string.end"},regex:/\]=*\]/,next:"start"},{defaultToken:"string"}]},{token:"string",regex:'"(?:[^\\\\]|\\\\.)*?"'},{token:"string",regex:"'(?:[^\\\\]|\\\\.)*?'"},{token:"constant.numeric",regex:h},{token:"constant.numeric",regex:a+"\\b"},{token:s,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+|\\w+"}]},this.normalizeRules()};r.inherits(s,i),t.LuaHighlightRules=s}),define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield|async|await|nonlocal",t="True|False|None|NotImplemented|Ellipsis|__debug__",n="abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|apply|delattr|help|next|setattr|set|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|ascii|breakpoint|bytes",r=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":n,"variable.language":"self|cls","constant.language":t,keyword:e},"identifier"),i="[uU]?",s="[rR]",o="[fF]",u="(?:[rR][fF]|[fF][rR])",a="(?:(?:[1-9]\\d*)|(?:0))",f="(?:0[oO]?[0-7]+)",l="(?:0[xX][\\dA-Fa-f]+)",c="(?:0[bB][01]+)",h="(?:"+a+"|"+f+"|"+l+"|"+c+")",p="(?:[eE][+-]?\\d+)",d="(?:\\.\\d+)",v="(?:\\d+)",m="(?:(?:"+v+"?"+d+")|(?:"+v+"\\.))",g="(?:(?:"+m+"|"+v+")"+p+")",y="(?:"+g+"|"+m+")",b="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:i+'"{3}',next:"qqstring3"},{token:"string",regex:i+'"(?=.)',next:"qqstring"},{token:"string",regex:i+"'{3}",next:"qstring3"},{token:"string",regex:i+"'(?=.)",next:"qstring"},{token:"string",regex:s+'"{3}',next:"rawqqstring3"},{token:"string",regex:s+'"(?=.)',next:"rawqqstring"},{token:"string",regex:s+"'{3}",next:"rawqstring3"},{token:"string",regex:s+"'(?=.)",next:"rawqstring"},{token:"string",regex:o+'"{3}',next:"fqqstring3"},{token:"string",regex:o+'"(?=.)',next:"fqqstring"},{token:"string",regex:o+"'{3}",next:"fqstring3"},{token:"string",regex:o+"'(?=.)",next:"fqstring"},{token:"string",regex:u+'"{3}',next:"rfqqstring3"},{token:"string",regex:u+'"(?=.)',next:"rfqqstring"},{token:"string",regex:u+"'{3}",next:"rfqstring3"},{token:"string",regex:u+"'(?=.)",next:"rfqstring"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"punctuation",regex:",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:["keyword","text","entity.name.function"],regex:"(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)"},{token:"text",regex:"\\s+"},{include:"constants"}],qqstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],rawqqstring3:[{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],rawqstring3:[{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],rawqqstring:[{token:"string",regex:"\\\\$",next:"rawqqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],rawqstring:[{token:"string",regex:"\\\\$",next:"rawqstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],fqqstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqqstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"\\\\$",next:"fqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring3:[{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring3:[{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring:[{token:"string",regex:"\\\\$",next:"rfqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring:[{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstringParRules:[{token:"paren.lparen",regex:"[\\[\\(]"},{token:"paren.rparen",regex:"[\\]\\)]"},{token:"string",regex:"\\s+"},{token:"string",regex:"'[^']*'"},{token:"string",regex:'"[^"]*"'},{token:"function.support",regex:"(!s|!r|!a)"},{include:"constants"},{token:"paren.rparen",regex:"}",next:"pop"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"}],constants:[{token:"constant.numeric",regex:"(?:"+y+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:y},{token:"constant.numeric",regex:h+"[lL]\\b"},{token:"constant.numeric",regex:h+"\\b"},{token:["punctuation","function.support"],regex:"(\\.)([a-zA-Z_]+)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}]},this.normalizeRules()};r.inherits(s,i),t.PythonHighlightRules=s}),define("ace/mode/csound_orchestra_highlight_rules",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules","ace/mode/csound_score_highlight_rules","ace/mode/lua_highlight_rules","ace/mode/python_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=e("../lib/oop"),s=e("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules,o=e("./csound_score_highlight_rules").CsoundScoreHighlightRules,u=e("./lua_highlight_rules").LuaHighlightRules,a=e("./python_highlight_rules").PythonHighlightRules,f=function(e){s.call(this,e);var t=["ATSadd","ATSaddnz","ATSbufread","ATScross","ATSinfo","ATSinterpread","ATSpartialtap","ATSread","ATSreadnz","ATSsinnoi","FLbox","FLbutBank","FLbutton","FLcloseButton","FLcolor","FLcolor2","FLcount","FLexecButton","FLgetsnap","FLgroup","FLgroupEnd","FLgroup_end","FLhide","FLhvsBox","FLhvsBoxSetValue","FLjoy","FLkeyIn","FLknob","FLlabel","FLloadsnap","FLmouse","FLpack","FLpackEnd","FLpack_end","FLpanel","FLpanelEnd","FLpanel_end","FLprintk","FLprintk2","FLroller","FLrun","FLsavesnap","FLscroll","FLscrollEnd","FLscroll_end","FLsetAlign","FLsetBox","FLsetColor","FLsetColor2","FLsetFont","FLsetPosition","FLsetSize","FLsetSnapGroup","FLsetText","FLsetTextColor","FLsetTextSize","FLsetTextType","FLsetVal","FLsetVal_i","FLsetVali","FLsetsnap","FLshow","FLslidBnk","FLslidBnk2","FLslidBnk2Set","FLslidBnk2Setk","FLslidBnkGetHandle","FLslidBnkSet","FLslidBnkSetk","FLslider","FLtabs","FLtabsEnd","FLtabs_end","FLtext","FLupdate","FLvalue","FLvkeybd","FLvslidBnk","FLvslidBnk2","FLxyin","JackoAudioIn","JackoAudioInConnect","JackoAudioOut","JackoAudioOutConnect","JackoFreewheel","JackoInfo","JackoInit","JackoMidiInConnect","JackoMidiOut","JackoMidiOutConnect","JackoNoteOut","JackoOn","JackoTransport","K35_hpf","K35_lpf","MixerClear","MixerGetLevel","MixerReceive","MixerSend","MixerSetLevel","MixerSetLevel_i","OSCbundle","OSCcount","OSCinit","OSCinitM","OSClisten","OSCraw","OSCsend","OSCsend_lo","S","STKBandedWG","STKBeeThree","STKBlowBotl","STKBlowHole","STKBowed","STKBrass","STKClarinet","STKDrummer","STKFMVoices","STKFlute","STKHevyMetl","STKMandolin","STKModalBar","STKMoog","STKPercFlut","STKPlucked","STKResonate","STKRhodey","STKSaxofony","STKShakers","STKSimple","STKSitar","STKStifKarp","STKTubeBell","STKVoicForm","STKWhistle","STKWurley","a","abs","active","adsr","adsyn","adsynt","adsynt2","aftouch","allpole","alpass","alwayson","ampdb","ampdbfs","ampmidi","ampmidicurve","ampmidid","apoleparams","arduinoRead","arduinoReadF","arduinoStart","arduinoStop","areson","aresonk","atone","atonek","atonex","autocorr","babo","balance","balance2","bamboo","barmodel","bbcutm","bbcuts","betarand","bexprnd","bformdec1","bformdec2","bformenc1","binit","biquad","biquada","birnd","bob","bpf","bpfcos","bqrez","butbp","butbr","buthp","butlp","butterbp","butterbr","butterhp","butterlp","button","buzz","c2r","cabasa","cauchy","cauchyi","cbrt","ceil","cell","cent","centroid","ceps","cepsinv","chanctrl","changed","changed2","chani","chano","chebyshevpoly","checkbox","chn_S","chn_a","chn_k","chnclear","chnexport","chnget","chngeta","chngeti","chngetk","chngetks","chngets","chnmix","chnparams","chnset","chnseta","chnseti","chnsetk","chnsetks","chnsets","chuap","clear","clfilt","clip","clockoff","clockon","cmp","cmplxprod","cntCreate","cntCycles","cntDelete","cntDelete_i","cntRead","cntReset","cntState","comb","combinv","compilecsd","compileorc","compilestr","compress","compress2","connect","control","convle","convolve","copya2ftab","copyf2array","cos","cosh","cosinv","cosseg","cossegb","cossegr","count","count_i","cps2pch","cpsmidi","cpsmidib","cpsmidinn","cpsoct","cpspch","cpstmid","cpstun","cpstuni","cpsxpch","cpumeter","cpuprc","cross2","crossfm","crossfmi","crossfmpm","crossfmpmi","crosspm","crosspmi","crunch","ctlchn","ctrl14","ctrl21","ctrl7","ctrlinit","ctrlpreset","ctrlprint","ctrlprintpresets","ctrlsave","ctrlselect","cuserrnd","dam","date","dates","db","dbamp","dbfsamp","dcblock","dcblock2","dconv","dct","dctinv","deinterleave","delay","delay1","delayk","delayr","delayw","deltap","deltap3","deltapi","deltapn","deltapx","deltapxw","denorm","diff","diode_ladder","directory","diskgrain","diskin","diskin2","dispfft","display","distort","distort1","divz","doppler","dot","downsamp","dripwater","dssiactivate","dssiaudio","dssictls","dssiinit","dssilist","dumpk","dumpk2","dumpk3","dumpk4","duserrnd","dust","dust2","elapsedcycles","elapsedtime","envlpx","envlpxr","ephasor","eqfil","evalstr","event","event_i","eventcycles","eventtime","exciter","exitnow","exp","expcurve","expon","exprand","exprandi","expseg","expsega","expsegb","expsegba","expsegr","fareylen","fareyleni","faustaudio","faustcompile","faustctl","faustdsp","faustgen","faustplay","fft","fftinv","ficlose","filebit","filelen","filenchnls","filepeak","filescal","filesr","filevalid","fillarray","filter2","fin","fini","fink","fiopen","flanger","flashtxt","flooper","flooper2","floor","fluidAllOut","fluidCCi","fluidCCk","fluidControl","fluidEngine","fluidInfo","fluidLoad","fluidNote","fluidOut","fluidProgramSelect","fluidSetInterpMethod","fmanal","fmax","fmb3","fmbell","fmin","fmmetal","fmod","fmpercfl","fmrhode","fmvoice","fmwurlie","fof","fof2","fofilter","fog","fold","follow","follow2","foscil","foscili","fout","fouti","foutir","foutk","fprintks","fprints","frac","fractalnoise","framebuffer","freeverb","ftaudio","ftchnls","ftconv","ftcps","ftexists","ftfree","ftgen","ftgenonce","ftgentmp","ftlen","ftload","ftloadk","ftlptim","ftmorf","ftom","ftprint","ftresize","ftresizei","ftsamplebank","ftsave","ftsavek","ftset","ftslice","ftslicei","ftsr","gain","gainslider","gauss","gaussi","gausstrig","gbuzz","genarray","genarray_i","gendy","gendyc","gendyx","getcfg","getcol","getftargs","getrow","getseed","gogobel","grain","grain2","grain3","granule","gtadsr","gtf","guiro","harmon","harmon2","harmon3","harmon4","hdf5read","hdf5write","hilbert","hilbert2","hrtfearly","hrtfmove","hrtfmove2","hrtfreverb","hrtfstat","hsboscil","hvs1","hvs2","hvs3","hypot","i","ihold","imagecreate","imagefree","imagegetpixel","imageload","imagesave","imagesetpixel","imagesize","in","in32","inch","inh","init","initc14","initc21","initc7","inleta","inletf","inletk","inletkid","inletv","ino","inq","inrg","ins","insglobal","insremot","int","integ","interleave","interp","invalue","inx","inz","jacktransport","jitter","jitter2","joystick","jspline","k","la_i_add_mc","la_i_add_mr","la_i_add_vc","la_i_add_vr","la_i_assign_mc","la_i_assign_mr","la_i_assign_t","la_i_assign_vc","la_i_assign_vr","la_i_conjugate_mc","la_i_conjugate_mr","la_i_conjugate_vc","la_i_conjugate_vr","la_i_distance_vc","la_i_distance_vr","la_i_divide_mc","la_i_divide_mr","la_i_divide_vc","la_i_divide_vr","la_i_dot_mc","la_i_dot_mc_vc","la_i_dot_mr","la_i_dot_mr_vr","la_i_dot_vc","la_i_dot_vr","la_i_get_mc","la_i_get_mr","la_i_get_vc","la_i_get_vr","la_i_invert_mc","la_i_invert_mr","la_i_lower_solve_mc","la_i_lower_solve_mr","la_i_lu_det_mc","la_i_lu_det_mr","la_i_lu_factor_mc","la_i_lu_factor_mr","la_i_lu_solve_mc","la_i_lu_solve_mr","la_i_mc_create","la_i_mc_set","la_i_mr_create","la_i_mr_set","la_i_multiply_mc","la_i_multiply_mr","la_i_multiply_vc","la_i_multiply_vr","la_i_norm1_mc","la_i_norm1_mr","la_i_norm1_vc","la_i_norm1_vr","la_i_norm_euclid_mc","la_i_norm_euclid_mr","la_i_norm_euclid_vc","la_i_norm_euclid_vr","la_i_norm_inf_mc","la_i_norm_inf_mr","la_i_norm_inf_vc","la_i_norm_inf_vr","la_i_norm_max_mc","la_i_norm_max_mr","la_i_print_mc","la_i_print_mr","la_i_print_vc","la_i_print_vr","la_i_qr_eigen_mc","la_i_qr_eigen_mr","la_i_qr_factor_mc","la_i_qr_factor_mr","la_i_qr_sym_eigen_mc","la_i_qr_sym_eigen_mr","la_i_random_mc","la_i_random_mr","la_i_random_vc","la_i_random_vr","la_i_size_mc","la_i_size_mr","la_i_size_vc","la_i_size_vr","la_i_subtract_mc","la_i_subtract_mr","la_i_subtract_vc","la_i_subtract_vr","la_i_t_assign","la_i_trace_mc","la_i_trace_mr","la_i_transpose_mc","la_i_transpose_mr","la_i_upper_solve_mc","la_i_upper_solve_mr","la_i_vc_create","la_i_vc_set","la_i_vr_create","la_i_vr_set","la_k_a_assign","la_k_add_mc","la_k_add_mr","la_k_add_vc","la_k_add_vr","la_k_assign_a","la_k_assign_f","la_k_assign_mc","la_k_assign_mr","la_k_assign_t","la_k_assign_vc","la_k_assign_vr","la_k_conjugate_mc","la_k_conjugate_mr","la_k_conjugate_vc","la_k_conjugate_vr","la_k_current_f","la_k_current_vr","la_k_distance_vc","la_k_distance_vr","la_k_divide_mc","la_k_divide_mr","la_k_divide_vc","la_k_divide_vr","la_k_dot_mc","la_k_dot_mc_vc","la_k_dot_mr","la_k_dot_mr_vr","la_k_dot_vc","la_k_dot_vr","la_k_f_assign","la_k_get_mc","la_k_get_mr","la_k_get_vc","la_k_get_vr","la_k_invert_mc","la_k_invert_mr","la_k_lower_solve_mc","la_k_lower_solve_mr","la_k_lu_det_mc","la_k_lu_det_mr","la_k_lu_factor_mc","la_k_lu_factor_mr","la_k_lu_solve_mc","la_k_lu_solve_mr","la_k_mc_set","la_k_mr_set","la_k_multiply_mc","la_k_multiply_mr","la_k_multiply_vc","la_k_multiply_vr","la_k_norm1_mc","la_k_norm1_mr","la_k_norm1_vc","la_k_norm1_vr","la_k_norm_euclid_mc","la_k_norm_euclid_mr","la_k_norm_euclid_vc","la_k_norm_euclid_vr","la_k_norm_inf_mc","la_k_norm_inf_mr","la_k_norm_inf_vc","la_k_norm_inf_vr","la_k_norm_max_mc","la_k_norm_max_mr","la_k_qr_eigen_mc","la_k_qr_eigen_mr","la_k_qr_factor_mc","la_k_qr_factor_mr","la_k_qr_sym_eigen_mc","la_k_qr_sym_eigen_mr","la_k_random_mc","la_k_random_mr","la_k_random_vc","la_k_random_vr","la_k_subtract_mc","la_k_subtract_mr","la_k_subtract_vc","la_k_subtract_vr","la_k_t_assign","la_k_trace_mc","la_k_trace_mr","la_k_upper_solve_mc","la_k_upper_solve_mr","la_k_vc_set","la_k_vr_set","lag","lagud","lastcycle","lenarray","lfo","lfsr","limit","limit1","lincos","line","linen","linenr","lineto","link_beat_force","link_beat_get","link_beat_request","link_create","link_enable","link_is_enabled","link_metro","link_peers","link_tempo_get","link_tempo_set","linlin","linrand","linseg","linsegb","linsegr","liveconv","locsend","locsig","log","log10","log2","logbtwo","logcurve","loopseg","loopsegp","looptseg","loopxseg","lorenz","loscil","loscil3","loscil3phs","loscilphs","loscilx","lowpass2","lowres","lowresx","lpcanal","lpcfilter","lpf18","lpform","lpfreson","lphasor","lpinterp","lposcil","lposcil3","lposcila","lposcilsa","lposcilsa2","lpread","lpreson","lpshold","lpsholdp","lpslot","lufs","mac","maca","madsr","mags","mandel","mandol","maparray","maparray_i","marimba","massign","max","max_k","maxabs","maxabsaccum","maxaccum","maxalloc","maxarray","mclock","mdelay","median","mediank","metro","metro2","metrobpm","mfb","midglobal","midiarp","midic14","midic21","midic7","midichannelaftertouch","midichn","midicontrolchange","midictrl","mididefault","midifilestatus","midiin","midinoteoff","midinoteoncps","midinoteonkey","midinoteonoct","midinoteonpch","midion","midion2","midiout","midiout_i","midipgm","midipitchbend","midipolyaftertouch","midiprogramchange","miditempo","midremot","min","minabs","minabsaccum","minaccum","minarray","mincer","mirror","mode","modmatrix","monitor","moog","moogladder","moogladder2","moogvcf","moogvcf2","moscil","mp3bitrate","mp3in","mp3len","mp3nchnls","mp3out","mp3scal","mp3sr","mpulse","mrtmsg","ms2st","mtof","mton","multitap","mute","mvchpf","mvclpf1","mvclpf2","mvclpf3","mvclpf4","mvmfilter","mxadsr","nchnls_hw","nestedap","nlalp","nlfilt","nlfilt2","noise","noteoff","noteon","noteondur","noteondur2","notnum","nreverb","nrpn","nsamp","nstance","nstrnum","nstrstr","ntof","ntom","ntrpol","nxtpow2","octave","octcps","octmidi","octmidib","octmidinn","octpch","olabuffer","oscbnk","oscil","oscil1","oscil1i","oscil3","oscili","oscilikt","osciliktp","oscilikts","osciln","oscils","oscilx","out","out32","outall","outc","outch","outh","outiat","outic","outic14","outipat","outipb","outipc","outkat","outkc","outkc14","outkpat","outkpb","outkpc","outleta","outletf","outletk","outletkid","outletv","outo","outq","outq1","outq2","outq3","outq4","outrg","outs","outs1","outs2","outvalue","outx","outz","p","p5gconnect","p5gdata","pan","pan2","pareq","part2txt","partials","partikkel","partikkelget","partikkelset","partikkelsync","passign","paulstretch","pcauchy","pchbend","pchmidi","pchmidib","pchmidinn","pchoct","pchtom","pconvolve","pcount","pdclip","pdhalf","pdhalfy","peak","pgmassign","pgmchn","phaser1","phaser2","phasor","phasorbnk","phs","pindex","pinker","pinkish","pitch","pitchac","pitchamdf","planet","platerev","plltrack","pluck","poisson","pol2rect","polyaft","polynomial","port","portk","poscil","poscil3","pow","powershape","powoftwo","pows","prealloc","prepiano","print","print_type","printarray","printf","printf_i","printk","printk2","printks","printks2","println","prints","printsk","product","pset","ptablew","ptrack","puts","pvadd","pvbufread","pvcross","pvinterp","pvoc","pvread","pvs2array","pvs2tab","pvsadsyn","pvsanal","pvsarp","pvsbandp","pvsbandr","pvsbandwidth","pvsbin","pvsblur","pvsbuffer","pvsbufread","pvsbufread2","pvscale","pvscent","pvsceps","pvscfs","pvscross","pvsdemix","pvsdiskin","pvsdisp","pvsenvftw","pvsfilter","pvsfread","pvsfreeze","pvsfromarray","pvsftr","pvsftw","pvsfwrite","pvsgain","pvsgendy","pvshift","pvsifd","pvsin","pvsinfo","pvsinit","pvslock","pvslpc","pvsmaska","pvsmix","pvsmooth","pvsmorph","pvsosc","pvsout","pvspitch","pvstanal","pvstencil","pvstrace","pvsvoc","pvswarp","pvsynth","pwd","pyassign","pyassigni","pyassignt","pycall","pycall1","pycall1i","pycall1t","pycall2","pycall2i","pycall2t","pycall3","pycall3i","pycall3t","pycall4","pycall4i","pycall4t","pycall5","pycall5i","pycall5t","pycall6","pycall6i","pycall6t","pycall7","pycall7i","pycall7t","pycall8","pycall8i","pycall8t","pycalli","pycalln","pycallni","pycallt","pyeval","pyevali","pyevalt","pyexec","pyexeci","pyexect","pyinit","pylassign","pylassigni","pylassignt","pylcall","pylcall1","pylcall1i","pylcall1t","pylcall2","pylcall2i","pylcall2t","pylcall3","pylcall3i","pylcall3t","pylcall4","pylcall4i","pylcall4t","pylcall5","pylcall5i","pylcall5t","pylcall6","pylcall6i","pylcall6t","pylcall7","pylcall7i","pylcall7t","pylcall8","pylcall8i","pylcall8t","pylcalli","pylcalln","pylcallni","pylcallt","pyleval","pylevali","pylevalt","pylexec","pylexeci","pylexect","pylrun","pylruni","pylrunt","pyrun","pyruni","pyrunt","qinf","qnan","r2c","rand","randc","randh","randi","random","randomh","randomi","rbjeq","readclock","readf","readfi","readk","readk2","readk3","readk4","readks","readscore","readscratch","rect2pol","release","remoteport","remove","repluck","reshapearray","reson","resonbnk","resonk","resonr","resonx","resonxk","resony","resonz","resyn","reverb","reverb2","reverbsc","rewindscore","rezzy","rfft","rifft","rms","rnd","rnd31","rndseed","round","rspline","rtclock","s16b14","s32b14","samphold","sandpaper","sc_lag","sc_lagud","sc_phasor","sc_trig","scale","scale2","scalearray","scanhammer","scanmap","scans","scansmap","scantable","scanu","scanu2","schedkwhen","schedkwhennamed","schedule","schedulek","schedwhen","scoreline","scoreline_i","seed","sekere","select","semitone","sense","sensekey","seqtime","seqtime2","sequ","sequstate","serialBegin","serialEnd","serialFlush","serialPrint","serialRead","serialWrite","serialWrite_i","setcol","setctrl","setksmps","setrow","setscorepos","sfilist","sfinstr","sfinstr3","sfinstr3m","sfinstrm","sfload","sflooper","sfpassign","sfplay","sfplay3","sfplay3m","sfplaym","sfplist","sfpreset","shaker","shiftin","shiftout","signum","sin","sinh","sininv","sinsyn","skf","sleighbells","slicearray","slicearray_i","slider16","slider16f","slider16table","slider16tablef","slider32","slider32f","slider32table","slider32tablef","slider64","slider64f","slider64table","slider64tablef","slider8","slider8f","slider8table","slider8tablef","sliderKawai","sndloop","sndwarp","sndwarpst","sockrecv","sockrecvs","socksend","socksends","sorta","sortd","soundin","space","spat3d","spat3di","spat3dt","spdist","spf","splitrig","sprintf","sprintfk","spsend","sqrt","squinewave","st2ms","statevar","sterrain","stix","strcat","strcatk","strchar","strchark","strcmp","strcmpk","strcpy","strcpyk","strecv","streson","strfromurl","strget","strindex","strindexk","string2array","strlen","strlenk","strlower","strlowerk","strrindex","strrindexk","strset","strstrip","strsub","strsubk","strtod","strtodk","strtol","strtolk","strupper","strupperk","stsend","subinstr","subinstrinit","sum","sumarray","svfilter","svn","syncgrain","syncloop","syncphasor","system","system_i","tab","tab2array","tab2pvs","tab_i","tabifd","table","table3","table3kt","tablecopy","tablefilter","tablefilteri","tablegpw","tablei","tableicopy","tableigpw","tableikt","tableimix","tablekt","tablemix","tableng","tablera","tableseg","tableshuffle","tableshufflei","tablew","tablewa","tablewkt","tablexkt","tablexseg","tabmorph","tabmorpha","tabmorphak","tabmorphi","tabplay","tabrec","tabsum","tabw","tabw_i","tambourine","tan","tanh","taninv","taninv2","tbvcf","tempest","tempo","temposcal","tempoval","timedseq","timeinstk","timeinsts","timek","times","tival","tlineto","tone","tonek","tonex","tradsyn","trandom","transeg","transegb","transegr","trcross","trfilter","trhighest","trigExpseg","trigLinseg","trigexpseg","trigger","trighold","triglinseg","trigphasor","trigseq","trim","trim_i","trirand","trlowest","trmix","trscale","trshift","trsplit","turnoff","turnoff2","turnoff2_i","turnoff3","turnon","tvconv","unirand","unwrap","upsamp","urandom","urd","vactrol","vadd","vadd_i","vaddv","vaddv_i","vaget","valpass","vaset","vbap","vbapg","vbapgmove","vbaplsinit","vbapmove","vbapz","vbapzmove","vcella","vclpf","vco","vco2","vco2ft","vco2ift","vco2init","vcomb","vcopy","vcopy_i","vdel_k","vdelay","vdelay3","vdelayk","vdelayx","vdelayxq","vdelayxs","vdelayxw","vdelayxwq","vdelayxws","vdivv","vdivv_i","vecdelay","veloc","vexp","vexp_i","vexpseg","vexpv","vexpv_i","vibes","vibr","vibrato","vincr","vlimit","vlinseg","vlowres","vmap","vmirror","vmult","vmult_i","vmultv","vmultv_i","voice","vosim","vphaseseg","vport","vpow","vpow_i","vpowv","vpowv_i","vps","vpvoc","vrandh","vrandi","vsubv","vsubv_i","vtaba","vtabi","vtabk","vtable1k","vtablea","vtablei","vtablek","vtablewa","vtablewi","vtablewk","vtabwa","vtabwi","vtabwk","vwrap","waveset","websocket","weibull","wgbow","wgbowedbar","wgbrass","wgclar","wgflute","wgpluck","wgpluck2","wguide1","wguide2","wiiconnect","wiidata","wiirange","wiisend","window","wrap","writescratch","wterrain","wterrain2","xadsr","xin","xout","xtratim","xyscale","zacl","zakinit","zamod","zar","zarg","zaw","zawm","zdf_1pole","zdf_1pole_mode","zdf_2pole","zdf_2pole_mode","zdf_ladder","zfilter2","zir","ziw","ziwm","zkcl","zkmod","zkr","zkw","zkwm"],n=["OSCsendA","array","beadsynt","beosc","bformdec","bformenc","buchla","copy2ftab","copy2ttab","getrowlin","hrtfer","ktableseg","lentab","lua_exec","lua_iaopcall","lua_iaopcall_off","lua_ikopcall","lua_ikopcall_off","lua_iopcall","lua_iopcall_off","lua_opdef","maxtab","mintab","mp3scal_check","mp3scal_load","mp3scal_load2","mp3scal_play","mp3scal_play2","pop","pop_f","ptable","ptable3","ptablei","ptableiw","push","push_f","pvsgendy","scalet","signalflowgraph","sndload","socksend_k","soundout","soundouts","specaddm","specdiff","specdisp","specfilt","spechist","specptrk","specscal","specsum","spectrum","stack","sumTableFilter","sumtab","systime","tabgen","tableiw","tabmap","tabmap_i","tabrowlin","tabslice","tb0","tb0_init","tb1","tb10","tb10_init","tb11","tb11_init","tb12","tb12_init","tb13","tb13_init","tb14","tb14_init","tb15","tb15_init","tb1_init","tb2","tb2_init","tb3","tb3_init","tb4","tb4_init","tb5","tb5_init","tb6","tb6_init","tb7","tb7_init","tb8","tb8_init","tb9","tb9_init","vbap16","vbap1move","vbap4","vbap4move","vbap8","vbap8move","xscanmap","xscans","xscansmap","xscanu","xyin"];t=r.arrayToMap(t),n=r.arrayToMap(n),this.lineContinuations=[{token:"constant.character.escape.line-continuation.csound",regex:/\\$/},this.pushRule({token:"constant.character.escape.line-continuation.csound",regex:/\\/,next:"line continuation"})],this.comments.push(this.lineContinuations),this.quotedStringContents.push(this.lineContinuations,{token:"invalid.illegal",regex:/[^"\\]*$/});var i=this.$rules.start;i.splice(1,0,{token:["text.csound","entity.name.label.csound","entity.punctuation.label.csound","text.csound"],regex:/^([ \t]*)(\w+)(:)([ \t]+|$)/}),i.push(this.pushRule({token:"keyword.function.csound",regex:/\binstr\b/,next:"instrument numbers and identifiers"}),this.pushRule({token:"keyword.function.csound",regex:/\bopcode\b/,next:"after opcode keyword"}),{token:"keyword.other.csound",regex:/\bend(?:in|op)\b/},{token:"variable.language.csound",regex:/\b(?:0dbfs|A4|k(?:r|smps)|nchnls(?:_i)?|sr)\b/},this.numbers,{token:"keyword.operator.csound",regex:"\\+=|-=|\\*=|/=|<<|>>|<=|>=|==|!=|&&|\\|\\||[~\u00ac]|[=!+\\-*/^%&|<>#?:]"},this.pushRule({token:"punctuation.definition.string.begin.csound",regex:/"/,next:"quoted string"}),this.pushRule({token:"punctuation.definition.string.begin.csound",regex:/{{/,next:"braced string"}),{token:"keyword.control.csound",regex:/\b(?:do|else(?:if)?|end(?:if|until)|fi|i(?:f|then)|kthen|od|r(?:ir)?eturn|then|until|while)\b/},this.pushRule({token:"keyword.control.csound",regex:/\b[ik]?goto\b/,next:"goto before label"}),this.pushRule({token:"keyword.control.csound",regex:/\b(?:r(?:einit|igoto)|tigoto)\b/,next:"goto before label"}),this.pushRule({token:"keyword.control.csound",regex:/\bc(?:g|in?|k|nk?)goto\b/,next:["goto before label","goto before argument"]}),this.pushRule({token:"keyword.control.csound",regex:/\btimout\b/,next:["goto before label","goto before argument","goto before argument"]}),this.pushRule({token:"keyword.control.csound",regex:/\bloop_[gl][et]\b/,next:["goto before label","goto before argument","goto before argument","goto before argument"]}),this.pushRule({token:"support.function.csound",regex:/\b(?:readscore|scoreline(?:_i)?)\b/,next:"Csound score opcode"}),this.pushRule({token:"support.function.csound",regex:/\bpyl?run[it]?\b(?!$)/,next:"Python opcode"}),this.pushRule({token:"support.function.csound",regex:/\blua_(?:exec|opdef)\b(?!$)/,next:"Lua opcode"}),{token:"support.variable.csound",regex:/\bp\d+\b/},{regex:/\b([A-Z_a-z]\w*)(?:(:)([A-Za-z]))?\b/,onMatch:function(e,r,i,s){var o=e.split(this.splitRegex),u=o[1],a;return t.hasOwnProperty(u)?a="support.function.csound":n.hasOwnProperty(u)&&(a="invalid.deprecated.csound"),a?o[2]?[{type:a,value:u},{type:"punctuation.type-annotation.csound",value:o[2]},{type:"type-annotation.storage.type.csound",value:o[3]}]:a:"text.csound"}}),this.$rules["macro parameter value list"].splice(2,0,{token:"punctuation.definition.string.begin.csound",regex:/{{/,next:"macro parameter value braced string"});var f=new o("csound-score-");this.addRules({"macro parameter value braced string":[{token:"constant.character.escape.csound",regex:/\\[#'()]/},{token:"invalid.illegal.csound.csound",regex:/[#'()]/},{token:"punctuation.definition.string.end.csound",regex:/}}/,next:"macro parameter value list"},{defaultToken:"string.braced.csound"}],"instrument numbers and identifiers":[this.comments,{token:"entity.name.function.csound",regex:/\d+|[A-Z_a-z]\w*/},this.popRule({token:"empty",regex:/$/})],"after opcode keyword":[this.comments,this.popRule({token:"empty",regex:/$/}),this.popRule({token:"entity.name.function.opcode.csound",regex:/[A-Z_a-z]\w*/,next:"opcode type signatures"})],"opcode type signatures":[this.comments,this.popRule({token:"empty",regex:/$/}),{token:"storage.type.csound",regex:/\b(?:0|[afijkKoOpPStV\[\]]+)/}],"quoted string":[this.popRule({token:"punctuation.definition.string.end.csound",regex:/"/}),this.quotedStringContents,{defaultToken:"string.quoted.csound"}],"braced string":[this.popRule({token:"punctuation.definition.string.end.csound",regex:/}}/}),this.bracedStringContents,{defaultToken:"string.braced.csound"}],"goto before argument":[this.popRule({token:"text.csound",regex:/,/}),i],"goto before label":[{token:"text.csound",regex:/\s+/},this.comments,this.popRule({token:"entity.name.label.csound",regex:/\w+/}),this.popRule({token:"empty",regex:/(?!\w)/})],"Csound score opcode":[this.comments,{token:"punctuation.definition.string.begin.csound",regex:/{{/,next:f.embeddedRulePrefix+"start"},this.popRule({token:"empty",regex:/$/})],"Python opcode":[this.comments,{token:"punctuation.definition.string.begin.csound",regex:/{{/,next:"python-start"},this.popRule({token:"empty",regex:/$/})],"Lua opcode":[this.comments,{token:"punctuation.definition.string.begin.csound",regex:/{{/,next:"lua-start"},this.popRule({token:"empty",regex:/$/})],"line continuation":[this.popRule({token:"empty",regex:/$/}),this.semicolonComments,{token:"invalid.illegal.csound",regex:/\S.*/}]});var l=[this.popRule({token:"punctuation.definition.string.end.csound",regex:/}}/})];this.embedRules(f.getRules(),f.embeddedRulePrefix,l),this.embedRules(a,"python-",l),this.embedRules(u,"lua-",l),this.normalizeRules()};i.inherits(f,s),t.CsoundOrchestraHighlightRules=f}),define("ace/mode/csound_orchestra",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csound_orchestra_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./csound_orchestra_highlight_rules").CsoundOrchestraHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart=";",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/csound_orchestra",this.snippetFileId="ace/snippets/csound_orchestra"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/csound_orchestra"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-csound_score.js b/www/js/ace/mode-csound_score.js deleted file mode 100644 index ec747c145..000000000 --- a/www/js/ace/mode-csound_score.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/csound_preprocessor_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){this.embeddedRulePrefix=e===undefined?"":e,this.semicolonComments={token:"comment.line.semicolon.csound",regex:";.*$"},this.comments=[{token:"punctuation.definition.comment.begin.csound",regex:"/\\*",push:[{token:"punctuation.definition.comment.end.csound",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.csound"}]},{token:"comment.line.double-slash.csound",regex:"//.*$"},this.semicolonComments],this.macroUses=[{token:["entity.name.function.preprocessor.csound","punctuation.definition.macro-parameter-value-list.begin.csound"],regex:/(\$[A-Z_a-z]\w*\.?)(\()/,next:"macro parameter value list"},{token:"entity.name.function.preprocessor.csound",regex:/\$[A-Z_a-z]\w*(?:\.|\b)/}],this.numbers=[{token:"constant.numeric.float.csound",regex:/(?:\d+[Ee][+-]?\d+)|(?:\d+\.\d*|\d*\.\d+)(?:[Ee][+-]?\d+)?/},{token:["storage.type.number.csound","constant.numeric.integer.hexadecimal.csound"],regex:/(0[Xx])([0-9A-Fa-f]+)/},{token:"constant.numeric.integer.decimal.csound",regex:/\d+/}],this.bracedStringContents=[{token:"constant.character.escape.csound",regex:/\\(?:[\\abnrt"]|[0-7]{1,3})/},{token:"constant.character.placeholder.csound",regex:/%[#0\- +]*\d*(?:\.\d+)?[diuoxXfFeEgGaAcs]/},{token:"constant.character.escape.csound",regex:/%%/}],this.quotedStringContents=[this.macroUses,this.bracedStringContents];var t=[this.comments,{token:"keyword.preprocessor.csound",regex:/#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+/},{token:"keyword.preprocessor.csound",regex:/#include/,push:[this.comments,{token:"string.csound",regex:/([^ \t])(?:.*?\1)/,next:"pop"}]},{token:"keyword.preprocessor.csound",regex:/#includestr/,push:[this.comments,{token:"string.csound",regex:/([^ \t])(?:.*?\1)/,next:"pop"}]},{token:"keyword.preprocessor.csound",regex:/#[ \t]*define/,next:"define directive"},{token:"keyword.preprocessor.csound",regex:/#(?:ifn?def|undef)\b/,next:"macro directive"},this.macroUses];this.$rules={start:t,"define directive":[this.comments,{token:"entity.name.function.preprocessor.csound",regex:/[A-Z_a-z]\w*/},{token:"punctuation.definition.macro-parameter-name-list.begin.csound",regex:/\(/,next:"macro parameter name list"},{token:"punctuation.definition.macro.begin.csound",regex:/#/,next:"macro body"}],"macro parameter name list":[{token:"variable.parameter.preprocessor.csound",regex:/[A-Z_a-z]\w*/},{token:"punctuation.definition.macro-parameter-name-list.end.csound",regex:/\)/,next:"define directive"}],"macro body":[{token:"constant.character.escape.csound",regex:/\\#/},{token:"punctuation.definition.macro.end.csound",regex:/#/,next:"start"},t],"macro directive":[this.comments,{token:"entity.name.function.preprocessor.csound",regex:/[A-Z_a-z]\w*/,next:"start"}],"macro parameter value list":[{token:"punctuation.definition.macro-parameter-value-list.end.csound",regex:/\)/,next:"start"},{token:"punctuation.definition.string.begin.csound",regex:/"/,next:"macro parameter value quoted string"},this.pushRule({token:"punctuation.macro-parameter-value-parenthetical.begin.csound",regex:/\(/,next:"macro parameter value parenthetical"}),{token:"punctuation.macro-parameter-value-separator.csound",regex:"[#']"}],"macro parameter value quoted string":[{token:"constant.character.escape.csound",regex:/\\[#'()]/},{token:"invalid.illegal.csound",regex:/[#'()]/},{token:"punctuation.definition.string.end.csound",regex:/"/,next:"macro parameter value list"},this.quotedStringContents,{defaultToken:"string.quoted.csound"}],"macro parameter value parenthetical":[{token:"constant.character.escape.csound",regex:/\\\)/},this.popRule({token:"punctuation.macro-parameter-value-parenthetical.end.csound",regex:/\)/}),this.pushRule({token:"punctuation.macro-parameter-value-parenthetical.begin.csound",regex:/\(/,next:"macro parameter value parenthetical"}),t]}};r.inherits(s,i),function(){this.pushRule=function(e){if(Array.isArray(e.next))for(var t=0;t1?r[r.length-1]:r.pop(),e.token}}}}.call(s.prototype),t.CsoundPreprocessorHighlightRules=s}),define("ace/mode/csound_score_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules,s=function(e){i.call(this,e),this.quotedStringContents.push({token:"invalid.illegal.csound-score",regex:/[^"]*$/});var t=this.$rules.start;t.push({token:"keyword.control.csound-score",regex:/[aBbCdefiqstvxy]/},{token:"invalid.illegal.csound-score",regex:/w/},{token:"constant.numeric.language.csound-score",regex:/z/},{token:["keyword.control.csound-score","constant.numeric.integer.decimal.csound-score"],regex:/([nNpP][pP])(\d+)/},{token:"keyword.other.csound-score",regex:/[mn]/,push:[{token:"empty",regex:/$/,next:"pop"},this.comments,{token:"entity.name.label.csound-score",regex:/[A-Z_a-z]\w*/}]},{token:"keyword.preprocessor.csound-score",regex:/r\b/,next:"repeat section"},this.numbers,{token:"keyword.operator.csound-score",regex:"[!+\\-*/^%&|<>#~.]"},this.pushRule({token:"punctuation.definition.string.begin.csound-score",regex:/"/,next:"quoted string"}),this.pushRule({token:"punctuation.braced-loop.begin.csound-score",regex:/{/,next:"loop after left brace"})),this.addRules({"repeat section":[{token:"empty",regex:/$/,next:"start"},this.comments,{token:"constant.numeric.integer.decimal.csound-score",regex:/\d+/,next:"repeat section before label"}],"repeat section before label":[{token:"empty",regex:/$/,next:"start"},this.comments,{token:"entity.name.label.csound-score",regex:/[A-Z_a-z]\w*/,next:"start"}],"quoted string":[this.popRule({token:"punctuation.definition.string.end.csound-score",regex:/"/}),this.quotedStringContents,{defaultToken:"string.quoted.csound-score"}],"loop after left brace":[this.popRule({token:"constant.numeric.integer.decimal.csound-score",regex:/\d+/,next:"loop after repeat count"}),this.comments,{token:"invalid.illegal.csound",regex:/\S.*/}],"loop after repeat count":[this.popRule({token:"entity.name.function.preprocessor.csound-score",regex:/[A-Z_a-z]\w*\b/,next:"loop after macro name"}),this.comments,{token:"invalid.illegal.csound",regex:/\S.*/}],"loop after macro name":[t,this.popRule({token:"punctuation.braced-loop.end.csound-score",regex:/}/})]}),this.normalizeRules()};r.inherits(s,i),t.CsoundScoreHighlightRules=s}),define("ace/mode/csound_score",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csound_score_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./csound_score_highlight_rules").CsoundScoreHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart=";",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/csound_score"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/csound_score"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-csp.js b/www/js/ace/mode-csp.js deleted file mode 100644 index cea2199b5..000000000 --- a/www/js/ace/mode-csp.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/csp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"constant.language":"child-src|connect-src|default-src|font-src|frame-src|img-src|manifest-src|media-src|object-src|script-src|style-src|worker-src|base-uri|plugin-types|sandbox|disown-opener|form-action|frame-ancestors|report-uri|report-to|upgrade-insecure-requests|block-all-mixed-content|require-sri-for|reflected-xss|referrer|policy-uri",variable:"'none'|'self'|'unsafe-inline'|'unsafe-eval'|'strict-dynamic'|'unsafe-hashed-attributes'"},"identifier",!0);this.$rules={start:[{token:"string.link",regex:/https?:[^;\s]*/},{token:"operator.punctuation",regex:/;/},{token:e,regex:/[^\s;]+/}]}};r.inherits(s,i),t.CspHighlightRules=s}),define("ace/mode/csp",["require","exports","module","ace/mode/text","ace/mode/csp_highlight_rules","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./text").Mode,i=e("./csp_highlight_rules").CspHighlightRules,s=e("../lib/oop"),o=function(){this.HighlightRules=i};s.inherits(o,r),function(){this.$id="ace/mode/csp"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/csp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-css.js b/www/js/ace/mode-css.js deleted file mode 100644 index 9ae36133e..000000000 --- a/www/js/ace/mode-css.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}); (function() { - window.require(["ace/mode/css"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-csv.js b/www/js/ace/mode-csv.js deleted file mode 100644 index d602749d7..000000000 --- a/www/js/ace/mode-csv.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/csv_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){i.call(this)};r.inherits(s,i),t.CsvHighlightRules=s}),define("ace/mode/csv",["require","exports","module","ace/lib/oop","ace/mode/text","ace/lib/lang","ace/mode/csv_highlight_rules"],function(e,t,n){"use strict";function f(e,t,n){var r=[],i=e.split(n.separatorRegex),s=n.spliter,o=n.quote||'"',u=(t||"start").split("-"),f=parseInt(u[1])||0,l=u[0]=="string",c=!l;for(var h=0;h))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/curly_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=function(){i.call(this),this.$rules.start.unshift({token:"variable",regex:"{{",push:"curly-start"}),this.$rules["curly-start"]=[{token:"variable",regex:"}}",next:"pop"}],this.normalizeRules()};r.inherits(s,i),t.CurlyHighlightRules=s}),define("ace/mode/curly",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/matching_brace_outdent","ace/mode/folding/html","ace/mode/curly_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./matching_brace_outdent").MatchingBraceOutdent,o=e("./folding/html").FoldMode,u=e("./curly_highlight_rules").CurlyHighlightRules,a=function(){i.call(this),this.HighlightRules=u,this.$outdent=new s,this.foldingRules=new o};r.inherits(a,i),function(){this.$id="ace/mode/curly"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/curly"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-cuttlefish.js b/www/js/ace/mode-cuttlefish.js deleted file mode 100644 index ee713c378..000000000 --- a/www/js/ace/mode-cuttlefish.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/cuttlefish_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["text","comment"],regex:/^([ \t]*)(#.*)$/},{token:["text","keyword","text","string","text","comment"],regex:/^([ \t]*)(include)([ \t]*)([A-Za-z0-9-\_\.\*\/]+)([ \t]*)(#.*)?$/},{token:["text","keyword","text","operator","text","string","text","comment"],regex:/^([ \t]*)([A-Za-z0-9-_]+(?:\.[A-Za-z0-9-_]+)*)([ \t]*)(=)([ \t]*)([^ \t#][^#]*?)([ \t]*)(#.*)?$/},{defaultToken:"invalid"}]},this.normalizeRules()};s.metaData={fileTypes:["conf"],keyEquivalent:"^~C",name:"Cuttlefish",scopeName:"source.conf"},r.inherits(s,i),t.CuttlefishHighlightRules=s}),define("ace/mode/cuttlefish",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cuttlefish_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./cuttlefish_highlight_rules").CuttlefishHighlightRules,o=function(){this.HighlightRules=s,this.foldingRules=null,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="#",this.blockComment=null,this.$id="ace/mode/cuttlefish"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/cuttlefish"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-d.js b/www/js/ace/mode-d.js deleted file mode 100644 index 126458452..000000000 --- a/www/js/ace/mode-d.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/d_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="this|super|import|module|body|mixin|__traits|invariant|alias|asm|delete|typeof|typeid|sizeof|cast|new|in|is|typedef|__vector|__parameters",t="break|case|continue|default|do|else|for|foreach|foreach_reverse|goto|if|return|switch|while|catch|try|throw|finally|version|assert|unittest|with",n="auto|bool|char|dchar|wchar|byte|ubyte|float|double|real|cfloat|creal|cdouble|cent|ifloat|ireal|idouble|int|long|short|void|uint|ulong|ushort|ucent|function|delegate|string|wstring|dstring|size_t|ptrdiff_t|hash_t|Object",r="abstract|align|debug|deprecated|export|extern|const|final|in|inout|out|ref|immutable|lazy|nothrow|override|package|pragma|private|protected|public|pure|scope|shared|__gshared|synchronized|static|volatile",s="class|struct|union|template|interface|enum|macro",o={token:"constant.language.escape",regex:"\\\\(?:(?:x[0-9A-F]{2})|(?:[0-7]{1,3})|(?:['\"\\?0abfnrtv\\\\])|(?:u[0-9a-fA-F]{4})|(?:U[0-9a-fA-F]{8}))"},u="null|true|false|__DATE__|__EOF__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__|__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__",a="/|/\\=|&|&\\=|&&|\\|\\|\\=|\\|\\||\\-|\\-\\=|\\-\\-|\\+|\\+\\=|\\+\\+|\\<|\\<\\=|\\<\\<|\\<\\<\\=|\\<\\>|\\<\\>\\=|\\>|\\>\\=|\\>\\>\\=|\\>\\>\\>\\=|\\>\\>|\\>\\>\\>|\\!|\\!\\=|\\!\\<\\>|\\!\\<\\>\\=|\\!\\<|\\!\\<\\=|\\!\\>|\\!\\>\\=|\\?|\\$|\\=|\\=\\=|\\*|\\*\\=|%|%\\=|\\^|\\^\\=|\\^\\^|\\^\\^\\=|~|~\\=|\\=\\>|#",f=this.$keywords=this.createKeywordMapper({"keyword.modifier":r,"keyword.control":t,"keyword.type":n,keyword:e,"keyword.storage":s,punctation:"\\.|\\,|;|\\.\\.|\\.\\.\\.","keyword.operator":a,"constant.language":u},"identifier"),l="[a-zA-Z_\u00a1-\uffff][a-zA-Z\\d_\u00a1-\uffff]*\\b";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"star-comment"},{token:"comment.shebang",regex:"^\\s*#!.*"},{token:"comment",regex:"\\/\\+",next:"plus-comment"},{onMatch:function(e,t,n){return n.unshift(this.next,e.substr(2)),"string"},regex:'q"(?:[\\[\\(\\{\\<]+)',next:"operator-heredoc-string"},{onMatch:function(e,t,n){return n.unshift(this.next,e.substr(2)),"string"},regex:'q"(?:[a-zA-Z_]+)$',next:"identifier-heredoc-string"},{token:"string",regex:'[xr]?"',next:"quote-string"},{token:"string",regex:"[xr]?`",next:"backtick-string"},{token:"string",regex:"[xr]?['](?:(?:\\\\.)|(?:[^'\\\\]))*?['][cdw]?"},{token:["keyword","text","paren.lparen"],regex:/(asm)(\s*)({)/,next:"d-asm"},{token:["keyword","text","paren.lparen","constant.language"],regex:"(__traits)(\\s*)(\\()("+l+")"},{token:["keyword","text","variable.module"],regex:"(import|module)(\\s+)((?:"+l+"\\.?)*)"},{token:["keyword.storage","text","entity.name.type"],regex:"("+s+")(\\s*)("+l+")"},{token:["keyword","text","variable.storage","text"],regex:"(alias|typedef)(\\s*)("+l+")(\\s*)"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F_]+(l|ul|u|f|F|L|U|UL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d[\\d_]*(?:(?:\\.[\\d_]*)?(?:[eE][+-]?[\\d_]+)?)?(l|ul|u|f|F|L|U|UL)?\\b"},{token:"entity.other.attribute-name",regex:"@"+l},{token:f,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:a},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\.|\\:"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],"star-comment":[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],"plus-comment":[{token:"comment",regex:"\\+\\/",next:"start"},{defaultToken:"comment"}],"quote-string":[o,{token:"string",regex:'"[cdw]?',next:"start"},{defaultToken:"string"}],"backtick-string":[o,{token:"string",regex:"`[cdw]?",next:"start"},{defaultToken:"string"}],"operator-heredoc-string":[{onMatch:function(e,t,n){e=e.substring(e.length-2,e.length-1);var r={">":"<","]":"[",")":"(","}":"{"};return Object.keys(r).indexOf(e)!=-1&&(e=r[e]),e!=n[1]?"string":(n.shift(),n.shift(),"string")},regex:'(?:[\\]\\)}>]+)"',next:"start"},{token:"string",regex:"[^\\]\\)}>]+"}],"identifier-heredoc-string":[{onMatch:function(e,t,n){return e=e.substring(0,e.length-1),e!=n[1]?"string":(n.shift(),n.shift(),"string")},regex:'^(?:[A-Za-z_][a-zA-Z0-9]+)"',next:"start"},{token:"string",regex:"[^\\]\\)}>]+"}],"d-asm":[{token:"paren.rparen",regex:"\\}",next:"start"},{token:"keyword.instruction",regex:"[a-zA-Z]+",next:"d-asm-instruction"},{token:"text",regex:"\\s+"}],"d-asm-instruction":[{token:"constant.language",regex:/AL|AH|AX|EAX|BL|BH|BX|EBX|CL|CH|CX|ECX|DL|DH|DX|EDX|BP|EBP|SP|ESP|DI|EDI|SI|ESI/i},{token:"identifier",regex:"[a-zA-Z]+"},{token:"string",regex:'"[^"]*"'},{token:"comment",regex:"//.*$"},{token:"constant.numeric",regex:"[0-9.xA-F]+"},{token:"punctuation.operator",regex:"\\,"},{token:"punctuation.operator",regex:";",next:"d-asm"},{token:"text",regex:"\\s+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};o.metaData={comment:"D language",fileTypes:["d","di"],firstLineMatch:"^#!.*\\b[glr]?dmd\\b.",foldingStartMarker:"(?x)/\\*\\*(?!\\*)|^(?![^{]*?//|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|//|/\\*(?!.*?\\*/.*\\S))",foldingStopMarker:"(?f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/d",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/d_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./d_highlight_rules").DHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/d"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/d"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-dart.js b/www/js/ace/mode-dart.js deleted file mode 100644 index 745f4544b..000000000 --- a/www/js/ace/mode-dart.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="hypot|hypotf|hypotl|sscanf|system|snprintf|scanf|scalbn|scalbnf|scalbnl|scalbln|scalblnf|scalblnl|sin|sinh|sinhf|sinhl|sinf|sinl|signal|signbit|strstr|strspn|strncpy|strncat|strncmp|strcspn|strchr|strcoll|strcpy|strcat|strcmp|strtoimax|strtod|strtoul|strtoull|strtoumax|strtok|strtof|strtol|strtold|strtoll|strerror|strpbrk|strftime|strlen|strrchr|strxfrm|sprintf|setjmp|setvbuf|setlocale|setbuf|sqrt|sqrtf|sqrtl|swscanf|swprintf|srand|nearbyint|nearbyintf|nearbyintl|nexttoward|nexttowardf|nexttowardl|nextafter|nextafterf|nextafterl|nan|nanf|nanl|csin|csinh|csinhf|csinhl|csinf|csinl|csqrt|csqrtf|csqrtl|ccos|ccosh|ccoshf|ccosf|ccosl|cimag|cimagf|cimagl|ctime|ctan|ctanh|ctanhf|ctanhl|ctanf|ctanl|cos|cosh|coshf|coshl|cosf|cosl|conj|conjf|conjl|copysign|copysignf|copysignl|cpow|cpowf|cpowl|cproj|cprojf|cprojl|ceil|ceilf|ceill|cexp|cexpf|cexpl|clock|clog|clogf|clogl|clearerr|casin|casinh|casinhf|casinhl|casinf|casinl|cacos|cacosh|cacoshf|cacoshl|cacosf|cacosl|catan|catanh|catanhf|catanhl|catanf|catanl|calloc|carg|cargf|cargl|cabs|cabsf|cabsl|creal|crealf|creall|cbrt|cbrtf|cbrtl|time|toupper|tolower|tan|tanh|tanhf|tanhl|tanf|tanl|trunc|truncf|truncl|tgamma|tgammaf|tgammal|tmpnam|tmpfile|isspace|isnormal|isnan|iscntrl|isinf|isdigit|isunordered|isupper|ispunct|isprint|isfinite|iswspace|iswcntrl|iswctype|iswdigit|iswupper|iswpunct|iswprint|iswlower|iswalnum|iswalpha|iswgraph|iswxdigit|iswblank|islower|isless|islessequal|islessgreater|isalnum|isalpha|isgreater|isgreaterequal|isgraph|isxdigit|isblank|ilogb|ilogbf|ilogbl|imaxdiv|imaxabs|div|difftime|_Exit|ungetc|ungetwc|pow|powf|powl|puts|putc|putchar|putwc|putwchar|perror|printf|erf|erfc|erfcf|erfcl|erff|erfl|exit|exp|exp2|exp2f|exp2l|expf|expl|expm1|expm1f|expm1l|vsscanf|vsnprintf|vscanf|vsprintf|vswscanf|vswprintf|vprintf|vfscanf|vfprintf|vfwscanf|vfwprintf|vwscanf|vwprintf|va_start|va_copy|va_end|va_arg|qsort|fscanf|fsetpos|fseek|fclose|ftell|fopen|fdim|fdimf|fdiml|fpclassify|fputs|fputc|fputws|fputwc|fprintf|feholdexcept|fesetenv|fesetexceptflag|fesetround|feclearexcept|fetestexcept|feof|feupdateenv|feraiseexcept|ferror|fegetenv|fegetexceptflag|fegetround|fflush|fwscanf|fwide|fwprintf|fwrite|floor|floorf|floorl|fabs|fabsf|fabsl|fgets|fgetc|fgetpos|fgetws|fgetwc|freopen|free|fread|frexp|frexpf|frexpl|fmin|fminf|fminl|fmod|fmodf|fmodl|fma|fmaf|fmal|fmax|fmaxf|fmaxl|ldiv|ldexp|ldexpf|ldexpl|longjmp|localtime|localeconv|log|log1p|log1pf|log1pl|log10|log10f|log10l|log2|log2f|log2l|logf|logl|logb|logbf|logbl|labs|lldiv|llabs|llrint|llrintf|llrintl|llround|llroundf|llroundl|lrint|lrintf|lrintl|lround|lroundf|lroundl|lgamma|lgammaf|lgammal|wscanf|wcsstr|wcsspn|wcsncpy|wcsncat|wcsncmp|wcscspn|wcschr|wcscoll|wcscpy|wcscat|wcscmp|wcstoimax|wcstod|wcstoul|wcstoull|wcstoumax|wcstok|wcstof|wcstol|wcstold|wcstoll|wcstombs|wcspbrk|wcsftime|wcslen|wcsrchr|wcsrtombs|wcsxfrm|wctob|wctomb|wcrtomb|wprintf|wmemset|wmemchr|wmemcpy|wmemcmp|wmemmove|assert|asctime|asin|asinh|asinhf|asinhl|asinf|asinl|acos|acosh|acoshf|acoshl|acosf|acosl|atoi|atof|atol|atoll|atexit|atan|atanh|atanhf|atanhl|atan2|atan2f|atan2l|atanf|atanl|abs|abort|gets|getc|getchar|getenv|getwc|getwchar|gmtime|rint|rintf|rintl|round|roundf|roundl|rename|realloc|rewind|remove|remquo|remquof|remquol|remainder|remainderf|remainderl|rand|raise|bsearch|btowc|modf|modff|modfl|memset|memchr|memcpy|memcmp|memmove|mktime|malloc|mbsinit|mbstowcs|mbsrtowcs|mbtowc|mblen|mbrtowc|mbrlen",u=function(e){var t="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",n="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",r="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",s="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",u="NULL|true|false|TRUE|FALSE|nullptr",a=this.$keywords=this.createKeywordMapper(Object.assign({"keyword.control":t,"storage.type":n,"storage.modifier":r,"keyword.operator":s,"variable.language":"this","constant.language":u,"support.function.C99.c":o},e),"identifier"),f="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",l=/\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source,c="%"+/(\d+\$)?/.source+/[#0\- +']*/.source+/[,;:_]?/.source+/((-?\d+)|\*(-?\d+\$)?)?/.source+/(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source+/(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source+/(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source;this.$rules={start:[{token:"comment",regex:"//$",next:"start"},{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:"'(?:"+l+"|.)?'"},{token:"string.start",regex:'"',stateName:"qqstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:l},{token:"constant.language.escape",regex:c},{token:"string.end",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"string.start",regex:'R"\\(',stateName:"rawString",next:[{token:"string.end",regex:'\\)"',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:a,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"},{token:"keyword.operator",regex:/--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(u,s),t.c_cppHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp",this.snippetFileId="ace/snippets/c_cpp"}.call(a.prototype),t.Mode=a}),define("ace/mode/dart_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="true|false|null",t="this|super",n="try|catch|finally|throw|rethrow|assert|break|case|continue|default|do|else|for|if|in|return|switch|while|new|deferred|async|await",r="abstract|class|extends|external|factory|implements|get|native|operator|set|typedef|with|enum",s="static|final|const",o="void|bool|num|int|double|dynamic|var|String",u=this.createKeywordMapper({"constant.language.dart":e,"variable.language.dart":t,"keyword.control.dart":n,"keyword.declaration.dart":r,"storage.modifier.dart":s,"storage.type.primitive.dart":o},"identifier"),a=[{token:"constant.language.escape",regex:/\\./},{token:"text",regex:/\$(?:\w+|{[^"'}]+})?/},{defaultToken:"string"}];this.$rules={start:[{token:"comment",regex:/\/\/.*$/},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:["meta.preprocessor.script.dart"],regex:"^(#!.*)$"},{token:"keyword.other.import.dart",regex:"(?:\\b)(?:library|import|export|part|of|show|hide)(?:\\b)"},{token:["keyword.other.import.dart","text"],regex:"(?:\\b)(prefix)(\\s*:)"},{regex:"\\bas\\b",token:"keyword.cast.dart"},{regex:"\\?|:",token:"keyword.control.ternary.dart"},{regex:"(?:\\b)(is\\!?)(?:\\b)",token:["keyword.operator.dart"]},{regex:"(<<|>>>?|~|\\^|\\||&)",token:["keyword.operator.bitwise.dart"]},{regex:"((?:&|\\^|\\||<<|>>>?)=)",token:["keyword.operator.assignment.bitwise.dart"]},{regex:"(===?|!==?|<=?|>=?)",token:["keyword.operator.comparison.dart"]},{regex:"((?:[+*/%-]|\\~)=)",token:["keyword.operator.assignment.arithmetic.dart"]},{regex:"=",token:"keyword.operator.assignment.dart"},{token:"string",regex:"'''",next:"qdoc"},{token:"string",regex:'"""',next:"qqdoc"},{token:"string",regex:"'",next:"qstring"},{token:"string",regex:'"',next:"qqstring"},{regex:"(\\-\\-|\\+\\+)",token:["keyword.operator.increment-decrement.dart"]},{regex:"(\\-|\\+|\\*|\\/|\\~\\/|%)",token:["keyword.operator.arithmetic.dart"]},{regex:"(!|&&|\\|\\|)",token:["keyword.operator.logical.dart"]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qdoc:[{token:"string",regex:"'''",next:"start"}].concat(a),qqdoc:[{token:"string",regex:'"""',next:"start"}].concat(a),qstring:[{token:"string",regex:"'|$",next:"start"}].concat(a),qqstring:[{token:"string",regex:'"|$',next:"start"}].concat(a)},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.DartHighlightRules=o}),define("ace/mode/dart",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/dart_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp").Mode,s=e("./dart_highlight_rules").DartHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){i.call(this),this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/dart",this.snippetFileId="ace/snippets/dart"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/dart"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-diff.js b/www/js/ace/mode-diff.js deleted file mode 100644 index 9b32ae455..000000000 --- a/www/js/ace/mode-diff.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/diff_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{regex:"^(?:\\*{15}|={67}|-{3}|\\+{3})$",token:"punctuation.definition.separator.diff",name:"keyword"},{regex:"^(@@)(\\s*.+?\\s*)(@@)(.*)$",token:["constant","constant.numeric","constant","comment.doc.tag"]},{regex:"^(\\d+)([,\\d]+)(a|d|c)(\\d+)([,\\d]+)(.*)$",token:["constant.numeric","punctuation.definition.range.diff","constant.function","constant.numeric","punctuation.definition.range.diff","invalid"],name:"meta."},{regex:"^(\\-{3}|\\+{3}|\\*{3})( .+)$",token:["constant.numeric","meta.tag"]},{regex:"^([!+>])(.*?)(\\s*)$",token:["support.constant","text","invalid"]},{regex:"^([<\\-])(.*?)(\\s*)$",token:["support.function","string","invalid"]},{regex:"^(diff)(\\s+--\\w+)?(.+?)( .+)?$",token:["variable","variable","keyword","variable"]},{regex:"^Index.+$",token:"variable"},{regex:"^\\s+$",token:"text"},{regex:"\\s*$",token:"invalid"},{defaultToken:"invisible",caseInsensitive:!0}]}};r.inherits(s,i),t.DiffHighlightRules=s}),define("ace/mode/folding/diff",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(e,t){this.regExpList=e,this.flag=t,this.foldingStartMarker=RegExp("^("+e.join("|")+")",this.flag)};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i={row:n,column:r.length},o=this.regExpList;for(var u=1;u<=o.length;u++){var a=RegExp("^("+o.slice(0,u).join("|")+")",this.flag);if(a.test(r))break}for(var f=e.getLength();++n))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/django",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./html").Mode,s=e("./html_highlight_rules").HtmlHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){this.$rules={start:[{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant",regex:"[0-9]+"},{token:"variable",regex:"[-_a-zA-Z0-9:]+"}],tag:[{token:"entity.name.function",regex:"[a-zA-Z][_a-zA-Z0-9]*",next:"start"}]}};r.inherits(u,o);var a=function(){this.$rules=(new s).getRules();for(var e in this.$rules)this.$rules[e].unshift({token:"comment.line",regex:"\\{#.*?#\\}"},{token:"comment.block",regex:"\\{\\%\\s*comment\\s*\\%\\}",merge:!0,next:"django-comment"},{token:"constant.language",regex:"\\{\\{",next:"django-start"},{token:"constant.language",regex:"\\{\\%",next:"django-tag"}),this.embedRules(u,"django-",[{token:"comment.block",regex:"\\{\\%\\s*endcomment\\s*\\%\\}",merge:!0,next:"start"},{token:"constant.language",regex:"\\%\\}",next:"start"},{token:"constant.language",regex:"\\}\\}",next:"start"}])};r.inherits(a,s);var f=function(){i.call(this),this.HighlightRules=a};r.inherits(f,i),function(){this.$id="ace/mode/django",this.snippetFileId="ace/snippets/django"}.call(f.prototype),t.Mode=f}); (function() { - window.require(["ace/mode/django"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-dockerfile.js b/www/js/ace/mode-dockerfile.js deleted file mode 100644 index dc1bcd06c..000000000 --- a/www/js/ace/mode-dockerfile.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:"+l+"(?==))",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string.start",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$`"\\]|$)/},{include:"variables"},{token:"keyword.operator",regex:/`/},{token:"string.end",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"string",regex:"\\$'",push:[{token:"constant.language.escape",regex:/\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:["keyword","text","text","text","variable"],regex:/(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/},{token:"variable.language",regex:h},{token:"variable",regex:c},{include:"variables"},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"},{token:"punctuation.operator",regex:";"},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]]"},{token:"paren.rparen",regex:"[\\)\\}]",next:"pop"}],variables:[{token:"variable",regex:/(\$)(\w+)/},{token:["variable","paren.lparen"],regex:/(\$)(\()/,push:"start"},{token:["variable","paren.lparen","keyword.operator","variable","keyword.operator"],regex:/(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,push:"start"},{token:"variable",regex:/\$[*@#?\-$!0_]/},{token:["variable","paren.lparen"],regex:/(\$)(\{)/,push:"start"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sh_highlight_rules").ShHighlightRules,o=e("../range").Range,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new o(n,r.length-i.length,n,r.length))},this.$id="ace/mode/sh",this.snippetFileId="ace/snippets/sh"}.call(a.prototype),t.Mode=a}),define("ace/mode/dockerfile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/sh_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./sh_highlight_rules").ShHighlightRules,s=function(){i.call(this);var e=this.$rules.start;for(var t=0;t/},{token:"punctuation.operator",regex:/,|;/},{token:"paren.lparen",regex:/[\[{]/},{token:"paren.rparen",regex:/[\]}]/},{token:"comment",regex:/^#!.*$/},{token:function(n){return e.hasOwnProperty(n.toLowerCase())?"keyword":t.hasOwnProperty(n.toLowerCase())?"variable":"text"},regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'[^"\\\\]+',merge:!0},{token:"string",regex:"\\\\$",next:"qqstring",merge:!0},{token:"string",regex:'"|$',next:"start",merge:!0}],qstring:[{token:"string",regex:"[^'\\\\]+",merge:!0},{token:"string",regex:"\\\\$",next:"qstring",merge:!0},{token:"string",regex:"'|$",next:"start",merge:!0}]}};r.inherits(u,s),t.DotHighlightRules=u}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/dot",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matching_brace_outdent","ace/mode/dot_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./matching_brace_outdent").MatchingBraceOutdent,o=e("./dot_highlight_rules").DotHighlightRules,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=o,this.$outdent=new s,this.foldingRules=new u,this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart=["//","#"],this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/dot"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/dot"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-drools.js b/www/js/ace/mode-drools.js deleted file mode 100644 index 01141e13e..000000000 --- a/www/js/ace/mode-drools.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="[a-zA-Z_$][a-zA-Z0-9_$]*",t="abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while|yield|when|record|var|permits|(?:non\\-)?sealed",n="null|Infinity|NaN|undefined",r="AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",s=this.createKeywordMapper({"variable.language":"this","constant.language":n,"support.function":r},"identifier");this.$rules={start:[{include:"comments"},{include:"multiline-strings"},{include:"strings"},{include:"constants"},{regex:"(open(?:\\s+))?module(?=\\s*\\w)",token:"keyword",next:[{regex:"{",token:"paren.lparen",push:[{regex:"}",token:"paren.rparen",next:"pop"},{include:"comments"},{regex:"\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b",token:"keyword"}]},{token:"text",regex:"\\s+"},{token:"identifier",regex:"\\w+"},{token:"punctuation.operator",regex:"."},{token:"text",regex:"\\s+"},{regex:"",next:"start"}]},{include:"statements"}],comments:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment.doc",regex:/\/\*\*(?!\/)/,push:"doc-start"},{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],strings:[{token:["punctuation","string"],regex:/(\.)(")/,push:[{token:"lparen",regex:/\\\{/,push:[{token:"text",regex:/$/,next:"start"},{token:"rparen",regex:/}/,next:"pop"},{include:"strings"},{include:"constants"},{include:"statements"}]},{token:"string",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"}],"multiline-strings":[{token:["punctuation","string"],regex:/(\.)(""")/,push:[{token:"string",regex:'"""',next:"pop"},{token:"lparen",regex:/\\\{/,push:[{token:"text",regex:/$/,next:"start"},{token:"rparen",regex:/}/,next:"pop"},{include:"multiline-strings"},{include:"strings"},{include:"constants"},{include:"statements"}]},{token:"constant.language.escape",regex:/\\./},{defaultToken:"string"}]},{token:"string",regex:'"""',push:[{token:"string",regex:'"""',next:"pop"},{token:"constant.language.escape",regex:/\\./},{defaultToken:"string"}]}],constants:[{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/},{token:"constant.language.boolean",regex:"(?:true|false)\\b"}],statements:[{token:["keyword","text","identifier"],regex:"(record)(\\s+)("+e+")\\b"},{token:"keyword",regex:"(?:"+t+")\\b"},{token:"storage.type.annotation",regex:"@"+e+"\\b"},{token:"entity.name.function",regex:e+"(?=\\()"},{token:s,regex:e+"\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\||\\^|\\*|\\/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?|\\:|\\*=|\\/=|%=|\\+=|\\-=|&=|\\|=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}]},this.embedRules(i,"doc-",[i.getEndRule("pop")]),this.normalizeRules()};r.inherits(o,s),t.JavaHighlightRules=o}),define("ace/mode/drools_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/java_highlight_rules","ace/mode/doc_comment_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./java_highlight_rules").JavaHighlightRules,o=e("./doc_comment_highlight_rules").DocCommentHighlightRules,u="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",a="[a-zA-Z\\$_\u00a1-\uffff][\\.a-zA-Z\\d\\$_\u00a1-\uffff]*",f=function(){var e="date|effective|expires|lock|on|active|no|loop|auto|focus|activation|group|agenda|ruleflow|duration|timer|calendars|refract|direct|dialect|salience|enabled|attributes|extends|template|function|contains|matches|eval|excludes|soundslike|memberof|not|in|or|and|exists|forall|over|from|entry|point|accumulate|acc|collect|action|reverse|result|end|init|instanceof|extends|super|boolean|char|byte|short|int|long|float|double|this|void|class|new|case|final|if|else|for|while|do|default|try|catch|finally|switch|synchronized|return|throw|break|continue|assert|modify|static|public|protected|private|abstract|native|transient|volatile|strictfp|throws|interface|enum|implements|type|window|trait|no-loop|str",t="AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",n=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":"null","support.class":t,"support.function":"retract|update|modify|insert"},"identifier"),r=function(){return[{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"}]},i=function(e){return[{token:"comment",regex:"\\/\\/.*$"},o.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:e},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"}]},f=function(e){return[{token:"comment.block",regex:"\\*\\/",next:e},{defaultToken:"comment.block"}]},l=function(){return[{token:n,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}]};this.$rules={start:[].concat(i("block.comment"),[{token:"entity.name.type",regex:"@[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:["keyword","text","entity.name.type"],regex:"(package)(\\s+)("+a+")"},{token:["keyword","text","keyword","text","entity.name.type"],regex:"(import)(\\s+)(function)(\\s+)("+a+")"},{token:["keyword","text","entity.name.type"],regex:"(import)(\\s+)("+a+")"},{token:["keyword","text","entity.name.type","text","variable"],regex:"(global)(\\s+)("+a+")(\\s+)("+u+")"},{token:["keyword","text","keyword","text","entity.name.type"],regex:"(declare)(\\s+)(trait)(\\s+)("+u+")"},{token:["keyword","text","entity.name.type"],regex:"(declare)(\\s+)("+u+")"},{token:["keyword","text","entity.name.type"],regex:"(extends)(\\s+)("+a+")"},{token:["keyword","text"],regex:"(rule)(\\s+)",next:"asset.name"}],r(),[{token:["variable.other","text","text"],regex:"("+u+")(\\s*)(:)"},{token:["keyword","text"],regex:"(query)(\\s+)",next:"asset.name"},{token:["keyword","text"],regex:"(when)(\\s*)"},{token:["keyword","text"],regex:"(then)(\\s*)",next:"java-start"},{token:"paren.lparen",regex:/[\[({]/},{token:"paren.rparen",regex:/[\])}]/}],l()),"block.comment":f("start"),"asset.name":[{token:"entity.name",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"entity.name",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"entity.name",regex:u},{regex:"",token:"empty",next:"start"}]},this.embedRules(o,"doc-",[o.getEndRule("start")]),this.embedRules(s,"java-",[{token:"support.function",regex:"\\b(insert|modify|retract|update)\\b"},{token:"keyword",regex:"\\bend\\b",next:"start"}])};r.inherits(f,i),t.DroolsHighlightRules=f}),define("ace/mode/folding/drools",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function a(e,t,n,r){var s=n[0].length,o=e.getLength(),u=r,a=r;while(++ru){var l=e.getLine(a).length;return new i(u,s,a,l)}}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,s),function(){this.foldingStartMarker=/\b(rule|declare|query|when|then)\b/,this.foldingStopMarker=/\bend\b/,this.importRegex=/^import /,this.globalRegex=/^global /,this.getBaseFoldWidget=this.getFoldWidget,this.getFoldWidget=function(e,t,n){if(t==="markbegin"){var r=e.getLine(n);if(this.importRegex.test(r))if(n===0||!this.importRegex.test(e.getLine(n-1)))return"start";if(this.globalRegex.test(r))if(n===0||!this.globalRegex.test(e.getLine(n-1)))return"start"}return this.getBaseFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),s=r.match(this.foldingStartMarker);if(s&&s[1]){var u={row:n,column:r.length},f=new o(e,u.row,u.column),l="end",c=f.getCurrentToken();c.value=="when"&&(l="then");while(c){if(c.value==l)return i.fromPoints(u,{row:f.getCurrentTokenRow(),column:f.getCurrentTokenColumn()});c=f.stepForward()}}s=r.match(this.importRegex);if(s)return a(e,this.importRegex,s,n);s=r.match(this.globalRegex);if(s)return a(e,this.globalRegex,s,n)}}.call(u.prototype)}),define("ace/mode/drools",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/drools_highlight_rules","ace/mode/folding/drools"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./drools_highlight_rules").DroolsHighlightRules,o=e("./folding/drools").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.$id="ace/mode/drools",this.snippetFileId="ace/snippets/drools"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/drools"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-edifact.js b/www/js/ace/mode-edifact.js deleted file mode 100644 index d7aa41bf1..000000000 --- a/www/js/ace/mode-edifact.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/edifact_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="UNH",t="ADR|AGR|AJT|ALC|ALI|APP|APR|ARD|ARR|ASI|ATT|AUT|BAS|BGM|BII|BUS|CAV|CCD|CCI|CDI|CDS|CDV|CED|CIN|CLA|CLI|CMP|CNI|CNT|COD|COM|COT|CPI|CPS|CPT|CST|CTA|CUX|DAM|DFN|DGS|DII|DIM|DLI|DLM|DMS|DOC|DRD|DSG|DSI|DTM|EDT|EFI|ELM|ELU|ELV|EMP|EQA|EQD|EQN|ERC|ERP|EVE|FCA|FII|FNS|FNT|FOR|FSQ|FTX|GDS|GEI|GID|GIN|GIR|GOR|GPO|GRU|HAN|HYN|ICD|IDE|IFD|IHC|IMD|IND|INP|INV|IRQ|LAN|LIN|LOC|MEA|MEM|MKS|MOA|MSG|MTD|NAD|NAT|PAC|PAI|PAS|PCC|PCD|PCI|PDI|PER|PGI|PIA|PNA|POC|PRC|PRI|PRV|PSD|PTY|PYT|QRS|QTY|QUA|QVR|RCS|REL|RFF|RJL|RNG|ROD|RSL|RTE|SAL|SCC|SCD|SEG|SEL|SEQ|SFI|SGP|SGU|SPR|SPS|STA|STC|STG|STS|TAX|TCC|TDT|TEM|TMD|TMP|TOD|TPL|TRU|TSR|UNB|UNZ|UNT|UGH|UGT|UNS|VLI",e="UNH",n="null|Infinity|NaN|undefined",r="",s="BY|SE|ON|INV|JP|UNOA",o=this.createKeywordMapper({"variable.language":"this",keyword:s,"entity.name.segment":t,"entity.name.header":e,"constant.language":n,"support.function":r},"identifier");this.$rules={start:[{token:"punctuation.operator",regex:"\\+.\\+"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:o,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+"},{token:"punctuation.operator",regex:"\\:|'"},{token:"identifier",regex:"\\:D\\:"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};o.metaData={fileTypes:["edi"],keyEquivalent:"^~E",name:"Edifact",scopeName:"source.edifact"},r.inherits(o,s),t.EdifactHighlightRules=o}),define("ace/mode/edifact",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/edifact_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./edifact_highlight_rules").EdifactHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.$id="ace/mode/edifact",this.snippetFileId="ace/snippets/edifact"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/edifact"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-eiffel.js b/www/js/ace/mode-eiffel.js deleted file mode 100644 index 83256b7a4..000000000 --- a/www/js/ace/mode-eiffel.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/eiffel_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="across|agent|alias|all|attached|as|assign|attribute|check|class|convert|create|debug|deferred|detachable|do|else|elseif|end|ensure|expanded|export|external|feature|from|frozen|if|inherit|inspect|invariant|like|local|loop|not|note|obsolete|old|once|Precursor|redefine|rename|require|rescue|retry|select|separate|some|then|undefine|until|variant|when",t="and|implies|or|xor",n="Void",r="True|False",i="Current|Result",s=this.createKeywordMapper({"constant.language":n,"constant.language.boolean":r,"variable.language":i,"keyword.operator":t,keyword:e},"identifier",!0),o=/(?:[^"%\b\f\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)+?/;this.$rules={start:[{token:"string.quoted.other",regex:/"\[/,next:"aligned_verbatim_string"},{token:"string.quoted.other",regex:/"\{/,next:"non-aligned_verbatim_string"},{token:"string.quoted.double",regex:/"(?:[^%\b\f\n\r\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)*?"/},{token:"comment.line.double-dash",regex:/--.*/},{token:"constant.character",regex:/'(?:[^%\b\f\n\r\t\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)'/},{token:"constant.numeric",regex:/\b0(?:[xX][\da-fA-F](?:_*[\da-fA-F])*|[cC][0-7](?:_*[0-7])*|[bB][01](?:_*[01])*)\b/},{token:"constant.numeric",regex:/(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/},{token:"paren.lparen",regex:/[\[({]|<<|\|\(/},{token:"paren.rparen",regex:/[\])}]|>>|\|\)/},{token:"keyword.operator",regex:/:=|->|\.(?=\w)|[;,:?]/},{token:"keyword.operator",regex:/\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~]/},{token:function(e){var t=s(e);return t==="identifier"&&e===e.toUpperCase()&&(t="entity.name.type"),t},regex:/[a-zA-Z][a-zA-Z\d_]*\b/},{token:"text",regex:/\s+/}],aligned_verbatim_string:[{token:"string",regex:/]"/,next:"start"},{token:"string",regex:o}],"non-aligned_verbatim_string":[{token:"string.quoted.other",regex:/}"/,next:"start"},{token:"string.quoted.other",regex:o}]}};r.inherits(s,i),t.EiffelHighlightRules=s}),define("ace/mode/eiffel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/eiffel_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./eiffel_highlight_rules").EiffelHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="--",this.$id="ace/mode/eiffel"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/eiffel"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-ejs.js b/www/js/ace/mode-ejs.js deleted file mode 100644 index a1f226abd..000000000 --- a/www/js/ace/mode-ejs.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.constantOtherSymbol={token:"constant.other.symbol.ruby",regex:"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"};t.qString={token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},t.qqString={token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},t.tString={token:"string",regex:"[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"};var o=t.constantNumericHex={token:"constant.numeric",regex:"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"},u=t.constantNumericBinary={token:"constant.numeric",regex:/\b(0[bB][01](?:[01]|_(?=[01]))*)\b/},a=t.constantNumericDecimal={token:"constant.numeric",regex:/\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/},f=t.constantNumericOctal={token:"constant.numeric",regex:/\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/},l=t.constantNumericRational={token:"constant.numeric",regex:/\b([\d]+(?:[./][\d]+)?ri?)\b/},c=t.constantNumericComplex={token:"constant.numeric",regex:/\b([\d]i)\b/},h=t.constantNumericFloat={token:"constant.numeric",regex:"[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"},p=t.instanceVariable={token:"variable.instance",regex:"@{1,2}[a-zA-Z_\\d]+"},d=function(){var e="abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|private_class_method|remove_method|undef_method",t="alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend",n="true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION",r="$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",i=this.$keywords=this.createKeywordMapper({keyword:t,"constant.language":n,"variable.language":r,"support.function":e,"invalid.deprecated":"debugger"},"identifier"),d="\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})",v={"(":")","[":"]","{":"}","<":">","^":"^","|":"|","%":"%"};this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment.multiline",regex:"^=begin(?=$|\\s.*$)",next:"comment"},{token:"string.regexp",regex:/[/](?=.*\/)/,next:"regex"},[{token:["constant.other.symbol.ruby","string.start"],regex:/(:)?(")/,push:[{token:"constant.language.escape",regex:d},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/`/,push:[{token:"constant.language.escape",regex:d},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/`/,next:"pop"},{defaultToken:"string"}]},{token:["constant.other.symbol.ruby","string.start"],regex:/(:)?(')/,push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:/'/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/%[qwx]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="qStateWithoutInterpolation",this.token}},{token:"string.start",regex:/%[QWX]?([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="qStateWithInterpolation",this.token}},{token:"constant.other.symbol.ruby",regex:/%[si]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="sStateWithoutInterpolation",this.token}},{token:"constant.other.symbol.ruby",regex:/%[SI]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="sStateWithInterpolation",this.token}},{token:"string.regexp",regex:/%[r]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="rState",this.token}}],{token:"punctuation",regex:"::"},p,{token:"variable.global",regex:"[$][a-zA-Z_\\d]+"},{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]*"},{token:["punctuation.operator","support.function"],regex:/(\.)([a-zA-Z_\d]+)(?=\()/},{token:["punctuation.operator","identifier"],regex:/(\.)([a-zA-Z_][a-zA-Z_\d]*)/},{token:"string.character",regex:"\\B\\?(?:"+d+"|\\S)"},{token:"punctuation.operator",regex:/\?(?=.+:)/},l,c,s,o,h,u,a,f,{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.separator.key-value",regex:"=>"},{stateName:"heredoc",onMatch:function(e,t,n){var r=e[2]=="-"||e[2]=="~"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[3]),[{type:"constant",value:i[1]},{type:"string",value:i[2]},{type:"support.class",value:i[3]},{type:"string",value:i[4]}]},regex:"(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)",rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]",onMatch:function(e,t,n){return this.next="",e=="}"&&n.length>1&&n[1]!="start"&&(n.shift(),this.next=n.shift()),this.token}},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:/[?:,;.]/}],comment:[{token:"comment.multiline",regex:"^=end(?=$|\\s.*$)",next:"start"},{token:"comment",regex:".+"}],qStateWithInterpolation:[{token:"string.start",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"string"}},{token:"constant.language.escape",regex:d},{token:"constant.language.escape",regex:/\\./},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","string")}},{defaultToken:"string"}],qStateWithoutInterpolation:[{token:"string.start",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"string"}},{token:"constant.language.escape",regex:/\\['\\]/},{token:"constant.language.escape",regex:/\\./},{token:"string.end",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","string")}},{defaultToken:"string"}],sStateWithoutInterpolation:[{token:"constant.other.symbol.ruby",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.other.symbol.ruby"}},{token:"constant.other.symbol.ruby",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.other.symbol.ruby")}},{defaultToken:"constant.other.symbol.ruby"}],sStateWithInterpolation:[{token:"constant.other.symbol.ruby",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.other.symbol.ruby"}},{token:"constant.language.escape",regex:d},{token:"constant.language.escape",regex:/\\./},{token:"paren.start",regex:/#{/,push:"start"},{token:"constant.other.symbol.ruby",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.other.symbol.ruby")}},{defaultToken:"constant.other.symbol.ruby"}],rState:[{token:"string.regexp",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.language.escape"}},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.regexp",regex:/\//},{token:"string.regexp",regex:/[)\]>}^|%][imxouesn]*/,onMatch:function(e,t,n){return n.length&&e[0]===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.language.escape")}},{include:"regex"},{defaultToken:"string.regexp"}],regex:[{token:"regexp.keyword",regex:/\\[wWdDhHsS]/},{token:"constant.language.escape",regex:/\\[AGbBzZ]/},{token:"constant.language.escape",regex:/\\g<[a-zA-Z0-9]*>/},{token:["constant.language.escape","regexp.keyword","constant.language.escape"],regex:/(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/},{token:["constant.language.escape","invalid","constant.language.escape"],regex:/(\\p{\^?)([^/]*)(})/},{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:/[/][imxouesn]*/,next:"start"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"regexp.keyword",regex:/\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/},{token:"constant.language.escape",regex:/\[\^?/,push:"regex_character_class"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.keyword",regex:/\\[wWdDhHsS]/},{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:/&?&?\[\^?/,push:"regex_character_class"},{token:"constant.language.escape",regex:"]",next:"pop"},{token:"constant.language.escape",regex:"-"},{defaultToken:"string.regexp.characterclass"}]},this.normalizeRules()};r.inherits(d,i),t.RubyHighlightRules=d}),define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.indentKeywords={"class":1,def:1,module:1,"do":1,unless:1,"if":1,"while":1,"for":1,until:1,begin:1,"else":0,elsif:0,rescue:0,ensure:0,when:0,end:-1,"case":1,"=begin":1,"=end":-1},this.foldingStartMarker=/(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/,this.foldingStopMarker=/(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarker.test(r),s=this.foldingStopMarker.test(r);if(i&&!s){var o=r.match(this.foldingStartMarker);if(o[1]){if(o[1]=="if"||o[1]=="else"||o[1]=="while"||o[1]=="until"||o[1]=="unless"){if(o[1]=="else"&&/^\s*else\s*$/.test(r)===!1)return;if(/^\s*(?:if|else|while|until|unless)\s*/.test(r)===!1)return}if(o[1]=="when"&&/\sthen\s/.test(r)===!0)return;if(e.getTokenAt(n,o.index+2).type==="keyword")return"start"}else{if(!o[3])return"start";if(e.getTokenAt(n,o.index+1).type==="comment.multiline")return"start"}}if(t!="markbeginend"||!s||i&&s)return"";var o=r.match(this.foldingStopMarker);if(o[3]==="end"){if(e.getTokenAt(n,o.index+1).type==="keyword")return"end"}else{if(!o[1])return"end";if(e.getTokenAt(n,o.index+1).type==="comment.multiline")return"end"}},this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]||i[3]?this.rubyBlock(e,n,i.index+2):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[3]==="end"&&e.getTokenAt(n,i.index+1).type==="keyword"?this.rubyBlock(e,n,i.index+1):i[1]==="=end"&&e.getTokenAt(n,i.index+1).type==="comment.multiline"?this.rubyBlock(e,n,i.index+1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.rubyBlock=function(e,t,n,r){var i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!="keyword"&&u.type!="comment.multiline")return;var a=u.value,f=e.getLine(t);switch(u.value){case"if":case"unless":case"while":case"until":var l=new RegExp("^\\s*"+u.value);if(!l.test(f))return;var c=this.indentKeywords[a];break;case"when":if(/\sthen\s/.test(f))return;case"elsif":case"rescue":case"ensure":var c=1;break;case"else":var l=new RegExp("^\\s*"+u.value+"\\s*$");if(!l.test(f))return;var c=1;break;default:var c=this.indentKeywords[a]}var h=[a];if(!c)return;var p=c===-1?e.getLine(t-1).length:e.getLine(t).length,d=t,v=[];v.push(i.getCurrentTokenRange()),i.step=c===-1?i.stepBackward:i.stepForward;if(u.type=="comment.multiline")while(u=i.step()){if(u.type!=="comment.multiline")continue;if(c==1){p=6;if(u.value=="=end")break}else if(u.value=="=begin")break}else while(u=i.step()){var m=!1;if(u.type!=="keyword")continue;var g=c*this.indentKeywords[u.value];f=e.getLine(i.getCurrentTokenRow());switch(u.value){case"do":for(var y=i.$tokenIndex-1;y>=0;y--){var b=i.$rowTokens[y];if(b&&(b.value=="while"||b.value=="until"||b.value=="for")){g=0;break}}break;case"else":var l=new RegExp("^\\s*"+u.value+"\\s*$");if(!l.test(f)||a=="case")g=0,m=!0;break;case"if":case"unless":case"while":case"until":var l=new RegExp("^\\s*"+u.value);l.test(f)||(g=0,m=!0);break;case"when":if(/\sthen\s/.test(f)||a=="case")g=0,m=!0}if(g>0)h.unshift(u.value);else if(g<=0&&m===!1){h.shift();if(!h.length){if((a=="while"||a=="until"||a=="for")&&u.value!="do")break;if(u.value=="do"&&c==-1&&g!=0)break;if(u.value!="do")break}g===0&&h.unshift(u.value)}}if(!u)return null;if(r)return v.push(i.getCurrentTokenRange()),v;var t=i.getCurrentTokenRow();if(c===-1){if(u.type==="comment.multiline")var w=6;else var w=e.getLine(t).length;return new s(t,w,d-1,p)}return new s(d,p,t-1,e.getLine(t-1).length)}}.call(u.prototype)}),define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/ruby"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ruby_highlight_rules").RubyHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./folding/ruby").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new a,this.indentKeywords=this.foldingRules.indentKeywords};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/),u=t.match(/^\s*(class|def|module)\s.*$/),a=t.match(/.*do(\s*|\s+\|.*\|\s*)$/),f=t.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/);if(o||u||a||f)r+=n}return r},this.checkOutdent=function(e,t,n){return/^\s+(end|else|rescue|ensure)$/.test(t+n)||this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){var r=t.getLine(n);if(/}/.test(r))return this.$outdent.autoOutdent(t,n);var i=this.$getIndent(r),s=t.getLine(n-1),o=this.$getIndent(s),a=t.getTabString();o.length<=i.length&&i.slice(-a.length)==a&&t.remove(new u(n,i.length-a.length,n,i.length))},this.getMatching=function(e,t,n){if(t==undefined){var r=e.selection.lead;n=r.column,t=r.row}var i=e.getTokenAt(t,n);if(i&&i.value in this.indentKeywords)return this.foldingRules.rubyBlock(e,t,n,!0)},this.$id="ace/mode/ruby",this.snippetFileId="ace/snippets/ruby"}.call(f.prototype),t.Mode=f}),define("ace/mode/ejs",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/javascript_highlight_rules","ace/lib/oop","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=function(e,t){i.call(this),e||(e="(?:<%|<\\?|{{)"),t||(t="(?:%>|\\?>|}})");for(var n in this.$rules)this.$rules[n].unshift({token:"markup.list.meta.tag",regex:e+"(?![>}])[-=]?",push:"ejs-start"});this.embedRules((new s({jsx:!1})).getRules(),"ejs-",[{token:"markup.list.meta.tag",regex:"-?"+t,next:"pop"},{token:"comment",regex:"//.*?"+t,next:"pop"}]),this.normalizeRules()};r.inherits(o,i),t.EjsHighlightRules=o;var r=e("../lib/oop"),u=e("./html").Mode,a=e("./javascript").Mode,f=e("./css").Mode,l=e("./ruby").Mode,c=function(){u.call(this),this.HighlightRules=o,this.createModeDelegates({"js-":a,"css-":f,"ejs-":a})};r.inherits(c,u),function(){this.$id="ace/mode/ejs"}.call(c.prototype),t.Mode=c}); (function() { - window.require(["ace/mode/ejs"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-elixir.js b/www/js/ace/mode-elixir.js deleted file mode 100644 index 8b1a4726b..000000000 --- a/www/js/ace/mode-elixir.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["meta.module.elixir","keyword.control.module.elixir","meta.module.elixir","entity.name.type.module.elixir"],regex:"^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)"},{token:"comment.documentation.heredoc",regex:'@(?:module|type)?doc (?:~[a-z])?"""',push:[{token:"comment.documentation.heredoc",regex:'\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:'@(?:module|type)?doc ~[A-Z]"""',push:[{token:"comment.documentation.heredoc",regex:'\\s*"""',next:"pop"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:"@(?:module|type)?doc (?:~[a-z])?'''",push:[{token:"comment.documentation.heredoc",regex:"\\s*'''",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:"@(?:module|type)?doc ~[A-Z]'''",push:[{token:"comment.documentation.heredoc",regex:"\\s*'''",next:"pop"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.false",regex:"@(?:module|type)?doc false",comment:"@doc false is treated as documentation"},{token:"comment.documentation.string",regex:'@(?:module|type)?doc "',push:[{token:"comment.documentation.string",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.string"}],comment:"@doc with string is treated as documentation"},{token:"keyword.control.elixir",regex:"\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b"},{token:"punctuation.definition.constant.elixir",regex:":'",push:[{token:"punctuation.definition.constant.elixir",regex:"'",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"constant.other.symbol.single-quoted.elixir"}]},{token:"punctuation.definition.constant.elixir",regex:':"',push:[{token:"punctuation.definition.constant.elixir",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"constant.other.symbol.double-quoted.elixir"}]},{token:"punctuation.definition.string.begin.elixir",regex:"(?:''')",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?>''')",push:[{token:"punctuation.definition.string.end.elixir",regex:"^\\s*'''",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"support.function.variable.quoted.single.heredoc.elixir"}],comment:"Single-quoted heredocs"},{token:"punctuation.definition.string.begin.elixir",regex:"'",push:[{token:"punctuation.definition.string.end.elixir",regex:"'",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"support.function.variable.quoted.single.elixir"}],comment:"single quoted string (allows for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'(?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'(?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.heredoc.elixir"}],comment:"Double-quoted heredocs"},{token:"punctuation.definition.string.begin.elixir",regex:'"',push:[{token:"punctuation.definition.string.end.elixir",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.elixir"}],comment:"double quoted string (allows for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'~[a-z](?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'~[a-z](?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.heredoc.elixir"}],comment:"Double-quoted heredocs sigils"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\{",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\}[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\[",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\][a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\<",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\>[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\(",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\)[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z][^\\w]",push:[{token:"punctuation.definition.string.end.elixir",regex:"[^\\w][a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'~[A-Z](?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'~[A-Z](?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"Double-quoted heredocs sigils"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\{",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\}[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\[",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\][a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\<",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\>[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\(",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\)[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z][^\\w]",push:[{token:"punctuation.definition.string.end.elixir",regex:"[^\\w][a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:["punctuation.definition.constant.elixir","constant.other.symbol.elixir"],regex:"(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)",comment:"symbols"},{token:"punctuation.definition.constant.elixir",regex:"(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)",comment:"symbols"},{token:["punctuation.definition.comment.elixir","comment.line.number-sign.elixir"],regex:"(#)(.*)"},{token:"constant.numeric.elixir",regex:"\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?=?"},{token:"keyword.operator.bitwise.elixir",regex:"\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}"},{token:"keyword.operator.logical.elixir",regex:"!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b",originalRegex:"(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b"},{token:"keyword.operator.arithmetic.elixir",regex:"\\*|\\+|\\-|/"},{token:"keyword.operator.other.elixir",regex:"\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>"},{token:"keyword.operator.assignment.elixir",regex:"="},{token:"punctuation.separator.other.elixir",regex:":"},{token:"punctuation.separator.statement.elixir",regex:"\\;"},{token:"punctuation.separator.object.elixir",regex:","},{token:"punctuation.separator.method.elixir",regex:"\\."},{token:"punctuation.section.scope.elixir",regex:"\\{|\\}"},{token:"punctuation.section.array.elixir",regex:"\\[|\\]"},{token:"punctuation.section.function.elixir",regex:"\\(|\\)"}],"#escaped_char":[{token:"constant.character.escape.elixir",regex:"\\\\(?:x[\\da-fA-F]{1,2}|.)"}],"#interpolated_elixir":[{token:["source.elixir.embedded.source","source.elixir.embedded.source.empty"],regex:"(#\\{)(\\})"},{todo:{token:"punctuation.section.embedded.elixir",regex:"#\\{",push:[{token:"punctuation.section.embedded.elixir",regex:"\\}",next:"pop"},{include:"#nest_curly_and_self"},{include:"$self"},{defaultToken:"source.elixir.embedded.source"}]}}],"#nest_curly_and_self":[{token:"punctuation.section.scope.elixir",regex:"\\{",push:[{token:"punctuation.section.scope.elixir",regex:"\\}",next:"pop"},{include:"#nest_curly_and_self"}]},{include:"$self"}],"#regex_sub":[{include:"#interpolated_elixir"},{include:"#escaped_char"},{token:["punctuation.definition.arbitrary-repitition.elixir","string.regexp.arbitrary-repitition.elixir","string.regexp.arbitrary-repitition.elixir","punctuation.definition.arbitrary-repitition.elixir"],regex:"(\\{)(\\d+)((?:,\\d+)?)(\\})"},{token:"punctuation.definition.character-class.elixir",regex:"\\[(?:\\^?\\])?",push:[{token:"punctuation.definition.character-class.elixir",regex:"\\]",next:"pop"},{include:"#escaped_char"},{defaultToken:"string.regexp.character-class.elixir"}]},{token:"punctuation.definition.group.elixir",regex:"\\(",push:[{token:"punctuation.definition.group.elixir",regex:"\\)",next:"pop"},{include:"#regex_sub"},{defaultToken:"string.regexp.group.elixir"}]},{token:["punctuation.definition.comment.elixir","comment.line.number-sign.elixir"],regex:"(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)",originalRegex:"(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",comment:"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags."}]},this.normalizeRules()};s.metaData={comment:"Textmate bundle for Elixir Programming Language.",fileTypes:["ex","exs"],firstLineMatch:"^#!/.*\\belixir",foldingStartMarker:"(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$",foldingStopMarker:"^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)",keyEquivalent:"^~E",name:"Elixir",scopeName:"source.elixir"},r.inherits(s,i),t.ElixirHighlightRules=s}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u|<-|\u2192/},{token:"keyword.operator",regex:/[-!#$%&*+.\/<=>?@\\^|~:\u03BB\u2192]+/},{token:"operator.punctuation",regex:/[,;`]/},{regex:r+i+"+\\.?",token:function(e){return e[e.length-1]=="."?"entity.name.function":"constant.language"}},{regex:"^"+n+i+"+",token:function(e){return"constant.language"}},{token:e,regex:"[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b"},{regex:"{-#?",token:"comment.start",onMatch:function(e,t,n){return this.next=e.length==2?"blockComment":"docComment",this.token}},{token:"variable.language",regex:/\[markdown\|/,next:"markdown"},{token:"paren.lparen",regex:/[\[({]/},{token:"paren.rparen",regex:/[\])}]/}],markdown:[{regex:/\|\]/,next:"start"},{defaultToken:"string"}],blockComment:[{regex:"{-",token:"comment.start",push:"blockComment"},{regex:"-}",token:"comment.end",next:"pop"},{defaultToken:"comment"}],docComment:[{regex:"{-",token:"comment.start",push:"docComment"},{regex:"-}",token:"comment.end",next:"pop"},{defaultToken:"doc.comment"}],string:[{token:"constant.language.escape",regex:t},{token:"text",regex:/\\(\s|$)/,next:"stringGap"},{token:"string.end",regex:'"',next:"start"},{defaultToken:"string"}],stringGap:[{token:"text",regex:/\\/,next:"string"},{token:"error",regex:"",next:"start"}]},this.normalizeRules()};r.inherits(s,i),t.ElmHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/elm",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elm_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./elm_highlight_rules").ElmHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment={start:"{-",end:"-}",nestable:!0},this.$id="ace/mode/elm"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/elm"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-erlang.js b/www/js/ace/mode-erlang.js deleted file mode 100644 index 9e9f3dd6d..000000000 --- a/www/js/ace/mode-erlang.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/erlang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#module-directive"},{include:"#import-export-directive"},{include:"#behaviour-directive"},{include:"#record-directive"},{include:"#define-directive"},{include:"#macro-directive"},{include:"#directive"},{include:"#function"},{include:"#everything-else"}],"#atom":[{token:"punctuation.definition.symbol.begin.erlang",regex:"'",push:[{token:"punctuation.definition.symbol.end.erlang",regex:"'",next:"pop"},{token:["punctuation.definition.escape.erlang","constant.other.symbol.escape.erlang","punctuation.definition.escape.erlang","constant.other.symbol.escape.erlang","constant.other.symbol.escape.erlang"],regex:"(\\\\)(?:([bdefnrstv\\\\'\"])|(\\^)([@-_])|([0-7]{1,3}))"},{token:"invalid.illegal.atom.erlang",regex:"\\\\\\^?.?"},{defaultToken:"constant.other.symbol.quoted.single.erlang"}]},{token:"constant.other.symbol.unquoted.erlang",regex:"[a-z][a-zA-Z\\d@_]*"}],"#behaviour-directive":[{token:["meta.directive.behaviour.erlang","punctuation.section.directive.begin.erlang","meta.directive.behaviour.erlang","keyword.control.directive.behaviour.erlang","meta.directive.behaviour.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.behaviour.erlang","entity.name.type.class.behaviour.definition.erlang","meta.directive.behaviour.erlang","punctuation.definition.parameters.end.erlang","meta.directive.behaviour.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(behaviour)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)"}],"#binary":[{token:"punctuation.definition.binary.begin.erlang",regex:"<<",push:[{token:"punctuation.definition.binary.end.erlang",regex:">>",next:"pop"},{token:["punctuation.separator.binary.erlang","punctuation.separator.value-size.erlang"],regex:"(,)|(:)"},{include:"#internal-type-specifiers"},{include:"#everything-else"},{defaultToken:"meta.structure.binary.erlang"}]}],"#character":[{token:["punctuation.definition.character.erlang","punctuation.definition.escape.erlang","constant.character.escape.erlang","punctuation.definition.escape.erlang","constant.character.escape.erlang","constant.character.escape.erlang"],regex:"(\\$)(\\\\)(?:([bdefnrstv\\\\'\"])|(\\^)([@-_])|([0-7]{1,3}))"},{token:"invalid.illegal.character.erlang",regex:"\\$\\\\\\^?.?"},{token:["punctuation.definition.character.erlang","constant.character.erlang"],regex:"(\\$)(\\S)"},{token:"invalid.illegal.character.erlang",regex:"\\$.?"}],"#comment":[{token:"punctuation.definition.comment.erlang",regex:"%.*$",push_:[{token:"comment.line.percentage.erlang",regex:"$",next:"pop"},{defaultToken:"comment.line.percentage.erlang"}]}],"#define-directive":[{token:["meta.directive.define.erlang","punctuation.section.directive.begin.erlang","meta.directive.define.erlang","keyword.control.directive.define.erlang","meta.directive.define.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.define.erlang","entity.name.function.macro.definition.erlang","meta.directive.define.erlang","punctuation.separator.parameters.erlang"],regex:"^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(,)",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.define.erlang","punctuation.section.directive.end.erlang"],regex:"(\\))(\\s*)(\\.)",next:"pop"},{include:"#everything-else"},{defaultToken:"meta.directive.define.erlang"}]},{token:"meta.directive.define.erlang",regex:"(?=^\\s*-\\s*define\\s*\\(\\s*[a-zA-Z\\d@_]+\\s*\\()",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.define.erlang","punctuation.section.directive.end.erlang"],regex:"(\\))(\\s*)(\\.)",next:"pop"},{token:["text","punctuation.section.directive.begin.erlang","text","keyword.control.directive.define.erlang","text","punctuation.definition.parameters.begin.erlang","text","entity.name.function.macro.definition.erlang","text","punctuation.definition.parameters.begin.erlang"],regex:"^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\()",push:[{token:["punctuation.definition.parameters.end.erlang","text","punctuation.separator.parameters.erlang"],regex:"(\\))(\\s*)(,)",next:"pop"},{token:"punctuation.separator.parameters.erlang",regex:","},{include:"#everything-else"}]},{token:"punctuation.separator.define.erlang",regex:"\\|\\||\\||:|;|,|\\.|->"},{include:"#everything-else"},{defaultToken:"meta.directive.define.erlang"}]}],"#directive":[{token:["meta.directive.erlang","punctuation.section.directive.begin.erlang","meta.directive.erlang","keyword.control.directive.erlang","meta.directive.erlang","punctuation.definition.parameters.begin.erlang"],regex:"^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\(?)",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.erlang","punctuation.section.directive.end.erlang"],regex:"(\\)?)(\\s*)(\\.)",next:"pop"},{include:"#everything-else"},{defaultToken:"meta.directive.erlang"}]},{token:["meta.directive.erlang","punctuation.section.directive.begin.erlang","meta.directive.erlang","keyword.control.directive.erlang","meta.directive.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\.)"}],"#everything-else":[{include:"#comment"},{include:"#record-usage"},{include:"#macro-usage"},{include:"#expression"},{include:"#keyword"},{include:"#textual-operator"},{include:"#function-call"},{include:"#tuple"},{include:"#list"},{include:"#binary"},{include:"#parenthesized-expression"},{include:"#character"},{include:"#number"},{include:"#atom"},{include:"#string"},{include:"#symbolic-operator"},{include:"#variable"}],"#expression":[{token:"keyword.control.if.erlang",regex:"\\bif\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.if.erlang"}]},{token:"keyword.control.case.erlang",regex:"\\bcase\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.case.erlang"}]},{token:"keyword.control.receive.erlang",regex:"\\breceive\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.receive.erlang"}]},{token:["keyword.control.fun.erlang","text","entity.name.type.class.module.erlang","text","punctuation.separator.module-function.erlang","text","entity.name.function.erlang","text","punctuation.separator.function-arity.erlang"],regex:"\\b(fun)(\\s*)(?:([a-z][a-zA-Z\\d@_]*)(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*)(\\s*)(/)"},{token:"keyword.control.fun.erlang",regex:"\\bfun\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{token:"text",regex:"(?=\\()",push:[{token:"punctuation.separator.clauses.erlang",regex:";|(?=\\bend\\b)",next:"pop"},{include:"#internal-function-parts"}]},{include:"#everything-else"},{defaultToken:"meta.expression.fun.erlang"}]},{token:"keyword.control.try.erlang",regex:"\\btry\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.try.erlang"}]},{token:"keyword.control.begin.erlang",regex:"\\bbegin\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.begin.erlang"}]},{token:"keyword.control.query.erlang",regex:"\\bquery\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#everything-else"},{defaultToken:"meta.expression.query.erlang"}]}],"#function":[{token:["meta.function.erlang","entity.name.function.definition.erlang","meta.function.erlang"],regex:"^(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(?=\\()",push:[{token:"punctuation.terminator.function.erlang",regex:"\\.",next:"pop"},{token:["text","entity.name.function.erlang","text"],regex:"^(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(?=\\()"},{token:"text",regex:"(?=\\()",push:[{token:"punctuation.separator.clauses.erlang",regex:";|(?=\\.)",next:"pop"},{include:"#parenthesized-expression"},{include:"#internal-function-parts"}]},{include:"#everything-else"},{defaultToken:"meta.function.erlang"}]}],"#function-call":[{token:"meta.function-call.erlang",regex:"(?=(?:[a-z][a-zA-Z\\d@_]*|'[^']*')\\s*(?:\\(|:\\s*(?:[a-z][a-zA-Z\\d@_]*|'[^']*')\\s*\\())",push:[{token:"punctuation.definition.parameters.end.erlang",regex:"\\)",next:"pop"},{token:["entity.name.type.class.module.erlang","text","punctuation.separator.module-function.erlang","text","entity.name.function.guard.erlang","text","punctuation.definition.parameters.begin.erlang"],regex:"(?:(erlang)(\\s*)(:)(\\s*))?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)(\\s*)(\\()",push:[{token:"text",regex:"(?=\\))",next:"pop"},{token:"punctuation.separator.parameters.erlang",regex:","},{include:"#everything-else"}]},{token:["entity.name.type.class.module.erlang","text","punctuation.separator.module-function.erlang","text","entity.name.function.erlang","text","punctuation.definition.parameters.begin.erlang"],regex:"(?:([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(\\()",push:[{token:"text",regex:"(?=\\))",next:"pop"},{token:"punctuation.separator.parameters.erlang",regex:","},{include:"#everything-else"}]},{defaultToken:"meta.function-call.erlang"}]}],"#import-export-directive":[{token:["meta.directive.import.erlang","punctuation.section.directive.begin.erlang","meta.directive.import.erlang","keyword.control.directive.import.erlang","meta.directive.import.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.import.erlang","entity.name.type.class.module.erlang","meta.directive.import.erlang","punctuation.separator.parameters.erlang"],regex:"^(\\s*)(-)(\\s*)(import)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(,)",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.import.erlang","punctuation.section.directive.end.erlang"],regex:"(\\))(\\s*)(\\.)",next:"pop"},{include:"#internal-function-list"},{defaultToken:"meta.directive.import.erlang"}]},{token:["meta.directive.export.erlang","punctuation.section.directive.begin.erlang","meta.directive.export.erlang","keyword.control.directive.export.erlang","meta.directive.export.erlang","punctuation.definition.parameters.begin.erlang"],regex:"^(\\s*)(-)(\\s*)(export)(\\s*)(\\()",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.export.erlang","punctuation.section.directive.end.erlang"],regex:"(\\))(\\s*)(\\.)",next:"pop"},{include:"#internal-function-list"},{defaultToken:"meta.directive.export.erlang"}]}],"#internal-expression-punctuation":[{token:["punctuation.separator.clause-head-body.erlang","punctuation.separator.clauses.erlang","punctuation.separator.expressions.erlang"],regex:"(->)|(;)|(,)"}],"#internal-function-list":[{token:"punctuation.definition.list.begin.erlang",regex:"\\[",push:[{token:"punctuation.definition.list.end.erlang",regex:"\\]",next:"pop"},{token:["entity.name.function.erlang","text","punctuation.separator.function-arity.erlang"],regex:"([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(/)",push:[{token:"punctuation.separator.list.erlang",regex:",|(?=\\])",next:"pop"},{include:"#everything-else"}]},{include:"#everything-else"},{defaultToken:"meta.structure.list.function.erlang"}]}],"#internal-function-parts":[{token:"text",regex:"(?=\\()",push:[{token:"punctuation.separator.clause-head-body.erlang",regex:"->",next:"pop"},{token:"punctuation.definition.parameters.begin.erlang",regex:"\\(",push:[{token:"punctuation.definition.parameters.end.erlang",regex:"\\)",next:"pop"},{token:"punctuation.separator.parameters.erlang",regex:","},{include:"#everything-else"}]},{token:"punctuation.separator.guards.erlang",regex:",|;"},{include:"#everything-else"}]},{token:"punctuation.separator.expressions.erlang",regex:","},{include:"#everything-else"}],"#internal-record-body":[{token:"punctuation.definition.class.record.begin.erlang",regex:"\\{",push:[{token:"meta.structure.record.erlang",regex:"(?=\\})",next:"pop"},{token:["variable.other.field.erlang","variable.language.omitted.field.erlang","text","keyword.operator.assignment.erlang"],regex:"(?:([a-z][a-zA-Z\\d@_]*|'[^']*')|(_))(\\s*)(=|::)",push:[{token:"punctuation.separator.class.record.erlang",regex:",|(?=\\})",next:"pop"},{include:"#everything-else"}]},{token:["variable.other.field.erlang","text","punctuation.separator.class.record.erlang"],regex:"([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)((?:,)?)"},{include:"#everything-else"},{defaultToken:"meta.structure.record.erlang"}]}],"#internal-type-specifiers":[{token:"punctuation.separator.value-type.erlang",regex:"/",push:[{token:"text",regex:"(?=,|:|>>)",next:"pop"},{token:["storage.type.erlang","storage.modifier.signedness.erlang","storage.modifier.endianness.erlang","storage.modifier.unit.erlang","punctuation.separator.type-specifiers.erlang"],regex:"(integer|float|binary|bytes|bitstring|bits)|(signed|unsigned)|(big|little|native)|(unit)|(-)"}]}],"#keyword":[{token:"keyword.control.erlang",regex:"\\b(?:after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\\b"}],"#list":[{token:"punctuation.definition.list.begin.erlang",regex:"\\[",push:[{token:"punctuation.definition.list.end.erlang",regex:"\\]",next:"pop"},{token:"punctuation.separator.list.erlang",regex:"\\||\\|\\||,"},{include:"#everything-else"},{defaultToken:"meta.structure.list.erlang"}]}],"#macro-directive":[{token:["meta.directive.ifdef.erlang","punctuation.section.directive.begin.erlang","meta.directive.ifdef.erlang","keyword.control.directive.ifdef.erlang","meta.directive.ifdef.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.ifdef.erlang","entity.name.function.macro.erlang","meta.directive.ifdef.erlang","punctuation.definition.parameters.end.erlang","meta.directive.ifdef.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(ifdef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)"},{token:["meta.directive.ifndef.erlang","punctuation.section.directive.begin.erlang","meta.directive.ifndef.erlang","keyword.control.directive.ifndef.erlang","meta.directive.ifndef.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.ifndef.erlang","entity.name.function.macro.erlang","meta.directive.ifndef.erlang","punctuation.definition.parameters.end.erlang","meta.directive.ifndef.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(ifndef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)"},{token:["meta.directive.undef.erlang","punctuation.section.directive.begin.erlang","meta.directive.undef.erlang","keyword.control.directive.undef.erlang","meta.directive.undef.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.undef.erlang","entity.name.function.macro.erlang","meta.directive.undef.erlang","punctuation.definition.parameters.end.erlang","meta.directive.undef.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(undef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)"}],"#macro-usage":[{token:["keyword.operator.macro.erlang","meta.macro-usage.erlang","entity.name.function.macro.erlang"],regex:"(\\?\\??)(\\s*)([a-zA-Z\\d@_]+)"}],"#module-directive":[{token:["meta.directive.module.erlang","punctuation.section.directive.begin.erlang","meta.directive.module.erlang","keyword.control.directive.module.erlang","meta.directive.module.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.module.erlang","entity.name.type.class.module.definition.erlang","meta.directive.module.erlang","punctuation.definition.parameters.end.erlang","meta.directive.module.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(module)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)"}],"#number":[{token:"text",regex:"(?=\\d)",push:[{token:"text",regex:"(?!\\d)",next:"pop"},{token:["constant.numeric.float.erlang","punctuation.separator.integer-float.erlang","constant.numeric.float.erlang","punctuation.separator.float-exponent.erlang"],regex:"(\\d+)(\\.)(\\d+)((?:[eE][\\+\\-]?\\d+)?)"},{token:["constant.numeric.integer.binary.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.binary.erlang"],regex:"(2)(#)([0-1]+)"},{token:["constant.numeric.integer.base-3.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-3.erlang"],regex:"(3)(#)([0-2]+)"},{token:["constant.numeric.integer.base-4.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-4.erlang"],regex:"(4)(#)([0-3]+)"},{token:["constant.numeric.integer.base-5.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-5.erlang"],regex:"(5)(#)([0-4]+)"},{token:["constant.numeric.integer.base-6.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-6.erlang"],regex:"(6)(#)([0-5]+)"},{token:["constant.numeric.integer.base-7.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-7.erlang"],regex:"(7)(#)([0-6]+)"},{token:["constant.numeric.integer.octal.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.octal.erlang"],regex:"(8)(#)([0-7]+)"},{token:["constant.numeric.integer.base-9.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-9.erlang"],regex:"(9)(#)([0-8]+)"},{token:["constant.numeric.integer.decimal.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.decimal.erlang"],regex:"(10)(#)(\\d+)"},{token:["constant.numeric.integer.base-11.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-11.erlang"],regex:"(11)(#)([\\daA]+)"},{token:["constant.numeric.integer.base-12.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-12.erlang"],regex:"(12)(#)([\\da-bA-B]+)"},{token:["constant.numeric.integer.base-13.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-13.erlang"],regex:"(13)(#)([\\da-cA-C]+)"},{token:["constant.numeric.integer.base-14.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-14.erlang"],regex:"(14)(#)([\\da-dA-D]+)"},{token:["constant.numeric.integer.base-15.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-15.erlang"],regex:"(15)(#)([\\da-eA-E]+)"},{token:["constant.numeric.integer.hexadecimal.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.hexadecimal.erlang"],regex:"(16)(#)([\\da-fA-F]+)"},{token:["constant.numeric.integer.base-17.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-17.erlang"],regex:"(17)(#)([\\da-gA-G]+)"},{token:["constant.numeric.integer.base-18.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-18.erlang"],regex:"(18)(#)([\\da-hA-H]+)"},{token:["constant.numeric.integer.base-19.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-19.erlang"],regex:"(19)(#)([\\da-iA-I]+)"},{token:["constant.numeric.integer.base-20.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-20.erlang"],regex:"(20)(#)([\\da-jA-J]+)"},{token:["constant.numeric.integer.base-21.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-21.erlang"],regex:"(21)(#)([\\da-kA-K]+)"},{token:["constant.numeric.integer.base-22.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-22.erlang"],regex:"(22)(#)([\\da-lA-L]+)"},{token:["constant.numeric.integer.base-23.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-23.erlang"],regex:"(23)(#)([\\da-mA-M]+)"},{token:["constant.numeric.integer.base-24.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-24.erlang"],regex:"(24)(#)([\\da-nA-N]+)"},{token:["constant.numeric.integer.base-25.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-25.erlang"],regex:"(25)(#)([\\da-oA-O]+)"},{token:["constant.numeric.integer.base-26.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-26.erlang"],regex:"(26)(#)([\\da-pA-P]+)"},{token:["constant.numeric.integer.base-27.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-27.erlang"],regex:"(27)(#)([\\da-qA-Q]+)"},{token:["constant.numeric.integer.base-28.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-28.erlang"],regex:"(28)(#)([\\da-rA-R]+)"},{token:["constant.numeric.integer.base-29.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-29.erlang"],regex:"(29)(#)([\\da-sA-S]+)"},{token:["constant.numeric.integer.base-30.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-30.erlang"],regex:"(30)(#)([\\da-tA-T]+)"},{token:["constant.numeric.integer.base-31.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-31.erlang"],regex:"(31)(#)([\\da-uA-U]+)"},{token:["constant.numeric.integer.base-32.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-32.erlang"],regex:"(32)(#)([\\da-vA-V]+)"},{token:["constant.numeric.integer.base-33.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-33.erlang"],regex:"(33)(#)([\\da-wA-W]+)"},{token:["constant.numeric.integer.base-34.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-34.erlang"],regex:"(34)(#)([\\da-xA-X]+)"},{token:["constant.numeric.integer.base-35.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-35.erlang"],regex:"(35)(#)([\\da-yA-Y]+)"},{token:["constant.numeric.integer.base-36.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-36.erlang"],regex:"(36)(#)([\\da-zA-Z]+)"},{token:"invalid.illegal.integer.erlang",regex:"\\d+#[\\da-zA-Z]+"},{token:"constant.numeric.integer.decimal.erlang",regex:"\\d+"}]}],"#parenthesized-expression":[{token:"punctuation.section.expression.begin.erlang",regex:"\\(",push:[{token:"punctuation.section.expression.end.erlang",regex:"\\)",next:"pop"},{include:"#everything-else"},{defaultToken:"meta.expression.parenthesized"}]}],"#record-directive":[{token:["meta.directive.record.erlang","punctuation.section.directive.begin.erlang","meta.directive.record.erlang","keyword.control.directive.import.erlang","meta.directive.record.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.record.erlang","entity.name.type.class.record.definition.erlang","meta.directive.record.erlang","punctuation.separator.parameters.erlang"],regex:"^(\\s*)(-)(\\s*)(record)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(,)",push:[{token:["punctuation.definition.class.record.end.erlang","meta.directive.record.erlang","punctuation.definition.parameters.end.erlang","meta.directive.record.erlang","punctuation.section.directive.end.erlang"],regex:"(\\})(\\s*)(\\))(\\s*)(\\.)",next:"pop"},{include:"#internal-record-body"},{defaultToken:"meta.directive.record.erlang"}]}],"#record-usage":[{token:["keyword.operator.record.erlang","meta.record-usage.erlang","entity.name.type.class.record.erlang","meta.record-usage.erlang","punctuation.separator.record-field.erlang","meta.record-usage.erlang","variable.other.field.erlang"],regex:"(#)(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(\\.)(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')"},{token:["keyword.operator.record.erlang","meta.record-usage.erlang","entity.name.type.class.record.erlang"],regex:"(#)(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')",push:[{token:"punctuation.definition.class.record.end.erlang",regex:"\\}",next:"pop"},{include:"#internal-record-body"},{defaultToken:"meta.record-usage.erlang"}]}],"#string":[{token:"punctuation.definition.string.begin.erlang",regex:'"',push:[{token:"punctuation.definition.string.end.erlang",regex:'"',next:"pop"},{token:["punctuation.definition.escape.erlang","constant.character.escape.erlang","punctuation.definition.escape.erlang","constant.character.escape.erlang","constant.character.escape.erlang"],regex:"(\\\\)(?:([bdefnrstv\\\\'\"])|(\\^)([@-_])|([0-7]{1,3}))"},{token:"invalid.illegal.string.erlang",regex:"\\\\\\^?.?"},{token:["punctuation.definition.erlang","punctuation.separator.erlang","constant.other.erlang","punctuation.separator.erlang","punctuation.separator.erlang","constant.other.erlang","punctuation.separator.erlang","punctuation.separator.erlang","punctuation.separator.erlang","constant.other.erlang","constant.other.erlang"],regex:"(~)(?:((?:\\-)?)(\\d+)|(\\*))?(?:(\\.)(?:(\\d+)|(\\*)))?(?:(\\.)(?:(\\*)|(.)))?([~cfegswpWPBX#bx\\+ni])"},{token:["punctuation.definition.erlang","punctuation.separator.erlang","constant.other.erlang","constant.other.erlang"],regex:"(~)((?:\\*)?)((?:\\d+)?)([~du\\-#fsacl])"},{token:"invalid.illegal.string.erlang",regex:"~.?"},{defaultToken:"string.quoted.double.erlang"}]}],"#symbolic-operator":[{token:"keyword.operator.symbolic.erlang",regex:"\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::"}],"#textual-operator":[{token:"keyword.operator.textual.erlang",regex:"\\b(?:andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\b"}],"#tuple":[{token:"punctuation.definition.tuple.begin.erlang",regex:"\\{",push:[{token:"punctuation.definition.tuple.end.erlang",regex:"\\}",next:"pop"},{token:"punctuation.separator.tuple.erlang",regex:","},{include:"#everything-else"},{defaultToken:"meta.structure.tuple.erlang"}]}],"#variable":[{token:["variable.other.erlang","variable.language.omitted.erlang"],regex:"(_[a-zA-Z\\d@_]+|[A-Z][a-zA-Z\\d@_]*)|(_)"}]},this.normalizeRules()};s.metaData={comment:"The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp",fileTypes:["erl","hrl"],keyEquivalent:"^~E",name:"Erlang",scopeName:"source.erlang"},r.inherits(s,i),t.ErlangHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/erlang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/erlang_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./erlang_highlight_rules").ErlangHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="%",this.blockComment=null,this.$id="ace/mode/erlang",this.snippetFileId="ace/snippets/erlang"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/erlang"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-flix.js b/www/js/ace/mode-flix.js deleted file mode 100644 index d58072d44..000000000 --- a/www/js/ace/mode-flix.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/flix_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="use|checked_cast|checked_ecast|unchecked_cast|masked_cast|as|discard|from|into|inject|project|solve|query|where|select|force|import|region|red|deref",t="choose|debug|do|for|forA|forM|foreach|yield|if|else|case|match|typematch|try|catch|resume|spawn|par|branch|jumpto",n="not|and|or|fix",r="eff|def|law|enum|case|type|alias|class|instance|mod|let",i="with|without|opaque|lazy|lawful|pub|override|sealed|static",s="Unit|Bool|Char|Float32|Float64|Int8|Int16|Int32|Int64|BigInt|String",o=this.createKeywordMapper({keyword:e,"keyword.control":t,"keyword.operator":n,"storage.type":r,"storage.modifier":i,"support.type":s},"identifier");this.$rules={start:[{token:"comment.line",regex:"\\/\\/.*$"},{token:"comment.block",regex:"\\/\\*",next:"comment"},{token:"string",regex:'"',next:"string"},{token:"string.regexp",regex:'regex"',next:"regex"},{token:"constant.character",regex:"'",next:"char"},{token:"constant.numeric",regex:"0x[a-fA-F0-9](_*[a-fA-F0-9])*(i8|i16|i32|i64|ii)?\\b"},{token:"constant.numeric",regex:"[0-9](_*[0-9])*\\.[0-9](_*[0-9])*(f32|f64)?\\b"},{token:"constant.numeric",regex:"[0-9](_*[0-9])*(i8|i16|i32|i64|ii)?\\b"},{token:"constant.language.boolean",regex:"(true|false)\\b"},{token:"constant.language",regex:"null\\b"},{token:"keyword.operator",regex:"\\->|~>|<\\-|=>"},{token:"storage.modifier",regex:"@(Deprecated|Experimental|Internal|ParallelWhenPure|Parallel|LazyWhenPure|Lazy|Skip|Test)\\b"},{token:"keyword",regex:"(\\?\\?\\?|\\?[a-zA-Z0-9]+)"},{token:o,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment.block",regex:"\\*\\/",next:"start"},{defaultToken:"comment.block"}],string:[{token:"constant.character.escape",regex:"\\\\(u[0-9a-fA-F]{4})"},{token:"constant.character.escape",regex:"\\\\."},{token:"string",regex:'"',next:"start"},{token:"string",regex:'[^"\\\\]+'}],regex:[{token:"constant.character.escape",regex:"\\\\(u[0-9a-fA-F]{4})"},{token:"constant.character.escape",regex:"\\\\."},{token:"string.regexp",regex:'"',next:"start"},{token:"string.regexp",regex:'[^"\\\\]+'}],"char":[{token:"constant.character.escape",regex:"\\\\(u[0-9a-fA-F]{4})"},{token:"constant.character.escape",regex:"\\\\."},{token:"constant.character",regex:"'",next:"start"},{token:"constant.character",regex:"[^'\\\\]+"}]}};r.inherits(s,i),t.FlixHighlightRules=s}),define("ace/mode/flix",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/flix_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./flix_highlight_rules").FlixHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/flix"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/flix"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-forth.js b/www/js/ace/mode-forth.js deleted file mode 100644 index d946dd9b7..000000000 --- a/www/js/ace/mode-forth.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/forth_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#forth"}],"#comment":[{token:"comment.line.double-dash.forth",regex:"(?:^|\\s)--\\s.*$",comment:"line comments for iForth"},{token:"comment.line.backslash.forth",regex:"(?:^|\\s)\\\\[\\s\\S]*$",comment:"ANSI line comment"},{token:"comment.line.backslash-g.forth",regex:"(?:^|\\s)\\\\[Gg] .*$",comment:"gForth line comment"},{token:"comment.block.forth",regex:"(?:^|\\s)\\(\\*(?=\\s|$)",push:[{token:"comment.block.forth",regex:"(?:^|\\s)\\*\\)(?=\\s|$)",next:"pop"},{defaultToken:"comment.block.forth"}],comment:"multiline comments for iForth"},{token:"comment.block.documentation.forth",regex:"\\bDOC\\b",caseInsensitive:!0,push:[{token:"comment.block.documentation.forth",regex:"\\bENDDOC\\b",caseInsensitive:!0,next:"pop"},{defaultToken:"comment.block.documentation.forth"}],comment:"documentation comments for iForth"},{token:"comment.line.parentheses.forth",regex:"(?:^|\\s)\\.?\\( [^)]*\\)",comment:"ANSI line comment"}],"#constant":[{token:"constant.language.forth",regex:"(?:^|\\s)(?:TRUE|FALSE|BL|PI|CELL|C/L|R/O|W/O|R/W)(?=\\s|$)",caseInsensitive:!0},{token:"constant.numeric.forth",regex:"(?:^|\\s)[$#%]?[-+]?[0-9]+(?:\\.[0-9]*e-?[0-9]+|\\.?[0-9a-fA-F]*)(?=\\s|$)"},{token:"constant.character.forth",regex:"(?:^|\\s)(?:[&^]\\S|(?:\"|')\\S(?:\"|'))(?=\\s|$)"}],"#forth":[{include:"#constant"},{include:"#comment"},{include:"#string"},{include:"#word"},{include:"#variable"},{include:"#storage"},{include:"#word-def"}],"#storage":[{token:"storage.type.forth",regex:"(?:^|\\s)(?:2CONSTANT|2VARIABLE|ALIAS|CONSTANT|CREATE-INTERPRET/COMPILE[:]?|CREATE|DEFER|FCONSTANT|FIELD|FVARIABLE|USER|VALUE|VARIABLE|VOCABULARY)(?=\\s|$)",caseInsensitive:!0}],"#string":[{token:"string.quoted.double.forth",regex:'(ABORT" |BREAK" |\\." |C" |0"|S\\\\?" )([^"]+")',caseInsensitive:!0},{token:"string.unquoted.forth",regex:"(?:INCLUDE|NEEDS|REQUIRE|USE)[ ]\\S+(?=\\s|$)",caseInsensitive:!0}],"#variable":[{token:"variable.language.forth",regex:"\\b(?:I|J)\\b",caseInsensitive:!0}],"#word":[{token:"keyword.control.immediate.forth",regex:"(?:^|\\s)\\[(?:\\?DO|\\+LOOP|AGAIN|BEGIN|DEFINED|DO|ELSE|ENDIF|FOR|IF|IFDEF|IFUNDEF|LOOP|NEXT|REPEAT|THEN|UNTIL|WHILE)\\](?=\\s|$)",caseInsensitive:!0},{token:"keyword.other.immediate.forth",regex:"(?:^|\\s)(?:COMPILE-ONLY|IMMEDIATE|IS|RESTRICT|TO|WHAT'S|])(?=\\s|$)",caseInsensitive:!0},{token:"keyword.control.compile-only.forth",regex:'(?:^|\\s)(?:-DO|\\-LOOP|\\?DO|\\?LEAVE|\\+DO|\\+LOOP|ABORT\\"|AGAIN|AHEAD|BEGIN|CASE|DO|ELSE|ENDCASE|ENDIF|ENDOF|ENDTRY\\-IFERROR|ENDTRY|FOR|IF|IFERROR|LEAVE|LOOP|NEXT|RECOVER|REPEAT|RESTORE|THEN|TRY|U\\-DO|U\\+DO|UNTIL|WHILE)(?=\\s|$)',caseInsensitive:!0},{token:"keyword.other.compile-only.forth",regex:"(?:^|\\s)(?:\\?DUP-0=-IF|\\?DUP-IF|\\)|\\[|\\['\\]|\\[CHAR\\]|\\[COMPILE\\]|\\[IS\\]|\\[TO\\]||DEFERS|DOES>|INTERPRETATION>|OF|POSTPONE)(?=\\s|$)",caseInsensitive:!0},{token:"keyword.other.non-immediate.forth",regex:"(?:^|\\s)(?:'|||CHAR|END-STRUCT|INCLUDE[D]?|LOAD|NEEDS|REQUIRE[D]?|REVISION|SEE|STRUCT|THRU|USE)(?=\\s|$)",caseInsensitive:!0},{token:"keyword.other.warning.forth",regex:'(?:^|\\s)(?:~~|BREAK:|BREAK"|DBG)(?=\\s|$)',caseInsensitive:!0}],"#word-def":[{token:["keyword.other.compile-only.forth","keyword.other.compile-only.forth","meta.block.forth","entity.name.function.forth"],regex:"(:NONAME)|(^:|\\s:)(\\s)(\\S+)(?=\\s|$)",caseInsensitive:!0,push:[{token:"keyword.other.compile-only.forth",regex:";(?:CODE)?",caseInsensitive:!0,next:"pop"},{include:"#constant"},{include:"#comment"},{include:"#string"},{include:"#word"},{include:"#variable"},{include:"#storage"},{defaultToken:"meta.block.forth"}]}]},this.normalizeRules()};s.metaData={fileTypes:["frt","fs","ldr","fth","4th"],foldingStartMarker:"/\\*\\*|\\{\\s*$",foldingStopMarker:"\\*\\*/|^\\s*\\}",keyEquivalent:"^~F",name:"Forth",scopeName:"source.forth"},r.inherits(s,i),t.ForthHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/forth",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/forth_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./forth_highlight_rules").ForthHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment=null,this.$id="ace/mode/forth"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/forth"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-fortran.js b/www/js/ace/mode-fortran.js deleted file mode 100644 index 3db53886e..000000000 --- a/www/js/ace/mode-fortran.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/fortran_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="call|case|contains|continue|cycle|do|else|elseif|end|enddo|endif|function|if|implicit|in|include|inout|intent|module|none|only|out|print|program|return|select|status|stop|subroutine|return|then|use|while|write|CALL|CASE|CONTAINS|CONTINUE|CYCLE|DO|ELSE|ELSEIF|END|ENDDO|ENDIF|FUNCTION|IF|IMPLICIT|IN|INCLUDE|INOUT|INTENT|MODULE|NONE|ONLY|OUT|PRINT|PROGRAM|RETURN|SELECT|STATUS|STOP|SUBROUTINE|RETURN|THEN|USE|WHILE|WRITE",t="and|or|not|eq|ne|gt|ge|lt|le|AND|OR|NOT|EQ|NE|GT|GE|LT|LE",n="true|false|TRUE|FALSE",r="abs|achar|acos|acosh|adjustl|adjustr|aimag|aint|all|allocate|anint|any|asin|asinh|associated|atan|atan2|atanh|bessel_j0|bessel_j1|bessel_jn|bessel_y0|bessel_y1|bessel_yn|bge|bgt|bit_size|ble|blt|btest|ceiling|char|cmplx|conjg|cos|cosh|count|cpu_time|cshift|date_and_time|dble|deallocate|digits|dim|dot_product|dprod|dshiftl|dshiftr|dsqrt|eoshift|epsilon|erf|erfc|erfc_scaled|exp|float|floor|format|fraction|gamma|input|len|lge|lgt|lle|llt|log|log10|maskl|maskr|matmul|max|maxloc|maxval|merge|min|minloc|minval|mod|modulo|nint|not|norm2|null|nullify|pack|parity|popcnt|poppar|precision|present|product|radix|random_number|random_seed|range|repeat|reshape|round|rrspacing|same_type_as|scale|scan|selected_char_kind|selected_int_kind|selected_real_kind|set_exponent|shape|shifta|shiftl|shiftr|sign|sin|sinh|size|sngl|spacing|spread|sqrt|sum|system_clock|tan|tanh|tiny|trailz|transfer|transpose|trim|ubound|unpack|verify|ABS|ACHAR|ACOS|ACOSH|ADJUSTL|ADJUSTR|AIMAG|AINT|ALL|ALLOCATE|ANINT|ANY|ASIN|ASINH|ASSOCIATED|ATAN|ATAN2|ATANH|BESSEL_J0|BESSEL_J1|BESSEL_JN|BESSEL_Y0|BESSEL_Y1|BESSEL_YN|BGE|BGT|BIT_SIZE|BLE|BLT|BTEST|CEILING|CHAR|CMPLX|CONJG|COS|COSH|COUNT|CPU_TIME|CSHIFT|DATE_AND_TIME|DBLE|DEALLOCATE|DIGITS|DIM|DOT_PRODUCT|DPROD|DSHIFTL|DSHIFTR|DSQRT|EOSHIFT|EPSILON|ERF|ERFC|ERFC_SCALED|EXP|FLOAT|FLOOR|FORMAT|FRACTION|GAMMA|INPUT|LEN|LGE|LGT|LLE|LLT|LOG|LOG10|MASKL|MASKR|MATMUL|MAX|MAXLOC|MAXVAL|MERGE|MIN|MINLOC|MINVAL|MOD|MODULO|NINT|NOT|NORM2|NULL|NULLIFY|PACK|PARITY|POPCNT|POPPAR|PRECISION|PRESENT|PRODUCT|RADIX|RANDOM_NUMBER|RANDOM_SEED|RANGE|REPEAT|RESHAPE|ROUND|RRSPACING|SAME_TYPE_AS|SCALE|SCAN|SELECTED_CHAR_KIND|SELECTED_INT_KIND|SELECTED_REAL_KIND|SET_EXPONENT|SHAPE|SHIFTA|SHIFTL|SHIFTR|SIGN|SIN|SINH|SIZE|SNGL|SPACING|SPREAD|SQRT|SUM|SYSTEM_CLOCK|TAN|TANH|TINY|TRAILZ|TRANSFER|TRANSPOSE|TRIM|UBOUND|UNPACK|VERIFY",i="logical|character|integer|real|type|LOGICAL|CHARACTER|INTEGER|REAL|TYPE",s="allocatable|dimension|intent|parameter|pointer|target|private|public|ALLOCATABLE|DIMENSION|INTENT|PARAMETER|POINTER|TARGET|PRIVATE|PUBLIC",o=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":r,"constant.language":n,keyword:e,"keyword.operator":t,"storage.type":i,"storage.modifier":s},"identifier"),u="(?:r|u|ur|R|U|UR|Ur|uR)?",a="(?:(?:[1-9]\\d*)|(?:0))",f="(?:0[oO]?[0-7]+)",l="(?:0[xX][\\dA-Fa-f]+)",c="(?:0[bB][01]+)",h="(?:"+a+"|"+f+"|"+l+"|"+c+")",p="(?:[eE][+-]?\\d+)",d="(?:\\.\\d+)",v="(?:\\d+)",m="(?:(?:"+v+"?"+d+")|(?:"+v+"\\.))",g="(?:(?:"+m+"|"+v+")"+p+")",y="(?:"+g+"|"+m+")",b="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";this.$rules={start:[{token:"comment",regex:"!.*$"},{token:"string",regex:u+'"{3}',next:"qqstring3"},{token:"string",regex:u+'"(?=.)',next:"qqstring"},{token:"string",regex:u+"'{3}",next:"qstring3"},{token:"string",regex:u+"'(?=.)",next:"qstring"},{token:"constant.numeric",regex:"(?:"+y+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:y},{token:"constant.numeric",regex:h+"[lL]\\b"},{token:"constant.numeric",regex:h+"\\b"},{token:"keyword",regex:"#\\s*(?:include|import|define|undef|INCLUDE|IMPORT|DEFINE|UNDEF)\\b"},{token:"keyword",regex:"#\\s*(?:endif|ifdef|else|elseif|ifndef|ENDIF|IFDEF|ELSE|ELSEIF|IFNDEF)\\b"},{token:o,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+"}],qqstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.FortranHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/fortran",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/fortran_highlight_rules","ace/mode/folding/cstyle","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./fortran_highlight_rules").FortranHighlightRules,o=e("./folding/cstyle").FoldMode,u=e("../range").Range,a=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="!",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r};var e={"return":1,"break":1,"continue":1,RETURN:1,BREAK:1,CONTINUE:1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new u(n,r.length-i.length,n,r.length))},this.$id="ace/mode/fortran"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/fortran"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-fsharp.js b/www/js/ace/mode-fsharp.js deleted file mode 100644 index 9ad2decb8..000000000 --- a/www/js/ace/mode-fsharp.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/fsharp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({variable:"this",keyword:"abstract|assert|base|begin|class|default|delegate|done|downcast|downto|elif|else|exception|extern|false|finally|function|global|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|open|or|override|private|public|rec|return|return!|select|static|struct|then|to|true|try|typeof|upcast|use|use!|val|void|when|while|with|yield|yield!|__SOURCE_DIRECTORY__|as|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile|and|do|end|for|fun|if|in|let|let!|new|not|null|of|endif",constant:"true|false"},"identifier"),t="(?:(?:(?:(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.))|(?:\\d+))(?:[eE][+-]?\\d+))|(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.)))";this.$rules={start:[{token:"variable.classes",regex:"\\[\\<[.]*\\>\\]"},{token:"comment",regex:"//.*$"},{token:"comment.start",regex:/\(\*(?!\))/,push:"blockComment"},{token:"string",regex:"'.'"},{token:"string",regex:'"""',next:[{token:"constant.language.escape",regex:/\\./,next:"qqstring"},{token:"string",regex:'"""',next:"start"},{defaultToken:"string"}]},{token:"string",regex:'"',next:[{token:"constant.language.escape",regex:/\\./,next:"qqstring"},{token:"string",regex:'"',next:"start"},{defaultToken:"string"}]},{token:["verbatim.string","string"],regex:'(@?)(")',stateName:"qqstring",next:[{token:"constant.language.escape",regex:'""'},{token:"string",regex:'"',next:"start"},{defaultToken:"string"}]},{token:"constant.float",regex:"(?:"+t+"|\\d+)[jJ]\\b"},{token:"constant.float",regex:t},{token:"constant.integer",regex:"(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))\\b"},{token:["keyword.type","variable"],regex:"(type\\s)([a-zA-Z0-9_$-]*\\b)"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=|\\(\\*\\)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"}],blockComment:[{regex:/\(\*\)/,token:"comment"},{regex:/\(\*(?!\))/,token:"comment.start",push:"blockComment"},{regex:/\*\)/,token:"comment.end",next:"pop"},{defaultToken:"comment"}]},this.normalizeRules()};r.inherits(s,i),t.FSharpHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/fsharp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/fsharp_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./fsharp_highlight_rules").FSharpHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){i.call(this),this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"(*",end:"*)",nestable:!0},this.$id="ace/mode/fsharp"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/fsharp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-fsl.js b/www/js/ace/mode-fsl.js deleted file mode 100644 index 3963ec91f..000000000 --- a/www/js/ace/mode-fsl.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/fsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"punctuation.definition.comment.mn",regex:/\/\*/,push:[{token:"punctuation.definition.comment.mn",regex:/\*\//,next:"pop"},{defaultToken:"comment.block.fsl"}]},{token:"comment.line.fsl",regex:/\/\//,push:[{token:"comment.line.fsl",regex:/$/,next:"pop"},{defaultToken:"comment.line.fsl"}]},{token:"entity.name.function",regex:/\${/,push:[{token:"entity.name.function",regex:/}/,next:"pop"},{defaultToken:"keyword.other"}],comment:"js outcalls"},{token:"constant.numeric",regex:/[0-9]*\.[0-9]*\.[0-9]*/,comment:"semver"},{token:"constant.language.fslLanguage",regex:"(?:graph_layout|machine_name|machine_author|machine_license|machine_comment|machine_language|machine_version|machine_reference|npm_name|graph_layout|on_init|on_halt|on_end|on_terminate|on_finalize|on_transition|on_action|on_stochastic_action|on_legal|on_main|on_forced|on_validation|on_validation_failure|on_transition_refused|on_forced_transition_refused|on_action_refused|on_enter|on_exit|start_states|end_states|terminal_states|final_states|fsl_version)\\s*:"},{token:"keyword.control.transition.fslArrow",regex:/<->|<-|->|<=>|=>|<=|<~>|~>|<~|<-=>|<=->|<-~>|<~->|<=~>|<~=>/},{token:"constant.numeric.fslProbability",regex:/[0-9]+%/,comment:"edge probability annotation"},{token:"constant.character.fslAction",regex:/\'[^']*\'/,comment:"action annotation"},{token:"string.quoted.double.fslLabel.doublequoted",regex:/\"[^"]*\"/,comment:"fsl label annotation"},{token:"entity.name.tag.fslLabel.atom",regex:/[a-zA-Z0-9_.+&()#@!?,]/,comment:"fsl label annotation"}]},this.normalizeRules()};s.metaData={fileTypes:["fsl","fsl_state"],name:"FSL",scopeName:"source.fsl"},r.inherits(s,i),t.FSLHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/fsl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/fsl_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./fsl_highlight_rules").FSLHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/fsl",this.snippetFileId="ace/snippets/fsl"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/fsl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-ftl.js b/www/js/ace/mode-ftl.js deleted file mode 100644 index 12fe4f037..000000000 --- a/www/js/ace/mode-ftl.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/ftl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="\\?|substring|cap_first|uncap_first|capitalize|chop_linebreak|date|time|datetime|ends_with|html|groups|index_of|j_string|js_string|json_string|last_index_of|length|lower_case|left_pad|right_pad|contains|matches|number|replace|rtf|url|split|starts_with|string|trim|upper_case|word_list|xhtml|xml",t="c|round|floor|ceiling",n="iso_[a-z_]+",r="first|last|seq_contains|seq_index_of|seq_last_index_of|reverse|size|sort|sort_by|chunk",i="keys|values",s="children|parent|root|ancestors|node_name|node_type|node_namespace",o="byte|double|float|int|long|short|number_to_date|number_to_time|number_to_datetime|eval|has_content|interpret|is_[a-z_]+|namespacenew",u=e+t+n+r+i+s+o,a="default|exists|if_exists|web_safe",f="data_model|error|globals|lang|locale|locals|main|namespace|node|current_node|now|output_encoding|template_name|url_escaping_charset|vars|version",l="gt|gte|lt|lte|as|in|using",c="true|false",h="encoding|parse|locale|number_format|date_format|time_format|datetime_format|time_zone|url_escaping_charset|classic_compatible|strip_whitespace|strip_text|strict_syntax|ns_prefixes|attributes";this.$rules={start:[{token:"constant.character.entity",regex:/&[^;]+;/},{token:"support.function",regex:"\\?("+u+")"},{token:"support.function.deprecated",regex:"\\?("+a+")"},{token:"language.variable",regex:"\\.(?:"+f+")"},{token:"constant.language",regex:"\\b("+c+")\\b"},{token:"keyword.operator",regex:"\\b(?:"+l+")\\b"},{token:"entity.other.attribute-name",regex:h},{token:"string",regex:/['"]/,next:"qstring"},{token:function(e){return e.match("^[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?$")?"constant.numeric":"variable"},regex:/[\w.+\-]+/},{token:"keyword.operator",regex:"!|\\.|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qstring:[{token:"constant.character.escape",regex:'\\\\[nrtvef\\\\"$]'},{token:"string",regex:/['"]/,next:"start"},{defaultToken:"string"}]}};r.inherits(o,s);var u=function(){i.call(this);var e="assign|attempt|break|case|compress|default|elseif|else|escape|fallback|function|flush|ftl|global|if|import|include|list|local|lt|macro|nested|noescape|noparse|nt|recover|recurse|return|rt|setting|stop|switch|t|visit",t=[{token:"comment",regex:"<#--",next:"ftl-dcomment"},{token:"string.interpolated",regex:"\\${",push:"ftl-start"},{token:"keyword.function",regex:"",next:"pop"},{token:"string.interpolated",regex:"}",next:"pop"}];for(var r in this.$rules)this.$rules[r].unshift.apply(this.$rules[r],t);this.embedRules(o,"ftl-",n,["start"]),this.addRules({"ftl-dcomment":[{token:"comment",regex:"-->",next:"pop"},{defaultToken:"comment"}]}),this.normalizeRules()};r.inherits(u,i),t.FtlHighlightRules=u}),define("ace/mode/ftl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ftl_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ftl_highlight_rules").FtlHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.$id="ace/mode/ftl"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/ftl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-gcode.js b/www/js/ace/mode-gcode.js deleted file mode 100644 index 6e88e98a3..000000000 --- a/www/js/ace/mode-gcode.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/gcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="IF|DO|WHILE|ENDWHILE|CALL|ENDIF|SUB|ENDSUB|GOTO|REPEAT|ENDREPEAT|CALL",t="PI",n="ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"\\(.*\\)"},{token:"comment",regex:"([N])([0-9]+)"},{token:"string",regex:"([G])([0-9]+\\.?[0-9]?)"},{token:"string",regex:"([M])([0-9]+\\.?[0-9]?)"},{token:"constant.numeric",regex:"([-+]?([0-9]*\\.?[0-9]+\\.?))|(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)"},{token:r,regex:"[A-Z]"},{token:"keyword.operator",regex:"EQ|LT|GT|NE|GE|LE|OR|XOR"},{token:"paren.lparen",regex:"[\\[]"},{token:"paren.rparen",regex:"[\\]]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.GcodeHighlightRules=s}),define("ace/mode/gcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gcode_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gcode_highlight_rules").GcodeHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.$id="ace/mode/gcode"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/gcode"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-gherkin.js b/www/js/ace/mode-gherkin.js deleted file mode 100644 index 654ea20fe..000000000 --- a/www/js/ace/mode-gherkin.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/gherkin_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})",o=function(){var e=[{name:"en",labels:"Feature|Background|Scenario(?: Outline)?|Examples",keywords:"Given|When|Then|And|But"}],t=e.map(function(e){return e.labels}).join("|"),n=e.map(function(e){return e.keywords}).join("|");this.$rules={start:[{token:"constant.numeric",regex:"(?:(?:[1-9]\\d*)|(?:0))"},{token:"comment",regex:"#.*$"},{token:"keyword",regex:"(?:"+t+"):|(?:"+n+")\\b"},{token:"keyword",regex:"\\*"},{token:"string",regex:'"{3}',next:"qqstring3"},{token:"string",regex:'"',next:"qqstring"},{token:"text",regex:"^\\s*(?=@[\\w])",next:[{token:"text",regex:"\\s+"},{token:"variable.parameter",regex:"@[\\w]+"},{token:"empty",regex:"",next:"start"}]},{token:"comment",regex:"<[^>]+>"},{token:"comment",regex:"\\|(?=.)",next:"table-item"},{token:"comment",regex:"\\|$",next:"start"}],qqstring3:[{token:"constant.language.escape",regex:s},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],"table-item":[{token:"comment",regex:/$/,next:"start"},{token:"comment",regex:/\|/},{token:"string",regex:/\\./},{defaultToken:"string"}]},this.normalizeRules()};r.inherits(o,i),t.GherkinHighlightRules=o}),define("ace/mode/gherkin",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gherkin_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gherkin_highlight_rules").GherkinHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="#",this.$id="ace/mode/gherkin",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=" ",s=this.getTokenizer().getLineTokens(t,e),o=s.tokens;return t.match("[ ]*\\|")&&(r+="| "),o.length&&o[o.length-1].type=="comment"?r:(e=="start"&&(t.match("Scenario:|Feature:|Scenario Outline:|Background:")?r+=i:t.match("(Given|Then).+(:)$|Examples:")?r+=i:t.match("\\*.+")&&(r+="* ")),r)}}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/gherkin"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-gitignore.js b/www/js/ace/mode-gitignore.js deleted file mode 100644 index c629fee5a..000000000 --- a/www/js/ace/mode-gitignore.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/gitignore_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:/^\s*#.*$/},{token:"keyword",regex:/^\s*!.*$/}]},this.normalizeRules()};s.metaData={fileTypes:["gitignore"],name:"Gitignore"},r.inherits(s,i),t.GitignoreHighlightRules=s}),define("ace/mode/gitignore",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gitignore_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gitignore_highlight_rules").GitignoreHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="#",this.$id="ace/mode/gitignore"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/gitignore"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-glsl.js b/www/js/ace/mode-glsl.js deleted file mode 100644 index 4e89266a2..000000000 --- a/www/js/ace/mode-glsl.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="hypot|hypotf|hypotl|sscanf|system|snprintf|scanf|scalbn|scalbnf|scalbnl|scalbln|scalblnf|scalblnl|sin|sinh|sinhf|sinhl|sinf|sinl|signal|signbit|strstr|strspn|strncpy|strncat|strncmp|strcspn|strchr|strcoll|strcpy|strcat|strcmp|strtoimax|strtod|strtoul|strtoull|strtoumax|strtok|strtof|strtol|strtold|strtoll|strerror|strpbrk|strftime|strlen|strrchr|strxfrm|sprintf|setjmp|setvbuf|setlocale|setbuf|sqrt|sqrtf|sqrtl|swscanf|swprintf|srand|nearbyint|nearbyintf|nearbyintl|nexttoward|nexttowardf|nexttowardl|nextafter|nextafterf|nextafterl|nan|nanf|nanl|csin|csinh|csinhf|csinhl|csinf|csinl|csqrt|csqrtf|csqrtl|ccos|ccosh|ccoshf|ccosf|ccosl|cimag|cimagf|cimagl|ctime|ctan|ctanh|ctanhf|ctanhl|ctanf|ctanl|cos|cosh|coshf|coshl|cosf|cosl|conj|conjf|conjl|copysign|copysignf|copysignl|cpow|cpowf|cpowl|cproj|cprojf|cprojl|ceil|ceilf|ceill|cexp|cexpf|cexpl|clock|clog|clogf|clogl|clearerr|casin|casinh|casinhf|casinhl|casinf|casinl|cacos|cacosh|cacoshf|cacoshl|cacosf|cacosl|catan|catanh|catanhf|catanhl|catanf|catanl|calloc|carg|cargf|cargl|cabs|cabsf|cabsl|creal|crealf|creall|cbrt|cbrtf|cbrtl|time|toupper|tolower|tan|tanh|tanhf|tanhl|tanf|tanl|trunc|truncf|truncl|tgamma|tgammaf|tgammal|tmpnam|tmpfile|isspace|isnormal|isnan|iscntrl|isinf|isdigit|isunordered|isupper|ispunct|isprint|isfinite|iswspace|iswcntrl|iswctype|iswdigit|iswupper|iswpunct|iswprint|iswlower|iswalnum|iswalpha|iswgraph|iswxdigit|iswblank|islower|isless|islessequal|islessgreater|isalnum|isalpha|isgreater|isgreaterequal|isgraph|isxdigit|isblank|ilogb|ilogbf|ilogbl|imaxdiv|imaxabs|div|difftime|_Exit|ungetc|ungetwc|pow|powf|powl|puts|putc|putchar|putwc|putwchar|perror|printf|erf|erfc|erfcf|erfcl|erff|erfl|exit|exp|exp2|exp2f|exp2l|expf|expl|expm1|expm1f|expm1l|vsscanf|vsnprintf|vscanf|vsprintf|vswscanf|vswprintf|vprintf|vfscanf|vfprintf|vfwscanf|vfwprintf|vwscanf|vwprintf|va_start|va_copy|va_end|va_arg|qsort|fscanf|fsetpos|fseek|fclose|ftell|fopen|fdim|fdimf|fdiml|fpclassify|fputs|fputc|fputws|fputwc|fprintf|feholdexcept|fesetenv|fesetexceptflag|fesetround|feclearexcept|fetestexcept|feof|feupdateenv|feraiseexcept|ferror|fegetenv|fegetexceptflag|fegetround|fflush|fwscanf|fwide|fwprintf|fwrite|floor|floorf|floorl|fabs|fabsf|fabsl|fgets|fgetc|fgetpos|fgetws|fgetwc|freopen|free|fread|frexp|frexpf|frexpl|fmin|fminf|fminl|fmod|fmodf|fmodl|fma|fmaf|fmal|fmax|fmaxf|fmaxl|ldiv|ldexp|ldexpf|ldexpl|longjmp|localtime|localeconv|log|log1p|log1pf|log1pl|log10|log10f|log10l|log2|log2f|log2l|logf|logl|logb|logbf|logbl|labs|lldiv|llabs|llrint|llrintf|llrintl|llround|llroundf|llroundl|lrint|lrintf|lrintl|lround|lroundf|lroundl|lgamma|lgammaf|lgammal|wscanf|wcsstr|wcsspn|wcsncpy|wcsncat|wcsncmp|wcscspn|wcschr|wcscoll|wcscpy|wcscat|wcscmp|wcstoimax|wcstod|wcstoul|wcstoull|wcstoumax|wcstok|wcstof|wcstol|wcstold|wcstoll|wcstombs|wcspbrk|wcsftime|wcslen|wcsrchr|wcsrtombs|wcsxfrm|wctob|wctomb|wcrtomb|wprintf|wmemset|wmemchr|wmemcpy|wmemcmp|wmemmove|assert|asctime|asin|asinh|asinhf|asinhl|asinf|asinl|acos|acosh|acoshf|acoshl|acosf|acosl|atoi|atof|atol|atoll|atexit|atan|atanh|atanhf|atanhl|atan2|atan2f|atan2l|atanf|atanl|abs|abort|gets|getc|getchar|getenv|getwc|getwchar|gmtime|rint|rintf|rintl|round|roundf|roundl|rename|realloc|rewind|remove|remquo|remquof|remquol|remainder|remainderf|remainderl|rand|raise|bsearch|btowc|modf|modff|modfl|memset|memchr|memcpy|memcmp|memmove|mktime|malloc|mbsinit|mbstowcs|mbsrtowcs|mbtowc|mblen|mbrtowc|mbrlen",u=function(e){var t="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",n="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",r="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",s="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",u="NULL|true|false|TRUE|FALSE|nullptr",a=this.$keywords=this.createKeywordMapper(Object.assign({"keyword.control":t,"storage.type":n,"storage.modifier":r,"keyword.operator":s,"variable.language":"this","constant.language":u,"support.function.C99.c":o},e),"identifier"),f="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",l=/\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source,c="%"+/(\d+\$)?/.source+/[#0\- +']*/.source+/[,;:_]?/.source+/((-?\d+)|\*(-?\d+\$)?)?/.source+/(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source+/(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source+/(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source;this.$rules={start:[{token:"comment",regex:"//$",next:"start"},{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:"'(?:"+l+"|.)?'"},{token:"string.start",regex:'"',stateName:"qqstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:l},{token:"constant.language.escape",regex:c},{token:"string.end",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"string.start",regex:'R"\\(',stateName:"rawString",next:[{token:"string.end",regex:'\\)"',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:a,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"},{token:"keyword.operator",regex:/--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(u,s),t.c_cppHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp",this.snippetFileId="ace/snippets/c_cpp"}.call(a.prototype),t.Mode=a}),define("ace/mode/glsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/c_cpp_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp_highlight_rules").c_cppHighlightRules,s=function(){var e="attribute|const|uniform|varying|break|continue|do|for|while|if|else|in|out|inout|float|int|void|bool|true|false|lowp|mediump|highp|precision|invariant|discard|return|mat2|mat3|mat4|vec2|vec3|vec4|ivec2|ivec3|ivec4|bvec2|bvec3|bvec4|sampler2D|samplerCube|struct",t="radians|degrees|sin|cos|tan|asin|acos|atan|pow|exp|log|exp2|log2|sqrt|inversesqrt|abs|sign|floor|ceil|fract|mod|min|max|clamp|mix|step|smoothstep|length|distance|dot|cross|normalize|faceforward|reflect|refract|matrixCompMult|lessThan|lessThanEqual|greaterThan|greaterThanEqual|equal|notEqual|any|all|not|dFdx|dFdy|fwidth|texture2D|texture2DProj|texture2DLod|texture2DProjLod|textureCube|textureCubeLod|gl_MaxVertexAttribs|gl_MaxVertexUniformVectors|gl_MaxVaryingVectors|gl_MaxVertexTextureImageUnits|gl_MaxCombinedTextureImageUnits|gl_MaxTextureImageUnits|gl_MaxFragmentUniformVectors|gl_MaxDrawBuffers|gl_DepthRangeParameters|gl_DepthRange|gl_Position|gl_PointSize|gl_FragCoord|gl_FrontFacing|gl_PointCoord|gl_FragColor|gl_FragData",n=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t},"identifier");this.$rules=(new i).$rules,this.$rules.start.forEach(function(e){typeof e.token=="function"&&(e.token=n)})};r.inherits(s,i),t.glslHighlightRules=s}),define("ace/mode/glsl",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/glsl_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp").Mode,s=e("./glsl_highlight_rules").glslHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(a,i),function(){this.$id="ace/mode/glsl"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/glsl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-gobstones.js b/www/js/ace/mode-gobstones.js deleted file mode 100644 index efbfcb154..000000000 --- a/www/js/ace/mode-gobstones.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/gobstones_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e={standard:"program|procedure|function|interactive|return|let",type:"type|is|variant|record|field|case"},t={commands:{repetitions:"repeat|while|foreach|in",alternatives:"if|elseif|else|switch"},expressions:{alternatives:"choose|when|otherwise|matching|select|on"}},n={colors:"Verde|Rojo|Azul|Negro",cardinals:"Norte|Sur|Este|Oeste",booleans:"True|False",numbers:/([-]?)([0-9]+)\b/,strings:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},r={commands:"Poner|Sacar|Mover|IrAlBorde|VaciarTablero|BOOM",expressions:"nroBolitas|hayBolitas|puedeMover|siguiente|previo|opuesto|minBool|maxBool|minDir|maxDir|minColor|maxColor|primero|sinElPrimero|esVac\u00eda|boom",keys:"K_A|K_B|K_C|K_D|K_E|K_F|K_G|K_G|K_H|K_I|K_J|K_K|K_L|K_M|K_N|K_\u00d1|K_O|K_P|K_Q|K_R|K_S|K_T|K_U|K_V|K_W|K_X|K_Y|K_Z|K_0|K_1|K_2|K_3|K_4|K_5|K_6|K_7|K_8|K_9|K_F1|K_F2|K_F3|K_F4|K_F5|K_F6|K_F7|K_F8|K_F9|K_F10|K_F11|K_12|K_UP|K_DOWN|K_LEFT|K_RIGHT|K_RETURN|K_BACKSPACE|K_TAB|K_SPACE|K_ESCAPEK_CTRL_A|K_CTRL_B|K_CTRL_C|K_CTRL_D|K_CTRL_E|K_CTRL_F|K_CTRL_G|K_CTRL_G|K_CTRL_H|K_CTRL_I|K_CTRL_J|K_CTRL_K|K_CTRL_L|K_CTRL_M|K_CTRL_N|K_CTRL_\u00d1|K_CTRL_O|K_CTRL_P|K_CTRL_Q|K_CTRL_R|K_CTRL_S|K_CTRL_T|K_CTRL_U|K_CTRL_V|K_CTRL_W|K_CTRL_X|K_CTRL_Y|K_CTRL_Z|K_CTRL_0|K_CTRL_1|K_CTRL_2|K_CTRL_3|K_CTRL_4|K_CTRL_5|K_CTRL_6|K_CTRL_7|K_CTRL_8|K_CTRL_9|K_CTRL_F1|K_CTRL_F2|K_CTRL_F3|K_CTRL_F4|K_CTRL_F5|K_CTRL_F6|K_CTRL_F7|K_CTRL_F8|K_CTRL_F9|K_CTRL_F10|K_CTRL_F11|K_CTRL_F12|K_CTRL_UP|K_CTRL_DOWN|K_CTRL_LEFT|K_CTRL_RIGHT|K_CTRL_RETURN|K_CTRL_BACKSPACE|K_CTRL_TAB|K_CTRL_SPACE|K_CTRL_ESCAPEK_ALT_A|K_ALT_B|K_ALT_C|K_ALT_D|K_ALT_E|K_ALT_F|K_ALT_G|K_ALT_G|K_ALT_H|K_ALT_I|K_ALT_J|K_ALT_K|K_ALT_L|K_ALT_M|K_ALT_N|K_ALT_\u00d1|K_ALT_O|K_ALT_P|K_ALT_Q|K_ALT_R|K_ALT_S|K_ALT_T|K_ALT_U|K_ALT_V|K_ALT_W|K_ALT_X|K_ALT_Y|K_ALT_Z|K_ALT_0|K_ALT_1|K_ALT_2|K_ALT_3|K_ALT_4|K_ALT_5|K_ALT_6|K_ALT_7|K_ALT_8|K_ALT_9|K_ALT_F1|K_ALT_F2|K_ALT_F3|K_ALT_F4|K_ALT_F5|K_ALT_F6|K_ALT_F7|K_ALT_F8|K_ALT_F9|K_ALT_F10|K_ALT_F11|K_ALT_F12|K_ALT_UP|K_ALT_DOWN|K_ALT_LEFT|K_ALT_RIGHT|K_ALT_RETURN|K_ALT_BACKSPACE|K_ALT_TAB|K_ALT_SPACE|K_ALT_ESCAPEK_SHIFT_A|K_SHIFT_B|K_SHIFT_C|K_SHIFT_D|K_SHIFT_E|K_SHIFT_F|K_SHIFT_G|K_SHIFT_G|K_SHIFT_H|K_SHIFT_I|K_SHIFT_J|K_SHIFT_K|K_SHIFT_L|K_SHIFT_M|K_SHIFT_N|K_SHIFT_\u00d1|K_SHIFT_O|K_SHIFT_P|K_SHIFT_Q|K_SHIFT_R|K_SHIFT_S|K_SHIFT_T|K_SHIFT_U|K_SHIFT_V|K_SHIFT_W|K_SHIFT_X|K_SHIFT_Y|K_SHIFT_Z|K_SHIFT_0|K_SHIFT_1|K_SHIFT_2|K_SHIFT_3|K_SHIFT_4|K_SHIFT_5|K_SHIFT_6|K_SHIFT_7|K_SHIFT_8|K_SHIFT_9|K_SHIFT_F1|K_SHIFT_F2|K_SHIFT_F3|K_SHIFT_F4|K_SHIFT_F5|K_SHIFT_F6|K_SHIFT_F7|K_SHIFT_F8|K_SHIFT_F9|K_SHIFT_F10|K_SHIFT_F11|K_SHIFT_F12|K_SHIFT_UP|K_SHIFT_DOWN|K_SHIFT_LEFT|K_SHIFT_RIGHT|K_SHIFT_RETURN|K_SHIFT_BACKSPACE|K_SHIFT_TAB|K_SHIFT_SPACE|K_SHIFT_ESCAPEK_CTRL_ALT_A|K_CTRL_ALT_B|K_CTRL_ALT_C|K_CTRL_ALT_D|K_CTRL_ALT_E|K_CTRL_ALT_F|K_CTRL_ALT_G|K_CTRL_ALT_G|K_CTRL_ALT_H|K_CTRL_ALT_I|K_CTRL_ALT_J|K_CTRL_ALT_K|K_CTRL_ALT_L|K_CTRL_ALT_M|K_CTRL_ALT_N|K_CTRL_ALT_\u00d1|K_CTRL_ALT_O|K_CTRL_ALT_P|K_CTRL_ALT_Q|K_CTRL_ALT_R|K_CTRL_ALT_S|K_CTRL_ALT_T|K_CTRL_ALT_U|K_CTRL_ALT_V|K_CTRL_ALT_W|K_CTRL_ALT_X|K_CTRL_ALT_Y|K_CTRL_ALT_Z|K_CTRL_ALT_0|K_CTRL_ALT_1|K_CTRL_ALT_2|K_CTRL_ALT_3|K_CTRL_ALT_4|K_CTRL_ALT_5|K_CTRL_ALT_6|K_CTRL_ALT_7|K_CTRL_ALT_8|K_CTRL_ALT_9|K_CTRL_ALT_F1|K_CTRL_ALT_F2|K_CTRL_ALT_F3|K_CTRL_ALT_F4|K_CTRL_ALT_F5|K_CTRL_ALT_F6|K_CTRL_ALT_F7|K_CTRL_ALT_F8|K_CTRL_ALT_F9|K_CTRL_ALT_F10|K_CTRL_ALT_F11|K_CTRL_ALT_F12|K_CTRL_ALT_UP|K_CTRL_ALT_DOWN|K_CTRL_ALT_LEFT|K_CTRL_ALT_RIGHT|K_CTRL_ALT_RETURN|K_CTRL_ALT_BACKSPACE|K_CTRL_ALT_TAB|K_CTRL_ALT_SPACE|K_CTRL_ALT_ESCAPEK_CTRL_SHIFT_A|K_CTRL_SHIFT_B|K_CTRL_SHIFT_C|K_CTRL_SHIFT_D|K_CTRL_SHIFT_E|K_CTRL_SHIFT_F|K_CTRL_SHIFT_G|K_CTRL_SHIFT_G|K_CTRL_SHIFT_H|K_CTRL_SHIFT_I|K_CTRL_SHIFT_J|K_CTRL_SHIFT_K|K_CTRL_SHIFT_L|K_CTRL_SHIFT_M|K_CTRL_SHIFT_N|K_CTRL_SHIFT_\u00d1|K_CTRL_SHIFT_O|K_CTRL_SHIFT_P|K_CTRL_SHIFT_Q|K_CTRL_SHIFT_R|K_CTRL_SHIFT_S|K_CTRL_SHIFT_T|K_CTRL_SHIFT_U|K_CTRL_SHIFT_V|K_CTRL_SHIFT_W|K_CTRL_SHIFT_X|K_CTRL_SHIFT_Y|K_CTRL_SHIFT_Z|K_CTRL_SHIFT_0|K_CTRL_SHIFT_1|K_CTRL_SHIFT_2|K_CTRL_SHIFT_3|K_CTRL_SHIFT_4|K_CTRL_SHIFT_5|K_CTRL_SHIFT_6|K_CTRL_SHIFT_7|K_CTRL_SHIFT_8|K_CTRL_SHIFT_9|K_CTRL_SHIFT_F1|K_CTRL_SHIFT_F2|K_CTRL_SHIFT_F3|K_CTRL_SHIFT_F4|K_CTRL_SHIFT_F5|K_CTRL_SHIFT_F6|K_CTRL_SHIFT_F7|K_CTRL_SHIFT_F8|K_CTRL_SHIFT_9|K_CTRL_SHIFT_10|K_CTRL_SHIFT_11|K_CTRL_SHIFT_12|K_CTRL_SHIFT_UP|K_CTRL_SHIFT_DOWN|K_CTRL_SHIFT_LEFT|K_CTRL_SHIFT_RIGHT|K_CTRL_SHIFT_RETURN|K_CTRL_SHIFT_BACKSPACE|K_CTRL_SHIFT_TAB|K_CTRL_SHIFT_SPACE|K_CTRL_SHIFT_ESCAPEK_ALT_SHIFT_A|K_ALT_SHIFT_B|K_ALT_SHIFT_C|K_ALT_SHIFT_D|K_ALT_SHIFT_E|K_ALT_SHIFT_F|K_ALT_SHIFT_G|K_ALT_SHIFT_G|K_ALT_SHIFT_H|K_ALT_SHIFT_I|K_ALT_SHIFT_J|K_ALT_SHIFT_K|K_ALT_SHIFT_L|K_ALT_SHIFT_M|K_ALT_SHIFT_N|K_ALT_SHIFT_\u00d1|K_ALT_SHIFT_O|K_ALT_SHIFT_P|K_ALT_SHIFT_Q|K_ALT_SHIFT_R|K_ALT_SHIFT_S|K_ALT_SHIFT_T|K_ALT_SHIFT_U|K_ALT_SHIFT_V|K_ALT_SHIFT_W|K_ALT_SHIFT_X|K_ALT_SHIFT_Y|K_ALT_SHIFT_Z|K_ALT_SHIFT_0|K_ALT_SHIFT_1|K_ALT_SHIFT_2|K_ALT_SHIFT_3|K_ALT_SHIFT_4|K_ALT_SHIFT_5|K_ALT_SHIFT_6|K_ALT_SHIFT_7|K_ALT_SHIFT_8|K_ALT_SHIFT_9|K_ALT_SHIFT_F1|K_ALT_SHIFT_F2|K_ALT_SHIFT_F3|K_ALT_SHIFT_F4|K_ALT_SHIFT_F5|K_ALT_SHIFT_F6|K_ALT_SHIFT_F7|K_ALT_SHIFT_F8|K_ALT_SHIFT_9|K_ALT_SHIFT_10|K_ALT_SHIFT_11|K_ALT_SHIFT_12|K_ALT_SHIFT_UP|K_ALT_SHIFT_DOWN|K_ALT_SHIFT_LEFT|K_ALT_SHIFT_RIGHT|K_ALT_SHIFT_RETURN|K_ALT_SHIFT_BACKSPACE|K_ALT_SHIFT_TAB|K_ALT_SHIFT_SPACE|K_ALT_SHIFT_ESCAPEK_CTRL_ALT_SHIFT_A|K_CTRL_ALT_SHIFT_B|K_CTRL_ALT_SHIFT_C|K_CTRL_ALT_SHIFT_D|K_CTRL_ALT_SHIFT_E|K_CTRL_ALT_SHIFT_F|K_CTRL_ALT_SHIFT_G|K_CTRL_ALT_SHIFT_G|K_CTRL_ALT_SHIFT_H|K_CTRL_ALT_SHIFT_I|K_CTRL_ALT_SHIFT_J|K_CTRL_ALT_SHIFT_K|K_CTRL_ALT_SHIFT_L|K_CTRL_ALT_SHIFT_M|K_CTRL_ALT_SHIFT_N|K_CTRL_ALT_SHIFT_\u00d1|K_CTRL_ALT_SHIFT_O|K_CTRL_ALT_SHIFT_P|K_CTRL_ALT_SHIFT_Q|K_CTRL_ALT_SHIFT_R|K_CTRL_ALT_SHIFT_S|K_CTRL_ALT_SHIFT_T|K_CTRL_ALT_SHIFT_U|K_CTRL_ALT_SHIFT_V|K_CTRL_ALT_SHIFT_W|K_CTRL_ALT_SHIFT_X|K_CTRL_ALT_SHIFT_Y|K_CTRL_ALT_SHIFT_Z|K_CTRL_ALT_SHIFT_0|K_CTRL_ALT_SHIFT_1|K_CTRL_ALT_SHIFT_2|K_CTRL_ALT_SHIFT_3|K_CTRL_ALT_SHIFT_4|K_CTRL_ALT_SHIFT_5|K_CTRL_ALT_SHIFT_6|K_CTRL_ALT_SHIFT_7|K_CTRL_ALT_SHIFT_8|K_CTRL_ALT_SHIFT_9|K_CTRL_ALT_SHIFT_F1|K_CTRL_ALT_SHIFT_F2|K_CTRL_ALT_SHIFT_F3|K_CTRL_ALT_SHIFT_F4|K_CTRL_ALT_SHIFT_F5|K_CTRL_ALT_SHIFT_F6|K_CTRL_ALT_SHIFT_F7|K_CTRL_ALT_SHIFT_F8|K_CTRL_ALT_SHIFT_F9|K_CTRL_ALT_SHIFT_F10|K_CTRL_ALT_SHIFT_F11|K_CTRL_ALT_SHIFT_F12|K_CTRL_ALT_SHIFT_UP|K_CTRL_ALT_SHIFT_DOWN|K_CTRL_ALT_SHIFT_LEFT|K_CTRL_ALT_SHIFT_RIGHT|K_CTRL_ALT_SHIFT_RETURN|K_CTRL_ALT_SHIFT_BACKSPACE|K_CTRL_ALT_SHIFT_TAB|K_CTRL_ALT_SHIFT_SPACE|K_CTRL_ALT_SHIFT_ESCAPE"},i={commands:":=",expressions:{numeric:"\\+|\\-|\\*|\\^|div|mod",comparison:">=|<=|==|\\/=|>|<","boolean":"\\|\\||&&|not",other:"\\+\\+|<\\-|\\[|\\]|\\_|\\->"}},s={line:{double_slash:"\\/\\/.*$",double_dash:"\\-\\-.*$",number_sign:"#.*$"},block:{start:"\\/\\*",end:"\\*\\/"},block_alt:{start:"\\{\\-",end:"\\-\\}"}};this.$rules={start:[{token:"comment.line.double-slash.gobstones",regex:s.line.double_slash},{token:"comment.line.double-dash.gobstones",regex:s.line.double_dash},{token:"comment.line.number-sign.gobstones",regex:s.line.number_sign},{token:"comment.block.dash-asterisc.gobstones",regex:s.block.start,next:"block_comment_end"},{token:"comment.block.brace-dash.gobstones",regex:s.block_alt.start,next:"block_comment_alt_end"},{token:"constant.numeric.gobstones",regex:n.numbers},{token:"string.quoted.double.gobstones",regex:n.strings},{token:"keyword.operator.other.gobstones",regex:i.expressions.other},{token:"keyword.operator.numeric.gobstones",regex:i.expressions.numeric},{token:"keyword.operator.compare.gobstones",regex:i.expressions.comparison},{token:"keyword.operator.boolean.gobstones",regex:i.expressions.boolean},{token:this.createKeywordMapper({"storage.type.definitions.gobstones":e.standard,"storage.type.types.gobstones":e.type,"keyword.control.commands.repetitions.gobstones":t.commands.repetitions,"keyword.control.commands.alternatives.gobstones":t.commands.alternatives,"keyword.control.expressions.alternatives.gobstones":t.expressions.alternatives,"constant.language.colors.gobstones":n.colors,"constant.language.cardinals.gobstones":n.cardinals,"constant.language.boolean.gobstones":n.booleans,"support.function.gobstones":r.commands,"support.variable.gobstones":r.expressions,"variable.language.gobstones":r.keys},"identifier.gobstones"),regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"comma.gobstones",regex:","},{token:"semicolon.gobstones",regex:";"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],block_comment_end:[{token:"comment.block.dash-asterisc.gobstones",regex:s.block.end,next:"start"},{defaultToken:"comment.block.dash-asterisc.gobstones"}],block_comment_alt_end:[{token:"comment.block.brace-dash.gobstones",regex:s.block_alt.end,next:"start"},{defaultToken:"comment.block.brace-dash.gobstones"}]}};r.inherits(s,i),t.GobstonesHighlightRules=s}),define("ace/mode/gobstones",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/gobstones_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./gobstones_highlight_rules").GobstonesHighlightRules,o=function(){i.call(this),this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.createWorker=function(){return null},this.$id="ace/mode/gobstones",this.snippetFileId="ace/snippets/gobstones"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/gobstones"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-golang.js b/www/js/ace/mode-golang.js deleted file mode 100644 index 690c5c6b0..000000000 --- a/www/js/ace/mode-golang.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="else|break|case|return|goto|if|const|select|continue|struct|default|switch|for|range|func|import|package|chan|defer|fallthrough|go|interface|map|range|select|type|var",t="string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error",n="new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append",r="nil|true|false|iota",s=this.createKeywordMapper({keyword:e,"constant.language":r,"support.function":n,"support.type":t},""),o="\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g,"[a-fA-F\\d]");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"string",regex:/"(?:[^"\\]|\\.)*?"/},{token:"string",regex:"`",next:"bqstring"},{token:"constant.numeric",regex:"'(?:[^\\'\ud800-\udbff]|[\ud800-\udbff][\udc00-\udfff]|"+o.replace('"',"")+")'"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:["keyword","text","entity.name.function"],regex:"(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b"},{token:function(e){return e[e.length-1]=="("?[{type:s(e.slice(0,-1))||"support.function",value:e.slice(0,-1)},{type:"paren.lparen",value:e.slice(-1)}]:s(e)||"identifier"},regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],bqstring:[{token:"string",regex:"`",next:"start"},{defaultToken:"string"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.GolangHighlightRules=o}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("./golang_highlight_rules").GolangHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new u,this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/golang"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/golang"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-graphqlschema.js b/www/js/ace/mode-graphqlschema.js deleted file mode 100644 index de63acc67..000000000 --- a/www/js/ace/mode-graphqlschema.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/graphqlschema_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="type|interface|union|enum|schema|input|implements|extends|scalar",t="Int|Float|String|ID|Boolean",n=this.createKeywordMapper({keyword:e,"storage.type":t},"identifier");this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:n,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}]},this.normalizeRules()};r.inherits(s,i),t.GraphQLSchemaHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/graphqlschema",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/graphqlschema_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./graphqlschema_highlight_rules").GraphQLSchemaHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/graphqlschema",this.snippetFileId="ace/snippets/graphqlschema"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/graphqlschema"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-groovy.js b/www/js/ace/mode-groovy.js deleted file mode 100644 index edf63d1e8..000000000 --- a/www/js/ace/mode-groovy.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/groovy_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="assert|with|abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|def|float|native|super|while",t="null|Infinity|NaN|undefined",n="AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"support.function":n,"constant.language":t},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'"""',next:"qqstring"},{token:"string",regex:"'''",next:"qstring"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\?:|\\?\\.|\\*\\.|<=>|=~|==~|\\.@|\\*\\.@|\\.&|as|in|is|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqstring:[{token:"constant.language.escape",regex:/\\(?:u[0-9A-Fa-f]{4}|.|$)/},{token:"constant.language.escape",regex:/\$[\w\d]+/},{token:"constant.language.escape",regex:/\$\{[^"\}]+\}?/},{token:"string",regex:'"{3,5}',next:"start"},{token:"string",regex:".+?"}],qstring:[{token:"constant.language.escape",regex:/\\(?:u[0-9A-Fa-f]{4}|.|$)/},{token:"string",regex:"'{3,5}",next:"start"},{token:"string",regex:".+?"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.GroovyHighlightRules=o}),define("ace/mode/groovy",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/groovy_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./groovy_highlight_rules").GroovyHighlightRules,o=function(){i.call(this),this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/groovy"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/groovy"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-haml.js b/www/js/ace/mode-haml.js deleted file mode 100644 index 8969873f6..000000000 --- a/www/js/ace/mode-haml.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.constantOtherSymbol={token:"constant.other.symbol.ruby",regex:"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"};t.qString={token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},t.qqString={token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},t.tString={token:"string",regex:"[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"};var o=t.constantNumericHex={token:"constant.numeric",regex:"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"},u=t.constantNumericBinary={token:"constant.numeric",regex:/\b(0[bB][01](?:[01]|_(?=[01]))*)\b/},a=t.constantNumericDecimal={token:"constant.numeric",regex:/\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/},f=t.constantNumericOctal={token:"constant.numeric",regex:/\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/},l=t.constantNumericRational={token:"constant.numeric",regex:/\b([\d]+(?:[./][\d]+)?ri?)\b/},c=t.constantNumericComplex={token:"constant.numeric",regex:/\b([\d]i)\b/},h=t.constantNumericFloat={token:"constant.numeric",regex:"[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"},p=t.instanceVariable={token:"variable.instance",regex:"@{1,2}[a-zA-Z_\\d]+"},d=function(){var e="abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|private_class_method|remove_method|undef_method",t="alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend",n="true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION",r="$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",i=this.$keywords=this.createKeywordMapper({keyword:t,"constant.language":n,"variable.language":r,"support.function":e,"invalid.deprecated":"debugger"},"identifier"),d="\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})",v={"(":")","[":"]","{":"}","<":">","^":"^","|":"|","%":"%"};this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment.multiline",regex:"^=begin(?=$|\\s.*$)",next:"comment"},{token:"string.regexp",regex:/[/](?=.*\/)/,next:"regex"},[{token:["constant.other.symbol.ruby","string.start"],regex:/(:)?(")/,push:[{token:"constant.language.escape",regex:d},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/`/,push:[{token:"constant.language.escape",regex:d},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/`/,next:"pop"},{defaultToken:"string"}]},{token:["constant.other.symbol.ruby","string.start"],regex:/(:)?(')/,push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:/'/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/%[qwx]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="qStateWithoutInterpolation",this.token}},{token:"string.start",regex:/%[QWX]?([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="qStateWithInterpolation",this.token}},{token:"constant.other.symbol.ruby",regex:/%[si]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="sStateWithoutInterpolation",this.token}},{token:"constant.other.symbol.ruby",regex:/%[SI]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="sStateWithInterpolation",this.token}},{token:"string.regexp",regex:/%[r]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="rState",this.token}}],{token:"punctuation",regex:"::"},p,{token:"variable.global",regex:"[$][a-zA-Z_\\d]+"},{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]*"},{token:["punctuation.operator","support.function"],regex:/(\.)([a-zA-Z_\d]+)(?=\()/},{token:["punctuation.operator","identifier"],regex:/(\.)([a-zA-Z_][a-zA-Z_\d]*)/},{token:"string.character",regex:"\\B\\?(?:"+d+"|\\S)"},{token:"punctuation.operator",regex:/\?(?=.+:)/},l,c,s,o,h,u,a,f,{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.separator.key-value",regex:"=>"},{stateName:"heredoc",onMatch:function(e,t,n){var r=e[2]=="-"||e[2]=="~"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[3]),[{type:"constant",value:i[1]},{type:"string",value:i[2]},{type:"support.class",value:i[3]},{type:"string",value:i[4]}]},regex:"(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)",rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]",onMatch:function(e,t,n){return this.next="",e=="}"&&n.length>1&&n[1]!="start"&&(n.shift(),this.next=n.shift()),this.token}},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:/[?:,;.]/}],comment:[{token:"comment.multiline",regex:"^=end(?=$|\\s.*$)",next:"start"},{token:"comment",regex:".+"}],qStateWithInterpolation:[{token:"string.start",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"string"}},{token:"constant.language.escape",regex:d},{token:"constant.language.escape",regex:/\\./},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","string")}},{defaultToken:"string"}],qStateWithoutInterpolation:[{token:"string.start",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"string"}},{token:"constant.language.escape",regex:/\\['\\]/},{token:"constant.language.escape",regex:/\\./},{token:"string.end",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","string")}},{defaultToken:"string"}],sStateWithoutInterpolation:[{token:"constant.other.symbol.ruby",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.other.symbol.ruby"}},{token:"constant.other.symbol.ruby",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.other.symbol.ruby")}},{defaultToken:"constant.other.symbol.ruby"}],sStateWithInterpolation:[{token:"constant.other.symbol.ruby",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.other.symbol.ruby"}},{token:"constant.language.escape",regex:d},{token:"constant.language.escape",regex:/\\./},{token:"paren.start",regex:/#{/,push:"start"},{token:"constant.other.symbol.ruby",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.other.symbol.ruby")}},{defaultToken:"constant.other.symbol.ruby"}],rState:[{token:"string.regexp",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.language.escape"}},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.regexp",regex:/\//},{token:"string.regexp",regex:/[)\]>}^|%][imxouesn]*/,onMatch:function(e,t,n){return n.length&&e[0]===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.language.escape")}},{include:"regex"},{defaultToken:"string.regexp"}],regex:[{token:"regexp.keyword",regex:/\\[wWdDhHsS]/},{token:"constant.language.escape",regex:/\\[AGbBzZ]/},{token:"constant.language.escape",regex:/\\g<[a-zA-Z0-9]*>/},{token:["constant.language.escape","regexp.keyword","constant.language.escape"],regex:/(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/},{token:["constant.language.escape","invalid","constant.language.escape"],regex:/(\\p{\^?)([^/]*)(})/},{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:/[/][imxouesn]*/,next:"start"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"regexp.keyword",regex:/\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/},{token:"constant.language.escape",regex:/\[\^?/,push:"regex_character_class"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.keyword",regex:/\\[wWdDhHsS]/},{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:/&?&?\[\^?/,push:"regex_character_class"},{token:"constant.language.escape",regex:"]",next:"pop"},{token:"constant.language.escape",regex:"-"},{defaultToken:"string.regexp.characterclass"}]},this.normalizeRules()};r.inherits(d,i),t.RubyHighlightRules=d}),define("ace/mode/haml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/ruby_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./ruby_highlight_rules"),o=s.RubyHighlightRules,u=function(){i.call(this),this.$rules={start:[{token:"comment.block",regex:/^\/$/,next:"comment"},{token:"comment.block",regex:/^\-#$/,next:"comment"},{token:"comment.line",regex:/\/\s*.*/},{token:"comment.line",regex:/-#\s*.*/},{token:"keyword.other.doctype",regex:"^!!!\\s*(?:[a-zA-Z0-9-_]+)?"},s.qString,s.qqString,s.tString,{token:"meta.tag.haml",regex:/(%[\w:\-]+)/},{token:"keyword.attribute-name.class.haml",regex:/\.[\w-]+/},{token:"keyword.attribute-name.id.haml",regex:/#[\w-]+/,next:"element_class"},s.constantNumericHex,s.constantNumericFloat,s.constantOtherSymbol,{token:"text",regex:/=|-|~/,next:"embedded_ruby"}],element_class:[{token:"keyword.attribute-name.class.haml",regex:/\.[\w-]+/},{token:"punctuation.section",regex:/\{/,next:"element_attributes"},s.constantOtherSymbol,{token:"empty",regex:"$|(?!\\.|#|\\{|\\[|=|-|~|\\/])",next:"start"}],element_attributes:[s.constantOtherSymbol,s.qString,s.qqString,s.tString,s.constantNumericHex,s.constantNumericFloat,{token:"punctuation.section",regex:/$|\}/,next:"start"}],embedded_ruby:[s.constantNumericHex,s.constantNumericFloat,s.instanceVariable,s.qString,s.qqString,s.tString,{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]+"},{token:(new o).getKeywords(),regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:["keyword","text","text"],regex:"(?:do|\\{)(?: \\|[^|]+\\|)?$",next:"start"},{token:["text"],regex:"^$",next:"start"},{token:["text"],regex:"^(?!.*\\|\\s*$)",next:"start"}],comment:[{token:"comment.block",regex:/^$/,next:"start"},{token:"comment.block",regex:/\s+.*/}]},this.normalizeRules()};r.inherits(u,i),t.HamlHighlightRules=u}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/handlebars_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";function s(e,t){return t.splice(0,3),t.shift()||"start"}var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,o=function(){i.call(this);var e={regex:"(?={{)",push:"handlebars"};for(var t in this.$rules)this.$rules[t].unshift(e);this.$rules.handlebars=[{token:"comment.start",regex:"{{!--",push:[{token:"comment.end",regex:"--}}",next:s},{defaultToken:"comment"}]},{token:"comment.start",regex:"{{!",push:[{token:"comment.end",regex:"}}",next:s},{defaultToken:"comment"}]},{token:"support.function",regex:"{{{",push:[{token:"support.function",regex:"}}}",next:s},{token:"variable.parameter",regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"}]},{token:"storage.type.start",regex:"{{[#\\^/&]?",push:[{token:"storage.type.end",regex:"}}",next:s},{token:"variable.parameter",regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"}]}],this.normalizeRules()};r.inherits(o,i),t.HandlebarsHighlightRules=o}),define("ace/mode/behaviour/html",["require","exports","module","ace/lib/oop","ace/mode/behaviour/xml"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour/xml").XmlBehaviour,s=function(){i.call(this)};r.inherits(s,i),t.HtmlBehaviour=s}),define("ace/mode/handlebars",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/handlebars_highlight_rules","ace/mode/behaviour/html","ace/mode/folding/html"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./handlebars_highlight_rules").HandlebarsHighlightRules,o=e("./behaviour/html").HtmlBehaviour,u=e("./folding/html").FoldMode,a=function(){i.call(this),this.HighlightRules=s,this.$behaviour=new o};r.inherits(a,i),function(){this.blockComment={start:"{{!--",end:"--}}"},this.$id="ace/mode/handlebars"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/handlebars"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-haskell.js b/www/js/ace/mode-haskell.js deleted file mode 100644 index 9f6b4c0b5..000000000 --- a/www/js/ace/mode-haskell.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/haskell_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["punctuation.definition.entity.haskell","keyword.operator.function.infix.haskell","punctuation.definition.entity.haskell"],regex:"(`)([a-zA-Z_']*?)(`)",comment:"In case this regex seems unusual for an infix operator, note that Haskell allows any ordinary function application (elem 4 [1..10]) to be rewritten as an infix expression (4 `elem` [1..10])."},{token:"constant.language.unit.haskell",regex:"\\(\\)"},{token:"constant.language.empty-list.haskell",regex:"\\[\\]"},{token:"keyword.other.haskell",regex:"\\b(module|signature)\\b",push:[{token:"keyword.other.haskell",regex:"\\bwhere\\b",next:"pop"},{include:"#module_name"},{include:"#module_exports"},{token:"invalid",regex:"[a-z]+"},{defaultToken:"meta.declaration.module.haskell"}]},{token:"keyword.other.haskell",regex:"\\bclass\\b",push:[{token:"keyword.other.haskell",regex:"\\bwhere\\b",next:"pop"},{token:"support.class.prelude.haskell",regex:"\\b(?:Monad|Functor|Eq|Ord|Read|Show|Num|(?:Frac|Ra)tional|Enum|Bounded|Real(?:Frac|Float)?|Integral|Floating)\\b"},{token:"entity.other.inherited-class.haskell",regex:"[A-Z][A-Za-z_']*"},{token:"variable.other.generic-type.haskell",regex:"\\b[a-z][a-zA-Z0-9_']*\\b"},{defaultToken:"meta.declaration.class.haskell"}]},{token:"keyword.other.haskell",regex:"\\binstance\\b",push:[{token:"keyword.other.haskell",regex:"\\bwhere\\b|$",next:"pop"},{include:"#type_signature"},{defaultToken:"meta.declaration.instance.haskell"}]},{token:"keyword.other.haskell",regex:"import",push:[{token:"meta.import.haskell",regex:"$|;|^",next:"pop"},{token:"keyword.other.haskell",regex:"qualified|as|hiding"},{include:"#module_name"},{include:"#module_exports"},{defaultToken:"meta.import.haskell"}]},{token:["keyword.other.haskell","meta.deriving.haskell"],regex:"(deriving)(\\s*\\()",push:[{token:"meta.deriving.haskell",regex:"\\)",next:"pop"},{token:"entity.other.inherited-class.haskell",regex:"\\b[A-Z][a-zA-Z_']*"},{defaultToken:"meta.deriving.haskell"}]},{token:"keyword.other.haskell",regex:"\\b(?:deriving|where|data|type|case|of|let|in|newtype|default)\\b"},{token:"keyword.operator.haskell",regex:"\\binfix[lr]?\\b"},{token:"keyword.control.haskell",regex:"\\b(?:do|if|then|else)\\b"},{token:"constant.numeric.float.haskell",regex:"\\b(?:[0-9]+\\.[0-9]+(?:[eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\b",comment:"Floats are always decimal"},{token:"constant.numeric.haskell",regex:"\\b(?:[0-9]+|0(?:[xX][0-9a-fA-F]+|[oO][0-7]+))\\b"},{token:["meta.preprocessor.c","punctuation.definition.preprocessor.c","meta.preprocessor.c"],regex:"^(\\s*)(#)(\\s*\\w+)",comment:'In addition to Haskell\'s "native" syntax, GHC permits the C preprocessor to be run on a source file.'},{include:"#pragma"},{token:"punctuation.definition.string.begin.haskell",regex:'"',push:[{token:"punctuation.definition.string.end.haskell",regex:'"',next:"pop"},{token:"constant.character.escape.haskell",regex:"\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])"},{token:"constant.character.escape.octal.haskell",regex:"\\\\o[0-7]+|\\\\x[0-9A-Fa-f]+|\\\\[0-9]+"},{token:"constant.character.escape.control.haskell",regex:"\\^[A-Z@\\[\\]\\\\\\^_]"},{defaultToken:"string.quoted.double.haskell"}]},{token:["punctuation.definition.string.begin.haskell","string.quoted.single.haskell","constant.character.escape.haskell","constant.character.escape.octal.haskell","constant.character.escape.hexadecimal.haskell","constant.character.escape.control.haskell","punctuation.definition.string.end.haskell"],regex:"(')(?:([\\ -\\[\\]-~])|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))(')"},{token:["meta.function.type-declaration.haskell","entity.name.function.haskell","meta.function.type-declaration.haskell","keyword.other.double-colon.haskell"],regex:"^(\\s*)([a-z_][a-zA-Z0-9_']*|\\([|!%$+\\-.,=]+\\))(\\s*)(::)",push:[{token:"meta.function.type-declaration.haskell",regex:"$",next:"pop"},{include:"#type_signature"},{defaultToken:"meta.function.type-declaration.haskell"}]},{token:"support.constant.haskell",regex:"\\b(?:Just|Nothing|Left|Right|True|False|LT|EQ|GT|\\(\\)|\\[\\])\\b"},{token:"constant.other.haskell",regex:"\\b[A-Z]\\w*\\b"},{include:"#comments"},{token:"support.function.prelude.haskell",regex:"\\b(?:abs|acos|acosh|all|and|any|appendFile|applyM|asTypeOf|asin|asinh|atan|atan2|atanh|break|catch|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b"},{include:"#infix_op"},{token:"keyword.operator.haskell",regex:"[|!%$?~+:\\-.=\\\\]+",comment:"In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*."},{token:"punctuation.separator.comma.haskell",regex:","}],"#block_comment":[{token:"punctuation.definition.comment.haskell",regex:"\\{-(?!#)",push:[{include:"#block_comment"},{token:"punctuation.definition.comment.haskell",regex:"-\\}",next:"pop"},{defaultToken:"comment.block.haskell"}]}],"#comments":[{token:"punctuation.definition.comment.haskell",regex:"--.*",push_:[{token:"comment.line.double-dash.haskell",regex:"$",next:"pop"},{defaultToken:"comment.line.double-dash.haskell"}]},{include:"#block_comment"}],"#infix_op":[{token:"entity.name.function.infix.haskell",regex:"\\([|!%$+:\\-.=]+\\)|\\(,+\\)"}],"#module_exports":[{token:"meta.declaration.exports.haskell",regex:"\\(",push:[{token:"meta.declaration.exports.haskell.end",regex:"\\)",next:"pop"},{token:"entity.name.function.haskell",regex:"\\b[a-z][a-zA-Z_']*"},{token:"storage.type.haskell",regex:"\\b[A-Z][A-Za-z_']*"},{token:"punctuation.separator.comma.haskell",regex:","},{include:"#infix_op"},{token:"meta.other.unknown.haskell",regex:"\\(.*?\\)",comment:"So named because I don't know what to call this."},{defaultToken:"meta.declaration.exports.haskell.end"}]}],"#module_name":[{token:"support.other.module.haskell",regex:"[A-Z][A-Za-z._']*"}],"#pragma":[{token:"meta.preprocessor.haskell",regex:"\\{-#",push:[{token:"meta.preprocessor.haskell",regex:"#-\\}",next:"pop"},{token:"keyword.other.preprocessor.haskell",regex:"\\b(?:LANGUAGE|UNPACK|INLINE)\\b"},{defaultToken:"meta.preprocessor.haskell"}]}],"#type_signature":[{token:["meta.class-constraint.haskell","entity.other.inherited-class.haskell","meta.class-constraint.haskell","variable.other.generic-type.haskell","meta.class-constraint.haskell","keyword.other.big-arrow.haskell"],regex:"(\\(\\s*)([A-Z][A-Za-z]*)(\\s+)([a-z][A-Za-z_']*)(\\)\\s*)(=>)"},{include:"#pragma"},{token:"keyword.other.arrow.haskell",regex:"->"},{token:"keyword.other.big-arrow.haskell",regex:"=>"},{token:"support.type.prelude.haskell",regex:"\\b(?:Int(?:eger)?|Maybe|Either|Bool|Float|Double|Char|String|Ordering|ShowS|ReadS|FilePath|IO(?:Error)?)\\b"},{token:"variable.other.generic-type.haskell",regex:"\\b[a-z][a-zA-Z0-9_']*\\b"},{token:"storage.type.haskell",regex:"\\b[A-Z][a-zA-Z0-9_']*\\b"},{token:"support.constant.unit.haskell",regex:"\\(\\)"},{include:"#comments"}]},this.normalizeRules()};s.metaData={fileTypes:["hs"],keyEquivalent:"^~H",name:"Haskell",scopeName:"source.haskell"},r.inherits(s,i),t.HaskellHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/haskell",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haskell_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./haskell_highlight_rules").HaskellHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment=null,this.$id="ace/mode/haskell",this.snippetFileId="ace/snippets/haskell"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/haskell"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-haskell_cabal.js b/www/js/ace/mode-haskell_cabal.js deleted file mode 100644 index 7e9e552a7..000000000 --- a/www/js/ace/mode-haskell_cabal.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/haskell_cabal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:"^\\s*--.*$"},{token:["keyword"],regex:/^(\s*\w.*?)(:(?:\s+|$))/},{token:"constant.numeric",regex:/[\d_]+(?:(?:[\.\d_]*)?)/},{token:"constant.language.boolean",regex:"(?:true|false|TRUE|FALSE|True|False|yes|no)\\b"},{token:"markup.heading",regex:/^(\w.*)$/}]}};r.inherits(s,i),t.CabalHighlightRules=s}),define("ace/mode/folding/haskell_cabal",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.isHeading=function(e,t){var n="markup.heading",r=e.getTokens(t)[0];return t==0||r&&r.type.lastIndexOf(n,0)===0},this.getFoldWidget=function(e,t,n){if(this.isHeading(e,n))return"start";if(t==="markbeginend"&&!/^\s*$/.test(e.getLine(n))){var r=e.getLength();while(++nu)while(a>u&&/^\s*$/.test(e.getLine(a)))a--;if(a>u){var f=e.getLine(a).length;return new s(u,i,a,f)}}else if(this.getFoldWidget(e,t,n)==="end"){var a=n,f=e.getLine(a).length;while(--n>=0)if(this.isHeading(e,n))break;var r=e.getLine(n),i=r.length;return new s(n,i,a,f)}}}.call(o.prototype)}),define("ace/mode/haskell_cabal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haskell_cabal_highlight_rules","ace/mode/folding/haskell_cabal"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./haskell_cabal_highlight_rules").CabalHighlightRules,o=e("./folding/haskell_cabal").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment=null,this.$id="ace/mode/haskell_cabal"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/haskell_cabal"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-haxe.js b/www/js/ace/mode-haxe.js deleted file mode 100644 index 5c3682e30..000000000 --- a/www/js/ace/mode-haxe.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/haxe_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="break|case|cast|catch|class|continue|default|else|enum|extends|for|function|if|implements|import|in|inline|interface|new|override|package|private|public|return|static|super|switch|this|throw|trace|try|typedef|untyped|var|while|Array|Void|Bool|Int|UInt|Float|Dynamic|String|List|Hash|IntHash|Error|Unknown|Type|Std",t="null|true|false",n=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:n,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({<]"},{token:"paren.rparen",regex:"[\\])}>]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.HaxeHighlightRules=o}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/haxe",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haxe_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./haxe_highlight_rules").HaxeHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/haxe"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/haxe"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-hjson.js b/www/js/ace/mode-hjson.js deleted file mode 100644 index 9978e801a..000000000 --- a/www/js/ace/mode-hjson.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/hjson_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#comments"},{include:"#rootObject"},{include:"#value"}],"#array":[{token:"paren.lparen",regex:/\[/,push:[{token:"paren.rparen",regex:/\]/,next:"pop"},{include:"#value"},{include:"#comments"},{token:"text",regex:/,|$/},{token:"invalid.illegal",regex:/[^\s\]]/},{defaultToken:"array"}]}],"#comments":[{token:["comment.punctuation","comment.line"],regex:/(#)(.*$)/},{token:"comment.punctuation",regex:/\/\*/,push:[{token:"comment.punctuation",regex:/\*\//,next:"pop"},{defaultToken:"comment.block"}]},{token:["comment.punctuation","comment.line"],regex:/(\/\/)(.*$)/}],"#constant":[{token:"constant",regex:/\b(?:true|false|null)\b/}],"#keyname":[{token:"keyword",regex:/(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*(?=:)/}],"#mstring":[{token:"string",regex:/'''/,push:[{token:"string",regex:/'''/,next:"pop"},{defaultToken:"string"}]}],"#number":[{token:"constant.numeric",regex:/-?(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?/,comment:"handles integer and decimal numbers"}],"#object":[{token:"paren.lparen",regex:/\{/,push:[{token:"paren.rparen",regex:/\}/,next:"pop"},{include:"#keyname"},{include:"#value"},{token:"text",regex:/:/},{token:"text",regex:/,/},{defaultToken:"paren"}]}],"#rootObject":[{token:"paren",regex:/(?=\s*(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*:)/,push:[{token:"paren.rparen",regex:/---none---/,next:"pop"},{include:"#keyname"},{include:"#value"},{token:"text",regex:/:/},{token:"text",regex:/,/},{defaultToken:"paren"}]}],"#string":[{token:"string",regex:/"/,push:[{token:"string",regex:/"/,next:"pop"},{token:"constant.language.escape",regex:/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/},{token:"invalid.illegal",regex:/\\./},{defaultToken:"string"}]}],"#ustring":[{token:"string",regex:/\b[^:,0-9\-\{\[\}\]\s].*$/}],"#value":[{include:"#constant"},{include:"#number"},{include:"#string"},{include:"#array"},{include:"#object"},{include:"#comments"},{include:"#mstring"},{include:"#ustring"}]},this.normalizeRules()};s.metaData={fileTypes:["hjson"],foldingStartMarker:"(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [{\\[] # the start of an object or array\n (?! # but not followed by\n .* # whatever\n [}\\]] # and the close of an object or array\n ,? # an optional comma\n \\s* # some optional space\n $ # at the end of the line\n )\n | # ...or...\n [{\\[] # the start of an object or array\n \\s* # some optional space\n $ # at the end of the line\n )",foldingStopMarker:"(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [}\\]] # and the close of an object or array\n )",keyEquivalent:"^~J",name:"Hjson",scopeName:"source.hjson"},r.inherits(s,i),t.HjsonHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/hjson",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/hjson_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./hjson_highlight_rules").HjsonHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/hjson"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/hjson"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-html.js b/www/js/ace/mode-html.js deleted file mode 100644 index 5498e281c..000000000 --- a/www/js/ace/mode-html.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}); (function() { - window.require(["ace/mode/html"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-html_elixir.js b/www/js/ace/mode-html_elixir.js deleted file mode 100644 index ac2ffe6ee..000000000 --- a/www/js/ace/mode-html_elixir.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["meta.module.elixir","keyword.control.module.elixir","meta.module.elixir","entity.name.type.module.elixir"],regex:"^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)"},{token:"comment.documentation.heredoc",regex:'@(?:module|type)?doc (?:~[a-z])?"""',push:[{token:"comment.documentation.heredoc",regex:'\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:'@(?:module|type)?doc ~[A-Z]"""',push:[{token:"comment.documentation.heredoc",regex:'\\s*"""',next:"pop"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:"@(?:module|type)?doc (?:~[a-z])?'''",push:[{token:"comment.documentation.heredoc",regex:"\\s*'''",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:"@(?:module|type)?doc ~[A-Z]'''",push:[{token:"comment.documentation.heredoc",regex:"\\s*'''",next:"pop"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.false",regex:"@(?:module|type)?doc false",comment:"@doc false is treated as documentation"},{token:"comment.documentation.string",regex:'@(?:module|type)?doc "',push:[{token:"comment.documentation.string",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.string"}],comment:"@doc with string is treated as documentation"},{token:"keyword.control.elixir",regex:"\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b"},{token:"punctuation.definition.constant.elixir",regex:":'",push:[{token:"punctuation.definition.constant.elixir",regex:"'",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"constant.other.symbol.single-quoted.elixir"}]},{token:"punctuation.definition.constant.elixir",regex:':"',push:[{token:"punctuation.definition.constant.elixir",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"constant.other.symbol.double-quoted.elixir"}]},{token:"punctuation.definition.string.begin.elixir",regex:"(?:''')",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?>''')",push:[{token:"punctuation.definition.string.end.elixir",regex:"^\\s*'''",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"support.function.variable.quoted.single.heredoc.elixir"}],comment:"Single-quoted heredocs"},{token:"punctuation.definition.string.begin.elixir",regex:"'",push:[{token:"punctuation.definition.string.end.elixir",regex:"'",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"support.function.variable.quoted.single.elixir"}],comment:"single quoted string (allows for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'(?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'(?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.heredoc.elixir"}],comment:"Double-quoted heredocs"},{token:"punctuation.definition.string.begin.elixir",regex:'"',push:[{token:"punctuation.definition.string.end.elixir",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.elixir"}],comment:"double quoted string (allows for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'~[a-z](?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'~[a-z](?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.heredoc.elixir"}],comment:"Double-quoted heredocs sigils"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\{",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\}[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\[",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\][a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\<",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\>[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\(",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\)[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z][^\\w]",push:[{token:"punctuation.definition.string.end.elixir",regex:"[^\\w][a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'~[A-Z](?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'~[A-Z](?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"Double-quoted heredocs sigils"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\{",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\}[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\[",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\][a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\<",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\>[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\(",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\)[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z][^\\w]",push:[{token:"punctuation.definition.string.end.elixir",regex:"[^\\w][a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:["punctuation.definition.constant.elixir","constant.other.symbol.elixir"],regex:"(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)",comment:"symbols"},{token:"punctuation.definition.constant.elixir",regex:"(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)",comment:"symbols"},{token:["punctuation.definition.comment.elixir","comment.line.number-sign.elixir"],regex:"(#)(.*)"},{token:"constant.numeric.elixir",regex:"\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?=?"},{token:"keyword.operator.bitwise.elixir",regex:"\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}"},{token:"keyword.operator.logical.elixir",regex:"!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b",originalRegex:"(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b"},{token:"keyword.operator.arithmetic.elixir",regex:"\\*|\\+|\\-|/"},{token:"keyword.operator.other.elixir",regex:"\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>"},{token:"keyword.operator.assignment.elixir",regex:"="},{token:"punctuation.separator.other.elixir",regex:":"},{token:"punctuation.separator.statement.elixir",regex:"\\;"},{token:"punctuation.separator.object.elixir",regex:","},{token:"punctuation.separator.method.elixir",regex:"\\."},{token:"punctuation.section.scope.elixir",regex:"\\{|\\}"},{token:"punctuation.section.array.elixir",regex:"\\[|\\]"},{token:"punctuation.section.function.elixir",regex:"\\(|\\)"}],"#escaped_char":[{token:"constant.character.escape.elixir",regex:"\\\\(?:x[\\da-fA-F]{1,2}|.)"}],"#interpolated_elixir":[{token:["source.elixir.embedded.source","source.elixir.embedded.source.empty"],regex:"(#\\{)(\\})"},{todo:{token:"punctuation.section.embedded.elixir",regex:"#\\{",push:[{token:"punctuation.section.embedded.elixir",regex:"\\}",next:"pop"},{include:"#nest_curly_and_self"},{include:"$self"},{defaultToken:"source.elixir.embedded.source"}]}}],"#nest_curly_and_self":[{token:"punctuation.section.scope.elixir",regex:"\\{",push:[{token:"punctuation.section.scope.elixir",regex:"\\}",next:"pop"},{include:"#nest_curly_and_self"}]},{include:"$self"}],"#regex_sub":[{include:"#interpolated_elixir"},{include:"#escaped_char"},{token:["punctuation.definition.arbitrary-repitition.elixir","string.regexp.arbitrary-repitition.elixir","string.regexp.arbitrary-repitition.elixir","punctuation.definition.arbitrary-repitition.elixir"],regex:"(\\{)(\\d+)((?:,\\d+)?)(\\})"},{token:"punctuation.definition.character-class.elixir",regex:"\\[(?:\\^?\\])?",push:[{token:"punctuation.definition.character-class.elixir",regex:"\\]",next:"pop"},{include:"#escaped_char"},{defaultToken:"string.regexp.character-class.elixir"}]},{token:"punctuation.definition.group.elixir",regex:"\\(",push:[{token:"punctuation.definition.group.elixir",regex:"\\)",next:"pop"},{include:"#regex_sub"},{defaultToken:"string.regexp.group.elixir"}]},{token:["punctuation.definition.comment.elixir","comment.line.number-sign.elixir"],regex:"(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)",originalRegex:"(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",comment:"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags."}]},this.normalizeRules()};s.metaData={comment:"Textmate bundle for Elixir Programming Language.",fileTypes:["ex","exs"],firstLineMatch:"^#!/.*\\belixir",foldingStartMarker:"(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$",foldingStopMarker:"^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)",keyEquivalent:"^~E",name:"Elixir",scopeName:"source.elixir"},r.inherits(s,i),t.ElixirHighlightRules=s}),define("ace/mode/html_elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/elixir_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./elixir_highlight_rules").ElixirHighlightRules,o=function(){i.call(this);var e=[{regex:"<%%|%%>",token:"constant.language.escape"},{token:"comment.start.eex",regex:"<%#",push:[{token:"comment.end.eex",regex:"%>",next:"pop",defaultToken:"comment"}]},{token:"support.elixir_tag",regex:"<%+(?!>)[-=]?",push:"elixir-start"}],t=[{token:"support.elixir_tag",regex:"%>",next:"pop"},{token:"comment",regex:"#(?:[^%]|%[^>])*"}];for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],e);this.embedRules(s,"elixir-",t,["start"]),this.normalizeRules()};r.inherits(o,i),t.HtmlElixirHighlightRules=o}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.constantOtherSymbol={token:"constant.other.symbol.ruby",regex:"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"};t.qString={token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},t.qqString={token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},t.tString={token:"string",regex:"[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"};var o=t.constantNumericHex={token:"constant.numeric",regex:"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"},u=t.constantNumericBinary={token:"constant.numeric",regex:/\b(0[bB][01](?:[01]|_(?=[01]))*)\b/},a=t.constantNumericDecimal={token:"constant.numeric",regex:/\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/},f=t.constantNumericOctal={token:"constant.numeric",regex:/\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/},l=t.constantNumericRational={token:"constant.numeric",regex:/\b([\d]+(?:[./][\d]+)?ri?)\b/},c=t.constantNumericComplex={token:"constant.numeric",regex:/\b([\d]i)\b/},h=t.constantNumericFloat={token:"constant.numeric",regex:"[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"},p=t.instanceVariable={token:"variable.instance",regex:"@{1,2}[a-zA-Z_\\d]+"},d=function(){var e="abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|private_class_method|remove_method|undef_method",t="alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend",n="true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION",r="$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",i=this.$keywords=this.createKeywordMapper({keyword:t,"constant.language":n,"variable.language":r,"support.function":e,"invalid.deprecated":"debugger"},"identifier"),d="\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})",v={"(":")","[":"]","{":"}","<":">","^":"^","|":"|","%":"%"};this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment.multiline",regex:"^=begin(?=$|\\s.*$)",next:"comment"},{token:"string.regexp",regex:/[/](?=.*\/)/,next:"regex"},[{token:["constant.other.symbol.ruby","string.start"],regex:/(:)?(")/,push:[{token:"constant.language.escape",regex:d},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/`/,push:[{token:"constant.language.escape",regex:d},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/`/,next:"pop"},{defaultToken:"string"}]},{token:["constant.other.symbol.ruby","string.start"],regex:/(:)?(')/,push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:/'/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/%[qwx]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="qStateWithoutInterpolation",this.token}},{token:"string.start",regex:/%[QWX]?([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="qStateWithInterpolation",this.token}},{token:"constant.other.symbol.ruby",regex:/%[si]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="sStateWithoutInterpolation",this.token}},{token:"constant.other.symbol.ruby",regex:/%[SI]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="sStateWithInterpolation",this.token}},{token:"string.regexp",regex:/%[r]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="rState",this.token}}],{token:"punctuation",regex:"::"},p,{token:"variable.global",regex:"[$][a-zA-Z_\\d]+"},{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]*"},{token:["punctuation.operator","support.function"],regex:/(\.)([a-zA-Z_\d]+)(?=\()/},{token:["punctuation.operator","identifier"],regex:/(\.)([a-zA-Z_][a-zA-Z_\d]*)/},{token:"string.character",regex:"\\B\\?(?:"+d+"|\\S)"},{token:"punctuation.operator",regex:/\?(?=.+:)/},l,c,s,o,h,u,a,f,{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.separator.key-value",regex:"=>"},{stateName:"heredoc",onMatch:function(e,t,n){var r=e[2]=="-"||e[2]=="~"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[3]),[{type:"constant",value:i[1]},{type:"string",value:i[2]},{type:"support.class",value:i[3]},{type:"string",value:i[4]}]},regex:"(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)",rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]",onMatch:function(e,t,n){return this.next="",e=="}"&&n.length>1&&n[1]!="start"&&(n.shift(),this.next=n.shift()),this.token}},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:/[?:,;.]/}],comment:[{token:"comment.multiline",regex:"^=end(?=$|\\s.*$)",next:"start"},{token:"comment",regex:".+"}],qStateWithInterpolation:[{token:"string.start",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"string"}},{token:"constant.language.escape",regex:d},{token:"constant.language.escape",regex:/\\./},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","string")}},{defaultToken:"string"}],qStateWithoutInterpolation:[{token:"string.start",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"string"}},{token:"constant.language.escape",regex:/\\['\\]/},{token:"constant.language.escape",regex:/\\./},{token:"string.end",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","string")}},{defaultToken:"string"}],sStateWithoutInterpolation:[{token:"constant.other.symbol.ruby",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.other.symbol.ruby"}},{token:"constant.other.symbol.ruby",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.other.symbol.ruby")}},{defaultToken:"constant.other.symbol.ruby"}],sStateWithInterpolation:[{token:"constant.other.symbol.ruby",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.other.symbol.ruby"}},{token:"constant.language.escape",regex:d},{token:"constant.language.escape",regex:/\\./},{token:"paren.start",regex:/#{/,push:"start"},{token:"constant.other.symbol.ruby",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.other.symbol.ruby")}},{defaultToken:"constant.other.symbol.ruby"}],rState:[{token:"string.regexp",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.language.escape"}},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.regexp",regex:/\//},{token:"string.regexp",regex:/[)\]>}^|%][imxouesn]*/,onMatch:function(e,t,n){return n.length&&e[0]===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.language.escape")}},{include:"regex"},{defaultToken:"string.regexp"}],regex:[{token:"regexp.keyword",regex:/\\[wWdDhHsS]/},{token:"constant.language.escape",regex:/\\[AGbBzZ]/},{token:"constant.language.escape",regex:/\\g<[a-zA-Z0-9]*>/},{token:["constant.language.escape","regexp.keyword","constant.language.escape"],regex:/(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/},{token:["constant.language.escape","invalid","constant.language.escape"],regex:/(\\p{\^?)([^/]*)(})/},{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:/[/][imxouesn]*/,next:"start"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"regexp.keyword",regex:/\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/},{token:"constant.language.escape",regex:/\[\^?/,push:"regex_character_class"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.keyword",regex:/\\[wWdDhHsS]/},{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:/&?&?\[\^?/,push:"regex_character_class"},{token:"constant.language.escape",regex:"]",next:"pop"},{token:"constant.language.escape",regex:"-"},{defaultToken:"string.regexp.characterclass"}]},this.normalizeRules()};r.inherits(d,i),t.RubyHighlightRules=d}),define("ace/mode/html_ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/ruby_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./ruby_highlight_rules").RubyHighlightRules,o=function(){i.call(this);var e=[{regex:"<%%|%%>",token:"constant.language.escape"},{token:"comment.start.erb",regex:"<%#",push:[{token:"comment.end.erb",regex:"%>",next:"pop",defaultToken:"comment"}]},{token:"support.ruby_tag",regex:"<%+(?!>)[-=]?",push:"ruby-start"}],t=[{token:"support.ruby_tag",regex:"%>",next:"pop"},{token:"comment",regex:"#(?:[^%]|%[^>])*"}];for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],e);this.embedRules(s,"ruby-",t,["start"]),this.normalizeRules()};r.inherits(o,i),t.HtmlRubyHighlightRules=o}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.indentKeywords={"class":1,def:1,module:1,"do":1,unless:1,"if":1,"while":1,"for":1,until:1,begin:1,"else":0,elsif:0,rescue:0,ensure:0,when:0,end:-1,"case":1,"=begin":1,"=end":-1},this.foldingStartMarker=/(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/,this.foldingStopMarker=/(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarker.test(r),s=this.foldingStopMarker.test(r);if(i&&!s){var o=r.match(this.foldingStartMarker);if(o[1]){if(o[1]=="if"||o[1]=="else"||o[1]=="while"||o[1]=="until"||o[1]=="unless"){if(o[1]=="else"&&/^\s*else\s*$/.test(r)===!1)return;if(/^\s*(?:if|else|while|until|unless)\s*/.test(r)===!1)return}if(o[1]=="when"&&/\sthen\s/.test(r)===!0)return;if(e.getTokenAt(n,o.index+2).type==="keyword")return"start"}else{if(!o[3])return"start";if(e.getTokenAt(n,o.index+1).type==="comment.multiline")return"start"}}if(t!="markbeginend"||!s||i&&s)return"";var o=r.match(this.foldingStopMarker);if(o[3]==="end"){if(e.getTokenAt(n,o.index+1).type==="keyword")return"end"}else{if(!o[1])return"end";if(e.getTokenAt(n,o.index+1).type==="comment.multiline")return"end"}},this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]||i[3]?this.rubyBlock(e,n,i.index+2):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[3]==="end"&&e.getTokenAt(n,i.index+1).type==="keyword"?this.rubyBlock(e,n,i.index+1):i[1]==="=end"&&e.getTokenAt(n,i.index+1).type==="comment.multiline"?this.rubyBlock(e,n,i.index+1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.rubyBlock=function(e,t,n,r){var i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!="keyword"&&u.type!="comment.multiline")return;var a=u.value,f=e.getLine(t);switch(u.value){case"if":case"unless":case"while":case"until":var l=new RegExp("^\\s*"+u.value);if(!l.test(f))return;var c=this.indentKeywords[a];break;case"when":if(/\sthen\s/.test(f))return;case"elsif":case"rescue":case"ensure":var c=1;break;case"else":var l=new RegExp("^\\s*"+u.value+"\\s*$");if(!l.test(f))return;var c=1;break;default:var c=this.indentKeywords[a]}var h=[a];if(!c)return;var p=c===-1?e.getLine(t-1).length:e.getLine(t).length,d=t,v=[];v.push(i.getCurrentTokenRange()),i.step=c===-1?i.stepBackward:i.stepForward;if(u.type=="comment.multiline")while(u=i.step()){if(u.type!=="comment.multiline")continue;if(c==1){p=6;if(u.value=="=end")break}else if(u.value=="=begin")break}else while(u=i.step()){var m=!1;if(u.type!=="keyword")continue;var g=c*this.indentKeywords[u.value];f=e.getLine(i.getCurrentTokenRow());switch(u.value){case"do":for(var y=i.$tokenIndex-1;y>=0;y--){var b=i.$rowTokens[y];if(b&&(b.value=="while"||b.value=="until"||b.value=="for")){g=0;break}}break;case"else":var l=new RegExp("^\\s*"+u.value+"\\s*$");if(!l.test(f)||a=="case")g=0,m=!0;break;case"if":case"unless":case"while":case"until":var l=new RegExp("^\\s*"+u.value);l.test(f)||(g=0,m=!0);break;case"when":if(/\sthen\s/.test(f)||a=="case")g=0,m=!0}if(g>0)h.unshift(u.value);else if(g<=0&&m===!1){h.shift();if(!h.length){if((a=="while"||a=="until"||a=="for")&&u.value!="do")break;if(u.value=="do"&&c==-1&&g!=0)break;if(u.value!="do")break}g===0&&h.unshift(u.value)}}if(!u)return null;if(r)return v.push(i.getCurrentTokenRange()),v;var t=i.getCurrentTokenRow();if(c===-1){if(u.type==="comment.multiline")var w=6;else var w=e.getLine(t).length;return new s(t,w,d-1,p)}return new s(d,p,t-1,e.getLine(t-1).length)}}.call(u.prototype)}),define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/ruby"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ruby_highlight_rules").RubyHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./folding/ruby").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new a,this.indentKeywords=this.foldingRules.indentKeywords};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/),u=t.match(/^\s*(class|def|module)\s.*$/),a=t.match(/.*do(\s*|\s+\|.*\|\s*)$/),f=t.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/);if(o||u||a||f)r+=n}return r},this.checkOutdent=function(e,t,n){return/^\s+(end|else|rescue|ensure)$/.test(t+n)||this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){var r=t.getLine(n);if(/}/.test(r))return this.$outdent.autoOutdent(t,n);var i=this.$getIndent(r),s=t.getLine(n-1),o=this.$getIndent(s),a=t.getTabString();o.length<=i.length&&i.slice(-a.length)==a&&t.remove(new u(n,i.length-a.length,n,i.length))},this.getMatching=function(e,t,n){if(t==undefined){var r=e.selection.lead;n=r.column,t=r.row}var i=e.getTokenAt(t,n);if(i&&i.value in this.indentKeywords)return this.foldingRules.rubyBlock(e,t,n,!0)},this.$id="ace/mode/ruby",this.snippetFileId="ace/snippets/ruby"}.call(f.prototype),t.Mode=f}),define("ace/mode/html_ruby",["require","exports","module","ace/lib/oop","ace/mode/html_ruby_highlight_rules","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_ruby_highlight_rules").HtmlRubyHighlightRules,s=e("./html").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./ruby").Mode,f=function(){s.call(this),this.HighlightRules=i,this.createModeDelegates({"js-":o,"css-":u,"ruby-":a})};r.inherits(f,s),function(){this.$id="ace/mode/html_ruby"}.call(f.prototype),t.Mode=f}); (function() { - window.require(["ace/mode/html_ruby"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-ini.js b/www/js/ace/mode-ini.js deleted file mode 100644 index 0655e50e8..000000000 --- a/www/js/ace/mode-ini.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/ini_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s="\\\\(?:[\\\\0abtrn;#=:]|x[a-fA-F\\d]{4})",o=function(){this.$rules={start:[{token:"punctuation.definition.comment.ini",regex:"#.*",push_:[{token:"comment.line.number-sign.ini",regex:"$|^",next:"pop"},{defaultToken:"comment.line.number-sign.ini"}]},{token:"punctuation.definition.comment.ini",regex:";.*",push_:[{token:"comment.line.semicolon.ini",regex:"$|^",next:"pop"},{defaultToken:"comment.line.semicolon.ini"}]},{token:["keyword.other.definition.ini","text","punctuation.separator.key-value.ini"],regex:"\\b([a-zA-Z0-9_.-]+)\\b(\\s*)(=)"},{token:["punctuation.definition.entity.ini","constant.section.group-title.ini","punctuation.definition.entity.ini"],regex:"^(\\[)(.*?)(\\])"},{token:"punctuation.definition.string.begin.ini",regex:"'",push:[{token:"punctuation.definition.string.end.ini",regex:"'",next:"pop"},{token:"constant.language.escape",regex:s},{defaultToken:"string.quoted.single.ini"}]},{token:"punctuation.definition.string.begin.ini",regex:'"',push:[{token:"constant.language.escape",regex:s},{token:"punctuation.definition.string.end.ini",regex:'"',next:"pop"},{defaultToken:"string.quoted.double.ini"}]}]},this.normalizeRules()};o.metaData={fileTypes:["ini","conf"],keyEquivalent:"^~I",name:"Ini",scopeName:"source.ini"},r.inherits(o,i),t.IniHighlightRules=o}),define("ace/mode/folding/ini",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/^\s*\[([^\])]*)]\s*(?:$|[;#])/,this.getFoldWidgetRange=function(e,t,n){var r=this.foldingStartMarker,s=e.getLine(n),o=s.match(r);if(!o)return;var u=o[1]+".",a=s.length,f=e.getLength(),l=n,c=n;while(++nl){var h=e.getLine(c).length;return new i(l,a,c,h)}}}.call(o.prototype)}),define("ace/mode/ini",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ini_highlight_rules","ace/mode/folding/ini"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ini_highlight_rules").IniHighlightRules,o=e("./folding/ini").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart=";",this.blockComment=null,this.$id="ace/mode/ini"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/ini"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-io.js b/www/js/ace/mode-io.js deleted file mode 100644 index 00909f510..000000000 --- a/www/js/ace/mode-io.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/io_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"keyword.control.io",regex:"\\b(?:if|ifTrue|ifFalse|ifTrueIfFalse|for|loop|reverseForeach|foreach|map|continue|break|while|do|return)\\b"},{token:"punctuation.definition.comment.io",regex:"/\\*",push:[{token:"punctuation.definition.comment.io",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.io"}]},{token:"punctuation.definition.comment.io",regex:"//",push:[{token:"comment.line.double-slash.io",regex:"$",next:"pop"},{defaultToken:"comment.line.double-slash.io"}]},{token:"punctuation.definition.comment.io",regex:"#",push:[{token:"comment.line.number-sign.io",regex:"$",next:"pop"},{defaultToken:"comment.line.number-sign.io"}]},{token:"variable.language.io",regex:"\\b(?:self|sender|target|proto|protos|parent)\\b",comment:"I wonder if some of this isn't variable.other.language? --Allan; scoping this as variable.language to match Objective-C's handling of 'self', which is inconsistent with C++'s handling of 'this' but perhaps intentionally so -- Rob"},{token:"keyword.operator.io",regex:"<=|>=|=|:=|\\*|\\||\\|\\||\\+|-|/|&|&&|>|<|\\?|@|@@|\\b(?:and|or)\\b"},{token:"constant.other.io",regex:"\\bGL[\\w_]+\\b"},{token:"support.class.io",regex:"\\b[A-Z](?:\\w+)?\\b"},{token:"support.function.io",regex:"\\b(?:clone|call|init|method|list|vector|block|\\w+(?=\\s*\\())\\b"},{token:"support.function.open-gl.io",regex:"\\bgl(?:u|ut)?[A-Z]\\w+\\b"},{token:"punctuation.definition.string.begin.io",regex:'"""',push:[{token:"punctuation.definition.string.end.io",regex:'"""',next:"pop"},{token:"constant.character.escape.io",regex:"\\\\."},{defaultToken:"string.quoted.triple.io"}]},{token:"punctuation.definition.string.begin.io",regex:'"',push:[{token:"punctuation.definition.string.end.io",regex:'"',next:"pop"},{token:"constant.character.escape.io",regex:"\\\\."},{defaultToken:"string.quoted.double.io"}]},{token:"constant.numeric.io",regex:"\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b"},{token:"variable.other.global.io",regex:"Lobby\\b"},{token:"constant.language.io",regex:"\\b(?:TRUE|true|FALSE|false|NULL|null|Null|Nil|nil|YES|NO)\\b"}]},this.normalizeRules()};s.metaData={fileTypes:["io"],keyEquivalent:"^~I",name:"Io",scopeName:"source.io"},r.inherits(s,i),t.IoHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/io",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/io_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./io_highlight_rules").IoHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/io",this.snippetFileId="ace/snippets/io"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/io"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-ion.js b/www/js/ace/mode-ion.js deleted file mode 100644 index 358b02855..000000000 --- a/www/js/ace/mode-ion.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/ion_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="TRUE|FALSE",t=e,n="NULL.NULL|NULL.BOOL|NULL.INT|NULL.FLOAT|NULL.DECIMAL|NULL.TIMESTAMP|NULL.STRING|NULL.SYMBOL|NULL.BLOB|NULL.CLOB|NULL.STRUCT|NULL.LIST|NULL.SEXP|NULL",r=n,i=this.createKeywordMapper({"constant.language.bool.ion":t,"constant.language.null.ion":r},"constant.other.symbol.identifier.ion",!0),s={token:i,regex:"\\b\\w+(?:\\.\\w+)?\\b"};this.$rules={start:[{include:"value"}],value:[{include:"whitespace"},{include:"comment"},{include:"annotation"},{include:"string"},{include:"number"},{include:"keywords"},{include:"symbol"},{include:"clob"},{include:"blob"},{include:"struct"},{include:"list"},{include:"sexp"}],sexp:[{token:"punctuation.definition.sexp.begin.ion",regex:"\\(",push:[{token:"punctuation.definition.sexp.end.ion",regex:"\\)",next:"pop"},{include:"comment"},{include:"value"},{token:"storage.type.symbol.operator.ion",regex:"[\\!\\#\\%\\&\\*\\+\\-\\./\\;\\<\\=\\>\\?\\@\\^\\`\\|\\~]+"}]}],comment:[{token:"comment.line.ion",regex:"//[^\\n]*"},{token:"comment.block.ion",regex:"/\\*",push:[{token:"comment.block.ion",regex:"[*]/",next:"pop"},{token:"comment.block.ion",regex:"[^*/]+"},{token:"comment.block.ion",regex:"[*/]+"}]}],list:[{token:"punctuation.definition.list.begin.ion",regex:"\\[",push:[{token:"punctuation.definition.list.end.ion",regex:"\\]",next:"pop"},{include:"comment"},{include:"value"},{token:"punctuation.definition.list.separator.ion",regex:","}]}],struct:[{token:"punctuation.definition.struct.begin.ion",regex:"\\{",push:[{token:"punctuation.definition.struct.end.ion",regex:"\\}",next:"pop"},{include:"comment"},{include:"value"},{token:"punctuation.definition.struct.separator.ion",regex:",|:"}]}],blob:[{token:["punctuation.definition.blob.begin.ion","string.other.blob.ion","punctuation.definition.blob.end.ion"],regex:'(\\{\\{)([^"]*)(\\}\\})'}],clob:[{token:["punctuation.definition.clob.begin.ion","string.other.clob.ion","punctuation.definition.clob.end.ion"],regex:'(\\{\\{)("[^"]*")(\\}\\})'}],symbol:[{token:"storage.type.symbol.quoted.ion",regex:"(['])((?:(?:\\\\')|(?:[^']))*?)(['])"},{token:"storage.type.symbol.identifier.ion",regex:"[\\$_a-zA-Z][\\$_a-zA-Z0-9]*"}],number:[{token:"constant.numeric.timestamp.ion",regex:"\\d{4}(?:-\\d{2})?(?:-\\d{2})?T(?:\\d{2}:\\d{2})(?::\\d{2})?(?:\\.\\d+)?(?:Z|[-+]\\d{2}:\\d{2})?"},{token:"constant.numeric.timestamp.ion",regex:"\\d{4}-\\d{2}-\\d{2}T?"},{token:"constant.numeric.integer.binary.ion",regex:"-?0[bB][01](?:_?[01])*"},{token:"constant.numeric.integer.hex.ion",regex:"-?0[xX][0-9a-fA-F](?:_?[0-9a-fA-F])*"},{token:"constant.numeric.float.ion",regex:"-?(?:0|[1-9](?:_?\\d)*)(?:\\.(?:\\d(?:_?\\d)*)?)?(?:[eE][+-]?\\d+)"},{token:"constant.numeric.float.ion",regex:"(?:[-+]inf)|(?:nan)"},{token:"constant.numeric.decimal.ion",regex:"-?(?:0|[1-9](?:_?\\d)*)(?:(?:(?:\\.(?:\\d(?:_?\\d)*)?)(?:[dD][+-]?\\d+)|\\.(?:\\d(?:_?\\d)*)?)|(?:[dD][+-]?\\d+))"},{token:"constant.numeric.integer.ion",regex:"-?(?:0|[1-9](?:_?\\d)*)"}],string:[{token:["punctuation.definition.string.begin.ion","string.quoted.double.ion","punctuation.definition.string.end.ion"],regex:'(["])((?:(?:\\\\")|(?:[^"]))*?)(["])'},{token:"punctuation.definition.string.begin.ion",regex:"'{3}",push:[{token:"punctuation.definition.string.end.ion",regex:"'{3}",next:"pop"},{token:"string.quoted.triple.ion",regex:"(?:\\\\'|[^'])+"},{token:"string.quoted.triple.ion",regex:"'"}]}],annotation:[{token:["variable.language.annotation.ion","punctuation.definition.annotation.ion"],regex:/('(?:[^'\\]|\\.)*')\s*(::)/},{token:["variable.language.annotation.ion","punctuation.definition.annotation.ion"],regex:"([\\$_a-zA-Z][\\$_a-zA-Z0-9]*)\\s*(::)"}],whitespace:[{token:"text.ion",regex:"\\s+"}]},this.$rules.keywords=[s],this.normalizeRules()};r.inherits(s,i),t.IonHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/ion",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ion_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ion_highlight_rules").IonHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/ion"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/ion"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-jack.js b/www/js/ace/mode-jack.js deleted file mode 100644 index 91aeb85a5..000000000 --- a/www/js/ace/mode-jack.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jack_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"string",regex:'"',next:"string2"},{token:"string",regex:"'",next:"string1"},{token:"constant.numeric",regex:"-?0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"(?:0|[-+]?[1-9][0-9]*)\\b"},{token:"constant.binary",regex:"<[0-9A-Fa-f][0-9A-Fa-f](\\s+[0-9A-Fa-f][0-9A-Fa-f])*>"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"constant.language.null",regex:"null\\b"},{token:"storage.type",regex:"(?:Integer|Boolean|Null|String|Buffer|Tuple|List|Object|Function|Coroutine|Form)\\b"},{token:"keyword",regex:"(?:return|abort|vars|for|delete|in|is|escape|exec|split|and|if|elif|else|while)\\b"},{token:"language.builtin",regex:"(?:lines|source|parse|read-stream|interval|substr|parseint|write|print|range|rand|inspect|bind|i-values|i-pairs|i-map|i-filter|i-chunk|i-all\\?|i-any\\?|i-collect|i-zip|i-merge|i-each)\\b"},{token:"comment",regex:"--.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"storage.form",regex:"@[a-z]+"},{token:"constant.other.symbol",regex:":+[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?"},{token:"variable",regex:"[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?"},{token:"keyword.operator",regex:"\\|\\||\\^\\^|&&|!=|==|<=|<|>=|>|\\+|-|\\*|\\/|\\^|\\%|\\#|\\!"},{token:"text",regex:"\\s+"}],string1:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/},{token:"string",regex:"[^'\\\\]+"},{token:"string",regex:"'",next:"start"},{token:"string",regex:"",next:"start"}],string2:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};r.inherits(s,i),t.JackHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/jack",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jack_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./jack_highlight_rules").JackHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="--",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/jack"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/jack"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-jade.js b/www/js/ace/mode-jade.js deleted file mode 100644 index ee60adeb6..000000000 --- a/www/js/ace/mode-jade.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../config").$modes,i=e("../lib/oop"),s=e("../lib/lang"),o=e("./text_highlight_rules").TextHighlightRules,u=e("./html_highlight_rules").HtmlHighlightRules,a=function(e){return"(?:[^"+s.escapeRegExp(e)+"\\\\]|\\\\.)*"},f=function(){u.call(this);var e={token:"support.function",regex:/^\s*(```+[^`]*|~~~+[^~]*)$/,onMatch:function(e,t,n,i){var s=e.match(/^(\s*)([`~]+)(.*)/),o=/[\w-]+|$/.exec(s[3])[0];return r[o]||(o=""),n.unshift("githubblock",[],[s[1],s[2],o],t),this.token},next:"githubblock"},t=[{token:"support.function",regex:".*",onMatch:function(e,t,n,i){var s=n[1],o=n[2][0],u=n[2][1],a=n[2][2],f=/^(\s*)(`+|~+)\s*$/.exec(e);if(f&&f[1].length=u.length&&f[2][0]==u[0])return n.splice(0,3),this.next=n.shift(),this.token;this.next="";if(a&&r[a]){var l=r[a].getTokenizer().getLineTokens(e,s.slice(0));return n[1]=l.state,l.tokens}return this.token}}];this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s|$)/,next:"header"},e,{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+a("]")+")(\\]\\s*\\[)("+a("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\!?\\[)("+a("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+a('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty_line",regex:"^$",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},e,{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:t}),this.normalizeRules()};i.inherits(f,o),t.MarkdownHighlightRules=f}),define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./css_highlight_rules"),u=function(){var e=i.arrayToMap(o.supportType.split("|")),t=i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unquote".split("|")),n=i.arrayToMap(o.supportConstant.split("|")),r=i.arrayToMap(o.supportConstantColor.split("|")),s=i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),u=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),a="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:a+"(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:a},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:function(i){return e.hasOwnProperty(i.toLowerCase())?"support.type":s.hasOwnProperty(i)?"keyword":n.hasOwnProperty(i)?"constant.language":t.hasOwnProperty(i)?"support.function":r.hasOwnProperty(i.toLowerCase())?"support.constant.color":u.hasOwnProperty(i.toLowerCase())?"variable.language":"text"},regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable",regex:"[a-z_\\-$][a-z0-9_\\-$]*\\b"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]}};r.inherits(u,s),t.ScssHighlightRules=u}),define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./css_highlight_rules"),o=function(){var e="@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|or|and|when|not",t=e.split("|"),n=s.supportType.split("|"),r=this.createKeywordMapper({"support.constant":s.supportConstant,keyword:e,"support.constant.color":s.supportConstantColor,"support.constant.fonts":s.supportConstantFonts},"identifier",!0),i="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+i+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:i},{token:["support.function","paren.lparen","string","paren.rparen"],regex:"(url)(\\()(.*)(\\))"},{token:["support.function","paren.lparen"],regex:"(:extend|[a-z0-9_\\-]+)(\\()"},{token:function(e){return t.indexOf(e.toLowerCase())>-1?"keyword":"variable"},regex:"[@\\$][a-z0-9_\\-@\\$]*\\b"},{token:"variable",regex:"[@\\$]\\{[a-z0-9_\\-@\\$]*\\}"},{token:function(e,t){return n.indexOf(e.toLowerCase())>-1?["support.type.property","text"]:["support.type.unknownProperty","text"]},regex:"([a-z0-9-_]+)(\\s*:)"},{token:"keyword",regex:"&"},{token:r,regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z_][a-z0-9-_]*"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|=|!=|-|%|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()};r.inherits(o,i),t.LessHighlightRules=o}),define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function s(){var e="[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",t="this|throw|then|try|typeof|super|switch|return|break|by|continue|catch|class|in|instanceof|is|isnt|if|else|extends|for|own|finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|or|on|unless|until|and|yes|yield|export|import|default",n="true|false|null|undefined|NaN|Infinity",r="case|const|function|var|void|with|enum|implements|interface|let|package|private|protected|public|static",i="Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray",s="Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|encodeURIComponent|decodeURI|decodeURIComponent|String|",o="window|arguments|prototype|document",u=this.createKeywordMapper({keyword:t,"constant.language":n,"invalid.illegal":r,"language.support.class":i,"language.support.function":s,"variable.language":o},"identifier"),a={token:["paren.lparen","variable.parameter","paren.rparen","text","storage.type"],regex:/(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source},f=/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/;this.$rules={start:[{token:"constant.numeric",regex:"(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)"},{stateName:"qdoc",token:"string",regex:"'''",next:[{token:"string",regex:"'''",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqdoc",token:"string",regex:'"""',next:[{token:"string",regex:'"""',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qstring",token:"string",regex:"'",next:[{token:"string",regex:"'",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqstring",token:"string.start",regex:'"',next:[{token:"string.end",regex:'"',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"js",token:"string",regex:"`",next:[{token:"string",regex:"`",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{regex:"[{}]",onMatch:function(e,t,n){this.next="";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift()||"";if(this.next.indexOf("string")!=-1)return"paren.string"}return"paren"}},{token:"string.regex",regex:"///",next:"heregex"},{token:"string.regex",regex:/(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/},{token:"comment",regex:"###(?!#)",next:"comment"},{token:"comment",regex:"#.*"},{token:["punctuation.operator","text","identifier"],regex:"(\\.)(\\s*)("+r+")"},{token:"punctuation.operator",regex:"\\.{1,3}"},{token:["keyword","text","language.support.class","text","keyword","text","language.support.class"],regex:"(class)(\\s+)("+e+")(?:(\\s+)(extends)(\\s+)("+e+"))?"},{token:["entity.name.function","text","keyword.operator","text"].concat(a.token),regex:"("+e+")(\\s*)([=:])(\\s*)"+a.regex},a,{token:"variable",regex:"@(?:"+e+")?"},{token:u,regex:e},{token:"punctuation.operator",regex:"\\,|\\."},{token:"storage.type",regex:"[\\-=]>"},{token:"keyword.operator",regex:"(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])"},{token:"paren.lparen",regex:"[({[]"},{token:"paren.rparen",regex:"[\\]})]"},{token:"text",regex:"\\s+"}],heregex:[{token:"string.regex",regex:".*?///[imgy]{0,4}",next:"start"},{token:"comment.regex",regex:"\\s+(?:#.*)?"},{token:"string.regex",regex:"\\S+"}],comment:[{token:"comment",regex:"###",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules;r.inherits(s,i),t.CoffeeHighlightRules=s}),define("ace/mode/jade_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/markdown_highlight_rules","ace/mode/scss_highlight_rules","ace/mode/less_highlight_rules","ace/mode/coffee_highlight_rules","ace/mode/javascript_highlight_rules"],function(e,t,n){"use strict";function l(e,t){return{token:"entity.name.function.jade",regex:"^\\s*\\:"+e,next:t+"start"}}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./markdown_highlight_rules").MarkdownHighlightRules,o=e("./scss_highlight_rules").ScssHighlightRules,u=e("./less_highlight_rules").LessHighlightRules,a=e("./coffee_highlight_rules").CoffeeHighlightRules,f=e("./javascript_highlight_rules").JavaScriptHighlightRules,c=function(){var e="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={start:[{token:"keyword.control.import.include.jade",regex:"\\s*\\binclude\\b"},{token:"keyword.other.doctype.jade",regex:"^!!!\\s*(?:[a-zA-Z0-9-_]+)?"},{onMatch:function(e,t,n){return n.unshift(this.next,e.length-2,t),"comment"},regex:/^\s*\/\//,next:"comment_block"},l("markdown","markdown-"),l("sass","sass-"),l("less","less-"),l("coffee","coffee-"),{token:["storage.type.function.jade","entity.name.function.jade","punctuation.definition.parameters.begin.jade","variable.parameter.function.jade","punctuation.definition.parameters.end.jade"],regex:"^(\\s*mixin)( [\\w\\-]+)(\\s*\\()(.*?)(\\))"},{token:["storage.type.function.jade","entity.name.function.jade"],regex:"^(\\s*mixin)( [\\w\\-]+)"},{token:"source.js.embedded.jade",regex:"^\\s*(?:-|=|!=)",next:"js-start"},{token:"string.interpolated.jade",regex:"[#!]\\{[^\\}]+\\}"},{token:"meta.tag.any.jade",regex:/^\s*(?!\w+:)(?:[\w-]+|(?=\.|#)])/,next:"tag_single"},{token:"suport.type.attribute.id.jade",regex:"#\\w+"},{token:"suport.type.attribute.class.jade",regex:"\\.\\w+"},{token:"punctuation",regex:"\\s*(?:\\()",next:"tag_attributes"}],comment_block:[{regex:/^\s*(?:\/\/)?/,onMatch:function(e,t,n){return e.length<=n[1]?e.slice(-1)=="/"?(n[1]=e.length-2,this.next="","comment"):(n.shift(),n.shift(),this.next=n.shift(),"text"):(this.next="","comment")},next:"start"},{defaultToken:"comment"}],tag_single:[{token:"entity.other.attribute-name.class.jade",regex:"\\.[\\w-]+"},{token:"entity.other.attribute-name.id.jade",regex:"#[\\w-]+"},{token:["text","punctuation"],regex:"($)|((?!\\.|#|=|-))",next:"start"}],tag_attributes:[{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:["entity.other.attribute-name.jade","punctuation"],regex:"([a-zA-Z:\\.-]+)(=)?",next:"attribute_strings"},{token:"punctuation",regex:"\\)",next:"start"}],attribute_strings:[{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"string",regex:"(?=\\S)",next:"tag_attributes"}],qqstring:[{token:"constant.language.escape",regex:e},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"tag_attributes"}],qstring:[{token:"constant.language.escape",regex:e},{token:"string",regex:"[^'\\\\]+"},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"tag_attributes"}]},this.embedRules(f,"js-",[{token:"text",regex:".$",next:"start"}])};r.inherits(c,i),t.JadeHighlightRules=c}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="[a-zA-Z_$][a-zA-Z0-9_$]*",t="abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while|yield|when|record|var|permits|(?:non\\-)?sealed",n="null|Infinity|NaN|undefined",r="AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",s=this.createKeywordMapper({"variable.language":"this","constant.language":n,"support.function":r},"identifier");this.$rules={start:[{include:"comments"},{include:"multiline-strings"},{include:"strings"},{include:"constants"},{regex:"(open(?:\\s+))?module(?=\\s*\\w)",token:"keyword",next:[{regex:"{",token:"paren.lparen",push:[{regex:"}",token:"paren.rparen",next:"pop"},{include:"comments"},{regex:"\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b",token:"keyword"}]},{token:"text",regex:"\\s+"},{token:"identifier",regex:"\\w+"},{token:"punctuation.operator",regex:"."},{token:"text",regex:"\\s+"},{regex:"",next:"start"}]},{include:"statements"}],comments:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment.doc",regex:/\/\*\*(?!\/)/,push:"doc-start"},{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],strings:[{token:["punctuation","string"],regex:/(\.)(")/,push:[{token:"lparen",regex:/\\\{/,push:[{token:"text",regex:/$/,next:"start"},{token:"rparen",regex:/}/,next:"pop"},{include:"strings"},{include:"constants"},{include:"statements"}]},{token:"string",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"}],"multiline-strings":[{token:["punctuation","string"],regex:/(\.)(""")/,push:[{token:"string",regex:'"""',next:"pop"},{token:"lparen",regex:/\\\{/,push:[{token:"text",regex:/$/,next:"start"},{token:"rparen",regex:/}/,next:"pop"},{include:"multiline-strings"},{include:"strings"},{include:"constants"},{include:"statements"}]},{token:"constant.language.escape",regex:/\\./},{defaultToken:"string"}]},{token:"string",regex:'"""',push:[{token:"string",regex:'"""',next:"pop"},{token:"constant.language.escape",regex:/\\./},{defaultToken:"string"}]}],constants:[{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/},{token:"constant.language.boolean",regex:"(?:true|false)\\b"}],statements:[{token:["keyword","text","identifier"],regex:"(record)(\\s+)("+e+")\\b"},{token:"keyword",regex:"(?:"+t+")\\b"},{token:"storage.type.annotation",regex:"@"+e+"\\b"},{token:"entity.name.function",regex:e+"(?=\\()"},{token:s,regex:e+"\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\||\\^|\\*|\\/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?|\\:|\\*=|\\/=|%=|\\+=|\\-=|&=|\\|=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}]},this.embedRules(i,"doc-",[i.getEndRule("pop")]),this.normalizeRules()};r.inherits(o,s),t.JavaHighlightRules=o}),define("ace/mode/folding/java",["require","exports","module","ace/lib/oop","ace/mode/folding/cstyle","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./cstyle").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.importRegex=/^import /,this.getCStyleFoldWidget=this.getFoldWidget,this.getFoldWidget=function(e,t,n){if(t==="markbegin"){var r=e.getLine(n);if(this.importRegex.test(r))if(n==0||!this.importRegex.test(e.getLine(n-1)))return"start"}return this.getCStyleFoldWidget(e,t,n)},this.getCstyleFoldWidgetRange=this.getFoldWidgetRange,this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n),o=i.match(this.importRegex);if(!o||t!=="markbegin")return this.getCstyleFoldWidgetRange(e,t,n,r);var u=o[0].length,a=e.getLength(),f=n,l=n;while(++nf){var c=e.getLine(l).length;return new s(f,u,l,c)}}}.call(o.prototype)}),define("ace/mode/java",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/java_highlight_rules","ace/mode/folding/java"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./java_highlight_rules").JavaHighlightRules,o=e("./folding/java").FoldMode,u=function(){i.call(this),this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/java",this.snippetFileId="ace/snippets/java"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/java"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-javascript.js b/www/js/ace/mode-javascript.js deleted file mode 100644 index 5c535e5c5..000000000 --- a/www/js/ace/mode-javascript.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}); (function() { - window.require(["ace/mode/javascript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-jexl.js b/www/js/ace/mode-jexl.js deleted file mode 100644 index 0418988a8..000000000 --- a/www/js/ace/mode-jexl.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jexl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="return|var|function|and|or|not|if|for|while|do|continue|break",t="null",n="empty|size|new",r=this.createKeywordMapper({keyword:e,"constant.language":t,"support.function":n},"identifier"),i="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}||.)";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"##.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:["comment","text"],regex:"(#pragma)(\\s.*$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"`",push:[{token:"constant.language.escape",regex:i},{token:"string",regex:"`",next:"pop"},{token:"lparen",regex:"\\${",push:[{token:"rparen",regex:"}",next:"pop"},{include:"start"}]},{defaultToken:"string"}]},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"string.regexp",regex:"~/",push:[{token:"constant.language.escape",regex:"\\\\/"},{token:"string.regexp",regex:"$|/",next:"pop"},{defaultToken:"string.regexp"}]},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"&&|\\|\\||!|&|\\||\\^|~|\\?|:|\\?\\?|==|!=|<|<=|>|>=|=~|!~|=\\^|=\\$|!\\$|\\+|\\-|\\*|%|\\/|="},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{token:"punctuation",regex:"[,.]"},{token:"storage.type.annotation",regex:"@[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()};r.inherits(s,i),t.JexlHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/jexl",["require","exports","module","ace/lib/oop","ace/mode/jexl_highlight_rules","ace/mode/text","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./jexl_highlight_rules").JexlHighlightRules,s=e("./text").Mode,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=i,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new o};r.inherits(u,s),function(){this.lineCommentStart=["//","##"],this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/jexl"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/jexl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-json.js b/www/js/ace/mode-json.js deleted file mode 100644 index 0fd08b235..000000000 --- a/www/js/ace/mode-json.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=e("../worker/worker_client").WorkerClient,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/json_worker","JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(f.prototype),t.Mode=f}); (function() { - window.require(["ace/mode/json"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-json5.js b/www/js/ace/mode-json5.js deleted file mode 100644 index 7c72e8b0d..000000000 --- a/www/js/ace/mode-json5.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),define("ace/mode/json5_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/json_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./json_highlight_rules").JsonHighlightRules,s=function(){i.call(this);var e=[{token:"variable",regex:/[a-zA-Z$_\u00a1-\uffff][\w$\u00a1-\uffff]*\s*(?=:)/},{token:"variable",regex:/['](?:(?:\\.)|(?:[^'\\]))*?[']\s*(?=:)/},{token:"constant.language.boolean",regex:/(?:null)\b/},{token:"string",regex:/'/,next:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\/bfnrt]|$)/,consumeLineEnd:!0},{token:"string",regex:/'|$/,next:"start"},{defaultToken:"string"}]},{token:"string",regex:/"(?![^"]*":)/,next:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\/bfnrt]|$)/,consumeLineEnd:!0},{token:"string",regex:/"|$/,next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:/[+-]?(?:Infinity|NaN)\b/}];for(var t in this.$rules)this.$rules[t].unshift.apply(this.$rules[t],e);this.normalizeRules()};r.inherits(s,i),t.Json5HighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/json5",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json5_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./json5_highlight_rules").Json5HighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/json5"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/json5"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-jsoniq.js b/www/js/ace/mode-jsoniq.js deleted file mode 100644 index bf7defd40..000000000 --- a/www/js/ace/mode-jsoniq.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/xquery/jsoniq_lexer",["require","exports","module"],function(e,t,n){n.exports=function r(t,n,i){function o(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&&f)return f(u,!0);if(s)return s(u,!0);var l=new Error("Cannot find module '"+u+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[u]={exports:{}};t[u][0].call(c.exports,function(e){var n=t[u][1][e];return o(n?n:e)},c,c.exports,r,t,n,i)}return n[u].exports}var s=typeof e=="function"&&e;for(var u=0;ux?x:w),m=b,g=w,y=0):d(b,w,0,y,e)}function l(){g!=b&&(m=g,g=b,E.whitespace(m,g))}function c(e){var t;for(;;){t=C(e);if(t!=30)break}return t}function h(e){y==0&&(y=c(e),b=T,w=N)}function p(e){y==0&&(y=C(e),b=T,w=N)}function d(e,t,r,i,s){throw new n.ParseException(e,t,r,i,s)}function C(e){var t=!1;T=N;var n=N,r=i.INITIAL[e],s=0;for(var o=r&4095;o!=0;){var u,a=n>4;u=i.MAP1[(a&15)+i.MAP1[(f&31)+i.MAP1[f>>5]]]}else{if(a<56320){var f=n=56320&&f<57344&&(++n,a=((a&1023)<<10)+(f&1023)+65536,t=!0)}var l=0,c=5;for(var h=3;;h=c+l>>1){if(i.MAP2[h]>a)c=h-1;else{if(!(i.MAP2[6+h]c){u=0;break}}}s=o;var p=(u<<12)+o-1;o=i.TRANSITION[(p&15)+i.TRANSITION[p>>4]],o>4095&&(r=o,o&=4095,N=n)}r>>=12;if(r==0){N=n-1;var f=N=56320&&f<57344&&--N,d(T,N,s,-1,-1)}if(t)for(var v=r>>9;v>0;--v){--N;var f=N=56320&&f<57344&&--N}else N-=r>>9;return(r&511)-1}r(e,t);var n=this;this.ParseException=function(e,t,n,r,i){var s=e,o=t,u=n,a=r,f=i;this.getBegin=function(){return s},this.getEnd=function(){return o},this.getState=function(){return u},this.getExpected=function(){return f},this.getOffending=function(){return a},this.getMessage=function(){return a<0?"lexical analysis failed":"syntax error"}},this.getInput=function(){return S},this.getOffendingToken=function(e){var t=e.getOffending();return t>=0?i.TOKEN[t]:null},this.getExpectedTokenSet=function(e){var t;return e.getExpected()<0?t=i.getTokenSet(-e.getState()):t=[i.TOKEN[e.getExpected()]],t},this.getErrorMessage=function(e){var t=this.getExpectedTokenSet(e),n=this.getOffendingToken(e),r=S.substring(0,e.getBegin()),i=r.split("\n"),s=i.length,o=i[s-1].length+1,u=e.getEnd()-e.getBegin();return e.getMessage()+(n==null?"":", found "+n)+"\nwhile expecting "+(t.length==1?t[0]:"["+t.join(", ")+"]")+"\n"+(u==0||n!=null?"":"after successfully scanning "+u+" characters beginning ")+"at line "+s+", column "+o+":\n..."+S.substring(e.getBegin(),Math.min(S.length,e.getBegin()+64))+"..."},this.parse_start=function(){E.startNonterminal("start",g),h(14);switch(y){case 58:f(58);break;case 57:f(57);break;case 59:f(59);break;case 43:f(43);break;case 45:f(45);break;case 44:f(44);break;case 37:f(37);break;case 41:f(41);break;case 277:f(277);break;case 274:f(274);break;case 42:f(42);break;case 46:f(46);break;case 52:f(52);break;case 65:f(65);break;case 66:f(66);break;case 49:f(49);break;case 51:f(51);break;case 56:f(56);break;case 54:f(54);break;case 36:f(36);break;case 276:f(276);break;case 40:f(40);break;case 5:f(5);break;case 4:f(4);break;case 6:f(6);break;case 15:f(15);break;case 16:f(16);break;case 18:f(18);break;case 19:f(19);break;case 20:f(20);break;case 8:f(8);break;case 9:f(9);break;case 7:f(7);break;case 35:f(35);break;default:o()}E.endNonterminal("start",g)},this.parse_StartTag=function(){E.startNonterminal("StartTag",g),h(8);switch(y){case 61:f(61);break;case 53:f(53);break;case 29:f(29);break;case 60:f(60);break;case 37:f(37);break;case 41:f(41);break;default:f(35)}E.endNonterminal("StartTag",g)},this.parse_TagContent=function(){E.startNonterminal("TagContent",g),p(11);switch(y){case 25:f(25);break;case 9:f(9);break;case 10:f(10);break;case 58:f(58);break;case 57:f(57);break;case 21:f(21);break;case 31:f(31);break;case 275:f(275);break;case 278:f(278);break;case 274:f(274);break;default:f(35)}E.endNonterminal("TagContent",g)},this.parse_AposAttr=function(){E.startNonterminal("AposAttr",g),p(10);switch(y){case 23:f(23);break;case 27:f(27);break;case 21:f(21);break;case 31:f(31);break;case 275:f(275);break;case 278:f(278);break;case 274:f(274);break;case 41:f(41);break;default:f(35)}E.endNonterminal("AposAttr",g)},this.parse_QuotAttr=function(){E.startNonterminal("QuotAttr",g),p(9);switch(y){case 22:f(22);break;case 26:f(26);break;case 21:f(21);break;case 31:f(31);break;case 275:f(275);break;case 278:f(278);break;case 274:f(274);break;case 37:f(37);break;default:f(35)}E.endNonterminal("QuotAttr",g)},this.parse_CData=function(){E.startNonterminal("CData",g),p(1);switch(y){case 14:f(14);break;case 67:f(67);break;default:f(35)}E.endNonterminal("CData",g)},this.parse_XMLComment=function(){E.startNonterminal("XMLComment",g),p(0);switch(y){case 12:f(12);break;case 50:f(50);break;default:f(35)}E.endNonterminal("XMLComment",g)},this.parse_PI=function(){E.startNonterminal("PI",g),p(3);switch(y){case 13:f(13);break;case 62:f(62);break;case 63:f(63);break;default:f(35)}E.endNonterminal("PI",g)},this.parse_Pragma=function(){E.startNonterminal("Pragma",g),p(2);switch(y){case 11:f(11);break;case 38:f(38);break;case 39:f(39);break;default:f(35)}E.endNonterminal("Pragma",g)},this.parse_Comment=function(){E.startNonterminal("Comment",g),p(4);switch(y){case 55:f(55);break;case 44:f(44);break;case 32:f(32);break;default:f(35)}E.endNonterminal("Comment",g)},this.parse_CommentDoc=function(){E.startNonterminal("CommentDoc",g),p(6);switch(y){case 33:f(33);break;case 34:f(34);break;case 55:f(55);break;case 44:f(44);break;default:f(35)}E.endNonterminal("CommentDoc",g)},this.parse_QuotString=function(){E.startNonterminal("QuotString",g),p(5);switch(y){case 3:f(3);break;case 2:f(2);break;case 1:f(1);break;case 37:f(37);break;default:f(35)}E.endNonterminal("QuotString",g)},this.parse_AposString=function(){E.startNonterminal("AposString",g),p(7);switch(y){case 21:f(21);break;case 31:f(31);break;case 23:f(23);break;case 24:f(24);break;case 41:f(41);break;default:f(35)}E.endNonterminal("AposString",g)},this.parse_Prefix=function(){E.startNonterminal("Prefix",g),h(13),l(),a(),E.endNonterminal("Prefix",g)},this.parse__EQName=function(){E.startNonterminal("_EQName",g),h(12),l(),o(),E.endNonterminal("_EQName",g)};var v,m,g,y,b,w,E,S,x,T,N};r.getTokenSet=function(e){var t=[],n=e<0?-e:INITIAL[e]&4095;for(var i=0;i<279;i+=32){var s=i,o=(i>>5)*2066+n-1,u=o>>2,a=u>>2,f=r.EXPECTED[(o&3)+r.EXPECTED[(u&3)+r.EXPECTED[(a&3)+r.EXPECTED[a>>2]]]];for(;f!=0;f>>>=1,++s)(f&1)!=0&&t.push(r.TOKEN[s])}return t},r.MAP0=[67,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18,18,18,18,18,18,18,18,19,20,21,22,23,24,25,26,27,28,29,30,27,31,31,31,31,31,31,31,31,31,31,32,31,31,33,31,31,31,31,31,31,34,35,36,37,31,37,38,39,40,41,42,43,44,45,46,31,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,31,62,63,64,65,37],r.MAP1=[108,124,214,214,214,214,214,214,214,214,214,214,214,214,214,214,156,181,181,181,181,181,214,215,213,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,247,261,277,293,309,347,363,379,416,416,416,408,331,323,331,323,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,433,433,433,433,433,433,433,316,331,331,331,331,331,331,331,331,394,416,416,417,415,416,416,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,330,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,416,67,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18,18,18,18,18,18,18,18,19,20,21,22,23,24,25,26,27,28,29,30,27,31,31,31,31,31,31,31,31,31,31,31,31,31,31,37,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,32,31,31,33,31,31,31,31,31,31,34,35,36,37,31,37,38,39,40,41,42,43,44,45,46,31,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,31,62,63,64,65,37,37,37,37,37,37,37,37,37,37,37,37,31,31,37,37,37,37,37,37,37,66,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66],r.MAP2=[57344,63744,64976,65008,65536,983040,63743,64975,65007,65533,983039,1114111,37,31,37,31,31,37],r.INITIAL=[1,2,49155,57348,5,6,7,8,9,10,11,12,13,14,15],r.TRANSITION=[19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,17408,19288,17439,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,22126,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17672,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,19469,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,36919,18234,18262,18278,18294,18320,18336,18361,18397,18419,18432,18304,18448,18485,18523,18553,18583,18599,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,18825,18841,18871,18906,18944,18960,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19074,36169,17439,36866,17466,36890,36866,22314,19105,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,22126,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17672,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,19469,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,36919,18234,18262,18278,18294,18320,18336,18361,18397,18419,18432,18304,18448,18485,18523,18553,18583,18599,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,18825,18841,18871,18906,18944,18960,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22182,19288,19121,36866,17466,18345,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19273,19552,19304,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19332,17423,19363,36866,17466,17537,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,18614,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,19391,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,19427,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36154,19288,19457,36866,17466,17740,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22780,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22375,22197,18469,36866,17466,36890,36866,21991,24018,22987,17556,17575,22288,17486,17509,17525,18373,21331,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,19485,19501,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19537,22390,19568,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19596,19611,19457,36866,17466,36890,36866,18246,19627,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22242,20553,19457,36866,17466,36890,36866,18648,30477,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36472,19288,19457,36866,17466,17809,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,21770,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,19643,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,19672,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,20538,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,17975,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22345,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19726,19742,21529,24035,23112,26225,23511,27749,27397,24035,34360,24035,24036,23114,35166,23114,23114,19758,23511,35247,23511,23511,28447,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,24254,19821,23511,23511,23511,23511,23512,19441,36539,24035,24035,24035,24035,19846,19869,23114,23114,23114,28618,32187,19892,23511,23511,23511,34585,20402,36647,24035,24035,24036,23114,33757,23114,23114,23029,20271,23511,27070,23511,23511,30562,24035,24035,29274,26576,23114,23114,31118,23036,29695,23511,23511,32431,23634,30821,24035,23110,19913,23114,23467,31261,23261,34299,19932,24035,32609,19965,35389,19984,27689,19830,29391,29337,20041,22643,35619,33728,20062,20121,20166,35100,26145,20211,23008,19876,20208,20227,25670,20132,26578,27685,20141,20243,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36094,19288,19457,36866,17466,21724,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22735,19552,20287,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22750,19288,21529,24035,23112,28056,23511,29483,28756,24035,24035,24035,24036,23114,23114,23114,23114,20327,23511,23511,23511,23511,31156,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,24254,20371,23511,23511,23511,23511,27443,20395,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,29457,29700,23511,23511,23511,23511,33444,20402,24035,24035,24035,24036,23114,23114,23114,23114,28350,20421,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,20447,20475,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,20523,22257,20569,20783,21715,17603,20699,20837,20614,20630,21149,20670,21405,17486,17509,17525,18373,19179,20695,20716,20732,20755,19194,18042,21641,20592,20779,20598,21412,17470,17591,20896,17468,17619,20799,20700,21031,20744,20699,20828,18075,21259,20581,20853,18048,20868,20884,17756,17784,17800,17825,17854,21171,21200,20931,20947,21378,20955,20971,18086,20645,21002,20986,18178,17960,18012,18381,18064,29176,21044,21438,21018,21122,21393,21060,21844,21094,20654,17493,18150,18166,18214,25967,20763,21799,21110,21830,21138,21246,21301,18336,18361,21165,21187,20812,21216,21232,21287,21317,18553,21347,21363,21428,21454,21271,21483,21499,21515,21575,21467,18712,21591,21633,21078,18189,18198,20679,21657,21701,21074,21687,21740,21756,21786,21815,21860,21876,21892,21946,21962,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36457,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,36813,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,21981,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,22151,22007,18884,17900,17922,17944,18178,17960,18012,18381,18064,27898,17884,18890,17906,17928,22042,25022,18130,36931,36963,17493,18150,18166,22070,22112,25026,18134,36935,18262,18278,18294,18320,18336,18361,22142,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36109,19288,18469,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22167,19288,19457,36866,17466,17768,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22227,36487,22273,36866,17466,36890,36866,19316,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18749,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,22304,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,19580,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22330,19089,19457,36866,17466,18721,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22765,19347,19457,36866,17466,36890,36866,18114,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29116,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34541,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,22540,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29116,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29908,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29116,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22561,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,23837,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22584,23511,23511,23511,23511,29116,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36442,19288,21605,24035,23112,28137,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,31568,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22690,19288,19457,36866,17466,36890,36866,21991,27584,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,22659,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22360,19552,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22675,22811,19457,36866,17466,36890,36866,19133,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,22827,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36139,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36064,19288,22865,22881,32031,22897,22913,22956,29939,24035,24035,24035,23003,23114,23114,23114,23024,22420,23511,23511,23511,23052,29116,23073,29268,24035,25563,26915,23106,23131,23114,23114,23159,23181,23197,23248,23511,23511,23282,23305,22493,32364,24035,33472,30138,26325,31770,33508,27345,33667,23114,23321,23473,23351,35793,36576,23511,23375,22500,24145,24035,29197,20192,24533,23440,23114,19017,23459,22839,23489,23510,23511,33563,23528,32076,25389,24035,26576,23561,23583,23114,32683,22516,23622,23655,23511,23634,35456,37144,23110,23683,34153,20499,32513,25824,23705,24035,24035,23111,23114,19874,27078,33263,19830,24035,23112,19872,27741,23266,24036,23114,30243,20507,32241,20150,31862,27464,35108,23727,23007,35895,34953,26578,27685,20141,24569,31691,19787,33967,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36427,19552,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29116,19803,24035,24035,24035,27027,26576,23114,23114,23114,31471,23756,22468,23511,23511,23511,34687,23772,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,23788,24035,24035,24035,21559,23828,23114,23114,23114,25086,22839,23853,23511,23511,23511,23876,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,31761,23909,23953,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36049,19288,21605,30825,23112,23987,23511,24003,31001,27617,24034,24035,24036,24052,24089,23114,23114,22420,24109,24168,23511,23511,29116,24188,27609,20017,29516,24035,26576,24222,19968,23114,24252,33811,22468,24270,33587,23511,24320,27443,22493,24035,24035,24035,24035,24339,23113,23114,23114,23114,28128,28618,29700,23511,23511,23511,28276,34564,20402,24035,24035,32929,24036,23114,23114,23114,24357,23029,22839,23511,23511,23511,24377,25645,24035,34112,24035,26576,23114,26643,23114,32683,22516,23511,25638,23511,23711,24035,24395,27809,23114,24414,20499,24432,30917,23628,24035,30680,23111,23114,30233,27078,25748,24452,24035,23112,19872,27741,23266,24036,23114,24475,19829,26577,26597,26154,24519,24556,24596,23007,20046,20132,26578,24634,20141,24569,31691,24679,24727,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36412,19288,21605,19943,34861,32618,26027,29483,32016,32050,36233,24776,35574,24801,24819,32671,31289,22420,24868,24886,20087,26849,29116,19803,24035,24035,24035,36228,26576,23114,23114,23114,24981,33811,22468,23511,23511,23511,29028,27443,22493,24923,27965,24035,24035,32797,24946,23443,23114,23114,29636,24997,22849,28252,23511,23511,23511,25042,25110,24035,24035,34085,24036,25133,23114,23114,25152,23029,22839,25169,23511,36764,23511,25645,30403,24035,25186,26576,31806,24093,25212,32683,22516,32713,26245,34293,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,32406,23111,23114,28676,30944,27689,25234,24035,23112,19872,37063,23266,24036,23114,30243,20379,26100,29218,20211,30105,25257,25284,23007,20046,20132,26578,27685,20141,24569,24834,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36034,19288,21671,25314,25072,25330,25346,25362,29939,29951,35288,29984,23812,27216,25405,25424,30456,22584,26292,25461,25480,31592,29116,25516,34963,25545,27007,25579,33937,25614,25661,25686,34872,25702,25718,25734,25769,25795,25811,25840,22493,26533,25856,24035,25876,30763,27481,25909,23114,28987,25936,25954,29700,25983,23511,31412,26043,26063,22568,29241,29592,26116,31216,35383,26170,34783,26194,26221,22839,26241,26261,22477,26283,26308,27306,31035,24655,26576,29854,33386,26341,32683,22516,32153,30926,26361,19996,26381,35463,26397,26424,34646,26478,35605,31386,26494,35567,31964,22940,23689,25218,30309,32289,19830,33605,23112,32109,27733,27084,24496,35886,35221,26525,36602,26549,26558,26574,26594,26613,26629,26666,26700,26578,27685,23740,24285,31691,26733,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36397,19552,18991,25887,28117,32618,26776,29483,29939,26802,24035,24035,24036,28664,23114,23114,23114,22420,30297,23511,23511,23511,29116,19803,24035,24035,24035,25559,26576,23114,23114,23114,30525,33811,22468,23511,23511,23511,28725,27443,22493,24035,24035,27249,24035,24035,23113,23114,23114,26827,23114,28618,29700,23511,23511,26845,23511,34564,20402,24035,24035,26979,24036,23114,23114,23114,24974,23029,22839,23511,23511,23511,26865,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,33305,24035,25598,23114,19874,34253,27689,19830,24035,23112,19872,27741,23266,24036,23114,26886,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,26931,24569,26439,26947,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36019,19288,26995,24035,23112,32618,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,27043,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,27061,23511,23511,23511,23511,23512,24694,24035,24035,29978,24035,24035,23113,23114,33114,23114,23114,30010,29700,23511,35913,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,27155,26576,23114,23114,30447,23036,29695,23511,23511,30935,20099,24152,25529,27100,34461,27121,22625,29156,26009,27137,30422,31903,31655,28870,27171,32439,31731,19830,27232,22612,27265,26786,25494,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,20342,27288,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,27322,27339,28020,27361,27382,29939,24035,24035,32581,24036,23114,23114,23114,27425,22420,23511,23511,23511,27442,28306,19803,24035,24035,24035,24035,26710,23114,23114,23114,23114,32261,22468,23511,23511,23511,23511,35719,24694,29510,24035,24035,24035,24035,26717,23114,23114,23114,23114,28618,32217,23511,23511,23511,23511,34585,20402,24035,24035,24035,27459,23114,23114,23114,36252,23029,20271,23511,23511,23511,28840,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,27480,34483,28401,29761,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36382,19288,21605,27497,27517,28504,28898,27569,29939,29401,27600,27323,27633,19025,27662,23114,27705,22420,20483,27721,23511,27765,28306,19803,23540,24035,24610,27781,27805,26650,23114,28573,32990,25920,22468,26870,23511,26684,34262,34737,25057,34622,24035,24035,23971,24206,27825,27847,23114,23114,27865,27885,35766,27914,23511,23511,32766,32844,27934,28795,26909,27955,26092,27988,25445,28005,28036,28052,21965,23511,32196,19897,28072,28102,36534,21541,23801,28153,28180,28197,28221,23036,32695,28251,28268,28292,23667,34825,23930,24580,28322,28344,31627,28366,25996,23628,24035,24035,23111,23114,19874,27078,27689,35625,33477,33359,27674,28393,33992,24036,23114,30243,19829,28417,28433,28463,23008,19876,20208,23007,20046,20132,28489,28520,20141,24569,31691,19787,28550,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,24694,28589,24035,24035,24035,24035,28608,23114,23114,23114,23114,28618,20431,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36004,19288,28634,31951,28565,28702,28718,28741,32544,20175,28792,32086,20105,28811,29059,29862,28856,22420,28886,30354,23359,28922,28306,28952,23888,26320,36506,24035,29331,28968,36609,23114,29003,31661,27061,30649,27366,23511,29023,27918,24694,24035,24035,23893,33094,30867,23113,23114,23114,29044,34184,30010,29700,23511,23511,29081,29102,34585,20402,27789,24035,24035,24036,23114,29132,23114,23114,23029,20271,23511,29153,23511,23511,30562,30174,24035,24035,27409,25438,23114,23114,29172,36668,31332,23511,23511,29192,30144,24035,23110,30203,23114,23467,31544,23261,23628,24035,22545,23111,23114,29213,27078,27689,29234,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,29257,23008,19876,20208,28768,29290,29320,34776,29353,20141,22435,29378,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36367,19288,21605,34616,19006,32618,31497,31507,36216,20184,24035,34393,29424,34668,23114,34900,29447,22420,30360,23511,37089,29473,28306,19803,29499,24398,24035,24035,26576,31799,29532,29550,23114,33811,22468,32298,29571,31184,23511,23512,37127,36628,29589,24035,24135,24035,23113,29608,23114,27831,29634,28618,29652,30037,23511,24172,29671,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,29555,29690,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,29719,24035,23110,29738,23114,23467,34035,29756,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,29777,34364,28181,30243,29799,31920,27272,27185,23008,31126,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29828,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35989,19552,19687,35139,28649,29878,29894,29924,29939,23224,23085,31969,24036,35173,24752,24803,23114,22420,31190,30318,24870,23511,28306,29967,23967,24035,24035,24035,26576,3e4,23114,23114,23114,33811,22468,30026,23511,23511,23511,23512,26078,24035,24035,24035,30053,37137,30071,23114,23114,33368,25136,28618,30723,23511,23511,37096,31356,34585,20402,30092,30127,30160,24036,35740,30219,24960,30259,23029,20271,34042,30285,30342,30376,23289,30055,30400,30419,30438,32640,33532,33514,30472,18792,26267,24323,23057,30493,23639,20008,30196,33188,30517,20075,23511,30541,23628,30578,33928,28776,30594,19874,30610,30637,19830,30677,27646,19872,25779,23266,23232,35016,30243,30696,29812,30712,30746,27206,30779,30807,23007,33395,20132,26578,27685,31703,22928,31691,19787,31079,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36352,19288,23335,30841,26131,30888,30904,30986,29939,24035,24704,31017,20025,23114,26178,31051,31095,22420,23511,22524,31142,31172,28534,31206,35497,25196,24035,28592,24503,23114,31239,31285,23114,31305,31321,31355,31372,31407,23511,30556,24694,24035,27501,19805,24035,24035,23113,23114,31428,24066,23114,28618,29700,23511,31837,18809,23511,34585,31448,24035,24035,24035,23090,23114,23114,23114,23114,31619,35038,23511,23511,23511,23511,33714,24035,33085,24035,29431,23114,31467,23114,23143,31487,23511,31523,23511,35195,36783,24035,30111,23567,23114,23467,31543,31560,23628,24035,24035,23111,23114,19874,30953,31584,34508,24035,31608,26345,37055,23266,31643,31677,31719,31747,31786,31822,26898,23008,19876,31859,23007,20046,20132,26578,27685,20141,24569,31691,31878,31936,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35974,19288,21605,27972,35663,31985,29655,32001,36715,24785,25893,23545,31912,19853,19916,25938,24540,22420,31843,29674,29573,32735,28936,19803,24035,24035,32047,24035,26576,23114,23114,27544,23114,33811,22468,23511,23511,32161,23511,23512,32066,24035,33313,24035,24035,24035,23113,27426,32102,23114,23114,28618,32125,23511,32144,23511,23511,33569,20402,24035,27045,24035,24036,23114,23114,28328,23114,30076,32177,23511,23511,30384,23511,30562,24035,24035,24035,26576,23114,23114,23114,23595,32212,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,22635,25753,32233,32257,32277,19829,26577,26597,20211,23008,19876,32322,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,32352,35285,32380,34196,33016,30661,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,32404,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,32422,23511,23511,23511,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,30269,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,19949,24035,23111,32455,19874,31269,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36337,19552,19209,21617,26509,32475,32491,32529,29939,24035,32578,25241,32597,23114,32634,29007,32656,22420,23511,32729,26365,32751,28306,32788,32882,24035,24035,32813,36727,23114,33182,23114,27553,33235,32829,23511,32706,23511,28906,28377,26962,32881,32904,32898,32920,24035,32953,23114,32977,26408,23114,28164,33006,23511,33039,35774,23511,32306,20402,33076,30872,24035,24036,25408,33110,28979,23114,23029,20271,35835,33130,33054,23511,30562,33148,24035,24035,33167,23114,23114,33775,23036,20459,23511,23511,25464,24646,24035,24035,22446,23114,23114,25627,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,31391,33204,33220,33251,33287,26577,26597,20211,33329,19876,33345,23007,20046,20132,26578,27685,28473,22599,31691,33411,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35959,19288,21907,27243,29843,32618,33427,31507,29939,33460,34090,24035,24036,33493,24416,33530,23114,22420,33548,24379,33585,23511,28306,19803,33603,24202,24035,24035,25593,33749,28205,23114,23114,32388,22468,33853,33060,23511,23511,31339,33621,24035,24035,34397,24618,30757,33663,23114,23114,33683,35684,28618,26678,23511,23511,32506,33699,34585,20402,24035,32562,26973,24036,23114,23114,33377,33773,23029,20271,23511,23511,30621,23511,23860,24035,33791,21553,26576,36558,23114,33809,23036,32857,26047,23511,33827,23634,24035,24035,23110,23114,23114,31252,23511,33845,23628,24035,24459,23111,23114,33869,27078,30791,29783,24035,24742,19872,33895,23266,26462,19710,33879,33919,26577,26597,24123,24930,21930,20208,30501,33953,25268,20252,33983,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36322,19552,23390,33634,35154,34008,34024,34058,35544,34106,34128,26811,33151,34144,34169,34212,23114,34228,34244,34278,34315,23511,34331,34347,34380,34413,24035,24663,26576,34429,34453,34477,29534,33811,22468,34499,34524,34557,25170,34580,35436,23937,34601,24035,24341,26453,23113,34638,34662,23114,24236,28618,34684,34703,34729,23511,35352,34753,34799,24035,34815,32558,34848,34888,35814,34923,23165,29137,23606,30326,30730,34939,33023,30562,36848,34979,24035,24847,34996,23114,23114,35032,29695,35054,23511,23511,35091,33296,35124,24296,28235,24361,36276,32772,35067,35189,27301,30855,24852,22452,35211,35237,35316,25500,35270,23405,24304,35304,29362,24036,23114,35332,19829,26577,26597,20211,23008,19876,20208,35368,28823,23920,32336,35405,20141,24569,31691,35421,35479,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35944,22795,21605,33647,35877,35513,30962,35529,34073,35557,24035,24035,20405,31107,23114,23114,23114,35590,34713,23511,23511,23511,35641,19803,29408,32937,25298,24035,35657,23115,27849,24760,35679,26205,22468,23511,35700,24907,24901,35075,31893,34980,24035,24035,24035,24035,23113,35009,23114,23114,23114,28618,35716,30970,23511,23511,23511,34585,23215,24035,24035,24035,24036,35735,23114,23114,23114,27105,35756,35790,23511,23511,23511,35254,35446,24035,24035,31223,35809,23114,23114,23036,36825,35830,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,31031,20355,19872,33903,23266,24036,23114,28686,19829,26577,26597,20211,23008,23424,20208,24711,31065,24486,26578,27685,20141,19773,35851,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36307,19288,21605,35494,19702,32618,33437,31507,29939,25117,24035,27939,24036,27869,23114,26829,23114,22420,23494,23511,33132,23511,28306,19803,24035,34832,24035,24035,26576,23114,25153,23114,23114,33811,22468,23511,23511,35911,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35929,19288,21605,25860,23112,36185,23511,36201,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,26748,24035,24035,24035,24035,24035,36249,23114,23114,23114,23114,28618,28835,23511,23511,23511,23511,34585,20402,24035,27151,24035,26760,23114,27989,23114,23114,36268,20271,23511,24436,23511,29703,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36292,19288,21605,36503,21922,32618,34534,31507,36522,24035,33793,24035,35864,23114,23114,36555,23417,22420,23511,23511,36574,26020,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,36592,24035,24035,36625,24035,24035,23113,23114,32961,23114,23114,29618,29700,23511,29086,23511,23511,34585,20402,36644,24035,24035,24036,29740,23114,23114,23114,29065,36663,31527,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,31451,23112,36684,23511,36700,29939,24035,24035,24035,30185,23114,23114,23114,27526,22420,23511,23511,23511,32865,28306,19803,36743,24035,27017,24035,26576,27535,23114,31432,23114,33811,22468,33271,23511,32128,23511,23512,24694,24035,27196,24035,24035,24035,23113,32459,23114,23114,23114,28618,29700,33829,36762,23511,23511,34585,20402,24035,36746,24035,29722,23114,23114,34437,23114,34907,20271,23511,23511,18801,23511,23206,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,36837,24035,24035,33739,23114,23114,25094,23511,23261,23628,24035,36780,23111,24073,19874,27078,35344,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22720,19288,36799,36866,17466,36890,36864,21991,22211,22987,17556,17575,22288,17486,17509,17525,18373,17631,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,36883,36906,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22705,19288,19457,36866,17466,36890,36866,19375,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36124,19288,36951,36866,17466,36890,36866,21991,22404,22987,17556,17575,22288,17486,17509,17525,18373,18567,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,36979,36995,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36139,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18027,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36139,19288,21529,24035,23112,23033,23511,31507,25377,24035,24035,24035,24036,23114,23114,23114,23114,37040,23511,23511,23511,23511,28086,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,24254,37079,23511,23511,23511,23511,23512,34766,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,37112,37160,18469,36866,17466,36890,36866,17656,37174,22987,17556,17575,22288,17486,17509,17525,18373,18537,22984,17553,17572,22285,18780,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,36883,36906,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,53264,18,49172,57366,24,8192,28,102432,127011,110630,114730,106539,127011,127011,127011,53264,18,18,0,0,57366,0,24,24,24,0,28,28,28,28,102432,0,0,127011,0,2220032,110630,0,0,0,114730,106539,0,2170880,2170880,2170880,2170880,0,0,0,2170880,2170880,2170880,3002368,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2576384,2215936,2215936,2215936,2416640,2424832,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2543616,2215936,2215936,2215936,2215936,2215936,2629632,2215936,2617344,2215936,2215936,2215936,2215936,2215936,2215936,2691072,2215936,2707456,2215936,2715648,2215936,2723840,2764800,2215936,2215936,2797568,2215936,2822144,2215936,2215936,2854912,2215936,2215936,2215936,2912256,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,180224,0,0,2174976,0,0,2170880,2617344,2170880,2170880,2170880,2170880,2170880,2170880,2691072,2170880,2707456,2170880,2715648,2170880,2723840,2764800,2170880,2170880,2797568,2170880,2170880,2797568,2170880,2822144,2170880,2170880,2854912,2170880,2170880,2170880,2912256,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2609152,2215936,2215936,2215936,2215936,2215936,2215936,2654208,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,184599,280,0,2174976,0,0,2215936,3117056,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,544,0,546,0,0,2179072,0,0,0,552,0,0,2170880,2170880,2170880,3117056,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,0,0,0,2158592,2158592,2232320,2232320,0,2240512,2240512,0,0,0,644,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,3129344,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2400256,2215936,2215936,2215936,2215936,2711552,2170880,2170880,2170880,2170880,2170880,2760704,2768896,2789376,2813952,2170880,2170880,2170880,2875392,2904064,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2453504,2457600,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,167936,0,0,0,0,2174976,0,0,2215936,2215936,2514944,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2592768,2215936,2215936,2215936,2215936,2215936,2215936,2215936,32768,0,0,0,0,0,2174976,32768,0,2633728,2215936,2215936,2215936,2215936,2215936,2215936,2711552,2215936,2215936,2215936,2215936,2215936,2760704,2768896,2789376,2813952,2215936,2215936,2215936,2875392,2904064,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2174976,0,65819,2215936,2215936,3031040,2215936,3055616,2215936,2215936,2215936,2215936,3092480,2215936,2215936,3125248,2215936,2215936,2215936,2215936,2215936,2215936,3002368,2215936,2215936,2170880,2170880,2494464,2170880,2170880,0,0,2215936,2215936,2215936,2215936,2215936,2215936,3198976,2215936,0,0,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,0,0,0,2379776,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2445312,2170880,2465792,2473984,2170880,2170880,2170880,2170880,2170880,2170880,2523136,2170880,2170880,2641920,2170880,2170880,2170880,2699264,2170880,2727936,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2879488,2170880,2916352,2170880,2170880,2170880,2879488,2170880,2916352,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3026944,2170880,2170880,3063808,2170880,2170880,3112960,2170880,2170880,3133440,2170880,2170880,3112960,2170880,2170880,3133440,2170880,2170880,2170880,3162112,2170880,2170880,3182592,3186688,2170880,2379776,2215936,2523136,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2596864,2215936,2621440,2215936,2215936,2641920,2215936,2215936,0,0,0,0,0,0,2179072,548,0,0,0,0,287,2170880,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3117056,2170880,2170880,2170880,2170880,2215936,2215936,2699264,2215936,2727936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2879488,2215936,2916352,2215936,2215936,0,0,0,0,188416,0,2179072,0,0,0,0,0,287,2170880,0,2171019,2171019,2171019,2400395,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3031179,2171019,3055755,2171019,2171019,2215936,3133440,2215936,2215936,2215936,3162112,2215936,2215936,3182592,3186688,2215936,0,0,0,0,0,0,0,0,0,0,2171019,2171019,2171019,2171019,2171019,2171019,2523275,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2597003,2171019,2621579,2170880,2170880,2170880,3162112,2170880,2170880,3182592,3186688,2170880,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,24,24,0,4337664,28,2170880,2170880,2170880,2629632,2170880,2170880,2170880,2170880,2719744,2744320,2170880,2170880,2170880,2834432,2838528,2170880,2908160,2170880,2170880,2936832,2215936,2215936,2215936,2215936,2719744,2744320,2215936,2215936,2215936,2834432,2838528,2215936,2908160,2215936,2215936,2936832,2215936,2215936,2985984,2215936,2994176,2215936,2215936,3014656,2215936,3059712,3076096,3088384,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2445312,2215936,2465792,2473984,2215936,2215936,2215936,2215936,2215936,2215936,2171166,2171166,2171166,2171166,2171166,0,0,0,2171166,2171166,2171166,2171166,2171166,2171166,2171019,2171019,2494603,2171019,2171019,2215936,2215936,2215936,3215360,0,0,0,0,0,0,0,0,0,0,0,0,0,2379776,2170880,2170880,2170880,2170880,2985984,2170880,2994176,2170880,2170880,3016168,2170880,3059712,3076096,3088384,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,124,124,0,128,128,2170880,2170880,2170880,3215360,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2486272,2170880,2170880,2506752,2170880,2170880,2170880,2535424,2539520,2170880,2170880,2588672,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2920448,2170880,2170880,2170880,2990080,2170880,2170880,2170880,2170880,3051520,2170880,2170880,2170880,2170880,2170880,2170880,3170304,0,2387968,2392064,2170880,2170880,2433024,2170880,2170880,2170880,3170304,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2486272,2215936,2215936,2506752,2215936,2215936,2215936,2535424,2539520,2215936,2215936,2588672,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2174976,136,0,2215936,2215936,2920448,2215936,2215936,2215936,2990080,2215936,2215936,2215936,2215936,3051520,2215936,2215936,2215936,2215936,2215936,2215936,2215936,3108864,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,3026944,2215936,2215936,3063808,2215936,2215936,3112960,2215936,2215936,2215936,3170304,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2453504,2457600,2170880,2170880,2170880,2486272,2170880,2170880,2506752,2170880,2170880,2170880,2537049,2539520,2170880,2170880,2588672,2170880,2170880,2170880,1508,2170880,2170880,2170880,1512,2170880,2920448,2170880,2170880,2170880,2990080,2170880,2170880,2170880,2461696,2170880,2170880,2170880,2510848,2170880,2170880,2170880,2170880,2580480,2170880,2605056,2637824,2170880,2170880,18,0,0,0,0,0,0,0,0,2220032,0,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2686976,2748416,2170880,2170880,2170880,2924544,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3121152,2170880,2170880,3145728,3158016,3166208,2170880,2420736,2428928,2170880,2478080,2170880,2170880,2170880,2170880,0,0,2170880,2170880,2170880,2170880,2646016,2670592,0,0,3145728,3158016,3166208,2387968,2392064,2215936,2215936,2433024,2215936,2461696,2215936,2215936,2215936,2510848,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,0,0,2170880,2215936,2215936,2580480,2215936,2605056,2637824,2215936,2215936,2686976,2748416,2215936,2215936,2215936,2924544,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,0,286,2170880,2215936,2215936,2215936,2215936,2215936,3121152,2215936,2215936,3145728,3158016,3166208,2387968,2392064,2170880,2170880,2433024,2170880,2461696,2170880,2170880,2170880,2510848,2170880,2170880,1625,2170880,2170880,2580480,2170880,2605056,2637824,2170880,647,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2576384,2170880,2170880,2170880,2170880,2170880,2609152,2170880,2170880,2686976,0,0,2748416,2170880,2170880,0,2170880,2924544,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,24,0,0,28,28,2170880,3141632,2215936,2420736,2428928,2215936,2478080,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2646016,2670592,2752512,2756608,2846720,2961408,2215936,2998272,2215936,3010560,2215936,2215936,2215936,3141632,2170880,2420736,2428928,2752512,2756608,0,2846720,2961408,2170880,2998272,2170880,3010560,2170880,2170880,2170880,3141632,2170880,2170880,2490368,2215936,2490368,2215936,2215936,2215936,2547712,2555904,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2174976,245760,0,3129344,2170880,2170880,2490368,2170880,2170880,2170880,0,0,2547712,2555904,2170880,2170880,2170880,0,0,0,0,0,0,0,0,0,2220032,0,0,45056,0,2584576,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2170880,2170880,2170880,2170880,0,0,0,2170880,2170880,2158592,0,0,0,0,0,0,0,0,2220032,0,0,0,0,0,0,0,0,1482,97,97,97,97,97,97,97,1354,97,97,97,97,97,97,97,97,1148,97,97,97,97,97,97,97,2584576,2170880,2170880,1512,0,2170880,2170880,2170880,2170880,2170880,2170880,2441216,2170880,2527232,2170880,2600960,2170880,2850816,2170880,2170880,2170880,3022848,2215936,2441216,2215936,2527232,2215936,2600960,2215936,2850816,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,0,287,2170880,2215936,3022848,2170880,2441216,2170880,2527232,0,0,2170880,2600960,2170880,0,2850816,2170880,2170880,2170880,2170880,2170880,2523136,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2596864,2170880,2621440,2170880,2170880,2641920,2170880,2170880,2170880,3022848,2170880,2519040,2170880,2170880,2170880,2170880,2170880,2215936,2519040,2215936,2215936,2215936,2215936,2215936,2170880,2170880,2170880,2453504,2457600,2170880,2170880,2170880,2170880,2170880,2170880,2514944,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2592768,2170880,2170880,2519040,0,2024,2170880,2170880,0,2170880,2170880,2170880,2396160,2170880,2170880,2170880,2170880,3018752,2396160,2215936,2215936,2215936,2215936,3018752,2396160,0,2024,2170880,2170880,2170880,2170880,3018752,2170880,2650112,2965504,2170880,2215936,2650112,2965504,2215936,0,0,2170880,2650112,2965504,2170880,2551808,2170880,2551808,2215936,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,141,45,45,67,67,67,67,67,224,67,67,238,67,67,67,67,67,67,67,1288,67,67,67,67,67,67,67,67,67,469,67,67,67,67,67,67,0,2551808,2170880,2170880,2215936,0,2170880,2170880,2215936,0,2170880,2170880,2215936,0,2170880,2977792,2977792,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53264,18,49172,57366,24,8192,29,102432,127011,110630,114730,106539,127011,127011,127011,53264,18,18,49172,0,0,0,24,24,24,0,28,28,28,28,102432,127,0,0,0,0,0,0,0,0,0,0,140,2170880,2170880,2170880,2416640,0,0,0,0,2220032,110630,0,0,0,114730,106539,136,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,4256099,4256099,24,24,0,28,28,2170880,2461696,2170880,2170880,2170880,2510848,2170880,2170880,0,2170880,2170880,2580480,2170880,2605056,2637824,2170880,2170880,2170880,2547712,2555904,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3129344,2215936,2215936,543,543,545,545,0,0,2179072,0,550,551,551,0,287,2171166,2171166,18,0,0,0,0,0,0,0,0,2220032,0,0,645,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,149,2584576,2170880,2170880,0,0,2170880,2170880,2170880,2170880,2170880,2170880,2441216,2170880,2527232,2170880,2600960,2519040,0,0,2170880,2170880,0,2170880,2170880,2170880,2396160,2170880,2170880,2170880,2170880,3018752,2396160,2215936,2215936,2215936,2215936,3018752,2396160,0,0,2170880,2170880,2170880,2170880,3018752,2170880,2650112,2965504,53264,18,49172,57366,24,155648,28,102432,155648,155687,114730,106539,0,0,155648,53264,18,18,49172,0,57366,0,24,24,24,0,28,28,28,28,102432,0,0,0,0,2220032,0,94208,0,0,114730,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,208896,18,278528,24,24,0,28,28,53264,18,159765,57366,24,8192,28,102432,0,110630,114730,106539,0,0,0,53264,18,18,49172,0,57366,0,24,24,24,0,28,139394,28,28,102432,131,0,0,0,2220032,110630,0,0,0,114730,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,32768,53264,0,18,18,24,24,0,28,28,0,546,0,0,2183168,0,0,552,832,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2170880,2609152,2170880,2170880,2170880,2170880,2170880,2170880,2654208,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,3198976,2215936,0,1084,0,1088,0,1092,0,0,0,0,0,41606,0,0,0,0,45,45,45,45,45,937,0,0,0,0,2220032,110630,0,0,0,114730,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3198976,2170880,0,0,644,0,0,0,2215936,3117056,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,826,0,828,0,0,2183168,0,0,830,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2592768,2170880,2170880,2170880,2170880,2633728,2170880,2170880,2170880,2170880,2170880,2170880,2711552,2170880,2170880,2170880,2170880,2170880,2760704,53264,18,49172,57366,24,8192,28,172066,172032,110630,172066,106539,0,0,172032,53264,18,18,49172,0,57366,0,24,24,24,16384,28,28,28,28,102432,0,98304,0,0,2220032,110630,0,0,0,0,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3198976,2170880,0,0,45056,0,0,0,53264,18,49172,57366,25,8192,30,102432,0,110630,114730,106539,0,0,176219,53264,18,18,49172,0,57366,0,124,124,124,0,128,128,128,128,102432,128,0,0,0,0,0,0,0,0,0,0,140,2170880,2170880,2170880,2416640,0,546,0,0,2183168,0,65536,552,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2646016,2670592,2752512,2756608,2846720,2961408,2170880,2998272,2170880,3010560,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,3198976,2215936,0,0,0,0,0,0,65536,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,143,45,45,67,67,67,67,67,227,67,67,67,67,67,67,67,67,67,1824,67,1826,67,67,67,67,17,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,32768,120,121,18,18,49172,0,57366,0,24,24,24,0,28,28,28,28,102432,67,67,37139,37139,24853,24853,0,0,2179072,548,0,65820,65820,0,287,97,0,0,97,97,0,97,97,97,45,45,45,45,2033,45,67,67,67,67,0,0,97,97,97,97,45,45,67,67,0,369,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,978,0,546,70179,0,2183168,0,0,552,0,97,97,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,1013,67,67,67,67,67,67,67,67,67,67,473,67,67,67,67,483,67,67,1025,67,67,67,67,67,67,67,67,67,67,67,67,67,97,97,97,97,97,0,0,97,97,97,97,1119,97,97,97,97,97,97,97,97,97,97,97,97,1359,97,97,97,67,67,1584,67,67,67,67,67,67,67,67,67,67,67,67,67,497,67,67,1659,45,45,45,45,45,45,45,45,45,1667,45,45,45,45,45,169,45,45,45,45,45,45,45,45,45,45,45,1668,45,45,45,45,67,67,1694,67,67,67,67,67,67,67,67,67,67,67,67,67,774,67,67,1713,97,97,97,97,97,97,97,0,97,97,1723,97,97,97,97,0,45,45,45,45,45,45,1538,45,45,45,45,45,1559,45,45,1561,45,45,45,45,45,45,45,687,45,45,45,45,45,45,45,45,448,45,45,45,45,45,45,67,67,67,67,1771,1772,67,67,67,67,67,67,67,67,97,97,97,97,0,0,0,97,67,67,67,67,67,1821,67,67,67,67,67,67,1827,67,67,67,0,0,0,0,0,0,97,97,1614,97,97,97,97,97,603,97,97,605,97,97,608,97,97,97,97,0,1532,45,45,45,45,45,45,45,45,45,45,450,45,45,45,45,67,67,97,97,97,97,97,97,0,0,1839,97,97,97,97,0,0,97,97,97,97,97,45,45,45,45,45,45,45,67,67,67,67,67,67,67,97,1883,97,1885,97,0,1888,0,97,97,0,97,97,1848,97,97,97,97,1852,45,45,45,45,45,45,45,384,391,45,45,45,45,45,45,45,385,45,45,45,45,45,45,45,45,1237,45,45,45,45,45,45,67,0,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,45,45,45,1951,45,45,45,45,45,45,45,45,67,67,67,67,1963,97,2023,0,97,97,0,97,97,97,45,45,45,45,45,45,67,67,1994,67,1995,67,67,67,67,67,67,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,97,97,0,0,0,0,2220032,110630,0,0,0,114730,106539,137,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2793472,2805760,2170880,2830336,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3031040,2170880,3055616,2170880,2170880,67,67,37139,37139,24853,24853,0,0,281,549,0,65820,65820,0,287,97,0,0,97,97,0,97,97,97,45,45,2031,2032,45,45,67,67,67,67,67,67,67,67,67,67,67,67,1769,67,0,546,70179,549,549,0,0,552,0,97,97,97,97,97,97,97,45,45,45,45,45,45,1858,45,641,0,0,0,0,41606,926,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,456,67,0,0,0,1313,0,0,0,1096,1319,0,0,0,0,97,97,97,97,97,97,97,97,1110,97,97,97,97,67,67,67,67,1301,1476,0,0,0,0,1307,1478,0,0,0,0,0,0,0,0,97,97,97,97,1486,97,1487,97,1313,1480,0,0,0,0,1319,0,97,97,97,97,97,97,97,97,97,566,97,97,97,97,97,97,67,67,67,1476,0,1478,0,1480,0,97,97,97,97,97,97,97,45,1853,45,1855,45,45,45,45,53264,18,49172,57366,26,8192,31,102432,0,110630,114730,106539,0,0,225368,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,32768,53264,18,18,49172,163840,57366,0,24,24,229376,0,28,28,28,229376,102432,0,0,0,0,2220167,110630,0,0,0,114730,106539,0,2171019,2171019,2171019,2171019,2592907,2171019,2171019,2171019,2171019,2633867,2171019,2171019,2171019,2171019,2171019,2171019,2654347,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3117195,2171019,2171019,2171019,2171019,2240641,0,0,0,0,0,0,0,0,368,0,140,2171019,2171019,2171019,2416779,2424971,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2617483,2171019,2171019,2642059,2171019,2171019,2171019,2699403,2171019,2728075,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3215499,2215936,2215936,2215936,2215936,2215936,2437120,2215936,2215936,2171019,2822283,2171019,2171019,2855051,2171019,2171019,2171019,2912395,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3002507,2171019,2171019,2215936,2215936,2494464,2215936,2215936,2215936,2171166,2171166,2416926,2425118,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2576670,2171166,2617630,2171166,2171166,2171166,2171166,2171166,2171166,2691358,2171166,2707742,2171166,2715934,2171166,2724126,2765086,2171166,2171166,2797854,2171166,2822430,2171166,2171166,2855198,2171166,2171166,2171166,2912542,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2793758,2806046,2171166,2830622,2171166,2171166,2171166,2171166,2171166,2171166,2171166,3109150,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2543902,2171166,2171166,2171166,2171166,2171166,2629918,2793611,2805899,2171019,2830475,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,0,546,0,0,2183168,0,0,552,0,2171166,2171166,2171166,2400542,2171166,2171166,2171166,0,2171166,2171166,2171166,0,2171166,2920734,2171166,2171166,2171166,2990366,2171166,2171166,2171166,2171166,3117342,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,0,53264,0,18,18,4329472,2232445,0,2240641,4337664,2711691,2171019,2171019,2171019,2171019,2171019,2760843,2769035,2789515,2814091,2171019,2171019,2171019,2875531,2904203,2171019,2171019,3092619,2171019,2171019,3125387,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3199115,2171019,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2453504,2457600,2215936,2215936,2215936,2215936,2215936,2215936,2793472,2805760,2215936,2830336,2215936,2215936,2215936,2215936,2215936,2215936,2170880,2170880,2170880,2170880,2170880,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2494464,2170880,2170880,2171166,2171166,2634014,2171166,2171166,2171166,2171166,2171166,2171166,2711838,2171166,2171166,2171166,2171166,2171166,2760990,2769182,2789662,2814238,2171166,2171166,2171166,2875678,2904350,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,3199262,2171166,0,0,0,0,0,0,0,0,0,2379915,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2445451,2171019,2465931,2474123,2171019,2171019,3113099,2171019,2171019,3133579,2171019,2171019,2171019,3162251,2171019,2171019,3182731,3186827,2171019,2379776,2879627,2171019,2916491,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3027083,2171019,2171019,3063947,2699550,2171166,2728222,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2879774,2171166,2916638,2171166,2171166,2171166,2171166,2171166,2609438,2171166,2171166,2171166,2171166,2171166,2171166,2654494,2171166,2171166,2171166,2171166,2171166,2445598,2171166,2466078,2474270,2171166,2171166,2171166,2171166,2171166,2171166,2523422,2171019,2437259,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2543755,2171019,2171019,2171019,2584715,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2908299,2171019,2171019,2936971,2171019,2171019,2986123,2171019,2994315,2171019,2171019,3014795,2171019,3059851,3076235,3088523,2171166,2171166,2986270,2171166,2994462,2171166,2171166,3014942,2171166,3059998,3076382,3088670,2171166,2171166,2171166,2171166,2171166,2171166,3027230,2171166,2171166,3064094,2171166,2171166,3113246,2171166,2171166,3133726,2506891,2171019,2171019,2171019,2535563,2539659,2171019,2171019,2588811,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2691211,2171019,2707595,2171019,2715787,2171019,2723979,2764939,2171019,2171019,2797707,2215936,2215936,3170304,0,0,0,0,0,0,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2453790,2457886,2171166,2171166,2171166,2486558,2171166,2171166,2507038,2171166,2171166,2171166,2535710,2539806,2171166,2171166,2588958,2171166,2171166,2171166,2171166,2515230,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2593054,2171166,2171166,2171166,2171166,3051806,2171166,2171166,2171166,2171166,2171166,2171166,3170590,0,2388107,2392203,2171019,2171019,2433163,2171019,2461835,2171019,2171019,2171019,2510987,2171019,2171019,2171019,2171019,2580619,2171019,2605195,2637963,2171019,2171019,2171019,2920587,2171019,2171019,2171019,2990219,2171019,2171019,2171019,2171019,3051659,2171019,2171019,2171019,2453643,2457739,2171019,2171019,2171019,2171019,2171019,2171019,2515083,2171019,2171019,2171019,2171019,2646155,2670731,2752651,2756747,2846859,2961547,2171019,2998411,2171019,3010699,2171019,2171019,2687115,2748555,2171019,2171019,2171019,2924683,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3121291,2171019,2171019,2171019,3170443,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2486272,2215936,2215936,2506752,3145867,3158155,3166347,2387968,2392064,2215936,2215936,2433024,2215936,2461696,2215936,2215936,2215936,2510848,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,0,553,2170880,2215936,2215936,2215936,2215936,2215936,3121152,2215936,2215936,3145728,3158016,3166208,2388254,2392350,2171166,2171166,2433310,2171166,2461982,2171166,2171166,2171166,2511134,2171166,2171166,0,2171166,2171166,2580766,2171166,2605342,2638110,2171166,2171166,2171166,2171166,3031326,2171166,3055902,2171166,2171166,2171166,2171166,3092766,2171166,2171166,3125534,2171166,2171166,2171166,3162398,2171166,2171166,3182878,3186974,2171166,0,0,0,2171019,2171019,2171019,2171019,3109003,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2215936,2215936,2215936,2400256,2215936,2215936,2215936,2215936,2171166,2687262,0,0,2748702,2171166,2171166,0,2171166,2924830,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2597150,2171166,2621726,2171166,2171166,2642206,2171166,2171166,2171166,2171166,3121438,2171166,2171166,3146014,3158302,3166494,2171019,2420875,2429067,2171019,2478219,2171019,2171019,2171019,2171019,2547851,2556043,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3129483,2215936,2171019,3141771,2215936,2420736,2428928,2215936,2478080,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2646016,2670592,2752512,2756608,2846720,2961408,2215936,2998272,2215936,3010560,2215936,2215936,2215936,3141632,2171166,2421022,2429214,2171166,2478366,2171166,2171166,2171166,2171166,0,0,2171166,2171166,2171166,2171166,2646302,2670878,0,0,0,0,37,110630,0,0,0,114730,106539,0,45,45,45,45,45,1405,1406,45,45,45,45,1409,45,45,45,45,45,1415,45,45,45,45,45,45,45,45,45,45,1238,45,45,45,45,67,2752798,2756894,0,2847006,2961694,2171166,2998558,2171166,3010846,2171166,2171166,2171166,3141918,2171019,2171019,2490507,3129344,2171166,2171166,2490654,2171166,2171166,2171166,0,0,2547998,2556190,2171166,2171166,2171166,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,45,167,45,45,45,45,185,187,45,45,198,45,45,0,2171166,2171166,2171166,2171166,2171166,2171166,3129630,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2576523,2171019,2171019,2171019,2171019,2171019,2609291,2171019,2215936,2215936,2215936,2215936,2215936,2215936,3002368,2215936,2215936,2171166,2171166,2494750,2171166,2171166,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,147,2584576,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2171166,2171166,2171166,2171166,0,0,0,2171166,2171166,2171166,2171166,0,0,0,2171166,2171166,2171166,3002654,2171166,2171166,2171019,2171019,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2175257,0,0,2584862,2171166,2171166,0,0,2171166,2171166,2171166,2171166,2171166,2171019,2441355,2171019,2527371,2171019,2601099,2171019,2850955,2171019,2171019,2171019,3022987,2215936,2441216,2215936,2527232,2215936,2600960,2215936,2850816,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,69632,287,2170880,2215936,3022848,2171166,2441502,2171166,2527518,0,0,2171166,2601246,2171166,0,2851102,2171166,2171166,2171166,2171166,2720030,2744606,2171166,2171166,2171166,2834718,2838814,2171166,2908446,2171166,2171166,2937118,3023134,2171019,2519179,2171019,2171019,2171019,2171019,2171019,2215936,2519040,2215936,2215936,2215936,2215936,2215936,2171166,2171166,2171166,3215646,0,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2486411,2171019,2171019,2171019,2629771,2171019,2171019,2171019,2171019,2719883,2744459,2171019,2171019,2171019,2834571,2838667,2171019,2519326,0,0,2171166,2171166,0,2171166,2171166,2171166,2396299,2171019,2171019,2171019,2171019,3018891,2396160,2215936,2215936,2215936,2215936,3018752,2396446,0,0,2171166,2171166,2171166,2171166,3019038,2171019,2650251,2965643,2171019,2215936,2650112,2965504,2215936,0,0,2171166,2650398,2965790,2171166,2551947,2171019,2551808,2215936,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,144,45,45,67,67,67,67,67,228,67,67,67,67,67,67,67,67,67,1929,97,97,97,97,0,0,0,2552094,2171166,2171019,2215936,0,2171166,2171019,2215936,0,2171166,2171019,2215936,0,2171166,2977931,2977792,2978078,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,1321,97,131072,0,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,24,24,0,28,28,0,140,0,2379776,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2445312,2170880,2465792,2473984,2170880,2170880,2170880,2584576,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2170880,2170880,2170880,3162112,2170880,2170880,3182592,3186688,2170880,0,140,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3002368,2170880,2170880,2215936,2215936,2494464,2215936,2215936,2215936,2215936,2215936,2215936,3215360,544,0,0,0,544,0,546,0,0,0,546,0,0,2183168,0,0,552,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,0,2170880,2170880,2170880,0,2170880,2920448,2170880,2170880,2170880,2990080,2170880,2170880,552,0,0,0,552,0,287,0,2170880,2170880,2170880,2170880,2170880,2437120,2170880,2170880,18,0,0,0,0,0,0,0,0,2220032,0,0,644,0,2215936,2215936,3170304,544,0,546,0,552,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3198976,2170880,0,0,0,140,0,0,53264,18,49172,57366,24,8192,28,102432,249856,110630,114730,106539,0,0,32768,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,151640,53264,18,18,49172,0,57366,0,24,24,24,0,28,28,28,28,0,0,0,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2416640,53264,18,49172,57366,24,8192,28,102432,253952,110630,114730,106539,0,0,32856,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,192512,53264,18,18,49172,0,57366,0,2232445,184320,2232445,0,2240641,2240641,184320,2240641,102432,0,0,0,221184,2220032,110630,0,0,0,114730,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3108864,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,0,0,0,45056,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,24,24,0,127,127,53264,18,49172,258071,24,8192,28,102432,0,110630,114730,106539,0,0,32768,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,204800,53264,18,49172,57366,24,27,28,102432,0,110630,114730,106539,0,0,0,53264,18,49172,57366,24,8192,28,33,0,33,33,33,0,0,0,53264,18,18,49172,0,57366,0,24,24,24,16384,28,28,28,28,0,0,0,0,0,0,0,0,0,0,139,2170880,2170880,2170880,2416640,67,67,37139,37139,24853,24853,0,70179,0,0,0,65820,65820,369,287,97,0,0,97,97,0,97,97,97,45,2030,45,45,45,45,67,1573,67,67,67,67,67,67,67,67,67,67,67,1699,67,67,67,67,25403,546,70179,0,0,66365,66365,552,0,97,97,97,97,97,97,97,97,1355,97,97,97,1358,97,97,97,641,0,0,0,925,41606,0,0,0,0,45,45,45,45,45,45,45,1187,45,45,45,45,45,0,1480,0,0,0,0,1319,0,97,97,97,97,97,97,97,97,97,592,97,97,97,97,97,97,97,97,97,97,1531,45,45,45,45,45,45,45,45,45,45,45,45,1680,45,45,45,641,0,924,0,925,41606,0,0,0,0,45,45,45,45,45,45,1186,45,45,45,45,45,45,67,67,37139,37139,24853,24853,0,70179,282,0,0,65820,65820,369,287,97,0,0,97,97,0,97,2028,97,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,1767,67,67,67,0,0,0,0,0,0,1612,97,97,97,97,97,97,0,1785,97,97,97,97,97,97,0,0,97,97,97,97,1790,97,0,0,2170880,2170880,3051520,2170880,2170880,2170880,2170880,2170880,2170880,3170304,241664,2387968,2392064,2170880,2170880,2433024,53264,19,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,274432,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,270336,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,1134711,53264,18,49172,57366,24,8192,28,102432,0,1126440,1126440,1126440,0,0,1126400,53264,18,49172,57366,24,8192,28,102432,36,110630,114730,106539,0,0,217088,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,94,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,96,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,24666,53264,18,18,49172,0,57366,0,24,24,24,126,28,28,28,28,102432,53264,122,123,49172,0,57366,0,24,24,24,0,28,28,28,28,102432,2170880,2170880,4256099,0,0,0,0,0,0,0,0,2220032,0,0,0,0,0,0,0,0,1319,0,0,0,0,97,97,97,97,97,97,97,1109,97,97,97,97,1113,132,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,146,150,45,45,45,45,45,175,45,180,45,186,45,189,45,45,203,67,256,67,67,270,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,97,293,297,97,97,97,97,97,322,97,327,97,333,97,0,0,97,2026,0,2027,97,97,45,45,45,45,45,45,67,67,67,1685,67,67,67,67,67,67,67,1690,67,336,97,97,350,97,97,0,53264,0,18,18,24,24,356,28,28,0,0,0,0,0,0,0,0,0,0,140,2170880,2170880,2170880,2416640,2424832,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2617344,2170880,45,439,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,525,67,67,67,67,67,67,67,67,67,67,67,0,0,0,0,0,0,0,0,0,0,0,0,97,97,97,97,622,97,97,97,97,97,97,97,97,97,97,97,97,1524,97,97,1527,369,648,45,45,45,45,45,45,45,45,45,659,45,45,45,45,408,45,45,45,45,45,45,45,45,45,45,45,1239,45,45,45,67,729,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,762,67,746,67,67,67,67,67,67,67,67,67,759,67,67,67,67,0,0,0,1477,0,1086,0,0,0,1479,0,1090,67,67,796,67,67,799,67,67,67,67,67,67,67,67,67,67,67,67,1291,67,67,67,811,67,67,67,67,67,816,67,67,67,67,67,67,67,37689,544,25403,546,70179,0,0,66365,66365,552,833,97,97,97,97,97,97,97,97,1380,0,0,0,45,45,45,45,45,1185,45,45,45,45,45,45,45,386,45,45,45,45,45,45,45,45,1810,45,45,45,45,45,45,67,97,97,844,97,97,97,97,97,97,97,97,97,857,97,97,97,0,97,97,97,0,97,97,97,97,97,97,97,97,97,97,45,45,45,97,97,97,894,97,97,897,97,97,97,97,97,97,97,97,97,0,0,0,1382,45,45,45,97,909,97,97,97,97,97,914,97,97,97,97,97,97,97,923,67,67,1079,67,67,67,67,67,37689,1085,25403,1089,66365,1093,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,148,1114,97,97,97,97,97,97,1122,97,97,97,97,97,97,97,97,97,606,97,97,97,97,97,97,97,97,97,97,1173,97,97,97,97,97,12288,0,925,0,1179,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,145,45,45,67,67,67,67,67,1762,67,67,67,1766,67,67,67,67,67,67,528,67,67,67,67,67,67,67,67,67,97,97,97,97,97,0,1934,67,67,1255,67,67,67,67,67,67,67,67,67,67,67,67,67,1035,67,67,67,67,67,67,1297,67,67,67,67,67,67,0,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,1111,97,97,97,97,97,97,1327,97,97,97,97,97,97,97,97,97,97,97,97,33344,97,97,97,1335,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,97,97,1377,97,97,97,97,97,97,0,1179,0,45,45,45,45,670,45,45,45,45,45,45,45,45,45,45,45,430,45,45,45,45,67,67,1438,67,67,1442,67,67,67,67,67,67,67,67,67,67,67,67,1592,67,67,67,1451,67,67,67,67,67,67,67,67,67,67,1458,67,67,67,67,0,0,1305,0,0,0,0,0,1311,0,0,0,1317,0,0,0,0,0,0,0,97,97,1322,97,97,1491,97,97,1495,97,97,97,97,97,97,97,97,97,97,0,45,45,45,45,45,45,45,45,45,45,45,45,1551,45,1553,45,1504,97,97,97,97,97,97,97,97,97,97,1513,97,97,97,97,0,45,45,45,45,1536,45,45,45,45,1540,45,67,67,67,67,67,1585,67,67,67,67,67,67,67,67,67,67,67,67,1700,67,67,67,97,1648,97,97,97,97,97,97,97,97,0,45,45,45,45,45,45,45,45,45,45,1541,0,97,97,97,97,0,1940,0,97,97,97,97,97,97,45,45,2011,45,45,45,2015,67,67,2017,67,67,67,2021,97,67,67,812,67,67,67,67,67,67,67,67,67,67,67,37689,544,97,97,97,910,97,97,97,97,97,97,97,97,97,97,97,923,0,0,0,45,45,45,45,1184,45,45,45,45,1188,45,45,45,45,1414,45,45,45,1417,45,1419,45,45,45,45,45,443,45,45,45,45,45,45,453,45,45,67,67,67,67,1244,67,67,67,67,1248,67,67,67,67,67,67,67,0,37139,24853,0,0,0,282,41098,65820,97,1324,97,97,97,97,1328,97,97,97,97,97,97,97,97,97,0,0,930,45,45,45,45,97,97,97,97,1378,97,97,97,97,0,1179,0,45,45,45,45,671,45,45,45,45,45,45,45,45,45,45,45,975,45,45,45,45,67,67,1923,67,1925,67,67,1927,67,97,97,97,97,97,0,0,97,97,97,97,1985,45,45,45,45,45,45,1560,45,45,45,45,45,45,45,45,45,946,45,45,950,45,45,45,0,97,97,97,1939,0,0,0,97,1943,97,97,1945,97,45,45,45,669,45,45,45,45,45,45,45,45,45,45,45,45,990,45,45,45,67,257,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,337,97,97,97,97,97,0,53264,0,18,18,24,24,356,28,28,0,0,0,0,0,0,0,0,0,0,370,2170880,2170880,2170880,2416640,401,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,459,461,67,67,67,67,67,67,67,67,475,67,480,67,67,67,67,67,67,1054,67,67,67,67,67,67,67,67,67,67,1698,67,67,67,67,67,484,67,67,487,67,67,67,67,67,67,67,67,67,67,67,67,67,1459,67,67,97,556,558,97,97,97,97,97,97,97,97,572,97,577,97,97,0,0,1896,97,97,97,97,97,97,1903,45,45,45,45,983,45,45,45,45,988,45,45,45,45,45,45,1195,45,45,45,45,45,45,45,45,45,45,1549,45,45,45,45,45,581,97,97,584,97,97,97,97,97,97,97,97,97,97,97,97,97,1153,97,97,369,0,45,45,45,45,45,45,45,45,45,45,45,662,45,45,45,684,45,45,45,45,45,45,45,45,45,45,45,45,1004,45,45,45,67,67,67,749,67,67,67,67,67,67,67,67,67,761,67,67,67,67,67,67,1068,67,67,67,1071,67,67,67,67,1076,794,795,67,67,67,67,67,67,67,67,67,67,67,67,67,67,0,544,97,97,97,97,847,97,97,97,97,97,97,97,97,97,859,97,0,0,2025,97,20480,97,97,2029,45,45,45,45,45,45,67,67,67,1575,67,67,67,67,67,67,67,67,67,1775,67,67,67,97,97,97,97,892,893,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1515,97,993,994,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,992,67,67,67,1284,67,67,67,67,67,67,67,67,67,67,67,67,67,1607,67,67,97,1364,97,97,97,97,97,97,97,97,97,97,97,97,97,97,596,97,45,1556,1557,45,45,45,45,45,45,45,45,45,45,45,45,45,45,696,45,1596,1597,67,67,67,67,67,67,67,67,67,67,67,67,67,67,499,67,97,97,97,1621,97,97,97,97,97,97,97,97,97,97,97,97,97,1346,97,97,97,97,1740,97,97,97,97,45,45,45,45,45,45,45,45,45,45,1678,45,45,45,45,45,67,97,97,97,97,97,97,1836,0,97,97,97,97,97,0,0,97,97,97,1984,97,45,45,45,45,45,45,1808,45,45,45,45,45,45,45,45,67,739,67,67,67,67,67,744,45,45,1909,45,45,45,45,45,45,45,67,1917,67,1918,67,67,67,67,67,67,1247,67,67,67,67,67,67,67,67,67,67,532,67,67,67,67,67,67,1922,67,67,67,67,67,67,67,97,1930,97,1931,97,0,0,97,97,0,97,97,97,45,45,45,45,45,45,67,67,67,67,1576,67,67,67,67,1580,67,67,0,97,97,1938,97,0,0,0,97,97,97,97,97,97,45,45,45,699,45,45,45,704,45,45,45,45,45,45,45,45,987,45,45,45,45,45,45,45,67,67,97,97,97,97,0,0,97,97,97,2006,97,97,97,97,0,45,1533,45,45,45,45,45,45,45,45,45,1416,45,45,45,45,45,45,45,45,722,723,45,45,45,45,45,45,2045,67,67,67,2047,0,0,97,97,97,2051,45,45,67,67,0,0,0,0,925,41606,0,0,0,0,45,45,45,45,45,45,409,45,45,45,45,45,45,45,45,45,1957,45,67,67,67,67,67,1836,97,97,45,67,0,97,45,67,0,97,45,67,0,97,45,45,67,67,67,1761,67,67,67,1764,67,67,67,67,67,67,67,494,67,67,67,67,67,67,67,67,67,787,67,67,67,67,67,67,45,45,420,45,45,422,45,45,425,45,45,45,45,45,45,45,387,45,45,45,45,397,45,45,45,67,460,67,67,67,67,67,67,67,67,67,67,67,67,67,67,515,67,485,67,67,67,67,67,67,67,67,67,67,67,67,67,498,67,67,67,67,67,97,0,2039,97,97,97,97,97,45,45,45,45,1426,45,45,45,67,67,67,67,67,67,67,67,67,1689,67,67,67,97,557,97,97,97,97,97,97,97,97,97,97,97,97,97,97,612,97,582,97,97,97,97,97,97,97,97,97,97,97,97,97,595,97,97,97,97,97,896,97,97,97,97,97,97,97,97,97,97,885,97,97,97,97,97,45,939,45,45,45,45,943,45,45,45,45,45,45,45,45,45,45,1916,67,67,67,67,67,45,67,67,67,67,67,67,67,1015,67,67,67,67,1019,67,67,67,67,67,67,1271,67,67,67,67,67,67,1277,67,67,67,67,67,67,1287,67,67,67,67,67,67,67,67,67,67,804,67,67,67,67,67,1077,67,67,67,67,67,67,67,37689,0,25403,0,66365,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2437120,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2543616,2170880,2170880,2170880,2170880,2170880,2629632,1169,97,1171,97,97,97,97,97,97,97,12288,0,925,0,1179,0,0,0,0,925,41606,0,0,0,0,45,45,45,45,936,45,45,67,67,214,67,220,67,67,233,67,243,67,248,67,67,67,67,67,67,1298,67,67,67,67,0,0,0,0,0,0,97,97,97,97,97,1617,97,0,0,0,45,45,45,1183,45,45,45,45,45,45,45,45,45,393,45,45,45,45,45,45,67,67,1243,67,67,67,67,67,67,67,67,67,67,67,67,67,1074,67,67,1281,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,776,1323,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,907,45,1412,45,45,45,45,45,45,45,1418,45,45,45,45,45,45,686,45,45,45,690,45,45,695,45,45,67,67,67,67,67,1465,67,67,67,67,67,67,67,67,67,67,67,97,97,97,1712,97,97,97,97,1741,97,97,97,45,45,45,45,45,45,45,45,45,426,45,45,45,45,45,45,67,67,67,1924,67,67,67,67,67,97,97,97,97,97,0,0,97,97,1983,97,97,45,45,1987,45,1988,45,0,97,97,97,97,0,0,0,1942,97,97,97,97,97,45,45,45,700,45,45,45,45,45,45,45,45,45,45,711,45,45,153,45,45,166,45,176,45,181,45,45,188,191,196,45,204,255,258,263,67,271,67,67,0,37139,24853,0,0,0,282,41098,65820,97,97,97,294,97,300,97,97,313,97,323,97,328,97,97,335,338,343,97,351,97,97,0,53264,0,18,18,24,24,356,28,28,0,0,0,0,0,0,0,0,41098,0,140,45,45,45,45,1404,45,45,45,45,45,45,45,45,45,45,1411,67,67,486,67,67,67,67,67,67,67,67,67,67,67,67,67,1251,67,67,501,67,67,67,67,67,67,67,67,67,67,67,67,513,67,67,67,67,67,67,1443,67,67,67,67,67,67,67,67,67,67,1263,67,67,67,67,67,97,97,583,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1526,97,598,97,97,97,97,97,97,97,97,97,97,97,97,610,97,97,0,97,97,1796,97,97,97,97,97,97,97,45,45,45,45,45,1744,45,45,45,369,0,651,45,653,45,654,45,656,45,45,45,660,45,45,45,45,1558,45,45,45,45,45,45,45,45,1566,45,45,681,45,683,45,45,45,45,45,45,45,45,691,692,694,45,45,45,716,45,45,45,45,45,45,45,45,45,45,45,45,709,45,45,712,45,714,45,45,45,718,45,45,45,45,45,45,45,726,45,45,45,733,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,67,1691,67,67,747,67,67,67,67,67,67,67,67,67,760,67,67,67,0,0,0,0,0,0,97,1613,97,97,97,97,97,97,1509,97,97,97,97,97,97,97,97,97,0,1179,0,45,45,45,45,67,764,67,67,67,67,768,67,770,67,67,67,67,67,67,67,67,97,97,97,97,0,0,0,1977,67,778,779,781,67,67,67,67,67,67,788,789,67,67,792,793,67,67,67,813,67,67,67,67,67,67,67,67,67,824,37689,544,25403,546,70179,0,0,66365,66365,552,0,836,97,838,97,839,97,841,97,97,97,845,97,97,97,97,97,97,97,97,97,858,97,97,0,1728,97,97,97,0,97,97,97,97,97,97,97,97,97,97,45,1802,45,97,97,862,97,97,97,97,866,97,868,97,97,97,97,97,97,0,0,97,97,1788,97,97,97,0,0,97,97,876,877,879,97,97,97,97,97,97,886,887,97,97,890,891,97,97,97,97,97,97,97,899,97,97,97,903,97,97,97,0,97,97,97,0,97,97,97,97,97,97,97,1646,97,97,97,97,911,97,97,97,97,97,97,97,97,97,922,923,45,955,45,957,45,45,45,45,45,45,45,45,45,45,45,45,195,45,45,45,45,45,981,982,45,45,45,45,45,45,989,45,45,45,45,45,170,45,45,45,45,45,45,45,45,45,45,411,45,45,45,45,45,67,1023,67,67,67,67,67,67,1031,67,1033,67,67,67,67,67,67,67,817,819,67,67,67,67,67,37689,544,67,1065,67,67,67,67,67,67,67,67,67,67,67,67,67,67,516,67,67,1078,67,67,1081,1082,67,67,37689,0,25403,0,66365,0,0,0,0,0,0,0,0,2171166,2171166,2171166,2171166,2171166,2437406,2171166,2171166,97,1115,97,1117,97,97,97,97,97,97,1125,97,1127,97,97,97,0,97,97,97,0,97,97,97,97,1644,97,97,97,0,97,97,97,0,97,97,1642,97,97,97,97,97,97,625,97,97,97,97,97,97,97,97,97,316,97,97,97,97,97,97,97,97,97,1159,97,97,97,97,97,97,97,97,97,97,97,97,97,1502,97,97,97,97,97,1172,97,97,1175,1176,97,97,12288,0,925,0,1179,0,0,0,0,925,41606,0,0,0,0,45,45,45,935,45,45,45,1233,45,45,45,1236,45,45,45,45,45,45,45,67,67,67,67,67,67,1873,67,67,45,45,1218,45,45,45,1223,45,45,45,45,45,45,45,1230,45,45,67,67,215,219,222,67,230,67,67,244,246,249,67,67,67,67,67,67,1882,97,97,97,97,0,0,0,97,97,97,97,97,97,45,1904,45,1905,45,67,67,67,67,67,1258,67,1260,67,67,67,67,67,67,67,67,67,495,67,67,67,67,67,67,67,67,1283,67,67,67,67,67,67,67,1290,67,67,67,67,67,67,67,818,67,67,67,67,67,67,37689,544,67,67,1295,67,67,67,67,67,67,67,67,0,0,0,0,0,0,2174976,0,0,97,97,97,1326,97,97,97,97,97,97,97,97,97,97,97,97,97,1514,97,97,97,97,97,1338,97,1340,97,97,97,97,97,97,97,97,97,97,97,1500,97,97,1503,97,1363,97,97,97,97,97,97,97,1370,97,97,97,97,97,97,97,563,97,97,97,97,97,97,578,97,1375,97,97,97,97,97,97,97,97,0,1179,0,45,45,45,45,685,45,45,45,45,45,45,45,45,45,45,45,1003,45,45,45,45,67,67,67,1463,67,67,67,67,67,67,67,67,67,67,67,67,67,1778,97,97,97,97,97,1518,97,97,97,97,97,97,97,97,97,97,97,97,609,97,97,97,45,1542,45,45,45,45,45,45,45,1548,45,45,45,45,45,1554,45,1570,1571,45,67,67,67,67,67,67,1578,67,67,67,67,67,67,67,1055,67,67,67,67,67,1061,67,67,1582,67,67,67,67,67,67,67,1588,67,67,67,67,67,1594,67,67,67,67,67,97,2038,0,97,97,97,97,97,2044,45,45,45,995,45,45,45,45,1e3,45,45,45,45,45,45,45,1809,45,1811,45,45,45,45,45,67,1610,1611,67,1476,0,1478,0,1480,0,97,97,97,97,97,97,1618,1647,1649,97,97,97,1652,97,1654,1655,97,0,45,45,45,1658,45,45,67,67,216,67,67,67,67,234,67,67,67,67,252,254,1845,97,97,97,97,97,97,97,45,45,45,45,45,45,45,45,945,45,947,45,45,45,45,45,67,67,67,67,67,1881,97,97,97,97,97,0,0,0,97,97,97,97,97,1902,45,45,45,45,45,45,1908,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,1921,67,67,67,67,67,67,67,67,97,97,97,97,97,0,0,0,97,97,0,97,1937,97,97,1940,0,0,97,97,97,97,97,97,1947,1948,1949,45,45,45,1952,45,1954,45,45,45,45,1959,1960,1961,67,67,67,67,67,67,1455,67,67,67,67,67,67,67,67,67,67,757,67,67,67,67,67,67,1964,67,1966,67,67,67,67,1971,1972,1973,97,0,0,0,97,97,1104,97,97,97,97,97,97,97,97,97,97,884,97,97,97,889,97,97,1978,97,0,0,1981,97,97,97,97,45,45,45,45,45,45,736,45,67,67,67,67,67,67,67,67,67,67,67,1018,67,67,67,45,67,67,67,67,0,2049,97,97,97,97,45,45,67,67,0,0,0,0,925,41606,0,0,0,0,45,933,45,45,45,45,1234,45,45,45,45,45,45,45,45,45,45,67,97,97,288,97,97,97,97,97,97,317,97,97,97,97,97,97,0,0,97,1787,97,97,97,97,0,0,45,45,378,45,45,45,45,45,390,45,45,45,45,45,45,45,424,45,45,45,431,433,45,45,45,67,1050,67,67,67,67,67,67,67,67,67,67,67,67,67,67,518,67,97,97,97,1144,97,97,97,97,97,97,97,97,97,97,97,97,632,97,97,97,97,97,97,97,1367,97,97,97,97,97,97,97,97,97,97,97,855,97,97,97,97,67,97,97,97,97,97,97,1837,0,97,97,97,97,97,0,0,0,1897,97,97,97,97,97,45,45,45,45,45,1208,45,45,45,45,45,45,45,45,45,45,724,45,45,45,45,45,97,2010,45,45,45,45,45,45,2016,67,67,67,67,67,67,2022,45,2046,67,67,67,0,0,2050,97,97,97,45,45,67,67,0,0,0,0,925,41606,0,0,0,0,932,45,45,45,45,45,1222,45,45,45,45,45,45,45,45,45,45,1227,45,45,45,45,45,133,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,45,701,702,45,45,705,706,45,45,45,45,45,45,703,45,45,45,45,45,45,45,45,45,719,45,45,45,45,45,725,45,45,45,369,649,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1216,25403,546,70179,0,0,66365,66365,552,834,97,97,97,97,97,97,97,1342,97,97,97,97,97,97,97,97,0,97,97,97,97,97,97,97,1799,97,97,45,45,45,1569,45,45,45,1572,67,67,67,67,67,67,67,67,67,67,67,0,0,0,1306,0,67,67,67,1598,67,67,67,67,67,67,67,67,1606,67,67,1609,97,97,97,1650,97,97,1653,97,97,97,0,45,45,1657,45,45,45,1206,45,45,45,45,45,45,45,45,45,45,45,45,1421,45,45,45,1703,67,67,67,67,67,67,67,67,67,67,97,97,1711,97,97,0,1895,0,97,97,97,97,97,97,45,45,45,45,45,958,45,960,45,45,45,45,45,45,45,45,1913,45,45,1915,67,67,67,67,67,67,67,466,67,67,67,67,67,67,481,67,45,1749,45,45,45,45,45,45,45,45,1755,45,45,45,45,45,173,45,45,45,45,45,45,45,45,45,45,974,45,45,45,45,45,67,67,67,67,67,1773,67,67,67,67,67,67,67,97,97,97,97,1886,0,0,0,97,97,67,2035,2036,67,67,97,0,0,97,2041,2042,97,97,45,45,45,45,1662,45,45,45,45,45,45,45,45,45,45,45,1397,45,45,45,45,151,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,437,205,45,67,67,67,218,67,67,67,67,67,67,67,67,67,67,67,1047,67,67,67,67,97,97,97,97,298,97,97,97,97,97,97,97,97,97,97,97,870,97,97,97,97,97,97,97,97,352,97,0,53264,0,18,18,24,24,0,28,28,0,0,0,0,0,0,365,0,41098,0,140,45,45,45,45,45,1427,45,45,67,67,67,67,67,67,67,1435,520,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1037,617,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,923,45,1232,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,1919,67,1759,45,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1021,45,154,45,162,45,45,45,45,45,45,45,45,45,45,45,45,964,45,45,45,206,45,67,67,67,67,221,67,229,67,67,67,67,67,67,67,67,530,67,67,67,67,67,67,67,67,755,67,67,67,67,67,67,67,67,785,67,67,67,67,67,67,67,67,802,67,67,67,807,67,67,67,97,97,97,97,353,97,0,53264,0,18,18,24,24,0,28,28,0,0,0,0,0,0,366,0,0,0,140,2170880,2170880,2170880,2416640,402,45,45,45,45,45,45,45,410,45,45,45,45,45,45,45,674,45,45,45,45,45,45,45,45,389,45,394,45,45,398,45,45,45,45,441,45,45,45,45,45,447,45,45,45,454,45,45,67,67,67,67,67,67,67,67,67,67,67,1768,67,67,67,67,67,488,67,67,67,67,67,67,67,496,67,67,67,67,67,67,67,1774,67,67,67,67,67,97,97,97,97,0,0,97,97,97,0,97,97,97,97,97,97,97,97,67,67,523,67,67,527,67,67,67,67,67,533,67,67,67,540,97,97,97,585,97,97,97,97,97,97,97,593,97,97,97,97,97,97,1784,0,97,97,97,97,97,97,0,0,97,97,97,97,97,97,0,0,0,18,18,24,24,0,28,28,97,97,620,97,97,624,97,97,97,97,97,630,97,97,97,637,713,45,45,45,45,45,45,721,45,45,45,45,45,45,45,45,1197,45,45,45,45,45,45,45,45,730,732,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,1581,67,45,67,67,67,67,1012,67,67,67,67,67,67,67,67,67,67,67,1059,67,67,67,67,67,1024,67,67,67,67,67,67,67,67,67,67,67,67,67,67,775,67,67,67,67,1066,67,67,67,67,67,67,67,67,67,67,67,67,479,67,67,67,67,67,67,1080,67,67,67,67,37689,0,25403,0,66365,0,0,0,0,0,0,0,287,0,0,0,287,0,2379776,2170880,2170880,97,97,97,1118,97,97,97,97,97,97,97,97,97,97,97,97,920,97,97,0,0,0,0,45,1181,45,45,45,45,45,45,45,45,45,45,45,432,45,45,45,45,45,45,1219,45,45,45,45,45,45,1226,45,45,45,45,45,45,959,45,45,45,45,45,45,45,45,45,184,45,45,45,45,202,45,1241,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1266,67,1268,67,67,67,67,67,67,67,67,67,67,67,67,1279,67,67,67,67,67,272,67,0,37139,24853,0,0,0,0,41098,65820,67,67,67,67,67,1286,67,67,67,67,67,67,67,67,67,1293,67,67,67,1296,67,67,67,67,67,67,67,0,0,0,0,0,281,94,0,0,97,97,97,1366,97,97,97,97,97,97,97,97,97,1373,97,97,18,0,139621,0,0,0,0,0,0,364,0,0,367,0,97,1376,97,97,97,97,97,97,97,0,0,0,45,45,1384,45,45,67,208,67,67,67,67,67,67,237,67,67,67,67,67,67,67,1069,1070,67,67,67,67,67,67,67,0,37140,24854,0,0,0,0,41098,65821,45,1423,45,45,45,45,45,45,67,67,1431,67,67,67,67,67,67,67,1083,37689,0,25403,0,66365,0,0,0,1436,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1830,67,1452,1453,67,67,67,67,1456,67,67,67,67,67,67,67,67,67,771,67,67,67,67,67,67,1461,67,67,67,1464,67,1466,67,67,67,67,67,67,1470,67,67,67,67,67,67,1587,67,67,67,67,67,67,67,67,1595,1489,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1129,97,1505,1506,97,97,97,97,1510,97,97,97,97,97,97,97,97,97,1163,1164,97,97,97,97,97,1516,97,97,97,1519,97,1521,97,97,97,97,97,97,1525,97,97,18,0,139621,0,0,0,0,0,0,364,0,0,367,41606,67,67,67,67,67,1586,67,67,67,67,67,67,67,67,67,67,67,1276,67,67,67,67,67,67,67,67,67,1600,67,67,67,67,67,67,67,67,67,67,67,1301,0,0,0,1307,97,97,1620,97,97,97,97,97,97,97,1627,97,97,97,97,97,97,913,97,97,97,97,919,97,97,97,0,97,97,97,1781,97,97,0,0,97,97,97,97,97,97,0,0,97,97,97,97,97,97,0,1792,1860,45,1862,1863,45,1865,45,67,67,67,67,67,67,67,67,1875,67,1877,1878,67,1880,67,97,97,97,97,97,1887,0,1889,97,97,18,0,139621,0,0,0,0,0,0,364,237568,0,367,0,97,1893,0,0,0,97,1898,1899,97,1901,97,45,45,45,45,45,2014,45,67,67,67,67,67,2020,67,97,1989,45,1990,45,45,45,67,67,67,67,67,67,1996,67,1997,67,67,67,67,67,273,67,0,37139,24853,0,0,0,0,41098,65820,67,67,97,97,97,97,0,0,97,97,2005,0,97,2007,97,97,18,0,139621,0,0,0,642,0,133,364,0,0,367,41606,0,97,97,2056,2057,0,2059,45,67,0,97,45,67,0,97,45,45,67,209,67,67,67,223,67,67,67,67,67,67,67,67,67,786,67,67,67,791,67,67,45,45,940,45,45,45,45,45,45,45,45,45,45,45,45,45,45,727,45,45,67,67,67,67,67,67,67,67,1016,67,67,67,67,67,67,67,67,37689,0,25403,0,66365,0,0,0,133,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,142,45,45,67,210,67,67,67,225,67,67,239,67,67,67,250,67,67,67,67,67,464,67,67,67,67,67,476,67,67,67,67,67,67,67,1709,67,67,67,97,97,97,97,97,97,0,0,97,97,97,97,97,1843,0,67,259,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,289,97,97,97,303,97,97,97,97,97,97,97,97,97,97,901,97,97,97,97,97,339,97,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,0,358,0,0,0,0,0,0,41098,0,140,45,45,45,45,45,1953,45,1955,45,45,45,67,67,67,67,67,67,67,1687,1688,67,67,67,67,45,45,405,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1203,45,458,67,67,67,67,67,67,67,67,67,470,477,67,67,67,67,67,67,67,1970,97,97,97,1974,0,0,0,97,1103,97,97,97,97,97,97,97,97,97,97,97,1372,97,97,97,97,67,522,67,67,67,67,67,67,67,67,67,67,67,536,67,67,67,67,67,67,1696,67,67,67,67,67,67,67,1701,67,555,97,97,97,97,97,97,97,97,97,567,574,97,97,97,97,97,301,97,309,97,97,97,97,97,97,97,97,97,900,97,97,97,905,97,97,97,619,97,97,97,97,97,97,97,97,97,97,97,633,97,97,18,0,139621,0,0,362,0,0,0,364,0,0,367,41606,369,649,45,45,45,45,45,45,45,45,45,45,45,45,663,664,67,67,67,67,750,751,67,67,67,67,758,67,67,67,67,67,67,67,1272,67,67,67,67,67,67,67,67,67,1057,1058,67,67,67,67,67,67,67,67,797,67,67,67,67,67,67,67,67,67,67,67,67,512,67,67,67,97,97,97,97,895,97,97,97,97,97,97,97,97,97,97,97,902,97,97,97,97,67,67,1051,67,67,67,67,67,67,67,67,67,67,67,1062,67,67,67,67,67,491,67,67,67,67,67,67,67,67,67,67,67,1302,0,0,0,1308,97,97,97,97,1145,97,97,97,97,97,97,97,97,97,97,97,1139,97,97,97,97,1156,97,97,97,97,97,97,1161,97,97,97,97,97,1166,97,97,18,640,139621,0,641,0,0,0,0,364,0,0,367,41606,67,67,67,67,1257,67,67,67,67,67,67,67,67,67,67,67,0,0,1305,0,0,97,97,1337,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1630,97,67,1474,67,67,0,0,0,0,0,0,0,0,0,0,0,0,0,2380062,2171166,2171166,97,1529,97,97,0,45,45,45,45,45,45,45,45,45,45,45,1228,45,45,45,45,67,67,67,67,1707,67,67,67,67,67,67,97,97,97,97,97,0,0,0,97,1891,1739,97,97,97,97,97,97,45,45,45,45,45,45,45,45,45,1198,45,1200,45,45,45,45,97,97,1894,0,0,97,97,97,97,97,97,45,45,45,45,45,672,45,45,45,45,45,45,45,45,45,45,45,1420,45,45,45,45,67,67,1965,67,1967,67,67,67,97,97,97,97,0,1976,0,97,97,45,67,0,97,45,67,0,97,45,67,0,97,45,97,97,1979,0,0,97,1982,97,97,97,1986,45,45,45,45,45,735,45,45,67,67,67,67,67,67,67,67,67,67,67,67,67,1770,67,67,2e3,97,97,97,2002,0,97,97,97,0,97,97,97,97,97,97,1798,97,97,97,45,45,45,2034,67,67,67,67,97,0,0,2040,97,97,97,97,45,45,45,45,1752,45,45,45,1753,1754,45,45,45,45,45,45,383,45,45,45,45,45,45,45,45,45,675,45,45,45,45,45,45,438,45,45,45,45,45,445,45,45,45,45,45,45,45,45,67,1430,67,67,67,67,67,67,67,67,67,524,67,67,67,67,67,531,67,67,67,67,67,67,67,67,37689,0,25403,0,66365,0,0,1096,97,97,97,621,97,97,97,97,97,628,97,97,97,97,97,97,0,53264,0,18,18,24,24,356,28,28,665,45,45,45,45,45,45,45,45,45,676,45,45,45,45,45,942,45,45,45,45,45,45,45,45,45,45,707,708,45,45,45,45,763,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,809,810,67,67,67,67,783,67,67,67,67,67,67,67,67,67,67,67,0,1303,0,0,0,97,861,97,97,97,97,97,97,97,97,97,97,97,97,97,97,613,97,45,45,956,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1215,45,67,67,67,67,1027,67,67,67,67,1032,67,67,67,67,67,67,67,67,37689,0,25403,0,66365,0,0,1097,1064,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1075,67,1098,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,331,97,97,97,97,1158,97,97,97,97,97,97,97,97,97,97,97,97,97,594,97,97,1309,0,0,0,1315,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1374,97,45,45,1543,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1240,67,67,1583,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1252,67,97,97,97,1635,97,97,97,0,97,97,97,97,97,97,97,97,1800,97,45,45,45,97,97,1793,97,97,97,97,97,97,97,97,97,97,45,45,45,1743,45,45,45,1746,45,0,97,97,97,97,97,1851,97,45,45,45,45,1856,45,45,45,45,1864,45,45,67,67,1869,67,67,67,67,1874,67,0,97,97,45,67,2058,97,45,67,0,97,45,67,0,97,45,45,67,211,67,67,67,67,67,67,240,67,67,67,67,67,67,67,1444,67,67,67,67,67,67,67,67,67,509,67,67,67,67,67,67,67,67,67,268,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,290,97,97,97,305,97,97,319,97,97,97,330,97,97,18,640,139621,0,641,0,0,0,0,364,0,643,367,41606,97,97,348,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,0,364,0,367,41098,369,140,45,45,45,45,380,45,45,45,45,45,45,395,45,45,45,400,369,0,45,45,45,45,45,45,45,45,658,45,45,45,45,45,972,45,45,45,45,45,45,45,45,45,45,427,45,45,45,45,45,745,67,67,67,67,67,67,67,67,756,67,67,67,67,67,67,67,67,37689,1086,25403,1090,66365,1094,0,0,97,843,97,97,97,97,97,97,97,97,854,97,97,97,97,97,97,1121,97,97,97,97,1126,97,97,97,97,45,980,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1400,45,67,67,67,1011,67,67,67,67,67,67,67,67,67,67,67,0,1304,0,0,0,1190,45,45,1193,1194,45,45,45,45,45,1199,45,1201,45,45,45,45,1911,45,45,45,45,45,67,67,67,67,67,67,67,1579,67,67,67,67,45,1205,45,45,45,45,45,45,45,45,1211,45,45,45,45,45,984,45,45,45,45,45,45,45,45,45,45,45,1550,45,45,45,45,45,1217,45,45,45,45,45,45,1225,45,45,45,45,1229,45,45,45,1388,45,45,45,45,45,45,1396,45,45,45,45,45,444,45,45,45,45,45,45,45,45,45,67,67,1574,67,67,67,67,67,67,67,67,67,67,1590,67,67,67,67,67,1254,67,67,67,67,67,1259,67,1261,67,67,67,67,1265,67,67,67,67,67,67,1708,67,67,67,67,97,97,97,97,97,97,0,0,97,97,97,97,97,0,0,67,67,67,67,1285,67,67,67,67,1289,67,67,67,67,67,67,67,67,37689,1087,25403,1091,66365,1095,0,0,97,97,97,97,1339,97,1341,97,97,97,97,1345,97,97,97,97,97,561,97,97,97,97,97,573,97,97,97,97,97,97,1717,97,0,97,97,97,97,97,97,97,591,97,97,97,97,97,97,97,97,97,1329,97,97,97,97,97,97,97,97,97,97,1351,97,97,97,97,97,97,1357,97,97,97,97,97,588,97,97,97,97,97,97,97,97,97,97,568,97,97,97,97,97,97,97,1365,97,97,97,97,1369,97,97,97,97,97,97,97,97,97,1356,97,97,97,97,97,97,45,45,1403,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1399,45,45,45,1413,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1669,45,1422,45,45,1425,45,45,1428,45,1429,67,67,67,67,67,67,67,67,1468,67,67,67,67,67,67,67,67,529,67,67,67,67,67,67,539,67,67,1475,67,0,0,0,0,0,0,0,0,0,0,0,0,140,2170880,2170880,2170880,2416640,97,97,1530,97,0,45,45,1534,45,45,45,45,45,45,45,45,1956,45,45,67,67,67,67,67,67,67,67,67,1599,67,67,1601,67,67,67,67,67,67,67,67,67,803,67,67,67,67,67,67,1632,97,1634,0,97,97,97,1640,97,97,97,1643,97,97,1645,97,97,97,97,97,912,97,97,97,97,97,97,97,97,97,0,0,0,45,45,45,45,45,45,1660,1661,45,45,45,45,1665,1666,45,45,45,45,45,1670,1692,1693,67,67,67,67,67,1697,67,67,67,67,67,67,67,1702,97,97,1714,1715,97,97,97,97,0,1721,1722,97,97,97,97,97,97,1353,97,97,97,97,97,97,97,97,1362,1726,97,0,0,97,97,97,0,97,97,97,1734,97,97,97,97,97,848,849,97,97,97,97,856,97,97,97,97,97,354,0,53264,0,18,18,24,24,0,28,28,45,45,1750,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1681,45,0,1846,97,97,97,97,97,97,45,45,1854,45,45,45,45,1859,67,67,67,1879,67,67,97,97,1884,97,97,0,0,0,97,97,97,1105,97,97,97,97,97,97,97,97,97,97,1344,97,97,97,1347,97,1892,97,0,0,0,97,97,97,1900,97,97,45,45,45,45,45,997,45,45,45,45,45,45,45,45,45,45,1002,45,45,1005,1006,45,67,67,67,67,67,1926,67,67,1928,97,97,97,97,97,0,0,97,97,97,0,97,97,97,97,97,97,1737,97,0,97,97,97,97,0,0,0,97,97,1944,97,97,1946,45,45,45,1544,45,45,45,45,45,45,45,45,45,45,45,45,190,45,45,45,152,155,45,163,45,45,177,179,182,45,45,45,193,197,45,45,45,1672,45,45,45,45,45,1677,45,1679,45,45,45,45,996,45,45,45,45,45,45,45,45,45,45,45,1212,45,45,45,45,67,260,264,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,97,295,299,302,97,310,97,97,324,326,329,97,97,97,0,97,97,1639,0,1641,97,97,97,97,97,97,97,97,1511,97,97,97,97,97,97,97,97,1523,97,97,97,97,97,97,97,97,1719,97,97,97,97,97,97,97,97,1720,97,97,97,97,97,97,97,312,97,97,97,97,97,97,97,97,1123,97,97,97,97,97,97,97,340,344,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,0,364,0,367,41098,369,140,45,45,373,375,419,45,45,45,45,45,45,45,45,45,428,45,45,435,45,45,45,1751,45,45,45,45,45,45,45,45,45,45,45,45,1410,45,45,45,67,67,67,505,67,67,67,67,67,67,67,67,67,514,67,67,67,67,67,67,1969,67,97,97,97,97,0,0,0,97,97,45,67,0,97,45,67,0,97,2064,2065,0,2066,45,521,67,67,67,67,67,67,67,67,67,67,534,67,67,67,67,67,67,465,67,67,67,474,67,67,67,67,67,67,67,1467,67,67,67,67,67,67,67,67,67,97,97,97,97,97,1933,0,97,97,97,602,97,97,97,97,97,97,97,97,97,611,97,97,18,640,139621,358,641,0,0,0,0,364,0,0,367,0,618,97,97,97,97,97,97,97,97,97,97,631,97,97,97,97,97,881,97,97,97,97,97,97,97,97,97,97,569,97,97,97,97,97,369,0,45,652,45,45,45,45,45,657,45,45,45,45,45,45,1235,45,45,45,45,45,45,45,45,67,67,67,1432,67,67,67,67,67,67,67,766,67,67,67,67,67,67,67,67,773,67,67,67,0,1305,0,1311,0,1317,97,97,97,97,97,97,97,1624,97,97,97,97,97,97,97,97,0,97,97,97,1724,97,97,97,777,67,67,782,67,67,67,67,67,67,67,67,67,67,67,67,535,67,67,67,67,67,67,67,814,67,67,67,67,67,67,67,67,67,37689,544,25403,546,70179,0,0,66365,66365,552,0,97,837,97,97,97,97,97,97,1496,97,97,97,97,97,97,97,97,97,97,918,97,97,97,97,0,842,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1168,97,97,97,97,864,97,97,97,97,97,97,97,97,871,97,97,97,0,1637,97,97,0,97,97,97,97,97,97,97,97,97,97,1801,45,45,97,875,97,97,880,97,97,97,97,97,97,97,97,97,97,97,1151,1152,97,97,97,67,67,67,1040,67,67,67,67,67,67,67,67,67,67,67,67,790,67,67,67,1180,0,649,45,45,45,45,45,45,45,45,45,45,45,45,45,200,45,45,67,67,67,1454,67,67,67,67,67,67,67,67,67,67,67,67,806,67,67,67,0,0,0,1481,0,1094,0,0,97,1483,97,97,97,97,97,97,304,97,97,318,97,97,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,97,97,97,1507,97,97,97,97,97,97,97,97,97,97,97,97,1332,97,97,97,1619,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1631,97,1633,97,0,97,97,97,0,97,97,97,97,97,97,97,97,97,1381,0,0,45,45,45,45,97,97,1727,0,97,97,97,0,97,97,97,97,97,97,97,97,626,97,97,97,97,97,97,636,45,45,1760,67,67,67,67,67,67,67,1765,67,67,67,67,67,67,67,1299,67,67,67,0,0,0,0,0,0,97,97,97,97,1616,97,97,1803,45,45,45,45,1807,45,45,45,45,45,1813,45,45,45,67,67,1684,67,67,67,67,67,67,67,67,67,67,67,822,67,67,37689,544,67,67,1818,67,67,67,67,1822,67,67,67,67,67,1828,67,67,67,67,67,97,0,0,97,97,97,97,97,45,45,45,2012,2013,45,45,67,67,67,2018,2019,67,67,97,67,97,97,97,1833,97,97,0,0,97,97,1840,97,97,0,0,97,97,97,0,97,97,1733,97,1735,97,97,97,0,97,97,97,1849,97,97,97,45,45,45,45,45,1857,45,45,45,1910,45,1912,45,45,1914,45,67,67,67,67,67,67,67,67,67,67,1017,67,67,1020,67,45,1861,45,45,45,45,45,67,67,67,67,67,1872,67,67,67,67,67,67,752,67,67,67,67,67,67,67,67,67,67,1446,67,67,67,67,67,1876,67,67,67,67,67,97,97,97,97,97,0,0,0,1890,97,97,97,97,97,1134,97,97,97,97,97,97,97,97,97,97,570,97,97,97,97,580,1935,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,1906,45,67,67,67,67,2048,0,97,97,97,97,45,45,67,67,0,0,0,0,925,41606,0,0,0,931,45,45,45,45,45,45,1674,45,1676,45,45,45,45,45,45,45,446,45,45,45,45,45,45,45,67,67,67,67,1871,67,67,67,67,0,97,97,45,67,0,97,2060,2061,0,2063,45,67,0,97,45,45,156,45,45,45,45,45,45,45,45,45,192,45,45,45,45,1673,45,45,45,45,45,45,45,45,45,45,45,429,45,45,45,45,67,67,67,269,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,349,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,0,364,0,367,41098,369,140,45,45,374,45,45,67,67,213,217,67,67,67,67,67,242,67,247,67,253,45,45,698,45,45,45,45,45,45,45,45,45,45,45,45,45,399,45,45,0,0,0,0,925,41606,0,929,0,0,45,45,45,45,45,45,1391,45,45,1395,45,45,45,45,45,45,423,45,45,45,45,45,45,45,436,45,67,67,67,67,1041,67,1043,67,67,67,67,67,67,67,67,67,67,1776,67,67,97,97,97,1099,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,888,97,97,97,1131,97,97,97,97,1135,97,1137,97,97,97,97,97,97,97,1497,97,97,97,97,97,97,97,97,97,883,97,97,97,97,97,97,1310,0,0,0,1316,0,0,0,0,1100,0,0,0,97,97,97,97,97,1107,97,97,97,97,97,97,97,97,1343,97,97,97,97,97,97,1348,0,0,1317,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,1112,97,45,1804,45,45,45,45,45,45,45,45,45,45,45,45,45,67,1868,67,1870,67,67,67,67,67,1817,67,67,1819,67,67,67,67,67,67,67,67,67,67,67,67,823,67,37689,544,67,97,1832,97,97,1834,97,0,0,97,97,97,97,97,0,0,97,97,97,0,1732,97,97,97,97,97,97,97,850,97,97,97,97,97,97,97,97,97,1177,0,0,925,0,0,0,0,97,97,97,97,0,0,1941,97,97,97,97,97,97,45,45,45,1991,1992,45,67,67,67,67,67,67,67,67,67,1998,134,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,45,941,45,45,944,45,45,45,45,45,45,952,45,45,207,67,67,67,67,67,226,67,67,67,67,67,67,67,67,67,820,67,67,67,67,37689,544,369,650,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1682,25403,546,70179,0,0,66365,66365,552,835,97,97,97,97,97,97,97,1522,97,97,97,97,97,97,97,97,0,97,97,97,97,97,97,1725,67,67,67,1695,67,67,67,67,67,67,67,67,67,67,67,67,1034,67,1036,67,67,67,265,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,97,296,97,97,97,97,314,97,97,97,97,332,334,97,97,97,97,97,1146,1147,97,97,97,97,97,97,97,97,97,97,1626,97,97,97,97,97,97,345,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,0,364,0,367,41098,369,140,45,372,45,45,45,1220,45,45,45,45,45,45,45,45,45,45,45,45,1213,45,45,45,45,404,406,45,45,45,45,45,45,45,45,45,45,45,45,45,434,45,45,45,440,45,45,45,45,45,45,45,45,451,452,45,45,45,67,1683,67,67,67,1686,67,67,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,67,67,67,67,490,492,67,67,67,67,67,67,67,67,67,67,67,1447,67,67,1450,67,67,67,67,67,526,67,67,67,67,67,67,67,67,537,538,67,67,67,67,67,506,67,67,508,67,67,511,67,67,67,67,0,1476,0,0,0,0,0,1478,0,0,0,0,0,0,0,0,97,97,1484,97,97,97,97,97,97,865,97,97,97,97,97,97,97,97,97,97,1499,97,97,97,97,97,97,97,97,97,587,589,97,97,97,97,97,97,97,97,97,97,629,97,97,97,97,97,97,97,97,97,623,97,97,97,97,97,97,97,97,634,635,97,97,97,97,97,1160,97,97,97,97,97,97,97,97,97,97,97,1628,97,97,97,97,369,0,45,45,45,45,45,655,45,45,45,45,45,45,45,45,999,45,1001,45,45,45,45,45,45,45,45,715,45,45,45,720,45,45,45,45,45,45,45,45,728,25403,546,70179,0,0,66365,66365,552,0,97,97,97,97,97,840,97,97,97,97,97,1174,97,97,97,97,0,0,925,0,0,0,0,0,0,0,1100,97,97,97,97,97,97,97,97,627,97,97,97,97,97,97,97,938,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,680,45,968,45,970,45,973,45,45,45,45,45,45,45,45,45,45,962,45,45,45,45,45,979,45,45,45,45,45,985,45,45,45,45,45,45,45,45,45,1224,45,45,45,45,45,45,45,45,688,45,45,45,45,45,45,45,1007,1008,67,67,67,67,67,1014,67,67,67,67,67,67,67,67,67,1045,67,67,67,67,67,67,67,1038,67,67,67,67,67,67,1044,67,1046,67,1049,67,67,67,67,67,67,800,67,67,67,67,67,67,808,67,67,0,0,0,1102,97,97,97,97,97,1108,97,97,97,97,97,97,306,97,97,97,97,97,97,97,97,97,97,1371,97,97,97,97,97,97,97,97,1132,97,97,97,97,97,97,1138,97,1140,97,1143,97,97,97,97,97,1352,97,97,97,97,97,97,97,97,97,97,869,97,97,97,97,97,45,1191,45,45,45,45,45,1196,45,45,45,45,45,45,45,45,1407,45,45,45,45,45,45,45,45,986,45,45,45,45,45,45,991,45,67,67,67,1256,67,67,67,67,67,67,67,67,67,67,67,67,1048,67,67,67,97,1336,97,97,97,97,97,97,97,97,97,97,97,97,97,97,615,97,1386,45,1387,45,45,45,45,45,45,45,45,45,45,45,45,45,455,45,457,45,45,1424,45,45,45,45,45,67,67,67,67,1433,67,1434,67,67,67,67,67,767,67,67,67,67,67,67,67,67,67,67,67,1591,67,1593,67,67,45,45,1805,45,45,45,45,45,45,45,45,45,1814,45,45,1816,67,67,67,67,1820,67,67,67,67,67,67,67,67,67,1829,67,67,67,67,67,815,67,67,67,67,821,67,67,67,37689,544,67,1831,97,97,97,97,1835,0,0,97,97,97,97,97,0,0,97,97,97,1731,97,97,97,97,97,97,97,97,97,853,97,97,97,97,97,97,0,97,97,97,97,1850,97,97,45,45,45,45,45,45,45,45,1547,45,45,45,45,45,45,45,45,1664,45,45,45,45,45,45,45,45,961,45,45,45,45,965,45,967,1907,45,45,45,45,45,45,45,45,45,67,67,67,67,67,1920,0,1936,97,97,97,0,0,0,97,97,97,97,97,97,45,45,67,67,67,67,67,67,1763,67,67,67,67,67,67,67,67,1056,67,67,67,67,67,67,67,67,1273,67,67,67,67,67,67,67,67,1457,67,67,67,67,67,67,67,67,97,97,97,97,0,0,28672,97,45,67,67,67,67,0,0,97,97,97,97,45,45,67,67,2054,97,97,291,97,97,97,97,97,97,320,97,97,97,97,97,97,307,97,97,97,97,97,97,97,97,97,97,12288,0,925,926,1179,0,45,377,45,45,45,381,45,45,392,45,45,396,45,45,45,45,971,45,45,45,45,45,45,45,45,45,45,45,45,1756,45,45,45,67,67,67,67,463,67,67,67,467,67,67,478,67,67,482,67,67,67,67,67,1028,67,67,67,67,67,67,67,67,67,67,67,67,1469,67,67,1472,67,502,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1460,67,97,97,97,97,560,97,97,97,564,97,97,575,97,97,579,97,97,97,97,97,1368,97,97,97,97,97,97,97,97,97,97,0,0,925,0,0,930,97,599,97,97,97,97,97,97,97,97,97,97,97,97,97,97,872,97,45,666,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1758,0,362,0,0,925,41606,0,0,0,0,45,45,934,45,45,45,164,168,174,178,45,45,45,45,45,194,45,45,45,165,45,45,45,45,45,45,45,45,45,199,45,45,45,67,67,1010,67,67,67,67,67,67,67,67,67,67,67,67,1060,67,67,67,67,67,67,1052,1053,67,67,67,67,67,67,67,67,67,67,1063,97,1157,97,97,97,97,97,97,97,97,97,97,97,97,1167,97,97,97,97,97,1379,97,97,97,0,0,0,45,1383,45,45,45,1806,45,45,45,45,45,45,1812,45,45,45,45,67,67,67,67,67,1577,67,67,67,67,67,67,67,753,67,67,67,67,67,67,67,67,67,1262,67,67,67,67,67,67,67,1282,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1471,67,45,1402,45,45,45,45,45,45,45,45,45,45,45,45,45,45,417,45,67,1462,67,67,67,67,67,67,67,67,67,67,67,67,67,67,37689,544,97,1517,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1128,97,97,97,97,1636,97,97,97,0,97,97,97,97,97,97,97,97,851,97,97,97,97,97,97,97,67,67,1705,67,67,67,67,67,67,67,67,97,97,97,97,97,97,0,0,97,97,97,97,1842,0,0,1779,97,97,97,1782,97,0,0,97,97,97,97,97,97,0,0,97,97,97,1789,97,97,0,0,0,97,1847,97,97,97,97,97,45,45,45,45,45,45,45,45,1675,45,45,45,45,45,45,45,45,737,738,67,740,67,741,67,743,67,67,67,67,67,67,1968,67,67,97,97,97,97,0,0,0,97,97,45,67,0,97,45,67,2062,97,45,67,0,97,45,67,67,97,97,2001,97,0,0,2004,97,97,0,97,97,97,97,1797,97,97,97,97,97,45,45,45,67,261,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,292,97,97,97,97,311,315,321,325,97,97,97,97,97,97,1623,97,97,97,97,97,97,97,97,97,97,1330,97,97,1333,1334,97,341,97,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,363,364,0,367,41098,369,140,45,45,45,45,1221,45,45,45,45,45,45,45,45,45,45,45,413,45,45,416,45,376,45,45,45,45,382,45,45,45,45,45,45,45,45,45,45,1408,45,45,45,45,45,403,45,45,45,45,45,45,45,45,45,45,414,45,45,45,418,67,67,67,462,67,67,67,67,468,67,67,67,67,67,67,67,67,1602,67,1604,67,67,67,67,67,67,67,67,489,67,67,67,67,67,67,67,67,67,67,500,67,67,67,67,67,1067,67,67,67,67,67,1072,67,67,67,67,67,67,274,0,37139,24853,0,0,0,0,41098,65820,67,67,504,67,67,67,67,67,67,67,510,67,67,67,517,519,541,67,37139,37139,24853,24853,0,70179,0,0,0,65820,65820,369,287,554,97,97,97,559,97,97,97,97,565,97,97,97,97,97,97,97,1718,0,97,97,97,97,97,97,97,898,97,97,97,97,97,97,906,97,97,97,97,586,97,97,97,97,97,97,97,97,97,97,597,97,97,97,97,97,1520,97,97,97,97,97,97,97,97,97,97,0,45,1656,45,45,45,97,97,601,97,97,97,97,97,97,97,607,97,97,97,614,616,638,97,18,0,139621,0,0,0,0,0,0,364,0,0,367,41606,369,0,45,45,45,45,45,45,45,45,45,45,661,45,45,45,407,45,45,45,45,45,45,45,45,45,45,45,45,45,1815,45,67,45,667,45,45,45,45,45,45,45,45,45,45,678,45,45,45,421,45,45,45,45,45,45,45,45,45,45,45,45,976,977,45,45,45,682,45,45,45,45,45,45,45,45,45,45,693,45,45,697,67,67,748,67,67,67,67,754,67,67,67,67,67,67,67,67,67,1274,67,67,67,67,67,67,67,67,765,67,67,67,67,769,67,67,67,67,67,67,67,67,67,1589,67,67,67,67,67,67,67,67,780,67,67,784,67,67,67,67,67,67,67,67,67,67,67,1777,67,97,97,97,97,97,97,846,97,97,97,97,852,97,97,97,97,97,97,97,1742,45,45,45,45,45,45,45,1747,97,97,97,863,97,97,97,97,867,97,97,97,97,97,97,97,308,97,97,97,97,97,97,97,97,97,97,12288,1178,925,0,1179,0,97,97,97,878,97,97,882,97,97,97,97,97,97,97,97,97,97,12288,0,925,0,1179,0,908,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,0,925,0,0,0,954,45,45,45,45,45,45,45,45,45,45,963,45,45,966,45,45,157,45,45,171,45,45,45,45,45,45,45,45,45,45,948,45,45,45,45,45,1022,67,67,1026,67,67,67,1030,67,67,67,67,67,67,67,67,67,1603,1605,67,67,67,1608,67,67,67,1039,67,67,1042,67,67,67,67,67,67,67,67,67,67,471,67,67,67,67,67,0,1100,0,97,97,97,97,97,97,97,97,97,97,97,97,97,904,97,97,97,97,1116,97,97,1120,97,97,97,1124,97,97,97,97,97,97,562,97,97,97,571,97,97,97,97,97,97,97,97,97,1133,97,97,1136,97,97,97,97,97,97,97,97,915,917,97,97,97,97,97,0,97,1170,97,97,97,97,97,97,97,97,0,0,925,0,0,0,0,0,41606,0,0,0,0,45,45,45,45,45,45,1993,67,67,67,67,67,67,67,67,67,67,1275,67,67,67,1278,67,0,0,0,45,45,1182,45,45,45,45,45,45,45,45,45,1189,1204,45,45,45,1207,45,45,1209,45,1210,45,45,45,45,45,45,1546,45,45,45,45,45,45,45,45,45,689,45,45,45,45,45,45,1231,45,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,236,67,67,67,67,67,67,67,801,67,67,67,805,67,67,67,67,67,1242,67,67,67,67,67,67,67,67,67,1249,67,67,67,67,67,67,507,67,67,67,67,67,67,67,67,67,67,1300,0,0,0,0,0,1267,67,67,1269,67,1270,67,67,67,67,67,67,67,67,67,1280,97,1349,97,1350,97,97,97,97,97,97,97,97,97,1360,97,97,97,0,1980,97,97,97,97,97,45,45,45,45,45,45,673,45,45,45,45,677,45,45,45,45,1401,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,953,67,1437,67,1440,67,67,67,67,1445,67,67,67,1448,67,67,67,67,67,67,1029,67,67,67,67,67,67,67,67,67,67,1825,67,67,67,67,67,1473,67,67,67,0,0,0,0,0,0,0,0,0,0,0,0,1320,0,834,97,97,97,97,1490,97,1493,97,97,97,97,1498,97,97,97,1501,97,97,97,0,97,1638,97,0,97,97,97,97,97,97,97,97,916,97,97,97,97,97,97,0,1528,97,97,97,0,45,45,45,1535,45,45,45,45,45,45,45,1867,67,67,67,67,67,67,67,67,67,97,97,97,97,1932,0,0,1555,45,45,45,45,45,45,45,45,45,45,45,45,45,1567,45,45,158,45,45,172,45,45,45,183,45,45,45,45,201,45,45,67,212,67,67,67,67,231,235,241,245,67,67,67,67,67,67,493,67,67,67,67,67,67,67,67,67,67,472,67,67,67,67,67,97,97,97,97,1651,97,97,97,97,97,0,45,45,45,45,45,45,45,1539,45,45,45,67,1704,67,1706,67,67,67,67,67,67,67,97,97,97,97,97,97,0,0,97,97,97,1841,97,0,1844,97,97,97,97,1716,97,97,97,0,97,97,97,97,97,97,97,590,97,97,97,97,97,97,97,97,97,0,0,0,45,45,45,1385,1748,45,45,45,45,45,45,45,45,45,45,45,45,45,1757,45,45,159,45,45,45,45,45,45,45,45,45,45,45,45,45,415,45,45,97,97,1780,97,97,97,0,0,1786,97,97,97,97,97,0,0,97,97,1730,0,97,97,97,97,97,1736,97,1738,67,97,97,97,97,97,97,0,1838,97,97,97,97,97,0,0,97,1729,97,0,97,97,97,97,97,97,97,97,1162,97,97,97,1165,97,97,97,45,1950,45,45,45,45,45,45,45,45,1958,67,67,67,1962,67,67,67,67,67,1246,67,67,67,67,67,67,67,67,67,67,67,97,1710,97,97,97,1999,67,97,97,97,97,0,2003,97,97,97,0,97,97,2008,2009,45,67,67,67,67,0,0,97,97,97,97,45,2052,67,2053,0,0,0,0,925,41606,0,0,930,0,45,45,45,45,45,45,1392,45,1394,45,45,45,45,45,45,45,1545,45,45,45,45,45,45,45,45,45,45,1563,1565,45,45,45,1568,0,97,2055,45,67,0,97,45,67,0,97,45,67,28672,97,45,45,160,45,45,45,45,45,45,45,45,45,45,45,45,45,679,45,45,67,67,266,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,346,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,362,0,364,0,367,41098,369,140,371,45,45,45,379,45,45,45,388,45,45,45,45,45,45,45,45,1663,45,45,45,45,45,45,45,45,45,449,45,45,45,45,45,67,67,542,37139,37139,24853,24853,0,70179,0,0,0,65820,65820,369,287,97,97,97,97,97,1622,97,97,97,97,97,97,97,1629,97,97,0,1794,1795,97,97,97,97,97,97,97,97,45,45,45,45,45,45,1745,45,45,97,639,18,0,139621,0,0,0,0,0,0,364,0,0,367,41606,45,731,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,67,251,67,67,67,67,67,798,67,67,67,67,67,67,67,67,67,67,67,67,1073,67,67,67,860,97,97,97,97,97,97,97,97,97,97,97,97,97,97,873,0,0,1101,97,97,97,97,97,97,97,97,97,97,97,97,97,921,97,0,67,67,67,67,1245,67,67,67,67,67,67,67,67,67,67,67,67,1250,67,67,1253,0,0,1312,0,0,0,1318,0,0,0,0,0,0,97,97,97,97,1106,97,97,97,97,97,97,97,97,97,1149,97,97,97,97,97,1155,97,97,1325,97,97,97,97,97,97,97,97,97,97,97,97,97,1141,97,97,67,67,1439,67,1441,67,67,67,67,67,67,67,67,67,67,67,67,1264,67,67,67,97,97,1492,97,1494,97,97,97,97,97,97,97,97,97,97,97,1331,97,97,97,97,67,67,67,2037,67,97,0,0,97,97,97,2043,97,45,45,45,442,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,232,67,67,67,67,67,67,67,67,1823,67,67,67,67,67,67,67,67,97,97,97,97,1975,0,0,97,874,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1142,97,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,65,86,117,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,63,84,115,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,61,82,113,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,59,80,111,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,57,78,109,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,55,76,107,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,53,74,105,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,51,72,103,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,49,70,101,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,47,68,99,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,45,67,97,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,213085,53264,18,49172,57366,24,8192,28,102432,0,0,0,44,0,0,32863,53264,18,49172,57366,24,8192,28,102432,0,41,41,41,0,0,1138688,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,0,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,89,53264,18,18,49172,0,57366,0,24,24,24,0,127,127,127,127,102432,67,262,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,342,97,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,360,0,0,364,0,367,41098,369,140,45,45,45,45,717,45,45,45,45,45,45,45,45,45,45,45,412,45,45,45,45,45,67,1009,67,67,67,67,67,67,67,67,67,67,67,67,67,1292,67,67,1294,67,67,67,67,67,67,67,67,67,67,0,0,0,0,0,0,97,97,97,1615,97,97,97,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,66,87,118,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,64,85,116,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,62,83,114,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,60,81,112,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,58,79,110,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,56,77,108,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,54,75,106,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,52,73,104,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,50,71,102,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,48,69,100,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,46,67,98,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,233472,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,69724,53264,18,18,49172,0,57366,262144,24,24,24,0,28,28,28,28,102432,45,45,161,45,45,45,45,45,45,45,45,45,45,45,45,45,710,45,45,28,139621,359,0,0,0,364,0,367,41098,369,140,45,45,45,45,1389,45,45,45,45,45,45,45,45,45,45,45,949,45,45,45,45,67,503,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1449,67,67,97,600,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1154,97,0,0,0,0,925,41606,927,0,0,0,45,45,45,45,45,45,1866,67,67,67,67,67,67,67,67,67,67,772,67,67,67,67,67,45,45,969,45,45,45,45,45,45,45,45,45,45,45,45,45,951,45,45,45,45,1192,45,45,45,45,45,45,45,45,45,45,45,45,45,1202,45,45,0,0,0,1314,0,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,1488,67,67,267,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,347,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,361,0,0,364,0,367,41098,369,140,45,45,45,45,734,45,45,45,67,67,67,67,67,742,67,67,45,45,668,45,45,45,45,45,45,45,45,45,45,45,45,45,1214,45,45,1130,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1361,97,45,45,1671,45,45,45,45,45,45,45,45,45,45,45,45,45,1552,45,45,0,0,0,0,2220032,0,0,1130496,0,0,0,0,2170880,2171020,2170880,2170880,18,0,0,131072,0,0,0,90112,0,2220032,0,0,0,0,0,0,0,0,97,97,97,1485,97,97,97,97,0,45,45,45,45,45,1537,45,45,45,45,45,1390,45,1393,45,45,45,45,1398,45,45,45,2170880,2171167,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2576384,2215936,3117056,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2174976,0,0,0,0,0,0,2183168,0,0,0,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2721252,2744320,2170880,2170880,2170880,2834432,2840040,2170880,2908160,2170880,2170880,2936832,2170880,2170880,2985984,2170880,2994176,2170880,2170880,3014656,2170880,3059712,3076096,3088384,2170880,2170880,2170880,2170880,0,0,0,0,2220032,0,0,0,1142784,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3215360,2215936,2215936,2215936,2215936,2215936,2437120,2215936,2215936,2215936,3117056,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,543,0,545,0,0,2183168,0,0,831,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,3031040,2170880,3055616,2170880,2170880,2170880,2170880,3092480,2170880,2170880,3125248,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3198976,2170880,0,0,0,0,0,0,67,67,37139,37139,24853,24853,0,0,0,0,0,65820,65820,0,287,97,97,97,97,97,1783,0,0,97,97,97,97,97,97,0,0,97,97,97,97,97,97,1791,0,0,546,70179,0,0,0,0,552,0,97,97,97,97,97,97,97,604,97,97,97,97,97,97,97,97,97,97,1150,97,97,97,97,97,147456,147456,147456,147456,147456,147456,147456,147456,147456,147456,147456,147456,0,0,147456,0,0,0,0,925,41606,0,928,0,0,45,45,45,45,45,45,998,45,45,45,45,45,45,45,45,45,1562,45,1564,45,45,45,45,0,2158592,2158592,0,0,0,0,2232320,2232320,2232320,0,2240512,2240512,2240512,2240512,0,0,0,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2416640],r.EXPECTED=[291,300,304,341,315,309,305,295,319,323,327,329,296,333,337,339,342,346,350,294,356,360,312,367,352,371,363,375,379,383,387,391,395,726,399,405,518,684,405,405,405,405,808,405,405,405,512,405,405,405,431,405,405,406,405,405,404,405,405,405,405,405,405,405,908,631,410,415,405,414,419,608,405,429,602,405,435,443,405,441,641,478,405,447,451,450,456,643,461,460,762,679,465,469,741,473,477,482,486,492,932,931,523,498,504,720,405,510,596,405,516,941,580,522,929,527,590,589,897,939,534,538,547,551,555,559,563,567,571,969,575,708,690,689,579,584,634,405,594,731,405,600,882,405,606,895,786,452,612,405,615,620,876,624,628,638,647,651,655,659,663,667,676,683,688,695,694,791,405,699,437,405,706,714,405,712,825,870,405,718,724,769,768,823,730,735,745,751,422,755,759,425,766,902,810,587,775,888,887,405,773,992,405,779,962,405,785,781,986,790,795,797,506,500,499,801,805,814,820,829,833,837,841,845,849,853,857,861,616,865,869,868,488,405,874,816,405,880,738,405,886,892,543,405,901,906,913,912,918,494,541,922,926,936,945,949,953,957,530,966,973,960,702,701,405,979,981,405,985,747,405,990,998,914,405,996,1004,672,975,974,1014,1002,1008,670,1012,405,405,405,405,405,401,1018,1022,1026,1106,1071,1111,1111,1111,1082,1145,1030,1101,1034,1038,1106,1106,1106,1106,1046,1206,1052,1106,1072,1111,1111,1042,1134,1065,1111,1112,1056,1160,1207,1062,1204,1208,1069,1106,1106,1106,1076,1111,1207,1161,1122,1205,1064,1094,1106,1106,1107,1111,1111,1111,1078,1086,1207,1092,1098,1046,1058,1106,1106,1110,1111,1111,1116,1120,1161,1126,1202,1104,1106,1145,1146,1129,1138,1088,1151,1048,1157,1153,1132,1141,1165,1107,1111,1172,1179,1109,1183,1175,1143,1147,1187,1108,1191,1195,1144,1199,1168,1212,1216,1220,1224,1228,1232,1236,1557,1247,1241,1241,1038,1434,1241,1241,1241,1241,1254,1275,1617,1241,1280,1287,1241,1241,1241,1287,1241,2114,1291,1241,1243,1241,2049,1824,2094,2095,1520,1309,1241,1241,1302,1241,1321,1311,1241,1241,1313,1778,1325,1336,1241,1241,1325,1330,1353,1241,1241,1695,1354,1241,1241,1241,1294,1686,1331,1241,1696,1368,1241,1338,1370,1241,1392,1399,1364,2017,1406,2016,1405,1716,1406,1407,1422,1417,1421,1241,1241,1241,1349,1426,1241,1774,1756,1241,1773,1241,1241,1345,1964,1812,1432,1241,1241,1345,1993,1459,1241,1241,1241,1395,1848,1767,1465,1241,1241,1394,1847,1242,1477,1241,1241,1428,1241,1445,1492,1241,1241,1438,1241,1499,1241,1241,1241,1455,1241,1818,1448,1241,1250,1241,2026,1623,1449,1241,1612,1616,1241,1614,1241,1257,1241,1241,1985,1292,1586,1512,1241,1517,2050,1526,1674,1519,1524,1647,2051,1532,1537,1551,1544,1550,1555,1561,1571,1578,1584,1590,1591,1653,1595,1602,1606,1610,1634,1628,1640,1633,1645,1241,1241,1241,1469,1241,1970,1651,1241,1270,1241,1241,1819,1449,1241,1293,1664,1241,1241,1481,1485,1574,1672,1241,1241,1513,1317,1487,1684,1241,1241,1533,1299,1694,1241,1241,1295,1241,1241,1241,1546,1700,1241,1241,1707,1241,1713,1241,1849,1715,1241,1720,1241,1276,1267,1241,1241,2107,1657,1864,1241,1881,1241,1326,1292,1241,1685,1358,1724,1338,1241,1363,1362,1342,1340,1361,1339,1833,1372,1360,1833,1833,1342,1343,1835,1341,1731,1738,1344,1241,1745,1241,1379,1241,1241,2092,1241,1388,1761,1754,1241,1386,1241,1400,1760,1241,1241,1241,1598,1734,1241,1241,1241,1635,1645,1241,1780,1766,1241,1241,1332,1771,1241,1241,1629,2079,1241,1242,1784,1241,1241,1680,1639,2063,1790,1241,1241,1741,1241,1241,1800,1241,1241,1762,1473,1241,1806,1241,1241,1786,1240,1709,1241,1241,1241,1668,1811,1241,1940,1241,1401,1974,1241,1408,1413,1382,1241,1816,1241,1241,1802,2086,1811,1241,1817,1945,1823,2095,2095,2047,2094,2046,2080,1241,1409,1312,1376,2096,2048,1241,1241,1807,1241,1241,1241,2035,1241,1241,1828,1241,2057,2061,1241,1241,1843,1241,2059,1241,1241,1241,1690,1847,1241,1241,1241,1703,2102,1848,1241,1241,1853,1292,1848,1241,2016,1857,1241,2002,1868,1241,1436,1241,1241,1271,1305,1241,1874,1241,1241,1884,2037,1892,1241,1890,1241,1461,1241,1241,1795,1241,1241,1891,1241,1878,1241,1888,1241,1888,1905,1896,2087,1912,1903,1241,1911,1906,1916,1905,2027,1863,1925,2088,1859,1861,1922,1927,1931,1935,1494,1241,1241,1918,1907,1939,1917,1944,1949,1241,1241,1451,1955,1241,1241,1241,1796,1727,2061,1241,1241,1899,1241,1660,1968,1241,1241,1951,1678,1978,1241,1241,1241,1839,1241,1241,1984,1982,1241,1488,1241,1241,1624,1450,1989,1241,1241,1241,1870,1995,1292,1241,1241,1958,1261,1241,1996,1241,1241,1241,2039,2008,1241,1241,1750,2e3,1241,1256,2001,1960,1241,1564,1241,1504,1241,1241,1442,1241,1241,1564,1528,1263,1241,1508,1241,1241,1468,1498,2006,1540,2015,1539,2014,1748,2013,1539,1831,2014,2012,1500,1567,2022,2021,1241,1580,1241,1241,2033,2037,1791,2045,2031,1241,1621,1241,1641,2044,1241,1241,1241,2093,1241,1241,2055,1241,1241,2067,1241,1283,1241,1241,1241,2101,2071,1241,1241,1241,2073,1848,2040,1241,1241,1241,2077,1241,1241,2106,1241,1241,2084,1241,2111,1241,1241,1381,1380,1241,1241,1241,2100,1241,2129,2118,2122,2126,2197,2133,3010,2825,2145,2698,2156,2226,2160,2161,2165,2174,2293,2194,2630,2201,2203,2152,3019,2226,2263,2209,2213,2218,2269,2292,2269,2269,2184,2226,2238,2148,2151,3017,2245,2214,2269,2269,2185,2226,2292,2269,2291,2269,2269,2269,2292,2205,3019,2226,2226,2160,2160,2160,2261,2160,2160,2160,2262,2276,2160,2160,2277,2216,2283,2216,2269,2269,2268,2269,2267,2269,2269,2269,2271,2568,2292,2269,2293,2269,2182,2190,2269,2186,2226,2226,2226,2226,2227,2160,2160,2160,2160,2263,2160,2275,2277,2282,2215,2217,2269,2269,2291,2269,2269,2293,2291,2269,2220,2269,2295,2294,2269,2269,2305,2233,2262,2278,2218,2269,2234,2226,2226,2228,2160,2160,2160,2289,2220,2294,2294,2269,2269,2304,2269,2160,2160,2287,2269,2269,2305,2269,2269,2312,2269,2269,2225,2226,2160,2287,2289,2219,2304,2295,2314,2234,2226,2314,2269,2226,2226,2160,2288,2219,2222,2304,2296,2269,2224,2160,2160,2269,2302,2294,2314,2224,2226,2288,2220,2294,2269,2290,2269,2269,2293,2269,2269,2269,2269,2270,2221,2313,2225,2227,2160,2300,2269,2225,2261,2309,2234,2229,2223,2318,2318,2318,2328,2336,2340,2344,2350,2637,2712,2358,2362,2372,2135,2378,2398,2135,2135,2135,2135,2136,2417,2241,2135,2378,2135,2135,2980,2984,2135,3006,2135,2135,2135,2945,2931,2425,2400,2135,2135,2135,2954,2135,2481,2433,2135,2135,2988,2824,2135,2135,2482,2434,2135,2135,2440,2445,2452,2135,2135,2998,3002,2961,2441,2446,2453,2463,2974,2135,2135,2135,2140,2642,2709,2459,2470,2465,2135,2135,3005,2135,2135,2987,2823,2458,2469,2464,2975,2135,2135,2135,2353,2488,2447,2324,2974,2135,2409,2459,2448,2135,2961,2487,2446,2476,2323,2973,2135,2135,2135,2354,2476,2974,2135,2135,2135,2957,2135,2135,2960,2135,2135,2135,2363,2409,2459,2474,2465,2487,2571,2973,2135,2135,2168,2973,2135,2135,2135,2959,2135,2135,2135,2506,2135,2957,2488,2170,2135,2135,2135,2960,2135,2818,2493,2135,2135,3033,2135,2135,2135,2934,2819,2494,2135,2135,2135,2976,2780,2499,2135,2135,2135,3e3,2968,2135,2935,2135,2135,2135,2364,2507,2135,2135,2934,2135,2135,2780,2492,2507,2135,2135,2506,2780,2135,2135,2782,2780,2135,2782,2135,2783,2374,2514,2135,2135,2135,3007,2530,2974,2135,2135,2135,3008,2135,2135,2134,2135,2526,2531,2975,2135,2135,3042,2581,2575,2956,2135,2135,2135,2394,2135,2508,2535,2840,2844,2495,2135,2135,2136,2684,2537,2842,2846,2135,2136,2561,2581,2551,2536,2841,2845,2975,3043,2582,2843,2555,2135,3040,3044,2538,2844,2975,2135,2135,2253,2644,2672,2542,2554,2135,2135,2346,2873,2551,2555,2135,2135,2135,2381,2559,2565,2538,2553,2135,2560,2914,2576,2590,2135,2135,2135,2408,2136,2596,2624,2135,2135,2135,2409,2135,2618,2597,3008,2135,2135,2380,2956,2601,2135,2135,2135,2410,2620,2624,2135,2136,2383,2135,2135,2783,2623,2135,2135,2393,2888,2136,2621,3008,2135,2618,2618,2622,2135,2135,2405,2414,2619,2384,2624,2135,2136,2950,2135,2138,2135,2139,2135,2604,2623,2135,2140,2878,2665,2957,2622,2135,2135,2428,2762,2606,2612,2135,2135,2501,2586,2604,3038,2135,2604,3036,2387,2958,2386,2135,2141,2135,2421,2387,2385,2135,2385,2384,2384,2135,2386,2628,2384,2135,2135,2501,2596,2591,2135,2135,2135,2400,2135,2634,2135,2135,2559,2580,2575,2648,2135,2135,2135,2429,2649,2135,2135,2135,2435,2654,2658,2135,2135,2135,2436,2649,2178,2659,2135,2135,2595,2601,2669,2677,2135,2135,2616,2957,2879,2665,2691,2135,2363,2367,2900,2878,2664,2690,2975,2877,2643,2670,2974,2671,2975,2135,2135,2619,2608,2669,2673,2135,2135,2653,2177,2672,2135,2135,2135,2486,2168,2251,2255,2695,2974,2709,2135,2135,2135,2487,2169,2399,2716,2975,2135,2363,2770,2776,2640,2717,2135,2135,2729,2135,2135,2641,2718,2135,2135,2135,2505,2135,2640,2257,2974,2135,2727,2975,2135,2365,2332,2895,2957,2135,2959,2135,2365,2749,2754,2959,2958,2958,2135,2380,2793,2799,2135,2735,2738,2135,2381,2135,2135,2940,2974,2135,2744,2135,2135,2739,2519,2976,2745,2135,2135,2135,2509,2755,2135,2135,2135,2510,2772,2778,2135,2135,2740,2520,2135,2771,2777,2135,2135,2759,2750,2792,2798,2135,2135,2781,2392,2779,2135,2135,2135,2521,2135,2679,2248,2135,2135,2681,2480,2135,2135,2786,3e3,2135,2679,2683,2135,2135,2416,2135,2135,2135,2525,2135,2730,2135,2135,2135,2560,2581,2135,2805,2135,2135,2804,2962,2832,2974,2135,2382,2135,2135,2958,2135,2135,2960,2135,2829,2833,2975,2961,2965,2969,2973,2968,2972,2135,2135,2135,2641,2135,2515,2966,2970,2851,2478,2135,2135,2808,2135,2809,2135,2135,2135,2722,2852,2479,2135,2135,2815,2135,2135,2766,2853,2480,2135,2857,2479,2135,2388,2723,2135,2364,2331,2894,2858,2480,2135,2135,2850,2478,2135,2135,2135,2806,2864,2135,2399,2256,2974,2865,2135,2135,2862,2135,2135,2135,2685,2807,2865,2135,2135,2807,2863,2135,2135,2135,2686,2884,2807,2135,2809,2807,2135,2135,2807,2806,2705,2810,2808,2700,2869,2702,2702,2702,2704,2883,2135,2135,2135,2730,2884,2135,2135,2135,2731,2321,2546,2135,2135,2876,2255,2889,2322,2547,2135,2401,2135,2135,2135,2949,2367,2893,2544,2973,2906,2973,2135,2135,2877,2663,2368,2901,2907,2974,2366,2899,2905,2972,2920,2974,2135,2135,2911,2900,2920,2363,2913,2918,2465,2941,2975,2135,2135,2924,2928,2974,2945,2931,2135,2135,2135,2765,2136,2955,2135,2135,2939,2931,2380,2135,2135,2380,2135,2135,2135,2780,2507,2137,2135,2137,2135,2139,2135,2806,2810,2135,2135,2135,2992,2135,2135,2962,2966,2970,2974,2135,2135,2787,3014,2135,2521,2993,2135,2135,2135,2803,2135,2135,2135,2618,2607,2997,3001,2135,2135,2963,2967,2971,2975,2135,2135,2791,2797,2135,3009,2999,3003,2787,3001,2135,2135,2964,2968,2785,2999,3003,2135,2135,2135,2804,2785,2999,3004,2135,2135,2135,2807,2135,2135,3023,2135,2135,2135,2811,2135,2135,3027,2135,2135,2135,2837,2968,3028,2135,2135,2135,2875,2135,2784,3029,2135,2408,2457,2446,0,14,0,-2120220672,1610612736,-2074083328,-2002780160,-2111830528,1073872896,1342177280,1075807216,4096,16384,2048,8192,0,8192,0,0,0,0,1,0,0,0,2,0,-2145386496,8388608,1073741824,0,2147483648,2147483648,2097152,2097152,2097152,536870912,0,0,134217728,33554432,1536,268435456,268435456,268435456,268435456,128,256,32,0,65536,131072,524288,16777216,268435456,2147483648,1572864,1835008,640,32768,65536,262144,1048576,2097152,196608,196800,196608,196608,0,131072,131072,131072,196608,196624,196608,196624,196608,196608,128,4096,16384,16384,2048,0,4,0,0,2147483648,2097152,0,1024,32,32,0,65536,1572864,1048576,32768,32768,32768,32768,196608,196608,196608,64,64,196608,196608,131072,131072,131072,131072,268435456,268435456,64,196736,196608,196608,196608,131072,196608,196608,16384,4,4,4,2,32,32,65536,1048576,12582912,1073741824,0,0,2,8,16,96,2048,32768,0,0,131072,268435456,268435456,268435456,256,256,196608,196672,196608,196608,196608,196608,4,0,256,256,256,256,32,32,32768,32,32,32,32,32768,268435456,268435456,268435456,196608,196608,196608,196624,196608,196608,196608,16,16,16,268435456,196608,64,64,64,196608,196608,196608,196672,268435456,64,64,196608,196608,16,196608,196608,196608,268435456,64,196608,131072,262144,4194304,25165824,33554432,134217728,268435456,268435456,196608,262152,8,256,512,3072,16384,200,-1073741816,8392713,40,8392718,520,807404072,40,520,100663304,0,0,-540651761,-540651761,257589048,0,262144,0,0,3,8,256,0,4,6,4100,8388612,0,0,0,3,4,8,256,512,1024,0,2097152,0,0,-537854471,-537854471,0,100663296,0,0,1,2,0,0,0,16384,0,0,0,96,14336,0,0,0,7,8,234881024,0,0,0,8,0,0,0,0,262144,0,0,16,64,384,512,0,1,1,0,12582912,0,0,0,0,33554432,67108864,-606084144,-606084144,-606084138,0,0,28,32,768,1966080,-608174080,0,0,0,14,35056,16,64,896,24576,98304,98304,131072,262144,524288,1048576,4194304,25165824,1048576,62914560,134217728,-805306368,0,384,512,16384,65536,131072,262144,29360128,33554432,134217728,268435456,1073741824,2147483648,262144,524288,1048576,29360128,33554432,524288,1048576,16777216,33554432,134217728,268435456,1073741824,0,0,0,123856,1966080,0,64,384,16384,65536,131072,16384,65536,524288,268435456,2147483648,0,0,524288,2147483648,0,0,1,16,0,256,524288,0,0,0,25,96,128,-537854471,0,0,0,32,7404800,-545259520,0,0,0,60,0,249,64768,1048576,6291456,6291456,25165824,100663296,402653184,1073741824,96,128,1280,2048,4096,57344,6291456,57344,6291456,8388608,16777216,33554432,201326592,1342177280,2147483648,0,57344,6291456,8388608,100663296,134217728,2147483648,0,0,0,1,8,16,64,128,64,128,256,1024,131072,131072,131072,262144,524288,16777216,57344,6291456,8388608,67108864,134217728,64,256,1024,2048,4096,57344,64,256,0,24576,32768,6291456,67108864,134217728,0,1,64,256,24576,32768,4194304,32768,4194304,67108864,0,0,64,256,0,0,24576,32768,0,16384,4194304,67108864,64,16384,0,0,1,64,256,16384,4194304,67108864,0,0,0,16384,0,16384,16384,0,-470447874,-470447874,-470447874,0,0,128,0,0,8,96,2048,32768,262144,8388608,35056,1376256,-471859200,0,0,14,16,224,2048,32768,2097152,4194304,8388608,-486539264,0,96,128,2048,32768,262144,2097152,262144,2097152,8388608,33554432,536870912,1073741824,2147483648,0,1610612736,2147483648,0,0,1,524288,1048576,12582912,0,0,0,151311,264503296,2097152,8388608,33554432,1610612736,2147483648,262144,8388608,33554432,536870912,67108864,4194304,0,4194304,0,4194304,4194304,0,0,524288,8388608,536870912,1073741824,2147483648,1,4097,8388609,96,2048,32768,1073741824,2147483648,0,96,2048,2147483648,0,0,96,2048,0,0,1,12582912,0,0,0,0,1641895695,1641895695,0,0,0,249,7404800,15,87808,1835008,1639972864,0,768,5120,16384,65536,1835008,1835008,12582912,16777216,1610612736,0,3,4,8,768,4096,65536,0,0,256,512,786432,8,256,512,4096,16384,1835008,16384,1835008,12582912,1610612736,0,0,0,256,0,0,0,4,8,16,32,1,2,8,256,16384,524288,16384,524288,1048576,12582912,1610612736,0,0,0,8388608,0,0,0,524288,4194304,0,0,0,8388608,-548662288,-548662288,-548662288,0,0,256,16384,65536,520093696,-1073741824,0,0,0,16777216,0,16,32,960,4096,4980736,520093696,1073741824,0,32,896,4096,57344,1048576,6291456,8388608,16777216,100663296,134217728,268435456,2147483648,0,512,786432,4194304,33554432,134217728,268435456,0,786432,4194304,134217728,268435456,0,524288,4194304,268435456,0,0,0,0,0,4194304,4194304,-540651761,0,0,0,2,4,8,16,96,128,264503296,-805306368,0,0,0,8,256,512,19456,131072,3072,16384,131072,262144,8388608,16777216,512,1024,2048,16384,131072,262144,131072,262144,8388608,33554432,201326592,268435456,0,3,4,256,1024,2048,57344,16384,131072,8388608,33554432,134217728,268435456,0,3,256,1024,16384,131072,33554432,134217728,1073741824,2147483648,0,0,256,524288,2147483648,0,3,256,33554432,134217728,1073741824,0,1,2,33554432,1,2,134217728,1073741824,0,1,2,134217728,0,0,0,64,0,0,0,16,32,896,4096,786432,4194304,16777216,33554432,201326592,268435456,1073741824,2147483648,0,0,0,15,0,4980736,4980736,4980736,70460,70460,3478332,0,0,1008,4984832,520093696,60,4864,65536,0,0,0,12,16,32,256,512,4096,65536,0,0,0,67108864,0,0,0,12,0,256,512,65536,0,0,1024,512,131072,131072,4,16,32,65536,0,4,16,32,0,0,0,4,16,0,0,16384,67108864,0,0,1,24,96,128,256,1024],r.TOKEN=["(0)","JSONChar","JSONCharRef","JSONPredefinedCharRef","ModuleDecl","Annotation","OptionDecl","Operator","Variable","Tag","EndTag","PragmaContents","DirCommentContents","DirPIContents","CDataSectionContents","AttrTest","Wildcard","EQName","IntegerLiteral","DecimalLiteral","DoubleLiteral","PredefinedEntityRef","'\"\"'","EscapeApos","AposChar","ElementContentChar","QuotAttrContentChar","AposAttrContentChar","NCName","QName","S","CharRef","CommentContents","DocTag","DocCommentContents","EOF","'!'","'\"'","'#'","'#)'","'$$'","''''","'('","'(#'","'(:'","'(:~'","')'","'*'","'*'","','","'-->'","'.'","'/'","'/>'","':'","':)'","';'","'"),token:l,next:function(e){e.pop()}}],CData:[{name:"CDataSectionContents",token:a},{name:p("]]>"),token:a,next:function(e){e.pop()}}],PI:[{name:"DirPIContents",token:c},{name:p("?"),token:c},{name:p("?>"),token:c,next:function(e){e.pop()}}],AposString:[{name:p("''"),token:"string",next:function(e){e.pop()}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:"EscapeApos",token:"constant.language.escape"},{name:"AposChar",token:"string"}],QuotString:[{name:p('"'),token:"string",next:function(e){e.pop()}},{name:"JSONPredefinedCharRef",token:"constant.language.escape"},{name:"JSONCharRef",token:"constant.language.escape"},{name:"JSONChar",token:"string"}]};n.JSONiqLexer=function(){return new i(r,d)}},{"./JSONiqTokenizer":"/node_modules/xqlint/lib/lexers/JSONiqTokenizer.js","./lexer":"/node_modules/xqlint/lib/lexers/lexer.js"}],"/node_modules/xqlint/lib/lexers/lexer.js":[function(e,t,n){"use strict";var r=function(e){var t=e;this.tokens=[],this.reset=function(){t=t,this.tokens=[]},this.startNonterminal=function(){},this.endNonterminal=function(){},this.terminal=function(e,n,r){this.tokens.push({name:e,value:t.substring(n,r)})},this.whitespace=function(e,n){this.tokens.push({name:"WS",value:t.substring(e,n)})}};n.Lexer=function(e,t){this.tokens=[],this.getLineTokens=function(n,i){i=i==="start"||!i?'["start"]':i;var s=JSON.parse(i),o=new r(n),u=new e(n,o),a=[];for(;;){var f=s[s.length-1];try{o.tokens=[],u["parse_"+f]();var l=null;o.tokens.length>1&&o.tokens[0].name==="WS"&&(a.push({type:"text",value:o.tokens[0].value}),o.tokens.splice(0,1));var c=o.tokens[0],h=t[f];for(var p=0;p-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var s=n.getCursorPosition(),o=new u(r,s.row,s.column),f=o.getCurrentToken(),l=!1,e=JSON.parse(e).pop();if(f&&f.value===">"||e!=="StartTag")return;if(!f||!a(f,"meta.tag")&&(!a(f,"text")||!f.value.match("/"))){do f=o.stepBackward();while(f&&(a(f,"string")||a(f,"keyword.operator")||a(f,"entity.attribute-name")||a(f,"text")))}else l=!0;var c=o.stepBackward();if(!f||!a(f,"meta.tag")||c!==null&&c.value.match("/"))return;var h=f.value.substring(1);if(l)var h=h.substring(0,s.column-f.start);return{text:">",selection:[1,1]}}})};r.inherits(f,i),t.XQueryBehaviour=f}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/jsoniq",["require","exports","module","ace/worker/worker_client","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/xquery/jsoniq_lexer","ace/range","ace/mode/behaviour/xquery","ace/mode/folding/cstyle","ace/anchor"],function(e,t,n){"use strict";var r=e("../worker/worker_client").WorkerClient,i=e("../lib/oop"),s=e("./text").Mode,o=e("./text_highlight_rules").TextHighlightRules,u=e("./xquery/jsoniq_lexer").JSONiqLexer,a=e("../range").Range,f=e("./behaviour/xquery").XQueryBehaviour,l=e("./folding/cstyle").FoldMode,c=e("../anchor").Anchor,h=function(){this.$tokenizer=new u,this.$behaviour=new f,this.foldingRules=new l,this.$highlightRules=new o};i.inherits(h,s),function(){this.completer={getCompletions:function(e,t,n,r,i){if(!t.$worker)return i();t.$worker.emit("complete",{data:{pos:n,prefix:r}}),t.$worker.on("complete",function(e){i(null,e.data)})}},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=t.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/);return i&&(r+=n),r},this.checkOutdent=function(e,t,n){return/^\s+$/.test(t)?/^\s*[\}\)]/.test(n):!1},this.autoOutdent=function(e,t,n){var r=t.getLine(n),i=r.match(/^(\s*[\}\)])/);if(!i)return 0;var s=i[1].length,o=t.findMatchingBracket({row:n,column:s});if(!o||o.row==n)return 0;var u=this.$getIndent(t.getLine(o.row));t.replace(new a(n,0,n,s-1),u)},this.toggleCommentLines=function(e,t,n,r){var i,s,o=!0,u=/^\s*\(:(.*):\)/;for(i=n;i<=r;i++)if(!u.test(t.getLine(i))){o=!1;break}var f=new a(0,0,0,0);for(i=n;i<=r;i++)s=t.getLine(i),f.start.row=i,f.end.row=i,f.end.column=s.length,t.replace(f,o?s.match(u)[1]:"(:"+s+":)")},this.createWorker=function(e){var t=new r(["ace"],"ace/mode/xquery_worker","XQueryWorker"),n=this;return t.attachToDocument(e.getDocument()),t.on("ok",function(t){e.clearAnnotations()}),t.on("markers",function(t){e.clearAnnotations(),n.addMarkers(t.data,e)}),t},this.removeMarkers=function(e){var t=e.getMarkers(!1);for(var n in t)t[n].clazz.indexOf("language_highlight_")===0&&e.removeMarker(n);for(var r=0;r))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="[a-zA-Z_$][a-zA-Z0-9_$]*",t="abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while|yield|when|record|var|permits|(?:non\\-)?sealed",n="null|Infinity|NaN|undefined",r="AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",s=this.createKeywordMapper({"variable.language":"this","constant.language":n,"support.function":r},"identifier");this.$rules={start:[{include:"comments"},{include:"multiline-strings"},{include:"strings"},{include:"constants"},{regex:"(open(?:\\s+))?module(?=\\s*\\w)",token:"keyword",next:[{regex:"{",token:"paren.lparen",push:[{regex:"}",token:"paren.rparen",next:"pop"},{include:"comments"},{regex:"\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b",token:"keyword"}]},{token:"text",regex:"\\s+"},{token:"identifier",regex:"\\w+"},{token:"punctuation.operator",regex:"."},{token:"text",regex:"\\s+"},{regex:"",next:"start"}]},{include:"statements"}],comments:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment.doc",regex:/\/\*\*(?!\/)/,push:"doc-start"},{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],strings:[{token:["punctuation","string"],regex:/(\.)(")/,push:[{token:"lparen",regex:/\\\{/,push:[{token:"text",regex:/$/,next:"start"},{token:"rparen",regex:/}/,next:"pop"},{include:"strings"},{include:"constants"},{include:"statements"}]},{token:"string",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"}],"multiline-strings":[{token:["punctuation","string"],regex:/(\.)(""")/,push:[{token:"string",regex:'"""',next:"pop"},{token:"lparen",regex:/\\\{/,push:[{token:"text",regex:/$/,next:"start"},{token:"rparen",regex:/}/,next:"pop"},{include:"multiline-strings"},{include:"strings"},{include:"constants"},{include:"statements"}]},{token:"constant.language.escape",regex:/\\./},{defaultToken:"string"}]},{token:"string",regex:'"""',push:[{token:"string",regex:'"""',next:"pop"},{token:"constant.language.escape",regex:/\\./},{defaultToken:"string"}]}],constants:[{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/},{token:"constant.language.boolean",regex:"(?:true|false)\\b"}],statements:[{token:["keyword","text","identifier"],regex:"(record)(\\s+)("+e+")\\b"},{token:"keyword",regex:"(?:"+t+")\\b"},{token:"storage.type.annotation",regex:"@"+e+"\\b"},{token:"entity.name.function",regex:e+"(?=\\()"},{token:s,regex:e+"\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\||\\^|\\*|\\/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?|\\:|\\*=|\\/=|%=|\\+=|\\-=|&=|\\|=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}]},this.embedRules(i,"doc-",[i.getEndRule("pop")]),this.normalizeRules()};r.inherits(o,s),t.JavaHighlightRules=o}),define("ace/mode/jsp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/java_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./java_highlight_rules").JavaHighlightRules,o=function(){i.call(this);var e="request|response|out|session|application|config|pageContext|page|Exception",t="page|include|taglib",n=[{token:"comment",regex:"<%--",push:"jsp-dcomment"},{token:"meta.tag",regex:"<%@?|<%=?|<%!?|]+>",push:"jsp-start"}],r=[{token:"meta.tag",regex:"%>|<\\/jsp:[^>]+>",next:"pop"},{token:"variable.language",regex:e},{token:"keyword",regex:t}];for(var o in this.$rules)this.$rules[o].unshift.apply(this.$rules[o],n);this.embedRules(s,"jsp-",r,["start"]),this.addRules({"jsp-dcomment":[{token:"comment",regex:".*?--%>",next:"pop"}]}),this.normalizeRules()};r.inherits(o,i),t.JspHighlightRules=o}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/jsp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./jsp_highlight_rules").JspHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(a,i),function(){this.$id="ace/mode/jsp",this.snippetFileId="ace/snippets/jsp"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/jsp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-jssm.js b/www/js/ace/mode-jssm.js deleted file mode 100644 index 7ef8e82e6..000000000 --- a/www/js/ace/mode-jssm.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jssm_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"punctuation.definition.comment.mn",regex:/\/\*/,push:[{token:"punctuation.definition.comment.mn",regex:/\*\//,next:"pop"},{defaultToken:"comment.block.jssm"}],comment:"block comment"},{token:"comment.line.jssm",regex:/\/\//,push:[{token:"comment.line.jssm",regex:/$/,next:"pop"},{defaultToken:"comment.line.jssm"}],comment:"block comment"},{token:"entity.name.function",regex:/\${/,push:[{token:"entity.name.function",regex:/}/,next:"pop"},{defaultToken:"keyword.other"}],comment:"js outcalls"},{token:"constant.numeric",regex:/[0-9]*\.[0-9]*\.[0-9]*/,comment:"semver"},{token:"constant.language.jssmLanguage",regex:/graph_layout\s*:/,comment:"jssm language tokens"},{token:"constant.language.jssmLanguage",regex:/machine_name\s*:/,comment:"jssm language tokens"},{token:"constant.language.jssmLanguage",regex:/machine_version\s*:/,comment:"jssm language tokens"},{token:"constant.language.jssmLanguage",regex:/jssm_version\s*:/,comment:"jssm language tokens"},{token:"keyword.control.transition.jssmArrow.legal_legal",regex:/<->/,comment:"transitions"},{token:"keyword.control.transition.jssmArrow.legal_none",regex:/<-/,comment:"transitions"},{token:"keyword.control.transition.jssmArrow.none_legal",regex:/->/,comment:"transitions"},{token:"keyword.control.transition.jssmArrow.main_main",regex:/<=>/,comment:"transitions"},{token:"keyword.control.transition.jssmArrow.none_main",regex:/=>/,comment:"transitions"},{token:"keyword.control.transition.jssmArrow.main_none",regex:/<=/,comment:"transitions"},{token:"keyword.control.transition.jssmArrow.forced_forced",regex:/<~>/,comment:"transitions"},{token:"keyword.control.transition.jssmArrow.none_forced",regex:/~>/,comment:"transitions"},{token:"keyword.control.transition.jssmArrow.forced_none",regex:/<~/,comment:"transitions"},{token:"keyword.control.transition.jssmArrow.legal_main",regex:/<-=>/,comment:"transitions"},{token:"keyword.control.transition.jssmArrow.main_legal",regex:/<=->/,comment:"transitions"},{token:"keyword.control.transition.jssmArrow.legal_forced",regex:/<-~>/,comment:"transitions"},{token:"keyword.control.transition.jssmArrow.forced_legal",regex:/<~->/,comment:"transitions"},{token:"keyword.control.transition.jssmArrow.main_forced",regex:/<=~>/,comment:"transitions"},{token:"keyword.control.transition.jssmArrow.forced_main",regex:/<~=>/,comment:"transitions"},{token:"constant.numeric.jssmProbability",regex:/[0-9]+%/,comment:"edge probability annotation"},{token:"constant.character.jssmAction",regex:/\'[^']*\'/,comment:"action annotation"},{token:"entity.name.tag.jssmLabel.doublequoted",regex:/\"[^"]*\"/,comment:"jssm label annotation"},{token:"entity.name.tag.jssmLabel.atom",regex:/[a-zA-Z0-9_.+&()#@!?,]/,comment:"jssm label annotation"}]},this.normalizeRules()};s.metaData={fileTypes:["jssm","jssm_state"],name:"JSSM",scopeName:"source.jssm"},r.inherits(s,i),t.JSSMHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/jssm",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jssm_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./jssm_highlight_rules").JSSMHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/jssm"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/jssm"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-jsx.js b/www/js/ace/mode-jsx.js deleted file mode 100644 index 3d352c839..000000000 --- a/www/js/ace/mode-jsx.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/javascript"],function(e,t,n){"use strict";function s(){i.call(this),this.$highlightRuleConfig={jsx:!0}}var r=e("../lib/oop"),i=e("./javascript").Mode;r.inherits(s,i),function(){this.createWorker=function(){return null},this.$id="ace/mode/jsx"}.call(s.prototype),t.Mode=s}); (function() { - window.require(["ace/mode/jsx"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-julia.js b/www/js/ace/mode-julia.js deleted file mode 100644 index e6e20dc7d..000000000 --- a/www/js/ace/mode-julia.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/julia_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#function_decl"},{include:"#function_call"},{include:"#type_decl"},{include:"#keyword"},{include:"#operator"},{include:"#number"},{include:"#string"},{include:"#comment"}],"#bracket":[{token:"keyword.bracket.julia",regex:"\\(|\\)|\\[|\\]|\\{|\\}|,"}],"#comment":[{token:["punctuation.definition.comment.julia","comment.line.number-sign.julia"],regex:"(#)(?!\\{)(.*$)"}],"#function_call":[{token:["support.function.julia","text"],regex:"([a-zA-Z0-9_]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*\\()"}],"#function_decl":[{token:["keyword.other.julia","meta.function.julia","entity.name.function.julia","meta.function.julia","text"],regex:"(function|macro)(\\s*)([a-zA-Z0-9_\\{]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*)([(\\\\{])"}],"#keyword":[{token:"keyword.other.julia",regex:"\\b(?:function|type|immutable|macro|quote|abstract|bitstype|typealias|module|baremodule|new)\\b"},{token:"keyword.control.julia",regex:"\\b(?:if|else|elseif|while|for|in|begin|let|end|do|try|catch|finally|return|break|continue)\\b"},{token:"storage.modifier.variable.julia",regex:"\\b(?:global|local|const|export|import|importall|using)\\b"},{token:"variable.macro.julia",regex:"@[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b"}],"#number":[{token:"constant.numeric.julia",regex:"\\b0(?:x|X)[0-9a-fA-F]*|(?:\\b[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]*)?(?:im)?|\\bInf(?:32)?\\b|\\bNaN(?:32)?\\b|\\btrue\\b|\\bfalse\\b"}],"#operator":[{token:"keyword.operator.update.julia",regex:"=|:=|\\+=|-=|\\*=|/=|//=|\\.//=|\\.\\*=|\\\\=|\\.\\\\=|^=|\\.^=|%=|\\|=|&=|\\$=|<<=|>>="},{token:"keyword.operator.ternary.julia",regex:"\\?|:"},{token:"keyword.operator.boolean.julia",regex:"\\|\\||&&|!"},{token:"keyword.operator.arrow.julia",regex:"->|<-|-->"},{token:"keyword.operator.relation.julia",regex:">|<|>=|<=|==|!=|\\.>|\\.<|\\.>=|\\.>=|\\.==|\\.!=|\\.=|\\.!|<:|:>"},{token:"keyword.operator.range.julia",regex:":"},{token:"keyword.operator.shift.julia",regex:"<<|>>"},{token:"keyword.operator.bitwise.julia",regex:"\\||\\&|~"},{token:"keyword.operator.arithmetic.julia",regex:"\\+|-|\\*|\\.\\*|/|\\./|//|\\.//|%|\\.%|\\\\|\\.\\\\|\\^|\\.\\^"},{token:"keyword.operator.isa.julia",regex:"::"},{token:"keyword.operator.dots.julia",regex:"\\.(?=[a-zA-Z])|\\.\\.+"},{token:"keyword.operator.interpolation.julia",regex:"\\$#?(?=.)"},{token:["variable","keyword.operator.transposed-variable.julia"],regex:"([\\w\\xff-\\u218e\\u2455-\\uffff]+)((?:'|\\.')*\\.?')"},{token:"text",regex:"\\[|\\("},{token:["text","keyword.operator.transposed-matrix.julia"],regex:"([\\]\\)])((?:'|\\.')*\\.?')"}],"#string":[{token:"punctuation.definition.string.begin.julia",regex:"'",push:[{token:"punctuation.definition.string.end.julia",regex:"'",next:"pop"},{include:"#string_escaped_char"},{defaultToken:"string.quoted.single.julia"}]},{token:"punctuation.definition.string.begin.julia",regex:'"',push:[{token:"punctuation.definition.string.end.julia",regex:'"',next:"pop"},{include:"#string_escaped_char"},{defaultToken:"string.quoted.double.julia"}]},{token:"punctuation.definition.string.begin.julia",regex:'\\b[\\w\\xff-\\u218e\\u2455-\\uffff]+"',push:[{token:"punctuation.definition.string.end.julia",regex:'"[\\w\\xff-\\u218e\\u2455-\\uffff]*',next:"pop"},{include:"#string_custom_escaped_char"},{defaultToken:"string.quoted.custom-double.julia"}]},{token:"punctuation.definition.string.begin.julia",regex:"`",push:[{token:"punctuation.definition.string.end.julia",regex:"`",next:"pop"},{include:"#string_escaped_char"},{defaultToken:"string.quoted.backtick.julia"}]}],"#string_custom_escaped_char":[{token:"constant.character.escape.julia",regex:'\\\\"'}],"#string_escaped_char":[{token:"constant.character.escape.julia",regex:"\\\\(?:\\\\|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)"}],"#type_decl":[{token:["keyword.control.type.julia","meta.type.julia","entity.name.type.julia","entity.other.inherited-class.julia","punctuation.separator.inheritance.julia","entity.other.inherited-class.julia"],regex:"(type|immutable)(\\s+)([a-zA-Z0-9_]+)(?:(\\s*)(<:)(\\s*[.a-zA-Z0-9_:]+))?"},{token:["other.typed-variable.julia","support.type.julia"],regex:"([a-zA-Z0-9_]+)(::[a-zA-Z0-9_{}]+)"}]},this.normalizeRules()};s.metaData={fileTypes:["jl"],firstLineMatch:"^#!.*\\bjulia\\s*$",foldingStartMarker:"^\\s*(?:if|while|for|begin|function|macro|module|baremodule|type|immutable|let)\\b(?!.*\\bend\\b).*$",foldingStopMarker:"^\\s*(?:end)\\b.*$",name:"Julia",scopeName:"source.julia"},r.inherits(s,i),t.JuliaHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/julia",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/julia_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./julia_highlight_rules").JuliaHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="#",this.blockComment="",this.$id="ace/mode/julia"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/julia"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-kotlin.js b/www/js/ace/mode-kotlin.js deleted file mode 100644 index 4068dd170..000000000 --- a/www/js/ace/mode-kotlin.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/kotlin_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.$keywords=this.createKeywordMapper({"storage.modifier.kotlin":"var|val|public|private|protected|abstract|final|enum|open|attribute|annotation|override|inline|var|val|vararg|lazy|in|out|internal|data|tailrec|operator|infix|const|yield|typealias|typeof|sealed|inner|value|lateinit|external|suspend|noinline|crossinline|reified|expect|actual",keyword:"companion|class|object|interface|namespace|type|fun|constructor|if|else|while|for|do|return|when|where|break|continue|try|catch|finally|throw|in|is|as|assert|constructor","constant.language.kotlin":"true|false|null|this|super","entity.name.function.kotlin":"get|set"},"identifier");this.$rules={start:[{include:"#comments"},{token:["text","keyword.other.kotlin","text","entity.name.package.kotlin","text"],regex:/^(\s*)(package)\b(?:(\s*)([^ ;$]+)(\s*))?/},{token:"comment",regex:/^\s*#!.*$/},{include:"#imports"},{include:"#expressions"},{token:"string",regex:/@[a-zA-Z][a-zA-Z:]*\b/},{token:["keyword.other.kotlin","text","entity.name.variable.kotlin"],regex:/\b(var|val)(\s+)([a-zA-Z_][\w]*)\b/},{token:["keyword.other.kotlin","text","entity.name.variable.kotlin","paren.lparen"],regex:/(fun)(\s+)(\w+)(\()/,push:[{token:["variable.parameter.function.kotlin","text","keyword.operator"],regex:/(\w+)(\s*)(:)/},{token:"paren.rparen",regex:/\)/,next:"pop"},{include:"#comments"},{include:"#types"},{include:"#expressions"}]},{token:["text","keyword","text","identifier"],regex:/^(\s*)(class)(\s*)([a-zA-Z]+)/,next:"#classes"},{token:["identifier","punctuaction"],regex:/([a-zA-Z_][\w]*)(<)/,push:[{include:"#generics"},{include:"#defaultTypes"},{token:"punctuation",regex:/>/,next:"pop"}]},{token:e,regex:/[a-zA-Z_][\w]*\b/},{token:"paren.lparen",regex:/[{(\[]/},{token:"paren.rparen",regex:/[})\]]/}],"#comments":[{token:"comment",regex:/\/\*/,push:[{token:"comment",regex:/\*\//,next:"pop"},{defaultToken:"comment"}]},{token:["text","comment"],regex:/(\s*)(\/\/.*$)/}],"#constants":[{token:"constant.numeric.kotlin",regex:/\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:(?:e|E)(?:\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\b/},{token:"constant.other.kotlin",regex:/\b[A-Z][A-Z0-9_]+\b/}],"#expressions":[{include:"#strings"},{include:"#constants"},{include:"#keywords"}],"#imports":[{token:["text","keyword.other.kotlin","text","keyword.other.kotlin"],regex:/^(\s*)(import)(\s+[^ $]+\s+)((?:as)?)/}],"#generics":[{token:"punctuation",regex://,next:"pop"},{token:"storage.type.generic.kotlin",regex:/\w+/},{token:"keyword.operator",regex:/:/},{token:"punctuation",regex:/,/},{include:"#generics"}]}],"#classes":[{include:"#generics"},{token:"keyword",regex:/public|private|constructor/},{token:"string",regex:/@[a-zA-Z][a-zA-Z:]*\b/},{token:"text",regex:/(?=$|\(|{)/,next:"start"}],"#keywords":[{token:"keyword.operator.kotlin",regex:/==|!=|===|!==|<=|>=|<|>|=>|->|::|\?:/},{token:"keyword.operator.assignment.kotlin",regex:/=/},{token:"keyword.operator.declaration.kotlin",regex:/:/,push:[{token:"text",regex:/(?=$|{|=|,)/,next:"pop"},{include:"#types"}]},{token:"keyword.operator.dot.kotlin",regex:/\./},{token:"keyword.operator.increment-decrement.kotlin",regex:/\-\-|\+\+/},{token:"keyword.operator.arithmetic.kotlin",regex:/\-|\+|\*|\/|%/},{token:"keyword.operator.arithmetic.assign.kotlin",regex:/\+=|\-=|\*=|\/=/},{token:"keyword.operator.logical.kotlin",regex:/!|&&|\|\|/},{token:"keyword.operator.range.kotlin",regex:/\.\./},{token:"punctuation.kotlin",regex:/[;,]/}],"#types":[{include:"#defaultTypes"},{token:"paren.lparen",regex:/\(/,push:[{token:"paren.rparen",regex:/\)/,next:"pop"},{include:"#defaultTypes"},{token:"punctuation",regex:/,/}]},{include:"#generics"},{token:"keyword.operator.declaration.kotlin",regex:/->/},{token:"paren.rparen",regex:/\)/},{token:"keyword.operator.declaration.kotlin",regex:/:/,push:[{token:"text",regex:/(?=$|{|=|,)/,next:"pop"},{include:"#types"}]}],"#defaultTypes":[{token:"storage.type.buildin.kotlin",regex:/\b(Any|Unit|String|Int|Boolean|Char|Long|Double|Float|Short|Byte|dynamic|IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray|Array|List|Map|Nothing|Enum|Throwable|Comparable)\b/}],"#strings":[{token:"string",regex:/"""/,push:[{token:"string",regex:/"""/,next:"pop"},{token:"variable.parameter.template.kotlin",regex:/\$\w+|\${[^}]+}/},{token:"constant.character.escape.kotlin",regex:/\\./},{defaultToken:"string"}]},{token:"string",regex:/"/,push:[{token:"string",regex:/"/,next:"pop"},{token:"variable.parameter.template.kotlin",regex:/\$\w+|\$\{[^\}]+\}/},{token:"constant.character.escape.kotlin",regex:/\\./},{defaultToken:"string"}]},{token:"string",regex:/'/,push:[{token:"string",regex:/'/,next:"pop"},{token:"constant.character.escape.kotlin",regex:/\\./},{defaultToken:"string"}]},{token:"string",regex:/`/,push:[{token:"string",regex:/`/,next:"pop"},{defaultToken:"string"}]}]},this.normalizeRules()};s.metaData={fileTypes:["kt","kts"],name:"Kotlin",scopeName:"source.Kotlin"},r.inherits(s,i),t.KotlinHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/kotlin",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/kotlin_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./kotlin_highlight_rules").KotlinHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/kotlin"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/kotlin"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-latex.js b/www/js/ace/mode-latex.js deleted file mode 100644 index f430c831e..000000000 --- a/www/js/ace/mode-latex.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:"%.*$"},{token:["keyword","lparen","variable.parameter","rparen","lparen","storage.type","rparen"],regex:"(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})"},{token:["keyword","lparen","variable.parameter","rparen"],regex:"(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?"},{token:["storage.type","lparen","variable.parameter","rparen"],regex:"(\\\\begin)({)(verbatim)(})",next:"verbatim"},{token:["storage.type","lparen","variable.parameter","rparen"],regex:"(\\\\begin)({)(lstlisting)(})",next:"lstlisting"},{token:["storage.type","lparen","variable.parameter","rparen"],regex:"(\\\\(?:begin|end))({)([\\w*]*)(})"},{token:"storage.type",regex:/\\verb\b\*?/,next:[{token:["keyword.operator","string","keyword.operator"],regex:"(.)(.*?)(\\1|$)|",next:"start"}]},{token:"storage.type",regex:"\\\\[a-zA-Z]+"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"constant.character.escape",regex:"\\\\[^a-zA-Z]?"},{token:"string",regex:"\\${1,2}",next:"equation"}],equation:[{token:"comment",regex:"%.*$"},{token:"string",regex:"\\${1,2}",next:"start"},{token:"constant.character.escape",regex:"\\\\(?:[^a-zA-Z]|[a-zA-Z]+)"},{token:"error",regex:"^\\s*$",next:"start"},{defaultToken:"string"}],verbatim:[{token:["storage.type","lparen","variable.parameter","rparen"],regex:"(\\\\end)({)(verbatim)(})",next:"start"},{defaultToken:"text"}],lstlisting:[{token:["storage.type","lparen","variable.parameter","rparen"],regex:"(\\\\end)({)(lstlisting)(})",next:"start"},{defaultToken:"text"}]},this.normalizeRules()};r.inherits(s,i),t.LatexHighlightRules=s}),define("ace/mode/folding/latex",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u={"\\subparagraph":1,"\\paragraph":2,"\\subsubsubsection":3,"\\subsubsection":4,"\\subsection":5,"\\section":6,"\\chapter":7,"\\part":8,"\\begin":9,"\\end":10},a=t.FoldMode=function(){};r.inherits(a,i),function(){this.foldingStartMarker=/^\s*\\(begin)|\s*\\(part|chapter|(?:sub)*(?:section|paragraph))\b|{\s*$/,this.foldingStopMarker=/^\s*\\(end)\b|^\s*}/,this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]?this.latexBlock(e,n,i[0].length-1):i[2]?this.latexSection(e,n,i[0].length-1):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[1]?this.latexBlock(e,n,i[0].length-1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.latexBlock=function(e,t,n,r){var i={"\\begin":1,"\\end":-1},u=new o(e,t,n),a=u.getCurrentToken();if(!a||a.type!="storage.type"&&a.type!="constant.character.escape")return;var f=a.value,l=i[f],c=function(){var e=u.stepForward(),t=e&&e.type=="lparen"?u.stepForward().value:"";return l===-1&&(u.stepBackward(),t&&u.stepBackward()),t},h=[c()],p=l===-1?u.getCurrentTokenColumn():e.getLine(t).length,d=t;u.step=l===-1?u.stepBackward:u.stepForward;while(a=u.step()){if(!a||a.type!="storage.type"&&a.type!="constant.character.escape")continue;var v=i[a.value];if(!v)continue;var m=c();if(v===l)h.unshift(m);else if(h.shift()!==m||!h.length)break}if(h.length)return;l==1&&(u.stepBackward(),u.stepBackward());if(r)return u.getCurrentTokenRange();var t=u.getCurrentTokenRow();return l===-1?new s(t,e.getLine(t).length,d,p):new s(d,p,t,u.getCurrentTokenColumn())},this.latexSection=function(e,t,n){var r=new o(e,t,n),i=r.getCurrentToken();if(!i||i.type!="storage.type")return;var a=u[i.value]||0,f=0,l=t;while(i=r.stepForward()){if(i.type!=="storage.type")continue;var c=u[i.value]||0;if(c>=9){f||(l=r.getCurrentTokenRow()-1),f+=c==9?1:-1;if(f<0)break}else if(c>=a)break}f||(l=r.getCurrentTokenRow()-1);while(l>t&&!/\S/.test(e.getLine(l)))l--;return new s(t,e.getLine(t).length,l,e.getLine(l).length)}}.call(a.prototype)}),define("ace/mode/latex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/latex_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/latex"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./latex_highlight_rules").LatexHighlightRules,o=e("./behaviour/cstyle").CstyleBehaviour,u=e("./folding/latex").FoldMode,a=function(){this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=new o({braces:!0})};r.inherits(a,i),function(){this.type="text",this.lineCommentStart="%",this.$id="ace/mode/latex",this.getMatching=function(e,t,n){t==undefined&&(t=e.selection.lead),typeof t=="object"&&(n=t.column,t=t.row);var r=e.getTokenAt(t,n);if(!r)return;if(r.value=="\\begin"||r.value=="\\end")return this.foldingRules.latexBlock(e,t,n,!0)}}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/latex"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-latte.js b/www/js/ace/mode-latte.js deleted file mode 100644 index 136e953a0..000000000 --- a/www/js/ace/mode-latte.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/latte_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){i.call(this);for(var e in this.$rules)this.$rules[e].unshift({token:"comment.start.latte",regex:"\\{\\*",push:[{token:"comment.end.latte",regex:".*\\*\\}",next:"pop"},{defaultToken:"comment"}]},{token:"meta.tag.punctuation.tag-open.latte",regex:"\\{(?![\\s'\"{}]|$)/?",push:[{token:"meta.tag.latte",regex:"(?:_|=|[a-z]\\w*(?:[.:-]\\w+)*)?",next:[{token:"meta.tag.punctuation.tag-close.latte",regex:"\\}",next:"pop"},{include:"latte-content"}]}]});this.$rules.tag_stuff.unshift({token:"meta.attribute.latte",regex:"n:[\\w-]+",next:[{include:"tag_whitespace"},{token:"keyword.operator.attribute-equals.xml",regex:"=",next:[{token:"string.attribute-value.xml",regex:"'",next:[{token:"string.attribute-value.xml",regex:"'",next:"tag_stuff"},{include:"latte-content"}]},{token:"string.attribute-value.xml",regex:'"',next:[{token:"string.attribute-value.xml",regex:'"',next:"tag_stuff"},{include:"latte-content"}]},{token:"text.tag-whitespace.xml",regex:"\\s",next:"tag_stuff"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"tag_stuff"},{include:"latte-content"}]},{token:"empty",regex:"",next:"tag_stuff"}]}),this.$rules["latte-content"]=[{token:"comment.start.latte",regex:"\\/\\*",push:[{token:"comment.end.latte",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]},{token:"string.start",regex:'"',push:[{token:"constant.language.escape",regex:'\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})'},{token:"variable",regex:/\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/},{token:"variable",regex:/\$\{[^"\}]+\}?/},{token:"string.end",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:"'",push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:"'",next:"pop"},{defaultToken:"string"}]},{token:"keyword.control",regex:"\\b(?:INF|NAN|and|or|xor|AND|OR|XOR|clone|new|instanceof|return|continue|break|as)\\b"},{token:"constant.language",regex:"\\b(?:true|false|null|TRUE|FALSE|NULL)\\b"},{token:"variable",regex:/\$\w+/},{token:"constant.numeric",regex:"[+-]?[0-9]+(?:\\.[0-9]+)?(?:e[0-9]+)?"},{token:["support.class","keyword.operator"],regex:"\\b(\\w+)(::)"},{token:"constant.language",regex:"\\b(?:[A-Z0-9_]+)\\b"},{token:"string.unquoted",regex:"\\w+(?:-+\\w+)*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"keyword.operator",regex:"::|=>|->|\\?->|\\?\\?->|\\+\\+|--|<<|>>|<=>|<=|>=|===|!==|==|!=|<>|&&|\\|\\||\\?\\?|\\?>|\\*\\*|\\.\\.\\.|[^'\"]"}],this.normalizeRules()};r.inherits(o,s),t.LatteHighlightRules=o}),define("ace/mode/latte",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/latte_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./latte_highlight_rules").LatteHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=function(){i.call(this),this.HighlightRules=s,this.$outdent=new o};r.inherits(u,i),function(){this.blockComment={start:"{*",end:"*}"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*\{(?:if|else|elseif|ifset|elseifset|ifchanged|switch|case|foreach|iterateWhile|for|while|first|last|sep|try|capture|spaceless|snippet|block|define|embed|snippetArea)\b[^{]*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return/^\s+\{\/$/.test(t+n)},this.autoOutdent=function(e,t,n){},this.$id="ace/mode/latte"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/latte"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-less.js b/www/js/ace/mode-less.js deleted file mode 100644 index b99e18bbb..000000000 --- a/www/js/ace/mode-less.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./css_highlight_rules"),o=function(){var e="@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|or|and|when|not",t=e.split("|"),n=s.supportType.split("|"),r=this.createKeywordMapper({"support.constant":s.supportConstant,keyword:e,"support.constant.color":s.supportConstantColor,"support.constant.fonts":s.supportConstantFonts},"identifier",!0),i="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+i+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:i},{token:["support.function","paren.lparen","string","paren.rparen"],regex:"(url)(\\()(.*)(\\))"},{token:["support.function","paren.lparen"],regex:"(:extend|[a-z0-9_\\-]+)(\\()"},{token:function(e){return t.indexOf(e.toLowerCase())>-1?"keyword":"variable"},regex:"[@\\$][a-z0-9_\\-@\\$]*\\b"},{token:"variable",regex:"[@\\$]\\{[a-z0-9_\\-@\\$]*\\}"},{token:function(e,t){return n.indexOf(e.toLowerCase())>-1?["support.type.property","text"]:["support.type.unknownProperty","text"]},regex:"([a-z0-9-_]+)(\\s*:)"},{token:"keyword",regex:"&"},{token:r,regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z_][a-z0-9-_]*"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|=|!=|-|%|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()};r.inherits(o,i),t.LessHighlightRules=o}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/less",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/less_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/css_completions","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./less_highlight_rules").LessHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/css").CssBehaviour,a=e("./css_completions").CssCompletions,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.$completer=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions("ruleset",t,n,r)},this.$id="ace/mode/less"}.call(l.prototype),t.Mode=l}); (function() { - window.require(["ace/mode/less"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-liquid.js b/www/js/ace/mode-liquid.js deleted file mode 100644 index 45542f545..000000000 --- a/www/js/ace/mode-liquid.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=e("../worker/worker_client").WorkerClient,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/json_worker","JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(f.prototype),t.Mode=f}),define("ace/mode/liquid_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules","ace/mode/html_highlight_rules","ace/mode/json_highlight_rules","ace/mode/javascript_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./css_highlight_rules").CssHighlightRules,o=e("./html_highlight_rules").HtmlHighlightRules,u=e("./json_highlight_rules").JsonHighlightRules,a=e("./javascript_highlight_rules").JavaScriptHighlightRules,f=function(){function e(e){var t=e.length;return function(n){var r=n.indexOf(e),i=[{type:"meta.tag.punctuation.tag-open",value:"{%"},{type:"text",value:n.slice(2,r)},{type:"keyword.tag"+e+".tag-name",value:n.slice(r,r+t)},{type:"text",value:n.slice(r+t,n.indexOf("%}"))},{type:"meta.tag.punctuation.tag-close",value:"%}"}];return i}}o.call(this);for(var t in this.$rules)this.$rules[t].unshift({token:"comment.block",regex:/{%-?\s*comment\s*-?%}/,next:[{token:"comment.block",regex:/{%-?\s*endcomment\s*-?%}/,next:"pop"},{defaultToken:"comment",caseInsensitive:!1}]},{token:"comment.line",regex:/{%-?\s*#/,next:[{token:"comment.line",regex:/-?%}/,next:"pop"},{defaultToken:"comment",caseInsensitive:!1}]},{token:"style.embedded.start",regex:/({%-?\s*\bstyle\b\s*-?%})/,next:"style-start",onMatch:e("style")},{regex:/({%-?\s*\bstylesheet\b\s*-?%})/,next:"stylesheet-start",onMatch:e("stylesheet")},{regex:/({%-?\s*\bschema\b\s*-?%})/,next:"schema-start",onMatch:e("schema")},{regex:/({%-?\s*\bjavascript\b\s*-?%})/,next:"javascript-start",onMatch:e("javascript")},{token:"meta.tag.punctuation.tag-open",regex:/({%)/,next:[{token:"keyword.block",regex:/-?\s*[a-zA-Z_$][a-zA-Z0-9_$]+\b/,next:"liquid-start"},{token:"meta.tag.punctuation.tag-close",regex:/(-?)(%})/,next:"pop"}]},{token:"meta.tag.punctuation.ouput-open",regex:/({{)/,push:"liquid-start"});this.embedRules(u,"schema-",[{token:"schema-start",next:"pop",regex:/({%-?\s*\bendschema\b\s*-?%})/,onMatch:e("endschema")}]),this.embedRules(a,"javascript-",[{token:"javascript-start",next:"pop",regex:/({%-?\s*\bendjavascript\b\s*-?%})/,onMatch:e("endjavascript")}]),this.embedRules(s,"style-",[{token:"style-start",next:"pop",regex:/({%-?\s*\bendstyle\b\s*-?%})/,onMatch:e("endstyle")}]),this.embedRules(s,"stylesheet-",[{token:"stylesheet-start",next:"pop",regex:/({%-?\s*\bendstylesheet\b\s*-?%})/,onMatch:e("endstylesheet")}]),this.addRules({"liquid-start":[{token:"meta.tag.punctuation.ouput-close",regex:/}}/,next:"pop"},{token:"meta.tag.punctuation.tag-close",regex:/%}/,next:"pop"},{token:"string",regex:/['](?:(?:\\.)|(?:[^'\\]))*?[']/},{token:"string",regex:/["](?:(?:\\.)|(?:[^'\\]))*?["]/},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:"keyword.operator",regex:/\*|\-|\+|=|!=|\?\|\:/},{token:"constant.language.boolean",regex:/(?:true|false|nil|empty)\b/},{token:"keyword.operator",regex:/\s+(?:and|contains|in|with)\b\s+/},{token:["keyword.operator","support.function"],regex:/(\|\s*)([a-zA-Z_]+)/},{token:"support.function",regex:/\s*([a-zA-Z_]+\b)(?=:)/},{token:"keyword.operator",regex:/(:)\s*(?=[a-zA-Z_])/},{token:["support.class","keyword.operator","support.object","keyword.operator","variable.parameter"],regex:/(\w+)(\.)(\w+)(\.)?(\w+)?/},{token:"variable.parameter",regex:/\.([a-zA-Z_$][a-zA-Z0-9_$]*\b)$/},{token:"support.class",regex:/(?:additional_checkout_buttons|content_for_additional_checkout_buttons)\b/},{token:"paren.lparen",regex:/[\[\({]/},{token:"paren.rparen",regex:/[\])}]/},{token:"text",regex:/\s+/}]}),this.normalizeRules()};r.inherits(f,i),t.LiquidHighlightRules=f}),define("ace/mode/liquid",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/html","ace/mode/javascript","ace/mode/json","ace/mode/css","ace/mode/liquid_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("./html").Mode,o=e("./javascript").Mode,u=e("./json").Mode,a=e("./css").Mode,f=e("./liquid_highlight_rules").LiquidHighlightRules,l=e("./matching_brace_outdent").MatchingBraceOutdent,c=e("./folding/cstyle").FoldMode,h=function(){u.call(this),s.call(this),a.call(this),o.call(this),this.HighlightRules=f,this.foldingRules=new c};r.inherits(h,i),function(){this.blockComment={start:""},this.voidElements=(new s).voidElements,this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/liquid",this.snippetFileId="ace/snippets/liquid"}.call(h.prototype),t.Mode=h}); (function() { - window.require(["ace/mode/liquid"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-lisp.js b/www/js/ace/mode-lisp.js deleted file mode 100644 index 656c18631..000000000 --- a/www/js/ace/mode-lisp.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/lisp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="case|do|let|loop|if|else|when",t="eq|neq|and|or",n="null|nil",r="cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn",i=this.createKeywordMapper({"keyword.control":e,"keyword.operator":t,"constant.language":n,"support.function":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:";.*$"},{token:["storage.type.function-type.lisp","text","entity.name.function.lisp"],regex:"(?:\\b(?:(defun|defmethod|defmacro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)"},{token:["punctuation.definition.constant.character.lisp","constant.character.lisp"],regex:"(#)((?:\\w|[\\\\+-=<>'\"&#])+)"},{token:["punctuation.definition.variable.lisp","variable.other.global.lisp","punctuation.definition.variable.lisp"],regex:"(\\*)(\\S*)(\\*)"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"string",regex:'"(?=.)',next:"qqstring"}],qqstring:[{token:"constant.character.escape.lisp",regex:"\\\\."},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"}]}};r.inherits(s,i),t.LispHighlightRules=s}),define("ace/mode/lisp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lisp_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lisp_highlight_rules").LispHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart=";",this.$id="ace/mode/lisp"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/lisp"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-livescript.js b/www/js/ace/mode-livescript.js deleted file mode 100644 index 49968a68b..000000000 --- a/www/js/ace/mode-livescript.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/livescript",["require","exports","module","ace/tokenizer","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/text"],function(e,t,n){function u(e,t){function n(){}return n.prototype=(e.superclass=t).prototype,(e.prototype=new n).constructor=e,typeof t.extended=="function"&&t.extended(e),e}function a(e,t){var n={}.hasOwnProperty;for(var r in t)n.call(t,r)&&(e[r]=t[r]);return e}var r,i,s,o;r="(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*",t.Mode=i=function(t){function o(){var t;this.$tokenizer=new(e("../tokenizer").Tokenizer)(o.Rules);if(t=e("../mode/matching_brace_outdent"))this.$outdent=new t.MatchingBraceOutdent;this.$id="ace/mode/livescript",this.$behaviour=new(e("./behaviour/cstyle").CstyleBehaviour)}var n,i=u((a(o,t).displayName="LiveScriptMode",o),t).prototype,s=o;return n=RegExp("(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*"+r+")?))\\s*$"),i.getNextLineIndent=function(e,t,r){var i,s;return i=this.$getIndent(t),s=this.$tokenizer.getLineTokens(t,e).tokens,(!s.length||s[s.length-1].type!=="comment")&&e==="start"&&n.test(t)&&(i+=r),i},i.lineCommentStart="#",i.blockComment={start:"###",end:"###"},i.checkOutdent=function(e,t,n){var r;return(r=this.$outdent)!=null?r.checkOutdent(t,n):void 8},i.autoOutdent=function(e,t,n){var r;return(r=this.$outdent)!=null?r.autoOutdent(t,n):void 8},o}(e("../mode/text").Mode),s="(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))",o={defaultToken:"string"},i.Rules={start:[{token:"keyword",regex:"(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)"+s},{token:"constant.language",regex:"(?:true|false|yes|no|on|off|null|void|undefined)"+s},{token:"invalid.illegal",regex:"(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)"+s},{token:"language.support.class",regex:"(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)"+s},{token:"language.support.function",regex:"(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)"+s},{token:"variable.language",regex:"(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)"+s},{token:"identifier",regex:r+"\\s*:(?![:=])"},{token:"variable",regex:r},{token:"keyword.operator",regex:"(?:\\.{3}|\\s+\\?)"},{token:"keyword.variable",regex:"(?:@+|::|\\.\\.)",next:"key"},{token:"keyword.operator",regex:"\\.\\s*",next:"key"},{token:"string",regex:"\\\\\\S[^\\s,;)}\\]]*"},{token:"string.doc",regex:"'''",next:"qdoc"},{token:"string.doc",regex:'"""',next:"qqdoc"},{token:"string",regex:"'",next:"qstring"},{token:"string",regex:'"',next:"qqstring"},{token:"string",regex:"`",next:"js"},{token:"string",regex:"<\\[",next:"words"},{token:"string.regex",regex:"//",next:"heregex"},{token:"comment.doc",regex:"/\\*",next:"comment"},{token:"comment",regex:"#.*"},{token:"string.regex",regex:"\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}",next:"key"},{token:"constant.numeric",regex:"(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)"},{token:"lparen",regex:"[({[]"},{token:"rparen",regex:"[)}\\]]",next:"key"},{token:"keyword.operator",regex:"[\\^!|&%+\\-]+"},{token:"text",regex:"\\s+"}],heregex:[{token:"string.regex",regex:".*?//[gimy$?]{0,4}",next:"start"},{token:"string.regex",regex:"\\s*#{"},{token:"comment.regex",regex:"\\s+(?:#.*)?"},{defaultToken:"string.regex"}],key:[{token:"keyword.operator",regex:"[.?@!]+"},{token:"identifier",regex:r,next:"start"},{token:"text",regex:"",next:"start"}],comment:[{token:"comment.doc",regex:".*?\\*/",next:"start"},{defaultToken:"comment.doc"}],qdoc:[{token:"string",regex:".*?'''",next:"key"},o],qqdoc:[{token:"string",regex:'.*?"""',next:"key"},o],qstring:[{token:"string",regex:"[^\\\\']*(?:\\\\.[^\\\\']*)*'",next:"key"},o],qqstring:[{token:"string",regex:'[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',next:"key"},o],js:[{token:"string",regex:"[^\\\\`]*(?:\\\\.[^\\\\`]*)*`",next:"key"},o],words:[{token:"string",regex:".*?\\]>",next:"key"},o]}}); (function() { - window.require(["ace/mode/livescript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-logiql.js b/www/js/ace/mode-logiql.js deleted file mode 100644 index 19cf90521..000000000 --- a/www/js/ace/mode-logiql.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/logiql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.block",regex:"/\\*",push:[{token:"comment.block",regex:"\\*/",next:"pop"},{defaultToken:"comment.block"}]},{token:"comment.single",regex:"//.*"},{token:"constant.numeric",regex:"\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?[fd]?"},{token:"string",regex:'"',push:[{token:"string",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"constant.language",regex:"\\b(true|false)\\b"},{token:"entity.name.type.logicblox",regex:"`[a-zA-Z_:]+(\\d|\\a)*\\b"},{token:"keyword.start",regex:"->",comment:"Constraint"},{token:"keyword.start",regex:"-->",comment:"Level 1 Constraint"},{token:"keyword.start",regex:"<-",comment:"Rule"},{token:"keyword.start",regex:"<--",comment:"Level 1 Rule"},{token:"keyword.end",regex:"\\.",comment:"Terminator"},{token:"keyword.other",regex:"!",comment:"Negation"},{token:"keyword.other",regex:",",comment:"Conjunction"},{token:"keyword.other",regex:";",comment:"Disjunction"},{token:"keyword.operator",regex:"<=|>=|!=|<|>",comment:"Equality"},{token:"keyword.other",regex:"@",comment:"Equality"},{token:"keyword.operator",regex:"\\+|-|\\*|/",comment:"Arithmetic operations"},{token:"keyword",regex:"::",comment:"Colon colon"},{token:"support.function",regex:"\\b(agg\\s*<<)",push:[{include:"$self"},{token:"support.function",regex:">>",next:"pop"}]},{token:"storage.modifier",regex:"\\b(lang:[\\w:]*)"},{token:["storage.type","text"],regex:"(export|sealed|clauses|block|alias|alias_all)(\\s*\\()(?=`)"},{token:"entity.name",regex:"[a-zA-Z_][a-zA-Z_0-9:]*(@prev|@init|@final)?(?=(\\(|\\[))"},{token:"variable.parameter",regex:"([a-zA-Z][a-zA-Z_0-9]*|_)\\s*(?=(,|\\.|<-|->|\\)|\\]|=))"}]},this.normalizeRules()};r.inherits(s,i),t.LogiQLHighlightRules=s}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u|<--|<-|->|{)\s*$/.test(t)&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)?!0:n!=="\n"&&n!=="\r\n"?!1:/^\s+/.test(t)?!0:!1},this.autoOutdent=function(e,t,n){if(this.$outdent.autoOutdent(t,n))return;var r=t.getLine(n),i=r.match(/^\s+/),s=r.lastIndexOf(".")+1;if(!i||!n||!s)return 0;var o=t.getLine(n+1),u=this.getMatching(t,{row:n,column:s});if(!u||u.start.row==n)return 0;s=i[0].length;var f=this.$getIndent(t.getLine(u.start.row));t.replace(new a(n+1,0,n+1,s),f)},this.getMatching=function(e,t,n){t==undefined&&(t=e.selection.lead),typeof t=="object"&&(n=t.column,t=t.row);var r=e.getTokenAt(t,n),i="keyword.start",s="keyword.end",o;if(!r)return;if(r.type==i){var f=new u(e,t,n);f.step=f.stepForward}else{if(r.type!=s)return;var f=new u(e,t,n);f.step=f.stepBackward}while(o=f.step())if(o.type==i||o.type==s)break;if(!o||o.type==r.type)return;var l=f.getCurrentTokenColumn(),t=f.getCurrentTokenRow();return new a(t,l,t,l+o.value.length)},this.$id="ace/mode/logiql"}.call(l.prototype),t.Mode=l}); (function() { - window.require(["ace/mode/logiql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-logtalk.js b/www/js/ace/mode-logtalk.js deleted file mode 100644 index 51feadb78..000000000 --- a/www/js/ace/mode-logtalk.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/logtalk_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"punctuation.definition.comment.logtalk",regex:"/\\*",push:[{token:"punctuation.definition.comment.logtalk",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.logtalk"}]},{todo:"fix grouping",token:["comment.line.percentage.logtalk","punctuation.definition.comment.logtalk"],regex:"%.*$\\n?"},{todo:"fix grouping",token:["storage.type.opening.logtalk","punctuation.definition.storage.type.logtalk"],regex:":-\\s(?:object|protocol|category|module)(?=[(])"},{todo:"fix grouping",token:["storage.type.closing.logtalk","punctuation.definition.storage.type.logtalk"],regex:":-\\send_(?:object|protocol|category)(?=[.])"},{caseInsensitive:!1,token:"storage.type.relations.logtalk",regex:"\\b(?:complements|extends|i(?:nstantiates|mp(?:orts|lements))|specializes)(?=[(])"},{caseInsensitive:!1,todo:"fix grouping",token:["storage.modifier.others.logtalk","punctuation.definition.storage.modifier.logtalk"],regex:":-\\s(?:e(?:lse|ndif)|built_in|dynamic|synchronized|threaded)(?=[.])"},{caseInsensitive:!1,todo:"fix grouping",token:["storage.modifier.others.logtalk","punctuation.definition.storage.modifier.logtalk"],regex:":-\\s(?:c(?:alls|oinductive)|e(?:lif|n(?:coding|sure_loaded)|xport)|i(?:f|n(?:clude|itialization|fo))|reexport|set_(?:logtalk|prolog)_flag|uses)(?=[(])"},{caseInsensitive:!1,todo:"fix grouping",token:["storage.modifier.others.logtalk","punctuation.definition.storage.modifier.logtalk"],regex:":-\\s(?:alias|info|d(?:ynamic|iscontiguous)|m(?:eta_(?:non_terminal|predicate)|ode|ultifile)|p(?:ublic|r(?:otected|ivate))|op|use(?:s|_module)|synchronized)(?=[(])"},{token:"keyword.operator.message-sending.logtalk",regex:"(:|::|\\^\\^)"},{token:"keyword.operator.external-call.logtalk",regex:"([{}])"},{token:"keyword.operator.mode.logtalk",regex:"(\\?|@)"},{token:"keyword.operator.comparison.term.logtalk",regex:"(@=<|@<|@>|@>=|==|\\\\==)"},{token:"keyword.operator.comparison.arithmetic.logtalk",regex:"(=<|<|>|>=|=:=|=\\\\=)"},{token:"keyword.operator.bitwise.logtalk",regex:"(<<|>>|/\\\\|\\\\/|\\\\)"},{token:"keyword.operator.evaluable.logtalk",regex:"\\b(?:e|pi|div|mod|rem)\\b(?![-!(^~])"},{token:"keyword.operator.evaluable.logtalk",regex:"(\\*\\*|\\+|-|\\*|/|//)"},{token:"keyword.operator.misc.logtalk",regex:"(:-|!|\\\\+|,|;|-->|->|=|\\=|\\.|=\\.\\.|\\^|\\bas\\b|\\bis\\b)"},{caseInsensitive:!1,token:"support.function.evaluable.logtalk",regex:"\\b(a(bs|cos|sin|tan|tan2)|c(eiling|os)|div|exp|flo(at(_(integer|fractional)_part)?|or)|log|m(ax|in|od)|r(em|ound)|s(i(n|gn)|qrt)|t(an|runcate)|xor)(?=[(])"},{token:"support.function.control.logtalk",regex:"\\b(?:true|fa(?:il|lse)|repeat|(?:instantiation|system)_error)\\b(?![-!(^~])"},{token:"support.function.control.logtalk",regex:"\\b((?:uninstantiation|type|domain|existence|permission|representation|evaluation|resource|syntax)_error)(?=[(])"},{token:"support.function.control.logtalk",regex:"\\b(?:ca(?:ll|tch)|ignore|throw|once)(?=[(])"},{token:"support.function.chars-and-bytes-io.logtalk",regex:"\\b(?:(?:get|p(?:eek|ut))_(c(?:har|ode)|byte)|nl)(?=[(])"},{token:"support.function.chars-and-bytes-io.logtalk",regex:"\\bnl\\b"},{token:"support.function.atom-term-processing.logtalk",regex:"\\b(?:atom_(?:length|c(?:hars|o(?:ncat|des)))|sub_atom|char_code|number_c(?:har|ode)s)(?=[(])"},{caseInsensitive:!1,token:"support.function.term-testing.logtalk",regex:"\\b(?:var|atom(ic)?|integer|float|c(?:allable|ompound)|n(?:onvar|umber)|ground|acyclic_term)(?=[(])"},{token:"support.function.term-comparison.logtalk",regex:"\\b(compare)(?=[(])"},{token:"support.function.term-io.logtalk",regex:"\\b(?:read(_term)?|write(?:q|_(?:canonical|term))?|(current_)?(?:char_conversion|op))(?=[(])"},{caseInsensitive:!1,token:"support.function.term-creation-and-decomposition.logtalk",regex:"\\b(arg|copy_term|functor|numbervars|term_variables)(?=[(])"},{caseInsensitive:!1,token:"support.function.term-unification.logtalk",regex:"\\b(subsumes_term|unify_with_occurs_check)(?=[(])"},{caseInsensitive:!1,token:"support.function.stream-selection-and-control.logtalk",regex:"\\b(?:(?:se|curren)t_(?:in|out)put|open|close|flush_output|stream_property|at_end_of_stream|set_stream_position)(?=[(])"},{token:"support.function.stream-selection-and-control.logtalk",regex:"\\b(?:flush_output|at_end_of_stream)\\b"},{token:"support.function.prolog-flags.logtalk",regex:"\\b((?:se|curren)t_prolog_flag)(?=[(])"},{token:"support.function.compiling-and-loading.logtalk",regex:"\\b(logtalk_(?:compile|l(?:ibrary_path|oad|oad_context)|make(_target_action)?))(?=[(])"},{token:"support.function.compiling-and-loading.logtalk",regex:"\\b(logtalk_make)\\b"},{caseInsensitive:!1,token:"support.function.event-handling.logtalk",regex:"\\b(?:(?:abolish|define)_events|current_event)(?=[(])"},{token:"support.function.implementation-defined-hooks.logtalk",regex:"\\b(?:(?:create|current|set)_logtalk_flag|halt)(?=[(])"},{token:"support.function.implementation-defined-hooks.logtalk",regex:"\\b(halt)\\b"},{token:"support.function.sorting.logtalk",regex:"\\b((key)?(sort))(?=[(])"},{caseInsensitive:!1,token:"support.function.entity-creation-and-abolishing.logtalk",regex:"\\b((c(?:reate|urrent)|abolish)_(?:object|protocol|category))(?=[(])"},{caseInsensitive:!1,token:"support.function.reflection.logtalk",regex:"\\b((object|protocol|category)_property|co(mplements_object|nforms_to_protocol)|extends_(object|protocol|category)|imp(orts_category|lements_protocol)|(instantiat|specializ)es_class)(?=[(])"},{token:"support.function.logtalk",regex:"\\b((?:for|retract)all)(?=[(])"},{caseInsensitive:!1,token:"support.function.execution-context.logtalk",regex:"\\b(?:context|parameter|se(?:lf|nder)|this)(?=[(])"},{token:"support.function.database.logtalk",regex:"\\b(?:a(?:bolish|ssert(?:a|z))|clause|retract(all)?)(?=[(])"},{token:"support.function.all-solutions.logtalk",regex:"\\b((?:bag|set)of|f(?:ind|or)all)(?=[(])"},{caseInsensitive:!1,token:"support.function.multi-threading.logtalk",regex:"\\b(threaded(_(ca(?:ll|ncel)|once|ignore|exit|peek|wait|notify))?)(?=[(])"},{caseInsensitive:!1,token:"support.function.engines.logtalk",regex:"\\b(threaded_engine(_(create|destroy|self|next(?:_reified)?|yield|post|fetch))?)(?=[(])"},{caseInsensitive:!1,token:"support.function.reflection.logtalk",regex:"\\b(?:current_predicate|predicate_property)(?=[(])"},{token:"support.function.event-handler.logtalk",regex:"\\b(?:before|after)(?=[(])"},{token:"support.function.message-forwarding-handler.logtalk",regex:"\\b(forward)(?=[(])"},{token:"support.function.grammar-rule.logtalk",regex:"\\b(?:expand_(?:goal|term)|(?:goal|term)_expansion|phrase)(?=[(])"},{token:"punctuation.definition.string.begin.logtalk",regex:"'",push:[{token:"constant.character.escape.logtalk",regex:"\\\\([\\\\abfnrtv\"']|(x[a-fA-F0-9]+|[0-7]+)\\\\)"},{token:"punctuation.definition.string.end.logtalk",regex:"'",next:"pop"},{defaultToken:"string.quoted.single.logtalk"}]},{token:"punctuation.definition.string.begin.logtalk",regex:'"',push:[{token:"constant.character.escape.logtalk",regex:"\\\\([\\\\abfnrtv\"']|(x[a-fA-F0-9]+|[0-7]+)\\\\)"},{token:"punctuation.definition.string.end.logtalk",regex:'"',next:"pop"},{defaultToken:"string.quoted.double.logtalk"}]},{token:"constant.numeric.logtalk",regex:"\\b(0b[0-1]+|0o[0-7]+|0x[0-9a-fA-F]+)\\b"},{token:"constant.numeric.logtalk",regex:"\\b(0'\\\\.|0'.|0''|0'\")"},{token:"constant.numeric.logtalk",regex:"\\b(\\d+\\.?\\d*((e|E)(\\+|-)?\\d+)?)\\b"},{token:"variable.other.logtalk",regex:"\\b([A-Z_][A-Za-z0-9_]*)\\b"}]},this.normalizeRules()};r.inherits(s,i),t.LogtalkHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/logtalk",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/logtalk_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./logtalk_highlight_rules").LogtalkHighlightRules,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=o,this.foldingRules=new u,this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="%",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/logtalk"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/logtalk"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-lsl.js b/www/js/ace/mode-lsl.js deleted file mode 100644 index 6d0c5a967..000000000 --- a/www/js/ace/mode-lsl.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/lsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function s(){var e=this.createKeywordMapper({"constant.language.float.lsl":"DEG_TO_RAD|PI|PI_BY_TWO|RAD_TO_DEG|SQRT2|TWO_PI","constant.language.integer.lsl":"ACTIVE|AGENT|AGENT_ALWAYS_RUN|AGENT_ATTACHMENTS|AGENT_AUTOPILOT|AGENT_AWAY|AGENT_BUSY|AGENT_BY_LEGACY_NAME|AGENT_BY_USERNAME|AGENT_CROUCHING|AGENT_FLYING|AGENT_IN_AIR|AGENT_LIST_PARCEL|AGENT_LIST_PARCEL_OWNER|AGENT_LIST_REGION|AGENT_MOUSELOOK|AGENT_ON_OBJECT|AGENT_SCRIPTED|AGENT_SITTING|AGENT_TYPING|AGENT_WALKING|ALL_SIDES|ANIM_ON|ATTACH_AVATAR_CENTER|ATTACH_BACK|ATTACH_BELLY|ATTACH_CHEST|ATTACH_CHIN|ATTACH_HEAD|ATTACH_HUD_BOTTOM|ATTACH_HUD_BOTTOM_LEFT|ATTACH_HUD_BOTTOM_RIGHT|ATTACH_HUD_CENTER_1|ATTACH_HUD_CENTER_2|ATTACH_HUD_TOP_CENTER|ATTACH_HUD_TOP_LEFT|ATTACH_HUD_TOP_RIGHT|ATTACH_LEAR|ATTACH_LEFT_PEC|ATTACH_LEYE|ATTACH_LFOOT|ATTACH_LHAND|ATTACH_LHIP|ATTACH_LLARM|ATTACH_LLLEG|ATTACH_LSHOULDER|ATTACH_LUARM|ATTACH_LULEG|ATTACH_MOUTH|ATTACH_NECK|ATTACH_NOSE|ATTACH_PELVIS|ATTACH_REAR|ATTACH_REYE|ATTACH_RFOOT|ATTACH_RHAND|ATTACH_RHIP|ATTACH_RIGHT_PEC|ATTACH_RLARM|ATTACH_RLLEG|ATTACH_RSHOULDER|ATTACH_RUARM|ATTACH_RULEG|AVOID_CHARACTERS|AVOID_DYNAMIC_OBSTACLES|AVOID_NONE|CAMERA_ACTIVE|CAMERA_BEHINDNESS_ANGLE|CAMERA_BEHINDNESS_LAG|CAMERA_DISTANCE|CAMERA_FOCUS|CAMERA_FOCUS_LAG|CAMERA_FOCUS_LOCKED|CAMERA_FOCUS_OFFSET|CAMERA_FOCUS_THRESHOLD|CAMERA_PITCH|CAMERA_POSITION|CAMERA_POSITION_LAG|CAMERA_POSITION_LOCKED|CAMERA_POSITION_THRESHOLD|CHANGED_ALLOWED_DROP|CHANGED_COLOR|CHANGED_INVENTORY|CHANGED_LINK|CHANGED_MEDIA|CHANGED_OWNER|CHANGED_REGION|CHANGED_REGION_START|CHANGED_SCALE|CHANGED_SHAPE|CHANGED_TELEPORT|CHANGED_TEXTURE|CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES|CHARACTER_AVOIDANCE_MODE|CHARACTER_CMD_JUMP|CHARACTER_CMD_SMOOTH_STOP|CHARACTER_CMD_STOP|CHARACTER_DESIRED_SPEED|CHARACTER_DESIRED_TURN_SPEED|CHARACTER_LENGTH|CHARACTER_MAX_ACCEL|CHARACTER_MAX_DECEL|CHARACTER_MAX_SPEED|CHARACTER_MAX_TURN_RADIUS|CHARACTER_ORIENTATION|CHARACTER_RADIUS|CHARACTER_STAY_WITHIN_PARCEL|CHARACTER_TYPE|CHARACTER_TYPE_A|CHARACTER_TYPE_B|CHARACTER_TYPE_C|CHARACTER_TYPE_D|CHARACTER_TYPE_NONE|CLICK_ACTION_BUY|CLICK_ACTION_NONE|CLICK_ACTION_OPEN|CLICK_ACTION_OPEN_MEDIA|CLICK_ACTION_PAY|CLICK_ACTION_PLAY|CLICK_ACTION_SIT|CLICK_ACTION_TOUCH|CONTENT_TYPE_ATOM|CONTENT_TYPE_FORM|CONTENT_TYPE_HTML|CONTENT_TYPE_JSON|CONTENT_TYPE_LLSD|CONTENT_TYPE_RSS|CONTENT_TYPE_TEXT|CONTENT_TYPE_XHTML|CONTENT_TYPE_XML|CONTROL_BACK|CONTROL_DOWN|CONTROL_FWD|CONTROL_LBUTTON|CONTROL_LEFT|CONTROL_ML_LBUTTON|CONTROL_RIGHT|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT|CONTROL_UP|DATA_BORN|DATA_NAME|DATA_ONLINE|DATA_PAYINFO|DATA_SIM_POS|DATA_SIM_RATING|DATA_SIM_STATUS|DEBUG_CHANNEL|DENSITY|ERR_GENERIC|ERR_MALFORMED_PARAMS|ERR_PARCEL_PERMISSIONS|ERR_RUNTIME_PERMISSIONS|ERR_THROTTLED|ESTATE_ACCESS_ALLOWED_AGENT_ADD|ESTATE_ACCESS_ALLOWED_AGENT_REMOVE|ESTATE_ACCESS_ALLOWED_GROUP_ADD|ESTATE_ACCESS_ALLOWED_GROUP_REMOVE|ESTATE_ACCESS_BANNED_AGENT_ADD|ESTATE_ACCESS_BANNED_AGENT_REMOVE|FALSE|FORCE_DIRECT_PATH|FRICTION|GCNP_RADIUS|GCNP_STATIC|GRAVITY_MULTIPLIER|HORIZONTAL|HTTP_BODY_MAXLENGTH|HTTP_BODY_TRUNCATED|HTTP_CUSTOM_HEADER|HTTP_METHOD|HTTP_MIMETYPE|HTTP_PRAGMA_NO_CACHE|HTTP_VERBOSE_THROTTLE|HTTP_VERIFY_CERT|INVENTORY_ALL|INVENTORY_ANIMATION|INVENTORY_BODYPART|INVENTORY_CLOTHING|INVENTORY_GESTURE|INVENTORY_LANDMARK|INVENTORY_NONE|INVENTORY_NOTECARD|INVENTORY_OBJECT|INVENTORY_SCRIPT|INVENTORY_SOUND|INVENTORY_TEXTURE|JSON_APPEND|KFM_CMD_PAUSE|KFM_CMD_PLAY|KFM_CMD_SET_MODE|KFM_CMD_STOP|KFM_COMMAND|KFM_DATA|KFM_FORWARD|KFM_LOOP|KFM_MODE|KFM_PING_PONG|KFM_REVERSE|KFM_ROTATION|KFM_TRANSLATION|LAND_LEVEL|LAND_LOWER|LAND_NOISE|LAND_RAISE|LAND_REVERT|LAND_SMOOTH|LINK_ALL_CHILDREN|LINK_ALL_OTHERS|LINK_ROOT|LINK_SET|LINK_THIS|LIST_STAT_GEOMETRIC_MEAN|LIST_STAT_MAX|LIST_STAT_MEAN|LIST_STAT_MEDIAN|LIST_STAT_MIN|LIST_STAT_NUM_COUNT|LIST_STAT_RANGE|LIST_STAT_STD_DEV|LIST_STAT_SUM|LIST_STAT_SUM_SQUARES|LOOP|MASK_BASE|MASK_EVERYONE|MASK_GROUP|MASK_NEXT|MASK_OWNER|OBJECT_ATTACHED_POINT|OBJECT_BODY_SHAPE_TYPE|OBJECT_CHARACTER_TIME|OBJECT_CLICK_ACTION|OBJECT_CREATOR|OBJECT_DESC|OBJECT_GROUP|OBJECT_HOVER_HEIGHT|OBJECT_LAST_OWNER_ID|OBJECT_NAME|OBJECT_OWNER|OBJECT_PATHFINDING_TYPE|OBJECT_PHANTOM|OBJECT_PHYSICS|OBJECT_PHYSICS_COST|OBJECT_POS|OBJECT_PRIM_EQUIVALENCE|OBJECT_RENDER_WEIGHT|OBJECT_RETURN_PARCEL|OBJECT_RETURN_PARCEL_OWNER|OBJECT_RETURN_REGION|OBJECT_ROOT|OBJECT_ROT|OBJECT_RUNNING_SCRIPT_COUNT|OBJECT_SCRIPT_MEMORY|OBJECT_SCRIPT_TIME|OBJECT_SERVER_COST|OBJECT_STREAMING_COST|OBJECT_TEMP_ON_REZ|OBJECT_TOTAL_SCRIPT_COUNT|OBJECT_UNKNOWN_DETAIL|OBJECT_VELOCITY|OPT_AVATAR|OPT_CHARACTER|OPT_EXCLUSION_VOLUME|OPT_LEGACY_LINKSET|OPT_MATERIAL_VOLUME|OPT_OTHER|OPT_STATIC_OBSTACLE|OPT_WALKABLE|PARCEL_COUNT_GROUP|PARCEL_COUNT_OTHER|PARCEL_COUNT_OWNER|PARCEL_COUNT_SELECTED|PARCEL_COUNT_TEMP|PARCEL_COUNT_TOTAL|PARCEL_DETAILS_AREA|PARCEL_DETAILS_DESC|PARCEL_DETAILS_GROUP|PARCEL_DETAILS_ID|PARCEL_DETAILS_NAME|PARCEL_DETAILS_OWNER|PARCEL_DETAILS_SEE_AVATARS|PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS|PARCEL_FLAG_ALLOW_CREATE_OBJECTS|PARCEL_FLAG_ALLOW_DAMAGE|PARCEL_FLAG_ALLOW_FLY|PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_GROUP_SCRIPTS|PARCEL_FLAG_ALLOW_LANDMARK|PARCEL_FLAG_ALLOW_SCRIPTS|PARCEL_FLAG_ALLOW_TERRAFORM|PARCEL_FLAG_LOCAL_SOUND_ONLY|PARCEL_FLAG_RESTRICT_PUSHOBJECT|PARCEL_FLAG_USE_ACCESS_GROUP|PARCEL_FLAG_USE_ACCESS_LIST|PARCEL_FLAG_USE_BAN_LIST|PARCEL_FLAG_USE_LAND_PASS_LIST|PARCEL_MEDIA_COMMAND_AGENT|PARCEL_MEDIA_COMMAND_AUTO_ALIGN|PARCEL_MEDIA_COMMAND_DESC|PARCEL_MEDIA_COMMAND_LOOP|PARCEL_MEDIA_COMMAND_LOOP_SET|PARCEL_MEDIA_COMMAND_PAUSE|PARCEL_MEDIA_COMMAND_PLAY|PARCEL_MEDIA_COMMAND_SIZE|PARCEL_MEDIA_COMMAND_STOP|PARCEL_MEDIA_COMMAND_TEXTURE|PARCEL_MEDIA_COMMAND_TIME|PARCEL_MEDIA_COMMAND_TYPE|PARCEL_MEDIA_COMMAND_UNLOAD|PARCEL_MEDIA_COMMAND_URL|PASS_ALWAYS|PASS_IF_NOT_HANDLED|PASS_NEVER|PASSIVE|PATROL_PAUSE_AT_WAYPOINTS|PAYMENT_INFO_ON_FILE|PAYMENT_INFO_USED|PAY_DEFAULT|PAY_HIDE|PERMISSION_ATTACH|PERMISSION_CHANGE_LINKS|PERMISSION_CONTROL_CAMERA|PERMISSION_DEBIT|PERMISSION_OVERRIDE_ANIMATIONS|PERMISSION_RETURN_OBJECTS|PERMISSION_SILENT_ESTATE_MANAGEMENT|PERMISSION_TAKE_CONTROLS|PERMISSION_TELEPORT|PERMISSION_TRACK_CAMERA|PERMISSION_TRIGGER_ANIMATION|PERM_ALL|PERM_COPY|PERM_MODIFY|PERM_MOVE|PERM_TRANSFER|PING_PONG|PRIM_ALPHA_MODE|PRIM_ALPHA_MODE_BLEND|PRIM_ALPHA_MODE_EMISSIVE|PRIM_ALPHA_MODE_MASK|PRIM_ALPHA_MODE_NONE|PRIM_BUMP_BARK|PRIM_BUMP_BLOBS|PRIM_BUMP_BRICKS|PRIM_BUMP_BRIGHT|PRIM_BUMP_CHECKER|PRIM_BUMP_CONCRETE|PRIM_BUMP_DARK|PRIM_BUMP_DISKS|PRIM_BUMP_GRAVEL|PRIM_BUMP_LARGETILE|PRIM_BUMP_NONE|PRIM_BUMP_SHINY|PRIM_BUMP_SIDING|PRIM_BUMP_STONE|PRIM_BUMP_STUCCO|PRIM_BUMP_SUCTION|PRIM_BUMP_TILE|PRIM_BUMP_WEAVE|PRIM_BUMP_WOOD|PRIM_COLOR|PRIM_DESC|PRIM_FLEXIBLE|PRIM_FULLBRIGHT|PRIM_GLOW|PRIM_HOLE_CIRCLE|PRIM_HOLE_DEFAULT|PRIM_HOLE_SQUARE|PRIM_HOLE_TRIANGLE|PRIM_LINK_TARGET|PRIM_MATERIAL|PRIM_MATERIAL_FLESH|PRIM_MATERIAL_GLASS|PRIM_MATERIAL_METAL|PRIM_MATERIAL_PLASTIC|PRIM_MATERIAL_RUBBER|PRIM_MATERIAL_STONE|PRIM_MATERIAL_WOOD|PRIM_MEDIA_ALT_IMAGE_ENABLE|PRIM_MEDIA_AUTO_LOOP|PRIM_MEDIA_AUTO_PLAY|PRIM_MEDIA_AUTO_SCALE|PRIM_MEDIA_AUTO_ZOOM|PRIM_MEDIA_CONTROLS|PRIM_MEDIA_CONTROLS_MINI|PRIM_MEDIA_CONTROLS_STANDARD|PRIM_MEDIA_CURRENT_URL|PRIM_MEDIA_FIRST_CLICK_INTERACT|PRIM_MEDIA_HEIGHT_PIXELS|PRIM_MEDIA_HOME_URL|PRIM_MEDIA_MAX_HEIGHT_PIXELS|PRIM_MEDIA_MAX_URL_LENGTH|PRIM_MEDIA_MAX_WHITELIST_COUNT|PRIM_MEDIA_MAX_WHITELIST_SIZE|PRIM_MEDIA_MAX_WIDTH_PIXELS|PRIM_MEDIA_PARAM_MAX|PRIM_MEDIA_PERMS_CONTROL|PRIM_MEDIA_PERMS_INTERACT|PRIM_MEDIA_PERM_ANYONE|PRIM_MEDIA_PERM_GROUP|PRIM_MEDIA_PERM_NONE|PRIM_MEDIA_PERM_OWNER|PRIM_MEDIA_WHITELIST|PRIM_MEDIA_WHITELIST_ENABLE|PRIM_MEDIA_WIDTH_PIXELS|PRIM_NAME|PRIM_NORMAL|PRIM_OMEGA|PRIM_PHANTOM|PRIM_PHYSICS|PRIM_PHYSICS_SHAPE_CONVEX|PRIM_PHYSICS_SHAPE_NONE|PRIM_PHYSICS_SHAPE_PRIM|PRIM_PHYSICS_SHAPE_TYPE|PRIM_POINT_LIGHT|PRIM_POSITION|PRIM_POS_LOCAL|PRIM_ROTATION|PRIM_ROT_LOCAL|PRIM_SCULPT_FLAG_INVERT|PRIM_SCULPT_FLAG_MIRROR|PRIM_SCULPT_TYPE_CYLINDER|PRIM_SCULPT_TYPE_MASK|PRIM_SCULPT_TYPE_PLANE|PRIM_SCULPT_TYPE_SPHERE|PRIM_SCULPT_TYPE_TORUS|PRIM_SHINY_HIGH|PRIM_SHINY_LOW|PRIM_SHINY_MEDIUM|PRIM_SHINY_NONE|PRIM_SIZE|PRIM_SLICE|PRIM_SPECULAR|PRIM_TEMP_ON_REZ|PRIM_TEXGEN|PRIM_TEXGEN_DEFAULT|PRIM_TEXGEN_PLANAR|PRIM_TEXT|PRIM_TEXTURE|PRIM_TYPE|PRIM_TYPE_BOX|PRIM_TYPE_CYLINDER|PRIM_TYPE_PRISM|PRIM_TYPE_RING|PRIM_TYPE_SCULPT|PRIM_TYPE_SPHERE|PRIM_TYPE_TORUS|PRIM_TYPE_TUBE|PROFILE_NONE|PROFILE_SCRIPT_MEMORY|PSYS_PART_BF_DEST_COLOR|PSYS_PART_BF_ONE|PSYS_PART_BF_ONE_MINUS_DEST_COLOR|PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA|PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR|PSYS_PART_BF_SOURCE_ALPHA|PSYS_PART_BF_SOURCE_COLOR|PSYS_PART_BF_ZERO|PSYS_PART_BLEND_FUNC_DEST|PSYS_PART_BLEND_FUNC_SOURCE|PSYS_PART_BOUNCE_MASK|PSYS_PART_EMISSIVE_MASK|PSYS_PART_END_ALPHA|PSYS_PART_END_COLOR|PSYS_PART_END_GLOW|PSYS_PART_END_SCALE|PSYS_PART_FLAGS|PSYS_PART_FOLLOW_SRC_MASK|PSYS_PART_FOLLOW_VELOCITY_MASK|PSYS_PART_INTERP_COLOR_MASK|PSYS_PART_INTERP_SCALE_MASK|PSYS_PART_MAX_AGE|PSYS_PART_RIBBON_MASK|PSYS_PART_START_ALPHA|PSYS_PART_START_COLOR|PSYS_PART_START_GLOW|PSYS_PART_START_SCALE|PSYS_PART_TARGET_LINEAR_MASK|PSYS_PART_TARGET_POS_MASK|PSYS_PART_WIND_MASK|PSYS_SRC_ACCEL|PSYS_SRC_ANGLE_BEGIN|PSYS_SRC_ANGLE_END|PSYS_SRC_BURST_PART_COUNT|PSYS_SRC_BURST_RADIUS|PSYS_SRC_BURST_RATE|PSYS_SRC_BURST_SPEED_MAX|PSYS_SRC_BURST_SPEED_MIN|PSYS_SRC_MAX_AGE|PSYS_SRC_OMEGA|PSYS_SRC_PATTERN|PSYS_SRC_PATTERN_ANGLE|PSYS_SRC_PATTERN_ANGLE_CONE|PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY|PSYS_SRC_PATTERN_DROP|PSYS_SRC_PATTERN_EXPLODE|PSYS_SRC_TARGET_KEY|PSYS_SRC_TEXTURE|PUBLIC_CHANNEL|PURSUIT_FUZZ_FACTOR|PURSUIT_GOAL_TOLERANCE|PURSUIT_INTERCEPT|PURSUIT_OFFSET|PU_EVADE_HIDDEN|PU_EVADE_SPOTTED|PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED|PU_FAILURE_INVALID_GOAL|PU_FAILURE_INVALID_START|PU_FAILURE_NO_NAVMESH|PU_FAILURE_NO_VALID_DESTINATION|PU_FAILURE_OTHER|PU_FAILURE_PARCEL_UNREACHABLE|PU_FAILURE_TARGET_GONE|PU_FAILURE_UNREACHABLE|PU_GOAL_REACHED|PU_SLOWDOWN_DISTANCE_REACHED|RCERR_CAST_TIME_EXCEEDED|RCERR_SIM_PERF_LOW|RCERR_UNKNOWN|RC_DATA_FLAGS|RC_DETECT_PHANTOM|RC_GET_LINK_NUM|RC_GET_NORMAL|RC_GET_ROOT_KEY|RC_MAX_HITS|RC_REJECT_AGENTS|RC_REJECT_LAND|RC_REJECT_NONPHYSICAL|RC_REJECT_PHYSICAL|RC_REJECT_TYPES|REGION_FLAG_ALLOW_DAMAGE|REGION_FLAG_ALLOW_DIRECT_TELEPORT|REGION_FLAG_BLOCK_FLY|REGION_FLAG_BLOCK_TERRAFORM|REGION_FLAG_DISABLE_COLLISIONS|REGION_FLAG_DISABLE_PHYSICS|REGION_FLAG_FIXED_SUN|REGION_FLAG_RESTRICT_PUSHOBJECT|REGION_FLAG_SANDBOX|REMOTE_DATA_CHANNEL|REMOTE_DATA_REPLY|REMOTE_DATA_REQUEST|REQUIRE_LINE_OF_SIGHT|RESTITUTION|REVERSE|ROTATE|SCALE|SCRIPTED|SIM_STAT_PCT_CHARS_STEPPED|SMOOTH|STATUS_BLOCK_GRAB|STATUS_BLOCK_GRAB_OBJECT|STATUS_BOUNDS_ERROR|STATUS_CAST_SHADOWS|STATUS_DIE_AT_EDGE|STATUS_INTERNAL_ERROR|STATUS_MALFORMED_PARAMS|STATUS_NOT_FOUND|STATUS_NOT_SUPPORTED|STATUS_OK|STATUS_PHANTOM|STATUS_PHYSICS|STATUS_RETURN_AT_EDGE|STATUS_ROTATE_X|STATUS_ROTATE_Y|STATUS_ROTATE_Z|STATUS_SANDBOX|STATUS_TYPE_MISMATCH|STATUS_WHITELIST_FAILED|STRING_TRIM|STRING_TRIM_HEAD|STRING_TRIM_TAIL|TOUCH_INVALID_FACE|TRAVERSAL_TYPE|TRAVERSAL_TYPE_FAST|TRAVERSAL_TYPE_NONE|TRAVERSAL_TYPE_SLOW|TRUE|TYPE_FLOAT|TYPE_INTEGER|TYPE_INVALID|TYPE_KEY|TYPE_ROTATION|TYPE_STRING|TYPE_VECTOR|VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY|VEHICLE_ANGULAR_DEFLECTION_TIMESCALE|VEHICLE_ANGULAR_FRICTION_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DIRECTION|VEHICLE_ANGULAR_MOTOR_TIMESCALE|VEHICLE_BANKING_EFFICIENCY|VEHICLE_BANKING_MIX|VEHICLE_BANKING_TIMESCALE|VEHICLE_BUOYANCY|VEHICLE_FLAG_CAMERA_DECOUPLED|VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT|VEHICLE_FLAG_HOVER_TERRAIN_ONLY|VEHICLE_FLAG_HOVER_UP_ONLY|VEHICLE_FLAG_HOVER_WATER_ONLY|VEHICLE_FLAG_LIMIT_MOTOR_UP|VEHICLE_FLAG_LIMIT_ROLL_ONLY|VEHICLE_FLAG_MOUSELOOK_BANK|VEHICLE_FLAG_MOUSELOOK_STEER|VEHICLE_FLAG_NO_DEFLECTION_UP|VEHICLE_HOVER_EFFICIENCY|VEHICLE_HOVER_HEIGHT|VEHICLE_HOVER_TIMESCALE|VEHICLE_LINEAR_DEFLECTION_EFFICIENCY|VEHICLE_LINEAR_DEFLECTION_TIMESCALE|VEHICLE_LINEAR_FRICTION_TIMESCALE|VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE|VEHICLE_LINEAR_MOTOR_DIRECTION|VEHICLE_LINEAR_MOTOR_OFFSET|VEHICLE_LINEAR_MOTOR_TIMESCALE|VEHICLE_REFERENCE_FRAME|VEHICLE_TYPE_AIRPLANE|VEHICLE_TYPE_BALLOON|VEHICLE_TYPE_BOAT|VEHICLE_TYPE_CAR|VEHICLE_TYPE_NONE|VEHICLE_TYPE_SLED|VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY|VEHICLE_VERTICAL_ATTRACTION_TIMESCALE|VERTICAL|WANDER_PAUSE_AT_WAYPOINTS|XP_ERROR_EXPERIENCES_DISABLED|XP_ERROR_EXPERIENCE_DISABLED|XP_ERROR_EXPERIENCE_SUSPENDED|XP_ERROR_INVALID_EXPERIENCE|XP_ERROR_INVALID_PARAMETERS|XP_ERROR_KEY_NOT_FOUND|XP_ERROR_MATURITY_EXCEEDED|XP_ERROR_NONE|XP_ERROR_NOT_FOUND|XP_ERROR_NOT_PERMITTED|XP_ERROR_NO_EXPERIENCE|XP_ERROR_QUOTA_EXCEEDED|XP_ERROR_RETRY_UPDATE|XP_ERROR_STORAGE_EXCEPTION|XP_ERROR_STORE_DISABLED|XP_ERROR_THROTTLED|XP_ERROR_UNKNOWN_ERROR","constant.language.integer.boolean.lsl":"FALSE|TRUE","constant.language.quaternion.lsl":"ZERO_ROTATION","constant.language.string.lsl":"EOF|JSON_ARRAY|JSON_DELETE|JSON_FALSE|JSON_INVALID|JSON_NULL|JSON_NUMBER|JSON_OBJECT|JSON_STRING|JSON_TRUE|NULL_KEY|TEXTURE_BLANK|TEXTURE_DEFAULT|TEXTURE_MEDIA|TEXTURE_PLYWOOD|TEXTURE_TRANSPARENT|URL_REQUEST_DENIED|URL_REQUEST_GRANTED","constant.language.vector.lsl":"TOUCH_INVALID_TEXCOORD|TOUCH_INVALID_VECTOR|ZERO_VECTOR","invalid.broken.lsl":"LAND_LARGE_BRUSH|LAND_MEDIUM_BRUSH|LAND_SMALL_BRUSH","invalid.deprecated.lsl":"ATTACH_LPEC|ATTACH_RPEC|DATA_RATING|OBJECT_ATTACHMENT_GEOMETRY_BYTES|OBJECT_ATTACHMENT_SURFACE_AREA|PRIM_CAST_SHADOWS|PRIM_MATERIAL_LIGHT|PRIM_TYPE_LEGACY|PSYS_SRC_INNERANGLE|PSYS_SRC_OUTERANGLE|VEHICLE_FLAG_NO_FLY_UP|llClearExperiencePermissions|llCloud|llGetExperienceList|llMakeExplosion|llMakeFire|llMakeFountain|llMakeSmoke|llRemoteDataSetRegion|llSound|llSoundPreload|llXorBase64Strings|llXorBase64StringsCorrect","invalid.illegal.lsl":"event","invalid.unimplemented.lsl":"CHARACTER_MAX_ANGULAR_ACCEL|CHARACTER_MAX_ANGULAR_SPEED|CHARACTER_TURN_SPEED_MULTIPLIER|PERMISSION_CHANGE_JOINTS|PERMISSION_CHANGE_PERMISSIONS|PERMISSION_EXPERIENCE|PERMISSION_RELEASE_OWNERSHIP|PERMISSION_REMAP_CONTROLS|PRIM_PHYSICS_MATERIAL|PSYS_SRC_OBJ_REL_MASK|llCollisionSprite|llPointAt|llRefreshPrimURL|llReleaseCamera|llRemoteLoadScript|llSetPrimURL|llStopPointAt|llTakeCamera","reserved.godmode.lsl":"llGodLikeRezObject|llSetInventoryPermMask|llSetObjectPermMask","reserved.log.lsl":"print","keyword.control.lsl":"do|else|for|if|jump|return|while","storage.type.lsl":"float|integer|key|list|quaternion|rotation|string|vector","support.function.lsl":"llAbs|llAcos|llAddToLandBanList|llAddToLandPassList|llAdjustSoundVolume|llAgentInExperience|llAllowInventoryDrop|llAngleBetween|llApplyImpulse|llApplyRotationalImpulse|llAsin|llAtan2|llAttachToAvatar|llAttachToAvatarTemp|llAvatarOnLinkSitTarget|llAvatarOnSitTarget|llAxes2Rot|llAxisAngle2Rot|llBase64ToInteger|llBase64ToString|llBreakAllLinks|llBreakLink|llCSV2List|llCastRay|llCeil|llClearCameraParams|llClearLinkMedia|llClearPrimMedia|llCloseRemoteDataChannel|llCollisionFilter|llCollisionSound|llCos|llCreateCharacter|llCreateKeyValue|llCreateLink|llDataSizeKeyValue|llDeleteCharacter|llDeleteKeyValue|llDeleteSubList|llDeleteSubString|llDetachFromAvatar|llDetectedGrab|llDetectedGroup|llDetectedKey|llDetectedLinkNumber|llDetectedName|llDetectedOwner|llDetectedPos|llDetectedRot|llDetectedTouchBinormal|llDetectedTouchFace|llDetectedTouchNormal|llDetectedTouchPos|llDetectedTouchST|llDetectedTouchUV|llDetectedType|llDetectedVel|llDialog|llDie|llDumpList2String|llEdgeOfWorld|llEjectFromLand|llEmail|llEscapeURL|llEuler2Rot|llEvade|llExecCharacterCmd|llFabs|llFleeFrom|llFloor|llForceMouselook|llFrand|llGenerateKey|llGetAccel|llGetAgentInfo|llGetAgentLanguage|llGetAgentList|llGetAgentSize|llGetAlpha|llGetAndResetTime|llGetAnimation|llGetAnimationList|llGetAnimationOverride|llGetAttached|llGetAttachedList|llGetBoundingBox|llGetCameraPos|llGetCameraRot|llGetCenterOfMass|llGetClosestNavPoint|llGetColor|llGetCreator|llGetDate|llGetDisplayName|llGetEnergy|llGetEnv|llGetExperienceDetails|llGetExperienceErrorMessage|llGetForce|llGetFreeMemory|llGetFreeURLs|llGetGMTclock|llGetGeometricCenter|llGetHTTPHeader|llGetInventoryCreator|llGetInventoryKey|llGetInventoryName|llGetInventoryNumber|llGetInventoryPermMask|llGetInventoryType|llGetKey|llGetLandOwnerAt|llGetLinkKey|llGetLinkMedia|llGetLinkName|llGetLinkNumber|llGetLinkNumberOfSides|llGetLinkPrimitiveParams|llGetListEntryType|llGetListLength|llGetLocalPos|llGetLocalRot|llGetMass|llGetMassMKS|llGetMaxScaleFactor|llGetMemoryLimit|llGetMinScaleFactor|llGetNextEmail|llGetNotecardLine|llGetNumberOfNotecardLines|llGetNumberOfPrims|llGetNumberOfSides|llGetObjectDesc|llGetObjectDetails|llGetObjectMass|llGetObjectName|llGetObjectPermMask|llGetObjectPrimCount|llGetOmega|llGetOwner|llGetOwnerKey|llGetParcelDetails|llGetParcelFlags|llGetParcelMaxPrims|llGetParcelMusicURL|llGetParcelPrimCount|llGetParcelPrimOwners|llGetPermissions|llGetPermissionsKey|llGetPhysicsMaterial|llGetPos|llGetPrimMediaParams|llGetPrimitiveParams|llGetRegionAgentCount|llGetRegionCorner|llGetRegionFPS|llGetRegionFlags|llGetRegionName|llGetRegionTimeDilation|llGetRootPosition|llGetRootRotation|llGetRot|llGetSPMaxMemory|llGetScale|llGetScriptName|llGetScriptState|llGetSimStats|llGetSimulatorHostname|llGetStartParameter|llGetStaticPath|llGetStatus|llGetSubString|llGetSunDirection|llGetTexture|llGetTextureOffset|llGetTextureRot|llGetTextureScale|llGetTime|llGetTimeOfDay|llGetTimestamp|llGetTorque|llGetUnixTime|llGetUsedMemory|llGetUsername|llGetVel|llGetWallclock|llGiveInventory|llGiveInventoryList|llGiveMoney|llGround|llGroundContour|llGroundNormal|llGroundRepel|llGroundSlope|llHTTPRequest|llHTTPResponse|llInsertString|llInstantMessage|llIntegerToBase64|llJson2List|llJsonGetValue|llJsonSetValue|llJsonValueType|llKey2Name|llKeyCountKeyValue|llKeysKeyValue|llLinkParticleSystem|llLinkSitTarget|llList2CSV|llList2Float|llList2Integer|llList2Json|llList2Key|llList2List|llList2ListStrided|llList2Rot|llList2String|llList2Vector|llListFindList|llListInsertList|llListRandomize|llListReplaceList|llListSort|llListStatistics|llListen|llListenControl|llListenRemove|llLoadURL|llLog|llLog10|llLookAt|llLoopSound|llLoopSoundMaster|llLoopSoundSlave|llMD5String|llManageEstateAccess|llMapDestination|llMessageLinked|llMinEventDelay|llModPow|llModifyLand|llMoveToTarget|llNavigateTo|llOffsetTexture|llOpenRemoteDataChannel|llOverMyLand|llOwnerSay|llParcelMediaCommandList|llParcelMediaQuery|llParseString2List|llParseStringKeepNulls|llParticleSystem|llPassCollisions|llPassTouches|llPatrolPoints|llPlaySound|llPlaySoundSlave|llPow|llPreloadSound|llPursue|llPushObject|llReadKeyValue|llRegionSay|llRegionSayTo|llReleaseControls|llReleaseURL|llRemoteDataReply|llRemoteLoadScriptPin|llRemoveFromLandBanList|llRemoveFromLandPassList|llRemoveInventory|llRemoveVehicleFlags|llRequestAgentData|llRequestDisplayName|llRequestExperiencePermissions|llRequestInventoryData|llRequestPermissions|llRequestSecureURL|llRequestSimulatorData|llRequestURL|llRequestUsername|llResetAnimationOverride|llResetLandBanList|llResetLandPassList|llResetOtherScript|llResetScript|llResetTime|llReturnObjectsByID|llReturnObjectsByOwner|llRezAtRoot|llRezObject|llRot2Angle|llRot2Axis|llRot2Euler|llRot2Fwd|llRot2Left|llRot2Up|llRotBetween|llRotLookAt|llRotTarget|llRotTargetRemove|llRotateTexture|llRound|llSHA1String|llSameGroup|llSay|llScaleByFactor|llScaleTexture|llScriptDanger|llScriptProfiler|llSendRemoteData|llSensor|llSensorRemove|llSensorRepeat|llSetAlpha|llSetAngularVelocity|llSetAnimationOverride|llSetBuoyancy|llSetCameraAtOffset|llSetCameraEyeOffset|llSetCameraParams|llSetClickAction|llSetColor|llSetContentType|llSetDamage|llSetForce|llSetForceAndTorque|llSetHoverHeight|llSetKeyframedMotion|llSetLinkAlpha|llSetLinkCamera|llSetLinkColor|llSetLinkMedia|llSetLinkPrimitiveParams|llSetLinkPrimitiveParamsFast|llSetLinkTexture|llSetLinkTextureAnim|llSetLocalRot|llSetMemoryLimit|llSetObjectDesc|llSetObjectName|llSetParcelMusicURL|llSetPayPrice|llSetPhysicsMaterial|llSetPos|llSetPrimMediaParams|llSetPrimitiveParams|llSetRegionPos|llSetRemoteScriptAccessPin|llSetRot|llSetScale|llSetScriptState|llSetSitText|llSetSoundQueueing|llSetSoundRadius|llSetStatus|llSetText|llSetTexture|llSetTextureAnim|llSetTimerEvent|llSetTorque|llSetTouchText|llSetVehicleFlags|llSetVehicleFloatParam|llSetVehicleRotationParam|llSetVehicleType|llSetVehicleVectorParam|llSetVelocity|llShout|llSin|llSitTarget|llSleep|llSqrt|llStartAnimation|llStopAnimation|llStopHover|llStopLookAt|llStopMoveToTarget|llStopSound|llStringLength|llStringToBase64|llStringTrim|llSubStringIndex|llTakeControls|llTan|llTarget|llTargetOmega|llTargetRemove|llTeleportAgent|llTeleportAgentGlobalCoords|llTeleportAgentHome|llTextBox|llToLower|llToUpper|llTransferLindenDollars|llTriggerSound|llTriggerSoundLimited|llUnSit|llUnescapeURL|llUpdateCharacter|llUpdateKeyValue|llVecDist|llVecMag|llVecNorm|llVolumeDetect|llWanderWithin|llWater|llWhisper|llWind|llXorBase64","support.function.event.lsl":"at_rot_target|at_target|attach|changed|collision|collision_end|collision_start|control|dataserver|email|experience_permissions|experience_permissions_denied|http_request|http_response|land_collision|land_collision_end|land_collision_start|link_message|listen|money|moving_end|moving_start|no_sensor|not_at_rot_target|not_at_target|object_rez|on_rez|path_update|remote_data|run_time_permissions|sensor|state_entry|state_exit|timer|touch|touch_end|touch_start|transaction_result"},"identifier");this.$rules={start:[{token:"comment.line.double-slash.lsl",regex:"\\/\\/.*$"},{token:"comment.block.begin.lsl",regex:"\\/\\*",next:"comment"},{token:"string.quoted.double.lsl",start:'"',end:'"',next:[{token:"constant.character.escape.lsl",regex:/\\[tn"\\]/}]},{token:"constant.numeric.lsl",regex:"(0[xX][0-9a-fA-F]+|[+-]?[0-9]+(?:(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?)?)\\b"},{token:"entity.name.state.lsl",regex:"\\b((state)\\s+[A-Za-z_]\\w*|default)\\b"},{token:e,regex:"\\b[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"support.function.user-defined.lsl",regex:/\b([a-zA-Z_]\w*)(?=\(.*?\))/},{token:"keyword.operator.lsl",regex:"\\+\\+|\\-\\-|<<|>>|&&?|\\|\\|?|\\^|~|[!%<>=*+\\-\\/]=?"},{token:"invalid.illegal.keyword.operator.lsl",regex:":=?"},{token:"punctuation.operator.lsl",regex:"\\,|\\;"},{token:"paren.lparen.lsl",regex:"[\\[\\(\\{]"},{token:"paren.rparen.lsl",regex:"[\\]\\)\\}]"},{token:"text.lsl",regex:"\\s+"}],comment:[{token:"comment.block.end.lsl",regex:"\\*\\/",next:"start"},{defaultToken:"comment.block.lsl"}]},this.normalizeRules()}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules;r.inherits(s,i),t.LSLHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/lsl",["require","exports","module","ace/mode/lsl_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/text","ace/mode/folding/cstyle","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./lsl_highlight_rules").LSLHighlightRules,i=e("./matching_brace_outdent").MatchingBraceOutdent,s=e("./text").Mode,o=e("./folding/cstyle").FoldMode,u=e("../lib/oop"),a=function(){this.HighlightRules=r,this.$outdent=new i,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new o};u.inherits(a,s),function(){this.lineCommentStart=["//"],this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type==="comment.block.lsl")return r;if(e==="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/lsl",this.snippetFileId="ace/snippets/lsl"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/lsl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-lua.js b/www/js/ace/mode-lua.js deleted file mode 100644 index 82fa84bd5..000000000 --- a/www/js/ace/mode-lua.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="break|do|else|elseif|end|for|function|if|in|local|repeat|return|then|until|while|or|and|not",t="true|false|nil|_G|_VERSION",n="string|xpcall|package|tostring|print|os|unpack|require|getfenv|setmetatable|next|assert|tonumber|io|rawequal|collectgarbage|getmetatable|module|rawset|math|debug|pcall|table|newproxy|type|coroutine|_G|select|gcinfo|pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|load|error|loadfile|sub|upper|len|gfind|rep|find|match|char|dump|gmatch|reverse|byte|format|gsub|lower|preload|loadlib|loaded|loaders|cpath|config|path|seeall|exit|setlocale|date|getenv|difftime|remove|time|clock|tmpname|rename|execute|lines|write|close|flush|open|output|type|read|stderr|stdin|input|stdout|popen|tmpfile|log|max|acos|huge|ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|gethook|setmetatable|setlocal|traceback|setfenv|getinfo|setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|foreachi|maxn|foreach|concat|sort|remove|resume|yield|status|wrap|create|running|__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber",r="string|package|os|io|math|debug|table|coroutine",i="setn|foreach|foreachi|gcinfo|log10|maxn",s=this.createKeywordMapper({keyword:e,"support.function":n,"keyword.deprecated":i,"constant.library":r,"constant.language":t,"variable.language":"self"},"identifier"),o="(?:(?:[1-9]\\d*)|(?:0))",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:"+o+"|"+u+")",f="(?:\\.\\d+)",l="(?:\\d+)",c="(?:(?:"+l+"?"+f+")|(?:"+l+"\\.))",h="(?:"+c+")";this.$rules={start:[{stateName:"bracketedComment",onMatch:function(e,t,n){return n.unshift(this.next,e.length-2,t),"comment"},regex:/\-\-\[=*\[/,next:[{onMatch:function(e,t,n){return e.length==n[1]?(n.shift(),n.shift(),this.next=n.shift()):this.next="","comment"},regex:/\]=*\]/,next:"start"},{defaultToken:"comment.body"}]},{token:"comment",regex:"\\-\\-.*$"},{stateName:"bracketedString",onMatch:function(e,t,n){return n.unshift(this.next,e.length,t),"string.start"},regex:/\[=*\[/,next:[{onMatch:function(e,t,n){return e.length==n[1]?(n.shift(),n.shift(),this.next=n.shift()):this.next="","string.end"},regex:/\]=*\]/,next:"start"},{defaultToken:"string"}]},{token:"string",regex:'"(?:[^\\\\]|\\\\.)*?"'},{token:"string",regex:"'(?:[^\\\\]|\\\\.)*?'"},{token:"constant.numeric",regex:h},{token:"constant.numeric",regex:a+"\\b"},{token:s,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+|\\w+"}]},this.normalizeRules()};r.inherits(s,i),t.LuaHighlightRules=s}),define("ace/mode/folding/lua",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.foldingStartMarker=/\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/,this.foldingStopMarker=/\bend\b|^\s*}|\]=*\]/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarker.test(r),s=this.foldingStopMarker.test(r);if(i&&!s){var o=r.match(this.foldingStartMarker);if(o[1]=="then"&&/\belseif\b/.test(r))return;if(o[1]){if(e.getTokenAt(n,o.index+1).type==="keyword")return"start"}else{if(!o[2])return"start";var u=e.bgTokenizer.getState(n)||"";if(u[0]=="bracketedComment"||u[0]=="bracketedString")return"start"}}if(t!="markbeginend"||!s||i&&s)return"";var o=r.match(this.foldingStopMarker);if(o[0]==="end"){if(e.getTokenAt(n,o.index+1).type==="keyword")return"end"}else{if(o[0][0]!=="]")return"end";var u=e.bgTokenizer.getState(n-1)||"";if(u[0]=="bracketedComment"||u[0]=="bracketedString")return"end"}},this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]?this.luaBlock(e,n,i.index+1):i[2]?e.getCommentFoldRange(n,i.index+1):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[0]==="end"&&e.getTokenAt(n,i.index+1).type==="keyword"?this.luaBlock(e,n,i.index+1):i[0][0]==="]"?e.getCommentFoldRange(n,i.index+1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.luaBlock=function(e,t,n,r){var i=new o(e,t,n),u={"function":1,"do":1,then:1,elseif:-1,end:-1,repeat:1,until:-1},a=i.getCurrentToken();if(!a||a.type!="keyword")return;var f=a.value,l=[f],c=u[f];if(!c)return;var h=c===-1?i.getCurrentTokenColumn():e.getLine(t).length,p=t;i.step=c===-1?i.stepBackward:i.stepForward;while(a=i.step()){if(a.type!=="keyword")continue;var d=c*u[a.value];if(d>0)l.unshift(a.value);else if(d<=0){l.shift();if(!l.length&&a.value!="elseif")break;d===0&&l.unshift(a.value)}}if(!a)return null;if(r)return i.getCurrentTokenRange();var t=i.getCurrentTokenRow();return c===-1?new s(t,e.getLine(t).length,p,h):new s(p,h,t,i.getCurrentTokenColumn())}}.call(u.prototype)}),define("ace/mode/lua",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lua_highlight_rules","ace/mode/folding/lua","ace/range","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lua_highlight_rules").LuaHighlightRules,o=e("./folding/lua").FoldMode,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(f,i),function(){function n(t){var n=0;for(var r=0;r0?1:0}this.lineCommentStart="--",this.blockComment={start:"--[[",end:"--]]"};var e={"function":1,then:1,"do":1,"else":1,elseif:1,repeat:1,end:-1,until:-1},t=["else","elseif","end","until"];this.getNextLineIndent=function(e,t,r){var i=this.$getIndent(t),s=0,o=this.getTokenizer().getLineTokens(t,e),u=o.tokens;return e=="start"&&(s=n(u)),s>0?i+r:s<0&&i.substr(i.length-r.length)==r&&!this.checkOutdent(e,t,"\n")?i.substr(0,i.length-r.length):i},this.checkOutdent=function(e,n,r){if(r!="\n"&&r!="\r"&&r!="\r\n")return!1;if(n.match(/^\s*[\)\}\]]$/))return!0;var i=this.getTokenizer().getLineTokens(n.trim(),e).tokens;return!i||!i.length?!1:i[0].type=="keyword"&&t.indexOf(i[0].value)!=-1},this.getMatching=function(t,n,r){if(n==undefined){var i=t.selection.lead;r=i.column,n=i.row}var s=t.getTokenAt(n,r);if(s&&s.value in e)return this.foldingRules.luaBlock(t,n,r,!0)},this.autoOutdent=function(e,t,n){var r=t.getLine(n),i=r.match(/^\s*/)[0].length;if(!i||!n)return;var s=this.getMatching(t,n,i+1);if(!s||s.start.row==n)return;var o=this.$getIndent(t.getLine(s.start.row));o.length!=i&&(t.replace(new u(n,0,n,i),o),t.outdentRows(new u(n+1,0,n+1,0)))},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/lua_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/lua",this.snippetFileId="ace/snippets/lua"}.call(f.prototype),t.Mode=f}); (function() { - window.require(["ace/mode/lua"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-luapage.js b/www/js/ace/mode-luapage.js deleted file mode 100644 index 6b7f6a785..000000000 --- a/www/js/ace/mode-luapage.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="break|do|else|elseif|end|for|function|if|in|local|repeat|return|then|until|while|or|and|not",t="true|false|nil|_G|_VERSION",n="string|xpcall|package|tostring|print|os|unpack|require|getfenv|setmetatable|next|assert|tonumber|io|rawequal|collectgarbage|getmetatable|module|rawset|math|debug|pcall|table|newproxy|type|coroutine|_G|select|gcinfo|pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|load|error|loadfile|sub|upper|len|gfind|rep|find|match|char|dump|gmatch|reverse|byte|format|gsub|lower|preload|loadlib|loaded|loaders|cpath|config|path|seeall|exit|setlocale|date|getenv|difftime|remove|time|clock|tmpname|rename|execute|lines|write|close|flush|open|output|type|read|stderr|stdin|input|stdout|popen|tmpfile|log|max|acos|huge|ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|gethook|setmetatable|setlocal|traceback|setfenv|getinfo|setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|foreachi|maxn|foreach|concat|sort|remove|resume|yield|status|wrap|create|running|__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber",r="string|package|os|io|math|debug|table|coroutine",i="setn|foreach|foreachi|gcinfo|log10|maxn",s=this.createKeywordMapper({keyword:e,"support.function":n,"keyword.deprecated":i,"constant.library":r,"constant.language":t,"variable.language":"self"},"identifier"),o="(?:(?:[1-9]\\d*)|(?:0))",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:"+o+"|"+u+")",f="(?:\\.\\d+)",l="(?:\\d+)",c="(?:(?:"+l+"?"+f+")|(?:"+l+"\\.))",h="(?:"+c+")";this.$rules={start:[{stateName:"bracketedComment",onMatch:function(e,t,n){return n.unshift(this.next,e.length-2,t),"comment"},regex:/\-\-\[=*\[/,next:[{onMatch:function(e,t,n){return e.length==n[1]?(n.shift(),n.shift(),this.next=n.shift()):this.next="","comment"},regex:/\]=*\]/,next:"start"},{defaultToken:"comment.body"}]},{token:"comment",regex:"\\-\\-.*$"},{stateName:"bracketedString",onMatch:function(e,t,n){return n.unshift(this.next,e.length,t),"string.start"},regex:/\[=*\[/,next:[{onMatch:function(e,t,n){return e.length==n[1]?(n.shift(),n.shift(),this.next=n.shift()):this.next="","string.end"},regex:/\]=*\]/,next:"start"},{defaultToken:"string"}]},{token:"string",regex:'"(?:[^\\\\]|\\\\.)*?"'},{token:"string",regex:"'(?:[^\\\\]|\\\\.)*?'"},{token:"constant.numeric",regex:h},{token:"constant.numeric",regex:a+"\\b"},{token:s,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+|\\w+"}]},this.normalizeRules()};r.inherits(s,i),t.LuaHighlightRules=s}),define("ace/mode/folding/lua",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.foldingStartMarker=/\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/,this.foldingStopMarker=/\bend\b|^\s*}|\]=*\]/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarker.test(r),s=this.foldingStopMarker.test(r);if(i&&!s){var o=r.match(this.foldingStartMarker);if(o[1]=="then"&&/\belseif\b/.test(r))return;if(o[1]){if(e.getTokenAt(n,o.index+1).type==="keyword")return"start"}else{if(!o[2])return"start";var u=e.bgTokenizer.getState(n)||"";if(u[0]=="bracketedComment"||u[0]=="bracketedString")return"start"}}if(t!="markbeginend"||!s||i&&s)return"";var o=r.match(this.foldingStopMarker);if(o[0]==="end"){if(e.getTokenAt(n,o.index+1).type==="keyword")return"end"}else{if(o[0][0]!=="]")return"end";var u=e.bgTokenizer.getState(n-1)||"";if(u[0]=="bracketedComment"||u[0]=="bracketedString")return"end"}},this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]?this.luaBlock(e,n,i.index+1):i[2]?e.getCommentFoldRange(n,i.index+1):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[0]==="end"&&e.getTokenAt(n,i.index+1).type==="keyword"?this.luaBlock(e,n,i.index+1):i[0][0]==="]"?e.getCommentFoldRange(n,i.index+1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.luaBlock=function(e,t,n,r){var i=new o(e,t,n),u={"function":1,"do":1,then:1,elseif:-1,end:-1,repeat:1,until:-1},a=i.getCurrentToken();if(!a||a.type!="keyword")return;var f=a.value,l=[f],c=u[f];if(!c)return;var h=c===-1?i.getCurrentTokenColumn():e.getLine(t).length,p=t;i.step=c===-1?i.stepBackward:i.stepForward;while(a=i.step()){if(a.type!=="keyword")continue;var d=c*u[a.value];if(d>0)l.unshift(a.value);else if(d<=0){l.shift();if(!l.length&&a.value!="elseif")break;d===0&&l.unshift(a.value)}}if(!a)return null;if(r)return i.getCurrentTokenRange();var t=i.getCurrentTokenRow();return c===-1?new s(t,e.getLine(t).length,p,h):new s(p,h,t,i.getCurrentTokenColumn())}}.call(u.prototype)}),define("ace/mode/lua",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lua_highlight_rules","ace/mode/folding/lua","ace/range","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lua_highlight_rules").LuaHighlightRules,o=e("./folding/lua").FoldMode,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(f,i),function(){function n(t){var n=0;for(var r=0;r0?1:0}this.lineCommentStart="--",this.blockComment={start:"--[[",end:"--]]"};var e={"function":1,then:1,"do":1,"else":1,elseif:1,repeat:1,end:-1,until:-1},t=["else","elseif","end","until"];this.getNextLineIndent=function(e,t,r){var i=this.$getIndent(t),s=0,o=this.getTokenizer().getLineTokens(t,e),u=o.tokens;return e=="start"&&(s=n(u)),s>0?i+r:s<0&&i.substr(i.length-r.length)==r&&!this.checkOutdent(e,t,"\n")?i.substr(0,i.length-r.length):i},this.checkOutdent=function(e,n,r){if(r!="\n"&&r!="\r"&&r!="\r\n")return!1;if(n.match(/^\s*[\)\}\]]$/))return!0;var i=this.getTokenizer().getLineTokens(n.trim(),e).tokens;return!i||!i.length?!1:i[0].type=="keyword"&&t.indexOf(i[0].value)!=-1},this.getMatching=function(t,n,r){if(n==undefined){var i=t.selection.lead;r=i.column,n=i.row}var s=t.getTokenAt(n,r);if(s&&s.value in e)return this.foldingRules.luaBlock(t,n,r,!0)},this.autoOutdent=function(e,t,n){var r=t.getLine(n),i=r.match(/^\s*/)[0].length;if(!i||!n)return;var s=this.getMatching(t,n,i+1);if(!s||s.start.row==n)return;var o=this.$getIndent(t.getLine(s.start.row));o.length!=i&&(t.replace(new u(n,0,n,i),o),t.outdentRows(new u(n+1,0,n+1,0)))},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/lua_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/lua",this.snippetFileId="ace/snippets/lua"}.call(f.prototype),t.Mode=f}),define("ace/mode/luapage_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/lua_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./lua_highlight_rules").LuaHighlightRules,o=function(){i.call(this);var e=[{token:"keyword",regex:"<\\%\\=?",push:"lua-start"},{token:"keyword",regex:"<\\?lua\\=?",push:"lua-start"}],t=[{token:"keyword",regex:"\\%>",next:"pop"},{token:"keyword",regex:"\\?>",next:"pop"}];this.embedRules(s,"lua-",t,["start"]);for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],e);this.normalizeRules()};r.inherits(o,i),t.LuaPageHighlightRules=o}),define("ace/mode/luapage",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/lua","ace/mode/luapage_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./lua").Mode,o=e("./luapage_highlight_rules").LuaPageHighlightRules,u=function(){i.call(this),this.HighlightRules=o,this.createModeDelegates({"lua-":s})};r.inherits(u,i),function(){this.$id="ace/mode/luapage"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/luapage"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-lucene.js b/www/js/ace/mode-lucene.js deleted file mode 100644 index 16c2002d4..000000000 --- a/www/js/ace/mode-lucene.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/lucene_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"constant.language.escape",regex:/\\[\-+&|!(){}\[\]^"~*?:\\]/},{token:"constant.character.negation",regex:"\\-"},{token:"constant.character.interro",regex:"\\?"},{token:"constant.character.required",regex:"\\+"},{token:"constant.character.asterisk",regex:"\\*"},{token:"constant.character.proximity",regex:"~(?:0\\.[0-9]+|[0-9]+)?"},{token:"keyword.operator",regex:"(AND|OR|NOT|TO)\\b"},{token:"paren.lparen",regex:"[\\(\\{\\[]"},{token:"paren.rparen",regex:"[\\)\\}\\]]"},{token:"keyword.operator",regex:/[><=^]/},{token:"constant.numeric",regex:/\d[\d.-]*/},{token:"string",regex:/"(?:\\"|[^"])*"/},{token:"keyword",regex:/(?:\\.|[^\s\-+&|!(){}\[\]^"~*?:\\])+:/,next:"maybeRegex"},{token:"term",regex:/\w+/},{token:"text",regex:/\s+/}],maybeRegex:[{token:"text",regex:/\s+/},{token:"string.regexp.start",regex:"/",next:"regex"},{regex:"",next:"start"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp.end",regex:"/[sxngimy]*",next:"start"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.escape",regex:"|[~&@]"},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"start"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"start"},{defaultToken:"string.regexp.characterclass"}]}};r.inherits(s,i),t.LuceneHighlightRules=s}),define("ace/mode/lucene",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lucene_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lucene_highlight_rules").LuceneHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.$id="ace/mode/lucene"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/lucene"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-makefile.js b/www/js/ace/mode-makefile.js deleted file mode 100644 index f047694e0..000000000 --- a/www/js/ace/mode-makefile.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:"+l+"(?==))",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string.start",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$`"\\]|$)/},{include:"variables"},{token:"keyword.operator",regex:/`/},{token:"string.end",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"string",regex:"\\$'",push:[{token:"constant.language.escape",regex:/\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:["keyword","text","text","text","variable"],regex:/(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/},{token:"variable.language",regex:h},{token:"variable",regex:c},{include:"variables"},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"},{token:"punctuation.operator",regex:";"},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]]"},{token:"paren.rparen",regex:"[\\)\\}]",next:"pop"}],variables:[{token:"variable",regex:/(\$)(\w+)/},{token:["variable","paren.lparen"],regex:/(\$)(\()/,push:"start"},{token:["variable","paren.lparen","keyword.operator","variable","keyword.operator"],regex:/(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,push:"start"},{token:"variable",regex:/\$[*@#?\-$!0_]/},{token:["variable","paren.lparen"],regex:/(\$)(\{)/,push:"start"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),define("ace/mode/makefile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/sh_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./sh_highlight_rules"),o=function(){var e=this.createKeywordMapper({keyword:s.reservedKeywords,"support.function.builtin":s.languageConstructs,"invalid.deprecated":"debugger"},"string");this.$rules={start:[{token:"string.interpolated.backtick.makefile",regex:"`",next:"shell-start"},{token:"punctuation.definition.comment.makefile",regex:/#(?=.)/,next:"comment"},{token:["keyword.control.makefile"],regex:"^(?:\\s*\\b)(\\-??include|ifeq|ifneq|ifdef|ifndef|else|endif|vpath|export|unexport|define|endef|override)(?:\\b)"},{token:["entity.name.function.makefile","text"],regex:"^([^\\t ]+(?:\\s[^\\t ]+)*:)(\\s*.*)"}],comment:[{token:"punctuation.definition.comment.makefile",regex:/.+\\/},{token:"punctuation.definition.comment.makefile",regex:".+",next:"start"}],"shell-start":[{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"string",regex:"\\w+"},{token:"string.interpolated.backtick.makefile",regex:"`",next:"start"}]}};r.inherits(o,i),t.MakefileHighlightRules=o}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../config").$modes,i=e("../lib/oop"),s=e("../lib/lang"),o=e("./text_highlight_rules").TextHighlightRules,u=e("./html_highlight_rules").HtmlHighlightRules,a=function(e){return"(?:[^"+s.escapeRegExp(e)+"\\\\]|\\\\.)*"},f=function(){u.call(this);var e={token:"support.function",regex:/^\s*(```+[^`]*|~~~+[^~]*)$/,onMatch:function(e,t,n,i){var s=e.match(/^(\s*)([`~]+)(.*)/),o=/[\w-]+|$/.exec(s[3])[0];return r[o]||(o=""),n.unshift("githubblock",[],[s[1],s[2],o],t),this.token},next:"githubblock"},t=[{token:"support.function",regex:".*",onMatch:function(e,t,n,i){var s=n[1],o=n[2][0],u=n[2][1],a=n[2][2],f=/^(\s*)(`+|~+)\s*$/.exec(e);if(f&&f[1].length=u.length&&f[2][0]==u[0])return n.splice(0,3),this.next=n.shift(),this.token;this.next="";if(a&&r[a]){var l=r[a].getTokenizer().getLineTokens(e,s.slice(0));return n[1]=l.state,l.tokens}return this.token}}];this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s|$)/,next:"header"},e,{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+a("]")+")(\\]\\s*\\[)("+a("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\!?\\[)("+a("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+a('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty_line",regex:"^$",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},e,{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:t}),this.normalizeRules()};i.inherits(f,o),t.MarkdownHighlightRules=f}),define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.foldingStartMarker=/^(?:[=-]+\s*$|#{1,6} |`{3})/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?r[0]=="`"?e.bgTokenizer.getState(n)=="start"?"end":"start":"start":""},this.getFoldWidgetRange=function(e,t,n){function l(t){return f=e.getTokens(t)[0],f&&f.type.lastIndexOf(c,0)===0}function h(){var e=f.value[0];return e=="="?6:e=="-"?5:7-f.value.search(/[^#]|$/)}var r=e.getLine(n),i=r.length,o=e.getLength(),u=n,a=n;if(!r.match(this.foldingStartMarker))return;if(r[0]=="`"){if(e.bgTokenizer.getState(n)!=="start"){while(++n0){r=e.getLine(n);if(r[0]=="`"&r.substring(0,3)=="```")break}return new s(n,r.length,u,0)}var f,c="markup.heading";if(l(n)){var p=h();while(++n=p)break}a=n-(!f||["=","-"].indexOf(f.value[0])==-1?1:2);if(a>u)while(a>u&&/^\s*$/.test(e.getLine(a)))a--;if(a>u){var v=e.getLine(a).length;return new s(u,i,a,v)}}}}.call(o.prototype)}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:"+l+"(?==))",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string.start",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$`"\\]|$)/},{include:"variables"},{token:"keyword.operator",regex:/`/},{token:"string.end",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"string",regex:"\\$'",push:[{token:"constant.language.escape",regex:/\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:["keyword","text","text","text","variable"],regex:/(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/},{token:"variable.language",regex:h},{token:"variable",regex:c},{include:"variables"},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"},{token:"punctuation.operator",regex:";"},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]]"},{token:"paren.rparen",regex:"[\\)\\}]",next:"pop"}],variables:[{token:"variable",regex:/(\$)(\w+)/},{token:["variable","paren.lparen"],regex:/(\$)(\()/,push:"start"},{token:["variable","paren.lparen","keyword.operator","variable","keyword.operator"],regex:/(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,push:"start"},{token:"variable",regex:/\$[*@#?\-$!0_]/},{token:["variable","paren.lparen"],regex:/(\$)(\{)/,push:"start"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sh_highlight_rules").ShHighlightRules,o=e("../range").Range,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new o(n,r.length-i.length,n,r.length))},this.$id="ace/mode/sh",this.snippetFileId="ace/snippets/sh"}.call(a.prototype),t.Mode=a}),define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./xml_highlight_rules").XmlHighlightRules,u=e("./behaviour/xml").XmlBehaviour,a=e("./folding/xml").FoldMode,f=e("../worker/worker_client").WorkerClient,l=function(){this.HighlightRules=o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(l,s),function(){this.voidElements=i.arrayToMap([]),this.blockComment={start:""},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/xml_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/xml"}.call(l.prototype),t.Mode=l}),define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/behaviour/cstyle","ace/mode/text","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown","ace/mode/javascript","ace/mode/html","ace/mode/sh","ace/mode/sh","ace/mode/xml","ace/mode/css"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./behaviour/cstyle").CstyleBehaviour,s=e("./text").Mode,o=e("./markdown_highlight_rules").MarkdownHighlightRules,u=e("./folding/markdown").FoldMode,a=function(){this.HighlightRules=o,this.createModeDelegates({javascript:e("./javascript").Mode,html:e("./html").Mode,bash:e("./sh").Mode,sh:e("./sh").Mode,xml:e("./xml").Mode,css:e("./css").Mode}),this.foldingRules=new u,this.$behaviour=new i({braces:!0})};r.inherits(a,s),function(){this.type="text",this.blockComment={start:""},this.$quotes={'"':'"',"`":"`"},this.getNextLineIndent=function(e,t,n){if(e=="listblock"){var r=/^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(t);if(!r)return"";var i=r[2];return i||(i=parseInt(r[3],10)+1+"."),r[1]+i+r[4]}return this.$getIndent(t)},this.$id="ace/mode/markdown",this.snippetFileId="ace/snippets/markdown"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/markdown"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-mask.js b/www/js/ace/mode-mask.js deleted file mode 100644 index 3a23fe09e..000000000 --- a/www/js/ace/mode-mask.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../config").$modes,i=e("../lib/oop"),s=e("../lib/lang"),o=e("./text_highlight_rules").TextHighlightRules,u=e("./html_highlight_rules").HtmlHighlightRules,a=function(e){return"(?:[^"+s.escapeRegExp(e)+"\\\\]|\\\\.)*"},f=function(){u.call(this);var e={token:"support.function",regex:/^\s*(```+[^`]*|~~~+[^~]*)$/,onMatch:function(e,t,n,i){var s=e.match(/^(\s*)([`~]+)(.*)/),o=/[\w-]+|$/.exec(s[3])[0];return r[o]||(o=""),n.unshift("githubblock",[],[s[1],s[2],o],t),this.token},next:"githubblock"},t=[{token:"support.function",regex:".*",onMatch:function(e,t,n,i){var s=n[1],o=n[2][0],u=n[2][1],a=n[2][2],f=/^(\s*)(`+|~+)\s*$/.exec(e);if(f&&f[1].length=u.length&&f[2][0]==u[0])return n.splice(0,3),this.next=n.shift(),this.token;this.next="";if(a&&r[a]){var l=r[a].getTokenizer().getLineTokens(e,s.slice(0));return n[1]=l.state,l.tokens}return this.token}}];this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s|$)/,next:"header"},e,{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+a("]")+")(\\]\\s*\\[)("+a("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\!?\\[)("+a("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+a('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty_line",regex:"^$",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},e,{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:t}),this.normalizeRules()};i.inherits(f,o),t.MarkdownHighlightRules=f}),define("ace/mode/mask_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/css_highlight_rules","ace/mode/markdown_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";function N(){function t(e,t,n){var r="js-"+e+"-",i=e==="block"?["start"]:["start","no_regex"];s(o,r,t,i,n)}function n(){s(u,"css-block-",/\}/)}function r(){s(a,"md-multiline-",/("""|''')/,[])}function i(){s(f,"html-multiline-",/("""|''')/)}function s(t,n,r,i,s){var o="pop",u=i||["start"];u.length===0&&(u=null),/block|multiline/.test(n)&&(o=n+"end",e.$rules[o]=[k("empty","","start")]),e.embedRules(t,n,[k(s||w,r,o)],u,u==null?!0:!1)}this.$rules={start:[k("comment","\\/\\/.*$"),k("comment","\\/\\*",[k("comment",".*?\\*\\/","start"),k("comment",".+")]),C.string("'''"),C.string('"""'),C.string('"'),C.string("'"),C.syntax(/(markdown|md)\b/,"md-multiline","multiline"),C.syntax(/html\b/,"html-multiline","multiline"),C.syntax(/(slot|event)\b/,"js-block","block"),C.syntax(/style\b/,"css-block","block"),C.syntax(/var\b/,"js-statement","attr"),C.tag(),k(b,"[[({>]"),k(w,"[\\])};]","start"),{caseInsensitive:!0}]};var e=this;t("interpolation",/\]/,w+"."+g),t("statement",/\)|}|;/),t("block",/\}/),n(),r(),i(),this.normalizeRules()}function k(e,t,n){var r,i,s;return arguments.length===4?(r=n,i=arguments[3]):typeof n=="string"?i=n:r=n,typeof e=="function"&&(s=e,e="empty"),{token:e,regex:t,push:r,next:i,onMatch:s}}t.MaskHighlightRules=N;var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./css_highlight_rules").CssHighlightRules,a=e("./markdown_highlight_rules").MarkdownHighlightRules,f=e("./html_highlight_rules").HtmlHighlightRules,l="keyword.support.constant.language",c="support.function.markup.bold",h="keyword",p="constant.language",d="keyword.control.markup.italic",v="support.variable.class",m="keyword.operator",g="markup.italic",y="markup.bold",b="paren.lparen",w="paren.rparen",E,S,x,T;(function(){E=i.arrayToMap("log".split("|")),x=i.arrayToMap(":dualbind|:bind|:import|slot|event|style|html|markdown|md".split("|")),S=i.arrayToMap("debugger|define|var|if|each|for|of|else|switch|case|with|visible|+if|+each|+for|+switch|+with|+visible|include|import".split("|")),T=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|"))})(),r.inherits(N,s);var C={string:function(e,t){var n=k("string.start",e,[k(b+"."+g,/~\[/,C.interpolation()),k("string.end",e,"pop"),{defaultToken:"string"}],t);if(e.length===1){var r=k("string.escape","\\\\"+e);n.push.unshift(r)}return n},interpolation:function(){return[k(d,/\s*\w*\s*:/),"js-interpolation-start"]},tagHead:function(e){return k(v,e,[k(v,/[\w\-_]+/),k(b+"."+g,/~\[/,C.interpolation()),C.goUp()])},tag:function(){return{token:"tag",onMatch:function(e){return void 0!==S[e]?h:void 0!==x[e]?p:void 0!==E[e]?"support.function":void 0!==T[e.toLowerCase()]?l:c},regex:/([@\w\-_:+]+)|((^|\s)(?=\s*(\.|#)))/,push:[C.tagHead(/\./),C.tagHead(/#/),C.expression(),C.attribute(),k(b,/[;>{]/,"pop")]}},syntax:function(e,t,n){return{token:p,regex:e,push:{attr:[t+"-start",k(m,/;/,"start")],multiline:[C.tagHead(/\./),C.tagHead(/#/),C.attribute(),C.expression(),k(b,/[>\{]/),k(m,/;/,"start"),k(b,/'''|"""/,[t+"-start"])],block:[C.tagHead(/\./),C.tagHead(/#/),C.attribute(),C.expression(),k(b,/\{/,[t+"-start"])]}[n]}},attribute:function(){return k(function(e){return/^x\-/.test(e)?v+"."+y:v},/[\w_-]+/,[k(m,/\s*=\s*/,[C.string('"'),C.string("'"),C.word(),C.goUp()]),C.goUp()])},expression:function(){return k(b,/\(/,["js-statement-start"])},word:function(){return k("string",/[\w-_]+/)},goUp:function(){return k("text","","pop")},goStart:function(){return k("text","","start")}}}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/mask",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mask_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./mask_highlight_rules").MaskHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/css").CssBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/mask"}.call(f.prototype),t.Mode=f}); (function() { - window.require(["ace/mode/mask"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-matlab.js b/www/js/ace/mode-matlab.js deleted file mode 100644 index eb3865d70..000000000 --- a/www/js/ace/mode-matlab.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/matlab_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while",t="true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout",n="abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|ylabel|ylim|zeros|zip|zlabel|zlim|zoom|addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztestadapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb|bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog",r="cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse",i=this.createKeywordMapper({"storage.type":r,"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"string",regex:"'",stateName:"qstring",next:[{token:"constant.language.escape",regex:"''"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}]},{token:"text",regex:"\\s+"},{regex:"",next:"noQstring"}],noQstring:[{regex:"^\\s*%{\\s*$",token:"comment.start",push:"blockComment"},{token:"comment",regex:"%[^\r\n]*"},{token:"string",regex:'"',stateName:"qqstring",next:[{token:"constant.language.escape",regex:/\\./},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=",next:"start"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\.",next:"start"},{token:"paren.lparen",regex:"[({\\[]",next:"start"},{token:"paren.rparen",regex:"[\\]})]"},{token:"text",regex:"\\s+"},{token:"text",regex:"$",next:"start"}],blockComment:[{regex:"^\\s*%{\\s*$",token:"comment.start",push:"blockComment"},{regex:"^\\s*%}\\s*$",token:"comment.end",next:"pop"},{defaultToken:"comment"}]},this.normalizeRules()};r.inherits(s,i),t.MatlabHighlightRules=s}),define("ace/mode/matlab",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matlab_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./matlab_highlight_rules").MatlabHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="%",this.blockComment={start:"%{",end:"%}"},this.$id="ace/mode/matlab"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/matlab"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-maze.js b/www/js/ace/mode-maze.js deleted file mode 100644 index d6da6fbf3..000000000 --- a/www/js/ace/mode-maze.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/maze_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"keyword.control",regex:/##|``/,comment:"Wall"},{token:"entity.name.tag",regex:/\.\./,comment:"Path"},{token:"keyword.control",regex:/<>/,comment:"Splitter"},{token:"entity.name.tag",regex:/\*[\*A-Za-z0-9]/,comment:"Signal"},{token:"constant.numeric",regex:/[0-9]{2}/,comment:"Pause"},{token:"keyword.control",regex:/\^\^/,comment:"Start"},{token:"keyword.control",regex:/\(\)/,comment:"Hole"},{token:"support.function",regex:/>>/,comment:"Out"},{token:"support.function",regex:/>\//,comment:"Ln Out"},{token:"support.function",regex:/< *)(?:([-+*\/]=)( *)((?:-)?)([0-9]+)|(=)( *)(?:((?:-)?)([0-9]+)|("[^"]*")|('[^']*')))/,comment:"Assignment function"},{token:["entity.name.function","keyword.other","keyword.control","keyword.other","keyword.operator","keyword.other","keyword.operator","constant.numeric","entity.name.tag","keyword.other","keyword.control","keyword.other","constant.language","keyword.other","keyword.control","keyword.other","constant.language"],regex:/([A-Za-z][A-Za-z0-9])( *-> *)(IF|if)( *)(?:([<>]=?|==)( *)((?:-)?)([0-9]+)|(\*[\*A-Za-z0-9]))( *)(THEN|then)( *)(%[LRUDNlrudn])(?:( *)(ELSE|else)( *)(%[LRUDNlrudn]))?/,comment:"Equality Function"},{token:"entity.name.function",regex:/[A-Za-z][A-Za-z0-9]/,comment:"Function cell"},{token:"comment.line.double-slash",regex:/ *\/\/.*/,comment:"Comment"}]},this.normalizeRules()};s.metaData={fileTypes:["mz"],name:"Maze",scopeName:"source.maze"},r.inherits(s,i),t.MazeHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/maze",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/maze_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./maze_highlight_rules").MazeHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.$id="ace/mode/maze",this.snippetFileId="ace/snippets/maze"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/maze"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-mediawiki.js b/www/js/ace/mode-mediawiki.js deleted file mode 100644 index c514d7c08..000000000 --- a/www/js/ace/mode-mediawiki.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/mediawiki_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#switch"},{include:"#redirect"},{include:"#variable"},{include:"#comment"},{include:"#entity"},{include:"#emphasis"},{include:"#tag"},{include:"#table"},{include:"#hr"},{include:"#heading"},{include:"#link"},{include:"#list"},{include:"#template"}],"#hr":[{token:"markup.bold",regex:/^[-]{4,}/}],"#switch":[{token:"constant.language",regex:/(__NOTOC__|__FORCETOC__|__TOC__|__NOEDITSECTION__|__NEWSECTIONLINK__|__NONEWSECTIONLINK__|__NOWYSIWYG__|__NOGALLERY__|__HIDDENCAT__|__EXPECTUNUSEDCATEGORY__|__NOCONTENTCONVERT__|__NOCC__|__NOTITLECONVERT__|__NOTC__|__START__|__END__|__INDEX__|__NOINDEX__|__STATICREDIRECT__|__NOGLOBAL__|__DISAMBIG__)/}],"#redirect":[{token:["keyword.control.redirect","meta.keyword.control"],regex:/(^#REDIRECT|^#redirect|^#Redirect)(\s+)/}],"#variable":[{token:"storage.type.variable",regex:/{{{/,push:[{token:"storage.type.variable",regex:/}}}/,next:"pop"},{token:["text","variable.other","text","keyword.operator"],regex:/(\s*)(\w+)(\s*)((?:\|)?)/},{defaultToken:"storage.type.variable"}]}],"#entity":[{token:"constant.character.entity",regex:/&\w+;/}],"#list":[{token:"markup.bold",regex:/^[#*;:]+/,push:[{token:"markup.list",regex:/$/,next:"pop"},{include:"$self"},{defaultToken:"markup.list"}]}],"#template":[{token:["storage.type.function","meta.template","entity.name.function","meta.template"],regex:/({{)(\s*)([#\w: ]+)(\s*)/,push:[{token:"storage.type.function",regex:/}}/,next:"pop"},{token:["storage","meta.structure.dictionary","support.type.property-name","meta.structure.dictionary","punctuation.separator.dictionary.key-value","meta.structure.dictionary","meta.structure.dictionary.value"],regex:/(\|)(\s*)([a-zA-Z-]*)(\s*)(=)(\s*)([^|}]*)/,push:[{token:"meta.structure.dictionary",regex:/(?=}}|[|])/,next:"pop"},{defaultToken:"meta.structure.dictionary"}]},{token:["storage","meta.template.value"],regex:/(\|)(.*?)/,push:[{token:[],regex:/(?=}}|[|])/,next:"pop"},{include:"$self"},{defaultToken:"meta.template.value"}]},{defaultToken:"meta.template"}]}],"#link":[{token:["punctuation.definition.tag.begin","meta.tag.link.internal","entity.name.tag","meta.tag.link.internal","string.other.link.title","meta.tag.link.internal","punctuation.definition.tag"],regex:/(\[\[)(\s*)((?:Category|Wikipedia)?)(:?)([^\]\]\|]+)(\s*)((?:\|)*)/,push:[{token:"punctuation.definition.tag.end",regex:/\]\]/,next:"pop"},{include:"$self"},{defaultToken:"meta.tag.link.internal"}]},{token:["punctuation.definition.tag.begin","meta.tag.link.external","meta.tag.link.external","string.unquoted","punctuation.definition.tag.end"],regex:/(\[)(.*?)([\s]+)(.*?)(\])/}],"#comment":[{token:"punctuation.definition.comment.html",regex://,next:"pop"},{defaultToken:"comment.block.html"}]}],"#emphasis":[{token:["punctuation.definition.tag.begin","markup.italic.bold","punctuation.definition.tag.end"],regex:/(''''')(?!')(.*?)('''''|$)/},{token:["punctuation.definition.tag.begin","markup.bold","punctuation.definition.tag.end"],regex:/(''')(?!')(.*?)('''|$)/},{token:["punctuation.definition.tag.begin","markup.italic","punctuation.definition.tag.end"],regex:/('')(?!')(.*?)(''|$)/}],"#heading":[{token:["punctuation.definition.heading","entity.name.section","punctuation.definition.heading"],regex:/(={1,6})(.+?)(\1)(?!=)/}],"#tag":[{token:["punctuation.definition.tag.begin","entity.name.tag","meta.tag.block.ref","punctuation.definition.tag.end"],regex:/(<)(ref)((?:\s+.*?)?)(>)/,caseInsensitive:!0,push:[{token:["punctuation.definition.tag.begin","entity.name.tag","meta.tag.block.ref","punctuation.definition.tag.end"],regex:/(<\/)(ref)(\s*)(>)/,caseInsensitive:!0,next:"pop"},{include:"$self"},{defaultToken:"meta.tag.block.ref"}]},{token:["punctuation.definition.tag.begin","entity.name.tag","meta.tag.block.nowiki","punctuation.definition.tag.end"],regex:/(<)(nowiki)((?:\s+.*?)?)(>)/,caseInsensitive:!0,push:[{token:["punctuation.definition.tag.begin","entity.name.tag","meta.tag.block.nowiki","punctuation.definition.tag.end"],regex:/(<\/)(nowiki)(\s*)(>)/,caseInsensitive:!0,next:"pop"},{defaultToken:"meta.tag.block.nowiki"}]},{token:["punctuation.definition.tag.begin","entity.name.tag"],regex:/(<\/?)(noinclude|includeonly|onlyinclude)(?=\W)/,caseInsensitive:!0,push:[{token:["invalid.illegal","punctuation.definition.tag.end"],regex:/((?:\/)?)(>)/,next:"pop"},{include:"#attribute"},{defaultToken:"meta.tag.block.any"}]},{token:["punctuation.definition.tag.begin","entity.name.tag"],regex:/(<)(br|wbr|hr|meta|link)(?=\W)/,caseInsensitive:!0,push:[{token:"punctuation.definition.tag.end",regex:/\/?>/,next:"pop"},{include:"#attribute"},{defaultToken:"meta.tag.other"}]},{token:["punctuation.definition.tag.begin","entity.name.tag"],regex:/(<\/?)(div|center|span|h1|h2|h3|h4|h5|h6|bdo|em|strong|cite|dfn|code|samp|kbd|var|abbr|blockquote|q|sub|sup|p|pre|ins|del|ul|ol|li|dl|dd|dt|table|caption|thead|tfoot|tbody|colgroup|col|tr|td|th|a|img|video|source|track|tt|b|i|big|small|strike|s|u|font|ruby|rb|rp|rt|rtc|math|figure|figcaption|bdi|data|time|mark|html)(?=\W)/,caseInsensitive:!0,push:[{token:["invalid.illegal","punctuation.definition.tag.end"],regex:/((?:\/)?)(>)/,next:"pop"},{include:"#attribute"},{defaultToken:"meta.tag.block"}]},{token:["punctuation.definition.tag.begin","invalid.illegal"],regex:/(<\/)(br|wbr|hr|meta|link)(?=\W)/,caseInsensitive:!0,push:[{token:"punctuation.definition.tag.end",regex:/\/?>/,next:"pop"},{include:"#attribute"},{defaultToken:"meta.tag.other"}]}],"#caption":[{token:["meta.tag.block.table-caption","punctuation.definition.tag.begin"],regex:/^(\s*)(\|\+)/,push:[{token:"meta.tag.block.table-caption",regex:/$/,next:"pop"},{defaultToken:"meta.tag.block.table-caption"}]}],"#tr":[{token:["meta.tag.block.tr","punctuation.definition.tag.begin","meta.tag.block.tr","invalid.illegal"],regex:/^(\s*)(\|\-)([\s]*)(.*)/}],"#th":[{token:["meta.tag.block.th.heading","punctuation.definition.tag.begin","meta.tag.block.th.heading","punctuation.definition.tag","markup.bold"],regex:/^(\s*)(!)(?:(.*?)(\|))?(.*?)(?=!!|$)/,push:[{token:"meta.tag.block.th.heading",regex:/$/,next:"pop"},{token:["punctuation.definition.tag.begin","meta.tag.block.th.inline","punctuation.definition.tag","markup.bold"],regex:/(!!)(?:(.*?)(\|))?(.*?)(?=!!|$)/},{include:"$self"},{defaultToken:"meta.tag.block.th.heading"}]}],"#td":[{token:["meta.tag.block.td","punctuation.definition.tag.begin"],regex:/^(\s*)(\|)/,push:[{token:"meta.tag.block.td",regex:/$/,next:"pop"},{include:"$self"},{defaultToken:"meta.tag.block.td"}]}],"#table":[{patterns:[{name:"meta.tag.block.table",begin:"^\\s*({\\|)(.*?)$",end:"^\\s*\\|}",beginCaptures:{1:{name:"punctuation.definition.tag.begin"},2:{patterns:[{include:"#attribute"}]},3:{name:"invalid.illegal"}},endCaptures:{0:{name:"punctuation.definition.tag.end"}},patterns:[{include:"#comment"},{include:"#template"},{include:"#caption"},{include:"#tr"},{include:"#th"},{include:"#td"}]}],repository:{caption:{name:"meta.tag.block.table-caption",begin:"^\\s*(\\|\\+)",end:"$",beginCaptures:{1:{name:"punctuation.definition.tag.begin"}}},tr:{name:"meta.tag.block.tr",match:"^\\s*(\\|\\-)[\\s]*(.*)",captures:{1:{name:"punctuation.definition.tag.begin"},2:{name:"invalid.illegal"}}},th:{name:"meta.tag.block.th.heading",begin:"^\\s*(!)((.*?)(\\|))?(.*?)(?=(!!)|$)",end:"$",beginCaptures:{1:{name:"punctuation.definition.tag.begin"},3:{patterns:[{include:"#attribute"}]},4:{name:"punctuation.definition.tag"},5:{name:"markup.bold"}},patterns:[{name:"meta.tag.block.th.inline",match:"(!!)((.*?)(\\|))?(.*?)(?=(!!)|$)",captures:{1:{name:"punctuation.definition.tag.begin"},3:{patterns:[{include:"#attribute"}]},4:{name:"punctuation.definition.tag"},5:{name:"markup.bold"}}},{include:"$self"}]},td:{name:"meta.tag.block.td",begin:"^\\s*(\\|)",end:"$",beginCaptures:{1:{name:"punctuation.definition.tag.begin"},2:{patterns:[{include:"#attribute"}]},3:{name:"punctuation.definition.tag"}},patterns:[{include:"$self"}]}}}],"#attribute":[{include:"#string"},{token:"entity.other.attribute-name",regex:/\w+/}],"#string":[{token:"string.quoted.double",regex:/\"/,push:[{token:"string.quoted.double",regex:/\"/,next:"pop"},{defaultToken:"string.quoted.double"}]},{token:"string.quoted.single",regex:/\'/,push:[{token:"string.quoted.single",regex:/\'/,next:"pop"},{defaultToken:"string.quoted.single"}]}],"#url":[{token:"markup.underline.link",regex:/(?:http(?:s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:\/?#\[\]@!\$&'\(\)\*\+,;=.]+/},{token:"invalid.illegal",regex:/.*/}]},this.normalizeRules()};s.metaData={name:"MediaWiki",scopeName:"text.html.mediawiki",fileTypes:["mediawiki","wiki"]},r.inherits(s,i),t.MediaWikiHighlightRules=s}),define("ace/mode/mediawiki",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mediawiki_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./mediawiki_highlight_rules").MediaWikiHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.type="text",this.blockComment={start:""},this.$id="ace/mode/mediawiki"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/mediawiki"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-mel.js b/www/js/ace/mode-mel.js deleted file mode 100644 index d47555964..000000000 --- a/www/js/ace/mode-mel.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/mel_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{caseInsensitive:!0,token:"storage.type.mel",regex:"\\b(matrix|string|vector|float|int|void)\\b"},{caseInsensitive:!0,token:"support.function.mel",regex:"\\b((s(h(ow(ManipCtx|S(hadingGroupAttrEditor|electionInTitle)|H(idden|elp)|Window)|el(f(Button|TabLayout|Layout)|lField)|ading(GeometryRelCtx|Node|Connection|LightRelCtx))|y(s(tem|File)|mbol(Button|CheckBox))|nap(shot|Mode|2to2 |TogetherCtx|Key)|c(ulpt|ene(UIReplacement|Editor)|ale(BrushBrightness |Constraint|Key(Ctx)?)?|r(ipt(Node|Ctx|Table|edPanel(Type)?|Job|EditorInfo)|oll(Field|Layout))|mh)|t(itch(Surface(Points)?|AndExplodeShell )|a(ckTrace|rt(sWith |String ))|r(cmp|i(ng(ToStringArray |Array(Remove(Duplicates | )|C(ount |atenate )|ToString |Intersector))|p )|oke))|i(n(gleProfileBirailSurface)?|ze|gn|mplify)|o(u(nd(Control)?|rce)|ft(Mod(Ctx)?)?|rt)|u(perCtx|rface(S(haderList|ampler))?|b(st(itute(Geometry|AllString )?|ring)|d(M(irror|a(tchTopology|p(SewMove|Cut)))|iv(Crease|DisplaySmoothness)?|C(ollapse|leanTopology)|T(o(Blind|Poly)|ransferUVsToCache)|DuplicateAndConnect|EditUV|ListComponentConversion|AutoProjection)))|p(h(ere|rand)|otLight(PreviewPort)?|aceLocator|r(ing|eadSheetEditor))|e(t(s|MenuMode|Sta(te |rtupMessage|mpDensity )|NodeTypeFlag|ConstraintRestPosition |ToolTo|In(putDeviceMapping|finity)|D(ynamic|efaultShadingGroup|rivenKeyframe)|UITemplate|P(ar(ticleAttr|ent)|roject )|E(scapeCtx|dit(or|Ctx))|Key(Ctx|frame|Path)|F(ocus|luidAttr)|Attr(Mapping)?)|parator|ed|l(ect(Mode|ionConnection|Context|Type|edNodes|Pr(iority|ef)|Key(Ctx)?)?|LoadSettings)|archPathArray )|kin(Cluster|Percent)|q(uareSurface|rt)|w(itchTable|atchDisplayPort)|a(ve(Menu|Shelf|ToolSettings|I(nitialState|mage)|Pref(s|Objects)|Fluid|A(ttrPreset |llShelves))|mpleImage)|rtContext|mooth(step|Curve|TangentSurface))|h(sv_to_rgb|yp(ot|er(Graph|Shade|Panel))|i(tTest|de|lite)|ot(Box|key(Check)?)|ud(Button|Slider(Button)?)|e(lp(Line)?|adsUpDisplay|rmite)|wRe(nder(Load)?|flectionMap)|ard(enPointCurve|ware(RenderPanel)?))|n(o(nLinear|ise|de(Type|IconButton|Outliner|Preset)|rmal(ize |Constraint))|urbs(Boolean|S(elect|quare)|C(opyUVSet|ube)|To(Subdiv|Poly(gonsPref)?)|Plane|ViewDirectionVector )|ew(ton|PanelItems)|ame(space(Info)?|Command|Field))|c(h(oice|dir|eck(Box(Grp)?|DefaultRenderGlobals)|a(n(nelBox|geSubdiv(Region|ComponentDisplayLevel))|racter(Map|OutlineEditor)?))|y(cleCheck|linder)|tx(Completion|Traverse|EditMode|Abort)|irc(ularFillet|le)|o(s|n(str(uctionHistory|ain(Value)?)|nect(ionInfo|Control|Dynamic|Joint|Attr)|t(extInfo|rol)|dition|e|vert(SolidTx|Tessellation|Unit|FromOldLayers |Lightmap)|firmDialog)|py(SkinWeights|Key|Flexor|Array )|l(or(Slider(Grp|ButtonGrp)|Index(SliderGrp)?|Editor|AtPoint)?|umnLayout|lision)|arsenSubdivSelectionList|m(p(onentEditor|utePolysetVolume |actHairSystem )|mand(Port|Echo|Line)))|u(tKey|r(ve(MoveEPCtx|SketchCtx|CVCtx|Intersect|OnSurface|E(ditorCtx|PCtx)|AddPtCtx)?|rent(Ctx|Time(Ctx)?|Unit)))|p(GetSolverAttr|Button|S(olver(Types)?|e(t(SolverAttr|Edit)|am))|C(o(nstraint|llision)|ache)|Tool|P(anel|roperty))|eil|l(ip(Schedule(rOutliner)?|TrimBefore |Editor(CurrentTimeCtx)?)?|ose(Surface|Curve)|uster|ear(Cache)?|amp)|a(n(CreateManip|vas)|tch(Quiet)?|pitalizeString |mera(View)?)|r(oss(Product )?|eate(RenderLayer|MotionField |SubdivRegion|N(ode|ewShelf )|D(isplayLayer|rawCtx)|Editor))|md(Shell|FileOutput))|M(R(ender(ShadowData|Callback|Data|Util|View|Line(Array)?)|ampAttribute)|G(eometryData|lobal)|M(odelMessage|essage|a(nipData|t(erial|rix)))|BoundingBox|S(yntax|ceneMessage|t(atus|ring(Array)?)|imple|pace|elect(ion(Mask|List)|Info)|watchRender(Register|Base))|H(ardwareRenderer|WShaderSwatchGenerator)|NodeMessage|C(o(nditionMessage|lor(Array)?|m(putation|mand(Result|Message)))|ursor|loth(Material|S(ystem|olverRegister)|Con(straint|trol)|Triangle|Particle|Edge|Force)|allbackIdArray)|T(ypeId|ime(r(Message)?|Array)?|oolsInfo|esselationParams|r(imBoundaryArray|ansformationMatrix))|I(ntArray|t(Geometry|Mesh(Polygon|Edge|Vertex|FaceVertex)|S(urfaceCV|electionList)|CurveCV|Instancer|eratorType|D(ependency(Graph|Nodes)|ag)|Keyframe)|k(System|HandleGroup)|mage)|3dView|Object(SetMessage|Handle|Array)?|D(G(M(odifier|essage)|Context)|ynSwept(Triangle|Line)|istance|oubleArray|evice(State|Channel)|a(ta(Block|Handle)|g(M(odifier|essage)|Path(Array)?))|raw(Request(Queue)?|Info|Data|ProcedureBase))|U(serEventMessage|i(nt(Array|64Array)|Message))|P(o(int(Array)?|lyMessage)|lug(Array)?|rogressWindow|x(G(eometry(Iterator|Data)|lBuffer)|M(idiInputDevice|odelEditorCommand|anipContainer)|S(urfaceShape(UI)?|pringNode|electionContext)|HwShaderNode|Node|Co(ntext(Command)?|m(ponentShape|mand))|T(oolCommand|ransform(ationMatrix)?)|IkSolver(Node)?|3dModelView|ObjectSet|D(eformerNode|ata|ragAndDropBehavior)|PolyT(weakUVCommand|rg)|EmitterNode|F(i(eldNode|leTranslator)|luidEmitterNode)|LocatorNode))|E(ulerRotation|vent(Message)?)|ayatomr|Vector(Array)?|Quaternion|F(n(R(otateManip|eflectShader|adialField)|G(e(nericAttribute|ometry(Data|Filter))|ravityField)|M(otionPath|es(sageAttribute|h(Data)?)|a(nip3D|trix(Data|Attribute)))|B(l(innShader|endShapeDeformer)|ase)|S(caleManip|t(ateManip|ring(Data|ArrayData))|ingleIndexedComponent|ubd(Names|Data)?|p(hereData|otLight)|et|kinCluster)|HikEffector|N(on(ExtendedLight|AmbientLight)|u(rbs(Surface(Data)?|Curve(Data)?)|meric(Data|Attribute))|ewtonField)|C(haracter|ircleSweepManip|ompo(nent(ListData)?|undAttribute)|urveSegmentManip|lip|amera)|T(ypedAttribute|oggleManip|urbulenceField|r(ipleIndexedComponent|ansform))|I(ntArrayData|k(Solver|Handle|Joint|Effector))|D(ynSweptGeometryData|i(s(cManip|tanceManip)|rection(Manip|alLight))|ouble(IndexedComponent|ArrayData)|ependencyNode|a(ta|gNode)|ragField)|U(ni(tAttribute|formField)|Int64ArrayData)|P(hong(Shader|EShader)|oint(On(SurfaceManip|CurveManip)|Light|ArrayData)|fxGeometry|lugin(Data)?|arti(cleSystem|tion))|E(numAttribute|xpression)|V(o(lume(Light|AxisField)|rtexField)|ectorArrayData)|KeyframeDelta(Move|B(lockAddRemove|reakdown)|Scale|Tangent|InfType|Weighted|AddRemove)?|F(ield|luid|reePointTriadManip)|W(ireDeformer|eightGeometryFilter)|L(ight(DataAttribute)?|a(yeredShader|ttice(D(eformer|ata))?|mbertShader))|A(ni(sotropyShader|mCurve)|ttribute|irField|r(eaLight|rayAttrsData)|mbientLight))?|ile(IO|Object)|eedbackLine|loat(Matrix|Point(Array)?|Vector(Array)?|Array))|L(i(ghtLinks|brary)|ockMessage)|A(n(im(Message|C(ontrol|urveC(hange|lipboard(Item(Array)?)?))|Util)|gle)|ttribute(Spec(Array)?|Index)|r(rayData(Builder|Handle)|g(Database|Parser|List))))|t(hreePointArcCtx|ime(Control|Port|rX)|o(ol(Button|HasOptions|Collection|Dropped|PropertyWindow)|NativePath |upper|kenize(List )?|l(ower|erance)|rus|ggle(WindowVisibility|Axis)?)|u(rbulence|mble(Ctx)?)|ex(RotateContext|M(oveContext|anipContext)|t(ScrollList|Curves|ure(HairColor |DisplacePlane |PlacementContext|Window)|ToShelf |Field(Grp|ButtonGrp)?)?|S(caleContext|electContext|mudgeUVContext)|WinToolCtx)|woPointArcCtx|a(n(gentConstraint)?|bLayout)|r(im|unc(ate(HairCache|FluidCache))?|a(ns(formLimits|lator)|c(e|k(Ctx)?))))|i(s(olateSelect|Connected|True|Dirty|ParentOf |Valid(String |ObjectName |UiName )|AnimCurve )|n(s(tance(r)?|ert(Joint(Ctx)?|K(not(Surface|Curve)|eyCtx)))|heritTransform|t(S(crollBar|lider(Grp)?)|er(sect|nalVar|ToUI )|Field(Grp)?))|conText(Radio(Button|Collection)|Button|StaticLabel|CheckBox)|temFilter(Render|Type|Attr)?|prEngine|k(S(ystem(Info)?|olver|plineHandleCtx)|Handle(Ctx|DisplayScale)?|fkDisplayMethod)|m(portComposerCurves |fPlugins|age))|o(ceanNurbsPreviewPlane |utliner(Panel|Editor)|p(tion(Menu(Grp)?|Var)|en(GLExtension|MayaPref))|verrideModifier|ffset(Surface|Curve(OnSurface)?)|r(ientConstraint|bit(Ctx)?)|b(soleteProc |j(ect(Center|Type(UI)?|Layer )|Exists)))|d(yn(RelEd(itor|Panel)|Globals|C(ontrol|ache)|P(a(intEditor|rticleCtx)|ref)|Exp(ort|ression)|amicLoad)|i(s(connect(Joint|Attr)|tanceDim(Context|ension)|pla(y(RGBColor|S(tats|urface|moothness)|C(olor|ull)|Pref|LevelOfDetail|Affected)|cementToPoly)|kCache|able)|r(name |ect(ionalLight|KeyCtx)|map)|mWhen)|o(cServer|Blur|t(Product )?|ubleProfileBirailSurface|peSheetEditor|lly(Ctx)?)|uplicate(Surface|Curve)?|e(tach(Surface|Curve|DeviceAttr)|vice(Panel|Editor)|f(ine(DataServer|VirtualDevice)|ormer|ault(Navigation|LightListCheckBox))|l(ete(Sh(elfTab |adingGroupsAndMaterials )|U(nusedBrushes |I)|Attr)?|randstr)|g_to_rad)|agPose|r(opoffLocator|ag(gerContext)?)|g(timer|dirty|Info|eval))|CBG |u(serCtx|n(t(angleUV|rim)|i(t|form)|do(Info)?|loadPlugin|assignInputDevice|group)|iTemplate|p(dateAE |Axis)|v(Snapshot|Link))|joint(C(tx|luster)|DisplayScale|Lattice)?|p(sd(ChannelOutliner|TextureFile|E(ditTextureFile|xport))|close|i(c(ture|kWalk)|xelMove)|o(se|int(MatrixMult |C(onstraint|urveConstraint)|On(Surface|Curve)|Position|Light)|p(upMenu|en)|w|l(y(Reduce|GeoSampler|M(irrorFace|ove(UV|Edge|Vertex|Facet(UV)?)|erge(UV|Edge(Ctx)?|Vertex|Facet(Ctx)?)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|l(indData|endColor))|S(traightenUVBorder|oftEdge|u(perCtx|bdivide(Edge|Facet))|p(her(icalProjection|e)|lit(Ring|Ctx|Edge|Vertex)?)|e(tToFaceNormal|parate|wEdge|lect(Constraint(Monitor)?|EditCtx))|mooth)|Normal(izeUV|PerVertex)?|C(hipOff|ylind(er|ricalProjection)|o(ne|pyUV|l(or(BlindData|Set|PerVertex)|lapse(Edge|Facet)))|u(t(Ctx)?|be)|l(ipboard|oseBorder)|acheMonitor|rea(seEdge|teFacet(Ctx)?))|T(o(Subdiv|rus)|r(iangulate|ansfer))|In(stallAction|fo)|Options|D(uplicate(Edge|AndConnect)|el(Edge|Vertex|Facet))|U(nite|VSet)|P(yramid|oke|lan(e|arProjection)|r(ism|ojection))|E(ditUV|valuate|xtrude(Edge|Facet))|Qu(eryBlindData|ad)|F(orceUV|lip(UV|Edge))|WedgeFace|L(istComponentConversion|ayoutUV)|A(utoProjection|ppend(Vertex|FacetCtx)?|verage(Normal|Vertex)))|eVectorConstraint))|utenv|er(cent|formanceOptions)|fxstrokes|wd|l(uginInfo|a(y(b(last|ackOptions))?|n(e|arSrf)))|a(steKey|ne(l(History|Configuration)?|Layout)|thAnimation|irBlend|use|lettePort|r(ti(cle(RenderInfo|Instancer|Exists)?|tion)|ent(Constraint)?|am(Dim(Context|ension)|Locator)))|r(int|o(j(ect(ion(Manip|Context)|Curve|Tangent)|FileViewer)|pMo(dCtx|ve)|gress(Bar|Window)|mptDialog)|eloadRefEd))|e(n(codeString|d(sWith |String )|v|ableDevice)|dit(RenderLayer(Globals|Members)|or(Template)?|DisplayLayer(Globals|Members)|AttrLimits )|v(ent|al(Deferred|Echo)?)|quivalent(Tol | )|ffector|r(f|ror)|x(clusiveLightCheckBox|t(end(Surface|Curve)|rude)|ists|p(ortComposerCurves |ression(EditorListen)?)?|ec(uteForEachObject )?|actWorldBoundingBox)|mit(ter)?)|v(i(sor|ew(Set|HeadOn|2dToolCtx|C(lipPlane|amera)|Place|Fit|LookAt))|o(lumeAxis|rtex)|e(ctorize|rifyCmd )|alidateShelfName )|key(Tangent|frame(Region(MoveKeyCtx|S(caleKeyCtx|e(tKeyCtx|lectKeyCtx))|CurrentTimeCtx|TrackCtx|InsertKeyCtx|D(irectKeyCtx|ollyCtx))|Stats|Outliner)?)|qu(it|erySubdiv)|f(c(heck|lose)|i(nd(RelatedSkinCluster |MenuItem |er|Keyframe|AllIntersections )|tBspline|l(ter(StudioImport|Curve|Expand)?|e(BrowserDialog|test|Info|Dialog|Extension )?|letCurve)|rstParentOf )|o(ntDialog|pen|rmLayout)|print|eof|flush|write|l(o(or|w|at(S(crollBar|lider(Grp|ButtonGrp|2)?)|Eq |Field(Grp)?))|u(shUndo|id(CacheInfo|Emitter|VoxelInfo))|exor)|r(omNativePath |e(eFormFillet|wind|ad)|ameLayout)|get(word|line)|mod)|w(hatIs|i(ndow(Pref)?|re(Context)?)|orkspace|ebBrowser(Prefs)?|a(itCursor|rning)|ri(nkle(Context)?|teTake))|l(s(T(hroughFilter|ype )|UI)?|i(st(Relatives|MenuAnnotation |Sets|History|NodeTypes|C(onnections|ameras)|Transforms |InputDevice(s|Buttons|Axes)|erEditor|DeviceAttachments|Unselected |A(nimatable|ttr))|n(step|eIntersection )|ght(link|List(Panel|Editor)?))|o(ckNode|okThru|ft|ad(NewShelf |P(lugin|refObjects)|Fluid)|g)|a(ssoContext|y(out|er(Button|ed(ShaderPort|TexturePort)))|ttice(DeformKeyCtx)?|unch(ImageEditor)?))|a(ssign(Command|InputDevice)|n(notate|im(C(one|urveEditor)|Display|View)|gle(Between)?)|tt(ach(Surface|Curve|DeviceAttr)|r(ibute(Menu|Info|Exists|Query)|NavigationControlGrp|Co(ntrolGrp|lorSliderGrp|mpatibility)|PresetEditWin|EnumOptionMenu(Grp)?|Field(Grp|SliderGrp)))|i(r|mConstraint)|d(d(NewShelfTab|Dynamic|PP|Attr(ibuteEditorNodeHelp)?)|vanceToNextDrivenKey)|uto(Place|Keyframe)|pp(endStringArray|l(y(Take|AttrPreset)|icationName))|ffect(s|edNet)|l(i(as(Attr)?|gn(Surface|C(tx|urve))?)|lViewFit)|r(c(len|Len(DimContext|gthDimension))|t(BuildPaintMenu|Se(tPaintCtx|lectCtx)|3dPaintCtx|UserPaintCtx|PuttyCtx|FluidAttrCtx|Attr(SkinPaintCtx|Ctx|PaintVertexCtx))|rayMapper)|mbientLight|b(s|out))|r(igid(Body|Solver)|o(t(at(ionInterpolation|e))?|otOf |undConstantRadius|w(ColumnLayout|Layout)|ll(Ctx)?)|un(up|TimeCommand)|e(s(olutionNode|et(Tool|AE )|ampleFluid)|hash|n(der(GlobalsNode|Manip|ThumbnailUpdate|Info|er|Partition|QualityNode|Window(SelectContext|Editor)|LayerButton)?|ame(SelectionList |UI|Attr)?)|cord(Device|Attr)|target|order(Deformers)?|do|v(olve|erse(Surface|Curve))|quires|f(ineSubdivSelectionList|erence(Edit|Query)?|resh(AE )?)|loadImage|adTake|root|move(MultiInstance|Joint)|build(Surface|Curve))|a(n(d(state|omizeFollicles )?|geControl)|d(i(o(MenuItemCollection|Button(Grp)?|Collection)|al)|_to_deg)|mpColorPort)|gb_to_hsv)|g(o(toBindPose |al)|e(t(M(odifiers|ayaPanelTypes )|Classification|InputDeviceRange|pid|env|DefaultBrush|Pa(nel|rticleAttr)|F(ileList|luidAttr)|A(ttr|pplicationVersionAsFloat ))|ometryConstraint)|l(Render(Editor)?|obalStitch)|a(uss|mma)|r(id(Layout)?|oup(ObjectsByName )?|a(dientControl(NoAttr)?|ph(SelectContext|TrackCtx|DollyCtx)|vity|bColor))|match)|x(pmPicker|form|bmLangPathList )|m(i(n(imizeApp)?|rrorJoint)|o(del(CurrentTimeCtx|Panel|Editor)|use|v(In|e(IKtoFK |VertexAlongDirection|KeyCtx)?|Out))|u(te|ltiProfileBirailSurface)|e(ssageLine|nu(BarLayout|Item(ToShelf )?|Editor)?|mory)|a(nip(Rotate(Context|LimitsCtx)|Move(Context|LimitsCtx)|Scale(Context|LimitsCtx)|Options)|tch|ke(Roll |SingleSurface|TubeOn |Identity|Paintable|bot|Live)|rker|g|x))|b(in(Membership|d(Skin|Pose))|o(neLattice|undary|x(ZoomCtx|DollyCtx))|u(tton(Manip)?|ild(BookmarkMenu|KeyframeMenu)|fferCurve)|e(ssel|vel(Plus)?)|l(indDataType|end(Shape(Panel|Editor)?|2|TwoAttr))|a(sename(Ex | )|tchRender|ke(Results|Simulation|Clip|PartialHistory|FluidShading )))))\\b"},{caseInsensitive:!0,token:"support.constant.mel",regex:"\\b(s(h(ellTessellate|a(d(ing(Map|Engine)|erGlow)|pe))|n(ow|apshot(Shape)?)|c(ulpt|aleConstraint|ript)|t(yleCurve|itch(Srf|AsNurbsShell)|u(cco|dioClearCoat)|encil|roke(Globals)?)|i(ngleShadingSwitch|mpleVolumeShader)|o(ftMod(Manip|Handle)?|lidFractal)|u(rface(Sha(der|pe)|Info|EdManip|VarGroup|Luminance)|b(Surface|d(M(odifier(UV|World)?|ap(SewMove|Cut|pingManip))|B(lindData|ase)|iv(ReverseFaces|SurfaceVarGroup|Co(llapse|mponentId)|To(Nurbs|Poly))?|HierBlind|CleanTopology|Tweak(UV)?|P(lanarProj|rojManip)|LayoutUV|A(ddTopology|utoProj))|Curve))|p(BirailSrf|otLight|ring)|e(tRange|lectionListOperator)|k(inCluster|etchPlane)|quareSrf|ampler(Info)?|m(ooth(Curve|TangentSrf)|ear))|h(svToRgb|yper(GraphInfo|View|Layout)|ik(Solver|Handle|Effector)|oldMatrix|eightField|w(Re(nderGlobals|flectionMap)|Shader)|a(ir(System|Constraint|TubeShader)|rd(enPoint|wareRenderGlobals)))|n(o(n(ExtendedLightShapeNode|Linear|AmbientLightShapeNode)|ise|rmalConstraint)|urbs(Surface|Curve|T(oSubdiv(Proc)?|essellate)|DimShape)|e(twork|wtonField))|c(h(o(ice|oser)|ecker|aracter(Map|Offset)?)|o(n(straint|tr(olPoint|ast)|dition)|py(ColorSet|UVSet))|urve(Range|Shape|Normalizer(Linear|Angle)?|In(tersect|fo)|VarGroup|From(Mesh(CoM|Edge)?|Su(rface(Bnd|CoS|Iso)?|bdiv(Edge|Face)?)))|l(ip(Scheduler|Library)|o(se(stPointOnSurface|Surface|Curve)|th|ud)|uster(Handle)?|amp)|amera(View)?|r(eate(BPManip|ColorSet|UVSet)|ater))|t(ime(ToUnitConversion|Function)?|oo(nLineAttributes|lDrawManip)|urbulenceField|ex(BaseDeformManip|ture(BakeSet|2d|ToGeom|3d|Env)|SmudgeUVManip|LatticeDeformManip)|weak|angentConstraint|r(i(pleShadingSwitch|m(WithBoundaries)?)|ansform(Geometry)?))|i(n(s(tancer|ertKnot(Surface|Curve))|tersectSurface)|k(RPsolver|MCsolver|S(ystem|olver|Csolver|plineSolver)|Handle|PASolver|Effector)|m(plicit(Box|Sphere|Cone)|agePlane))|o(cean(Shader)?|pticalFX|ffset(Surface|C(os|urve))|ldBlindDataBase|rient(Constraint|ationMarker)|bject(RenderFilter|MultiFilter|BinFilter|S(criptFilter|et)|NameFilter|TypeFilter|Filter|AttrFilter))|d(yn(Globals|Base)|i(s(tance(Between|DimShape)|pla(yLayer(Manager)?|cementShader)|kCache)|rect(ionalLight|edDisc)|mensionShape)|o(ubleShadingSwitch|f)|pBirailSrf|e(tach(Surface|Curve)|pendNode|f(orm(Bend|S(ine|quash)|Twist|ableShape|F(unc|lare)|Wave)|ault(RenderUtilityList|ShaderList|TextureList|LightList))|lete(Co(lorSet|mponent)|UVSet))|ag(Node|Pose)|r(opoffLocator|agField))|u(seBackground|n(trim|i(t(Conversion|ToTimeConversion)|formField)|known(Transform|Dag)?)|vChooser)|j(iggle|oint(Cluster|Ffd|Lattice)?)|p(sdFileTex|hong(E)?|o(s(tProcessList|itionMarker)|int(MatrixMult|Constraint|On(SurfaceInfo|CurveInfo)|Emitter|Light)|l(y(Reduce|M(irror|o(difier(UV|World)?|ve(UV|Edge|Vertex|Face(tUV)?))|erge(UV|Edge|Vert|Face)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|lindData|ase)|S(traightenUVBorder|oftEdge|ubd(Edge|Face)|p(h(ere|Proj)|lit(Ring|Edge|Vert)?)|e(parate|wEdge)|mooth(Proxy|Face)?)|Normal(izeUV|PerVertex)?|C(hipOff|yl(inder|Proj)|o(ne|pyUV|l(orPerVertex|lapse(Edge|F)))|u(t(Manip(Container)?)?|be)|loseBorder|rea(seEdge|t(or|eFace)))|T(o(Subdiv|rus)|weak(UV)?|r(iangulate|ansfer))|OptUvs|D(uplicateEdge|el(Edge|Vertex|Facet))|Unite|P(yramid|oke(Manip)?|lan(e|arProj)|r(i(sm|mitive)|oj))|Extrude(Edge|Vertex|Face)|VertexNormalManip|Quad|Flip(UV|Edge)|WedgeFace|LayoutUV|A(utoProj|ppend(Vertex)?|verageVertex))|eVectorConstraint))|fx(Geometry|Hair|Toon)|l(usMinusAverage|a(n(e|arTrimSurface)|ce(2dTexture|3dTexture)))|a(ssMatrix|irBlend|r(ti(cle(SamplerInfo|C(olorMapper|loud)|TranspMapper|IncandMapper|AgeMapper)?|tion)|ent(Constraint|Tessellate)|amDimension))|r(imitive|o(ject(ion|Curve|Tangent)|xyManager)))|e(n(tity|v(Ball|ironmentFog|S(phere|ky)|C(hrome|ube)|Fog))|x(t(end(Surface|Curve)|rude)|p(lodeNurbsShell|ression)))|v(iewManip|o(lume(Shader|Noise|Fog|Light|AxisField)|rtexField)|e(ctor(RenderGlobals|Product)|rtexBakeSet))|quadShadingSwitch|f(i(tBspline|eld|l(ter(Resample|Simplify|ClosestSample|Euler)?|e|letCurve))|o(urByFourMatrix|llicle)|urPointOn(MeshInfo|Subd)|f(BlendSrf(Obsolete)?|d|FilletSrf)|l(ow|uid(S(hape|liceManip)|Texture(2D|3D)|Emitter)|exorShape)|ra(ctal|meCache))|w(tAddMatrix|ire|ood|eightGeometryFilter|ater|rap)|l(ight(Info|Fog|Li(st|nker))?|o(cator|okAt|d(Group|Thresholds)|ft)|uminance|ea(stSquaresModifier|ther)|a(yered(Shader|Texture)|ttice|mbert))|a(n(notationShape|i(sotropic|m(Blend(InOut)?|C(urve(T(T|U|L|A)|U(T|U|L|A))?|lip)))|gleBetween)|tt(ach(Surface|Curve)|rHierarchyTest)|i(rField|mConstraint)|dd(Matrix|DoubleLinear)|udio|vg(SurfacePoints|NurbsSurfacePoints|Curves)|lign(Manip|Surface|Curve)|r(cLengthDimension|tAttrPaintTest|eaLight|rayMapper)|mbientLight|bstractBase(NurbsConversion|Create))|r(igid(Body|Solver|Constraint)|o(ck|undConstantRadius)|e(s(olution|ultCurve(TimeTo(Time|Unitless|Linear|Angular))?)|nder(Rect|Globals(List)?|Box|Sphere|Cone|Quality|L(ight|ayer(Manager)?))|cord|v(olve(dPrimitive)?|erse(Surface|Curve)?)|f(erence|lect)|map(Hsv|Color|Value)|build(Surface|Curve))|a(dialField|mp(Shader)?)|gbToHsv|bfSrf)|g(uide|eo(Connect(or|able)|metry(Shape|Constraint|VarGroup|Filter))|lobal(Stitch|CacheControl)|ammaCorrect|r(id|oup(Id|Parts)|a(nite|vityField)))|Fur(Globals|Description|Feedback|Attractors)|xformManip|m(o(tionPath|untain|vie)|u(te|lt(Matrix|i(plyDivide|listerLight)|DoubleLinear))|pBirailSrf|e(sh(VarGroup)?|ntalray(Texture|IblShape))|a(terialInfo|ke(Group|Nurb(sSquare|Sphere|C(ylinder|ircle|one|ube)|Torus|Plane)|CircularArc|T(hreePointCircularArc|extCurves|woPointCircularArc))|rble))|b(irailSrf|o(neLattice|olean|undary(Base)?)|u(lge|mp(2d|3d))|evel(Plus)?|l(in(n|dDataTemplate)|end(Shape|Color(s|Sets)|TwoAttr|Device|Weighted)?)|a(se(GeometryVarGroup|ShadingSwitch|Lattice)|keSet)|r(ownian|ush)))\\b"},{caseInsensitive:!0,token:"keyword.control.mel",regex:"\\b(if|in|else|for|while|break|continue|case|default|do|switch|return|switch|case|source|catch|alias)\\b"},{token:"keyword.other.mel",regex:"\\b(global)\\b"},{caseInsensitive:!0,token:"constant.language.mel",regex:"\\b(null|undefined)\\b"},{token:"constant.numeric.mel",regex:"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b"},{token:"punctuation.definition.string.begin.mel",regex:'"',push:[{token:"constant.character.escape.mel",regex:"\\\\."},{token:"punctuation.definition.string.end.mel",regex:'"',next:"pop"},{defaultToken:"string.quoted.double.mel"}]},{token:["variable.other.mel","punctuation.definition.variable.mel"],regex:"(\\$)([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*?\\b)"},{token:"punctuation.definition.string.begin.mel",regex:"'",push:[{token:"constant.character.escape.mel",regex:"\\\\."},{token:"punctuation.definition.string.end.mel",regex:"'",next:"pop"},{defaultToken:"string.quoted.single.mel"}]},{token:"constant.language.mel",regex:"\\b(false|true|yes|no|on|off)\\b"},{token:"punctuation.definition.comment.mel",regex:"/\\*",push:[{token:"punctuation.definition.comment.mel",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.mel"}]},{token:["comment.line.double-slash.mel","punctuation.definition.comment.mel"],regex:"(//)(.*$\\n?)"},{caseInsensitive:!0,token:"keyword.operator.mel",regex:"\\b(instanceof)\\b"},{token:"keyword.operator.symbolic.mel",regex:"[-\\!\\%\\&\\*\\+\\=\\/\\?\\:]"},{token:["meta.preprocessor.mel","punctuation.definition.preprocessor.mel"],regex:"(^[ \\t]*)((?:#)[a-zA-Z]+)"},{token:["meta.function.mel","keyword.other.mel","storage.type.mel","entity.name.function.mel","punctuation.section.function.mel"],regex:"(global\\s*)?(proc\\s*)(\\w+\\s*\\[?\\]?\\s+|\\s+)([A-Za-z_][A-Za-z0-9_\\.]*)(\\s*\\()",push:[{include:"$self"},{token:"punctuation.section.function.mel",regex:"\\)",next:"pop"},{defaultToken:"meta.function.mel"}]}]},this.normalizeRules()};r.inherits(s,i),t.MELHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/mel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mel_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./mel_highlight_rules").MELHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/mel"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/mel"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-mips.js b/www/js/ace/mode-mips.js deleted file mode 100644 index 56900b458..000000000 --- a/www/js/ace/mode-mips.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/mips_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=/\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source;this.$rules={start:[{token:"storage.modifier.mips",regex:/\.\b(?:align|ascii|asciiz|byte|double|extern|float|globl|space|word)\b/,comment:"Assembler directives for data storage"},{token:"entity.name.section.mips",regex:/\.\b(?:data|text|kdata|ktext|)\b/,comment:"Segements: .data .text"},{token:"variable.parameter.mips",regex:/\$(?:(?:3[01]|[12]?[0-9]|[0-9])|zero|at|v[01]|a[0-3]|s[0-7]|t[0-9]|k[01]|gp|sp|fp|ra)/,comment:"Registers by id $1, $2, ..."},{token:"variable.parameter.mips",regex:/\$f(?:[0-9]|[1-2][0-9]|3[0-1])/,comment:"Floating point registers"},{token:"support.function.source.mips",regex:/\b(?:(?:add|sub|div|l|mov|mult|neg|s|c\.eq|c\.le|c\.lt)\.[ds]|cvt\.s\.[dw]|cvt\.d\.[sw]|cvt\.w\.[ds]|bc1[tf])\b/,comment:"The MIPS floating-point instruction set"},{token:"support.function.source.mips",regex:/\b(?:add|addu|addi|addiu|sub|subu|and|andi|or|not|ori|nor|xor|xori|slt|sltu|slti|sltiu|sll|sllv|rol|srl|sra|srlv|ror|j|jr|jal|beq|bne|lw|sw|lb|sb|lui|move|mfhi|mflo|mthi|mtlo)\b/,comment:"Just the hardcoded instructions provided by the MIPS assembly language"},{token:"support.function.other.mips",regex:/\b(?:abs|b|beqz|bge|bgt|bgtu|ble|bleu|blt|bltu|bnez|div|divu|la|li|move|mul|neg|not|rem|remu|seq|sge|sgt|sle|sne)\b/,comment:"Pseudo instructions"},{token:"entity.name.function.mips",regex:/\bsyscall\b/,comment:"Other"},{token:"string",regex:"(?:'\")(?:"+e+"|.)?(?:'\")"},{token:"string.start",regex:"'",stateName:"qstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:e},{token:"string.end",regex:"'|$",next:"start"},{defaultToken:"string"}]},{token:"string.start",regex:'"',stateName:"qqstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:e},{token:"string.end",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric.mips",regex:/\b(?:\d+|0(?:x|X)[a-fA-F0-9]+)\b/,comment:"Numbers like +12, -3, 55, 0x3F"},{token:"entity.name.tag.mips",regex:/\b[\w]+\b:/,comment:"Labels at line start: begin_repeat: add ..."},{token:"comment.assembly",regex:/#.*$/,comment:"Single line comments"}]},this.normalizeRules()};s.metaData={fileTypes:["s","asm"],name:"MIPS",scopeName:"source.mips"},r.inherits(s,i),t.MIPSHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/mips",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mips_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./mips_highlight_rules").MIPSHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart=["#"],this.$id="ace/mode/mips"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/mips"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-mixal.js b/www/js/ace/mode-mixal.js deleted file mode 100644 index cbd6e64b6..000000000 --- a/www/js/ace/mode-mixal.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/mixal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=function(e){return e&&e.search(/^[A-Z\u0394\u03a0\u03a30-9]{1,10}$/)>-1&&e.search(/[A-Z\u0394\u03a0\u03a3]/)>-1},t=function(e){return e&&["NOP","ADD","FADD","SUB","FSUB","MUL","FMUL","DIV","FDIV","NUM","CHAR","HLT","SLA","SRA","SLAX","SRAX","SLC","SRC","MOVE","LDA","LD1","LD2","LD3","LD4","LD5","LD6","LDX","LDAN","LD1N","LD2N","LD3N","LD4N","LD5N","LD6N","LDXN","STA","ST1","ST2","ST3","ST4","ST5","ST6","STX","STJ","STZ","JBUS","IOC","IN","OUT","JRED","JMP","JSJ","JOV","JNOV","JL","JE","JG","JGE","JNE","JLE","JAN","JAZ","JAP","JANN","JANZ","JANP","J1N","J1Z","J1P","J1NN","J1NZ","J1NP","J2N","J2Z","J2P","J2NN","J2NZ","J2NP","J3N","J3Z","J3P","J3NN","J3NZ","J3NP","J4N","J4Z","J4P","J4NN","J4NZ","J4NP","J5N","J5Z","J5P","J5NN","J5NZ","J5NP","J6N","J6Z","J6P","J6NN","J6NZ","J6NP","JXN","JXZ","JXP","JXNN","JXNZ","JXNP","INCA","DECA","ENTA","ENNA","INC1","DEC1","ENT1","ENN1","INC2","DEC2","ENT2","ENN2","INC3","DEC3","ENT3","ENN3","INC4","DEC4","ENT4","ENN4","INC5","DEC5","ENT5","ENN5","INC6","DEC6","ENT6","ENN6","INCX","DECX","ENTX","ENNX","CMPA","FCMP","CMP1","CMP2","CMP3","CMP4","CMP5","CMP6","CMPX","EQU","ORIG","CON","ALF","END"].indexOf(e)>-1},n=function(e){return e&&e.search(/[^ A-Z\u0394\u03a0\u03a30-9.,()+*/=$<>@;:'-]/)==-1};this.$rules={start:[{token:"comment.line.character",regex:/^ *\*.*$/},{token:function(t,r,i,s,o,u){return[e(t)?"variable.other":"invalid.illegal","text","keyword.control","text",n(o)?"text":"invalid.illegal","comment.line.character"]},regex:/^(\S+)?( +)(ALF)( )(.{5})(\s+.*)?$/},{token:function(t,r,i,s,o,u){return[e(t)?"variable.other":"invalid.illegal","text","keyword.control","text",n(o)?"text":"invalid.illegal","comment.line.character"]},regex:/^(\S+)?( +)(ALF)( )(\S.{4})(\s+.*)?$/},{token:function(n,r,i,s){return[e(n)?"variable.other":"invalid.illegal","text",t(i)?"keyword.control":"invalid.illegal","comment.line.character"]},regex:/^(\S+)?( +)(\S+)(?:\s*)$/},{token:function(r,i,s,o,u,a){return[e(r)?"variable.other":"invalid.illegal","text",t(s)?"keyword.control":"invalid.illegal","text",n(u)?"text":"invalid.illegal","comment.line.character"]},regex:/^(\S+)?( +)(\S+)( +)(\S+)(\s+.*)?$/},{defaultToken:"text"}]}};r.inherits(s,i),t.MixalHighlightRules=s}),define("ace/mode/mixal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mixal_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./mixal_highlight_rules").MixalHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/mixal",this.lineCommentStart="*"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/mixal"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-mushcode.js b/www/js/ace/mode-mushcode.js deleted file mode 100644 index 943191e97..000000000 --- a/www/js/ace/mode-mushcode.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/mushcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="@if|@ifelse|@switch|@halt|@dolist|@create|@scent|@sound|@touch|@ataste|@osound|@ahear|@aahear|@amhear|@otouch|@otaste|@drop|@odrop|@adrop|@dropfail|@odropfail|@smell|@oemit|@emit|@pemit|@parent|@clone|@taste|whisper|page|say|pose|semipose|teach|touch|taste|smell|listen|look|move|go|home|follow|unfollow|desert|dismiss|@tel",t="=#0",n="default|edefault|eval|get_eval|get|grep|grepi|hasattr|hasattrp|hasattrval|hasattrpval|lattr|nattr|poss|udefault|ufun|u|v|uldefault|xget|zfun|band|bnand|bnot|bor|bxor|shl|shr|and|cand|cor|eq|gt|gte|lt|lte|nand|neq|nor|not|or|t|xor|con|entrances|exit|followers|home|lcon|lexits|loc|locate|lparent|lsearch|next|num|owner|parent|pmatch|rloc|rnum|room|where|zone|worn|held|carried|acos|asin|atan|ceil|cos|e|exp|fdiv|fmod|floor|log|ln|pi|power|round|sin|sqrt|tan|aposs|andflags|conn|commandssent|controls|doing|elock|findable|flags|fullname|hasflag|haspower|hastype|hidden|idle|isbaker|lock|lstats|money|who|name|nearby|obj|objflags|photo|poll|powers|pendingtext|receivedtext|restarts|restarttime|subj|shortestpath|tmoney|type|visible|cat|element|elements|extract|filter|filterbool|first|foreach|fold|grab|graball|index|insert|itemize|items|iter|last|ldelete|map|match|matchall|member|mix|munge|pick|remove|replace|rest|revwords|setdiff|setinter|setunion|shuffle|sort|sortby|splice|step|wordpos|words|add|lmath|max|mean|median|min|mul|percent|sign|stddev|sub|val|bound|abs|inc|dec|dist2d|dist3d|div|floordiv|mod|modulo|remainder|vadd|vdim|vdot|vmag|vmax|vmin|vmul|vsub|vunit|regedit|regeditall|regeditalli|regediti|regmatch|regmatchi|regrab|regraball|regraballi|regrabi|regrep|regrepi|after|alphamin|alphamax|art|before|brackets|capstr|case|caseall|center|containsfansi|comp|decompose|decrypt|delete|edit|encrypt|escape|if|ifelse|lcstr|left|lit|ljust|merge|mid|ostrlen|pos|repeat|reverse|right|rjust|scramble|secure|space|spellnum|squish|strcat|strmatch|strinsert|stripansi|stripfansi|strlen|switch|switchall|table|tr|trim|ucstr|unsafe|wrap|ctitle|cwho|channels|clock|cflags|ilev|itext|inum|convsecs|convutcsecs|convtime|ctime|etimefmt|isdaylight|mtime|secs|msecs|starttime|time|timefmt|timestring|utctime|atrlock|clone|create|cook|dig|emit|lemit|link|oemit|open|pemit|remit|set|tel|wipe|zemit|fbcreate|fbdestroy|fbwrite|fbclear|fbcopy|fbcopyto|fbclip|fbdump|fbflush|fbhset|fblist|fbstats|qentries|qentry|play|ansi|break|c|asc|die|isdbref|isint|isnum|isletters|linecoords|localize|lnum|nameshort|null|objeval|r|rand|s|setq|setr|soundex|soundslike|valid|vchart|vchart2|vlabel|@@|bakerdays|bodybuild|box|capall|catalog|children|ctrailer|darttime|debt|detailbar|exploredroom|fansitoansi|fansitoxansi|fullbar|halfbar|isdarted|isnewbie|isword|lambda|lobjects|lplayers|lthings|lvexits|lvobjects|lvplayers|lvthings|newswrap|numsuffix|playerson|playersthisweek|randomad|randword|realrandword|replacechr|second|splitamount|strlenall|text|third|tofansi|totalac|unique|getaddressroom|listpropertycomm|listpropertyres|lotowner|lotrating|lotratingcount|lotvalue|boughtproduct|companyabb|companyicon|companylist|companyname|companyowners|companyvalue|employees|invested|productlist|productname|productowners|productrating|productratingcount|productsoldat|producttype|ratedproduct|soldproduct|topproducts|totalspentonproduct|totalstock|transfermoney|uniquebuyercount|uniqueproductsbought|validcompany|deletepicture|fbsave|getpicturesecurity|haspicture|listpictures|picturesize|replacecolor|rgbtocolor|savepicture|setpicturesecurity|showpicture|piechart|piechartlabel|createmaze|drawmaze|drawwireframe",r=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":n,"constant.language":t,keyword:e},"identifier"),i="(?:r|u|ur|R|U|UR|Ur|uR)?",s="(?:(?:[1-9]\\d*)|(?:0))",o="(?:0[oO]?[0-7]+)",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:0[bB][01]+)",f="(?:"+s+"|"+o+"|"+u+"|"+a+")",l="(?:[eE][+-]?\\d+)",c="(?:\\.\\d+)",h="(?:\\d+)",p="(?:(?:"+h+"?"+c+")|(?:"+h+"\\.))",d="(?:(?:"+p+"|"+h+")"+l+")",v="(?:"+d+"|"+p+")";this.$rules={start:[{token:"variable",regex:"%[0-9]{1}"},{token:"variable",regex:"%q[0-9A-Za-z]{1}"},{token:"variable",regex:"%[a-zA-Z]{1}"},{token:"variable.language",regex:"%[a-z0-9-_]+"},{token:"constant.numeric",regex:"(?:"+v+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:v},{token:"constant.numeric",regex:f+"[lL]\\b"},{token:"constant.numeric",regex:f+"\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|#|%|<<|>>|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.MushCodeRules=s}),define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){this.foldingStartMarker=new RegExp("([\\[{])(?:\\s*)$|("+e+")(?:\\s*)(?:#.*)?$")};r.inherits(s,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i)return i[1]?this.openingBracketBlock(e,i[1],n,i.index):i[2]?this.indentationBlock(e,n,i.index+i[2].length):this.indentationBlock(e,n)}}.call(s.prototype)}),define("ace/mode/mushcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mushcode_highlight_rules","ace/mode/folding/pythonic","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./mushcode_highlight_rules").MushCodeRules,o=e("./folding/pythonic").FoldMode,u=e("../range").Range,a=function(){this.HighlightRules=s,this.foldingRules=new o("\\:"),this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new u(n,r.length-i.length,n,r.length))},this.$id="ace/mode/mushcode"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/mushcode"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-mysql.js b/www/js/ace/mode-mysql.js deleted file mode 100644 index 94dbaad2d..000000000 --- a/www/js/ace/mode-mysql.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/mysql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){function l(e){var t=e.start,n=e.escape;return{token:"string.start",regex:t,next:[{token:"constant.language.escape",regex:n},{token:"string.end",next:"start",regex:t},{defaultToken:"string"}]}}var e="alter|and|as|asc|between|count|create|delete|desc|distinct|drop|from|lateral|having|in|insert|into|is|join|like|not|on|or|order|select|set|table|union|intersect|except|update|values|where|accessible|action|add|after|algorithm|all|analyze|asensitive|at|authors|auto_increment|autocommit|avg|avg_row_length|before|binary|binlog|both|btree|cache|call|cascade|cascaded|case|catalog_name|chain|change|changed|character|check|checkpoint|checksum|class_origin|client_statistics|close|code|collate|collation|collations|column|columns|comment|commit|committed|completion|concurrent|condition|connection|consistent|constraint|contains|continue|contributors|convert|cross|current_date|current_time|current_timestamp|current_user|cursor|data|database|databases|day_hour|day_microsecond|day_minute|day_second|deallocate|dec|declare|default|delay_key_write|delayed|delimiter|des_key_file|describe|deterministic|dev_pop|dev_samp|deviance|directory|disable|discard|distinctrow|div|dual|dumpfile|each|elseif|enable|enclosed|end|ends|engine|engines|enum|errors|escape|escaped|even|event|events|every|execute|exists|exit|explain|extended|fast|fetch|field|fields|first|flush|for|force|foreign|found_rows|full|fulltext|function|general|global|grant|grants|group|by|group_concat|handler|hash|help|high_priority|hosts|hour_microsecond|hour_minute|hour_second|if|ignore|ignore_server_ids|import|index|index_statistics|infile|inner|innodb|inout|insensitive|insert_method|install|interval|invoker|isolation|iterate|key|keys|kill|language|last|leading|leave|left|level|limit|linear|lines|list|load|local|localtime|localtimestamp|lock|logs|low_priority|master|master_heartbeat_period|master_ssl_verify_server_cert|masters|match|max|max_rows|maxvalue|message_text|middleint|migrate|min|min_rows|minute_microsecond|minute_second|mod|mode|modifies|modify|mutex|mysql_errno|natural|next|no|no_write_to_binlog|offline|offset|one|online|open|optimize|option|optionally|out|outer|outfile|pack_keys|parser|partition|partitions|password|phase|plugin|plugins|prepare|preserve|prev|primary|privileges|procedure|processlist|profile|profiles|purge|query|quick|range|read|read_write|reads|real|rebuild|recover|references|regexp|relaylog|release|remove|rename|reorganize|repair|repeatable|replace|require|resignal|restrict|resume|return|returns|revoke|right|rlike|rollback|rollup|row|row_format|rtree|savepoint|schedule|schema|schema_name|schemas|second_microsecond|security|sensitive|separator|serializable|server|session|share|show|signal|slave|slow|smallint|snapshot|soname|spatial|specific|sql|sql_big_result|sql_buffer_result|sql_cache|sql_calc_found_rows|sql_no_cache|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|start|starting|starts|status|std|stddev|stddev_pop|stddev_samp|storage|straight_join|subclass_origin|sum|suspend|table_name|table_statistics|tables|tablespace|temporary|terminated|to|trailing|transaction|trigger|triggers|truncate|uncommitted|undo|uninstall|unique|unlock|upgrade|usage|use|use_frm|user|user_resources|user_statistics|using|utc_date|utc_time|utc_timestamp|value|variables|varying|view|views|warnings|when|while|with|work|write|xa|xor|year_month|zerofill|begin|do|then|else|loop|repeat",t="rank|coalesce|ifnull|isnull|nvl",n="charset|clear|connect|edit|ego|exit|go|help|nopager|notee|nowarning|pager|print|prompt|quit|rehash|source|status|system|tee",r="adddate|addtime|convert_tz|curdate|current_date|current_time|current_timestamp|curtime|date|date_add|date_format|date_sub|datediff|day|dayname|dayofmonth|dayofweek|dayofyear|extract|from_days|from_unixtime|get_format|hour|last_day|localtime|localtimestamp|makedate|maketime|microsecond|minute|month|monthname|now|period_add|period_diff|quarter|sec_to_time|second|str_to_date|subdate|subtime|sysdate|time|time_format|time_to_sec|timediff|timestamp|timestampadd|timestampdiff|to_days|to_seconds|unix_timestamp|utc_date|utc_time|utc_timestamp|week|weekday|weekofyear|year|yearweek",i="aes_decrypt|aes_encrypt|compress|md|random_bytes|sha|sha|statement_digest|statement_digest_text|uncompress|uncompressed_length|validate_password_strength",o="abs|acos|asin|atan|atan|ceil|ceiling|conv|cos|cot|crc|degrees|div|exp|floor|ln|log|log10|log2|mod|pi|pow|power|radians|rand|round|sign|sin|sqrt|tan|truncate",u="ascii|bin|bit_length|char|char_length|character_length|concat|concat_ws|elt|export_set|field|find_in_set|format|from_base|hex|insert|instr|lcase|left|length|like|load_file|locate|lower|lpad|ltrim|make_set|match|mid|not|not|oct|octet_length|ord|position|quote|regexp|regexp_instr|regexp_like|regexp_replace|regexp_substr|repeat|replace|reverse|right|rlike|rpad|rtrim|soundex|sounds|space|strcmp|substr|substring|substring_index|to_base|trim|ucase|unhex|upper|weight_string",a="bool|boolean|bit|blob|decimal|double|enum|float|long|longblob|longtext|medium|mediumblob|mediumint|mediumtext|time|timestamp|tinyblob|tinyint|tinytext|text|bigint|int|int1|int2|int3|int4|int8|integer|float|float4|float8|double|char|varbinary|varchar|varcharacter|precision|date|datetime|year|unsigned|signed|numeric",f=this.createKeywordMapper({"support.function":[t,r,i,o,u].join("|"),keyword:e,"storage.type":a,constant:"false|true|null|unknown|ODBCdotTable|zerolessFloat","variable.language":n},"identifier",!0);this.$rules={start:[{token:"comment",regex:"(?:-- |#).*$"},l({start:'"',escape:/\\[0'"bnrtZ\\%_]?/}),l({start:"'",escape:/\\[0'"bnrtZ\\%_]?/}),s.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+|[xX]'[0-9a-fA-F]+'|0[bB][01]+|[bB]'[01]+'/},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:f,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"constant.class",regex:"@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"constant.buildin",regex:"`[^`]*`"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.normalizeRules()};r.inherits(u,o),t.MysqlHighlightRules=u}),define("ace/mode/mysql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mysql_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../mode/text").Mode,s=e("./mysql_highlight_rules").MysqlHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart=["--","#"],this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/mysql"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/mysql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-nasal.js b/www/js/ace/mode-nasal.js deleted file mode 100644 index d9419facf..000000000 --- a/www/js/ace/mode-nasal.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/nasal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"constant.other.allcaps.nasal",regex:/\b[[:upper:]_][[:upper:][:digit:]_]*\b(?![\.\(\'\"])/,comment:"Match identifiers in ALL_CAPS as constants, except when followed by `.`, `(`, `'`, or `\"`."},{todo:{token:["support.class.nasal","meta.function.nasal","entity.name.function.nasal","meta.function.nasal","keyword.operator.nasal","meta.function.nasal","storage.type.function.nasal","meta.function.nasal","punctuation.definition.parameters.begin.nasal"],regex:/([a-zA-Z_?.$][\w?.$]*)(\.)([a-zA-Z_?.$][\w?.$]*)(\s*)(=)(\s*)(func)(\s*)(\()/,push:[{token:"punctuation.definition.parameters.end.nasal",regex:/\)/,next:"pop"},{include:"$self"},{token:"variable.parameter.nasal",regex:/\w/},{defaultToken:"meta.function.nasal"}]},comment:"match stuff like: Sound.play = func() { \u2026 }"},{todo:{token:["entity.name.function.nasal","meta.function.nasal","keyword.operator.nasal","meta.function.nasal","storage.type.function.nasal","meta.function.nasal","punctuation.definition.parameters.begin.nasal"],regex:/([a-zA-Z_?$][\w?$]*)(\s*)(=)(\s*)(func)(\s*)(\()/,push:[{token:"punctuation.definition.parameters.end.nasal",regex:/\)/,next:"pop"},{include:"$self"},{token:"variable.parameter.nasal",regex:/\w/},{defaultToken:"meta.function.nasal"}]},comment:"match stuff like: play = func() { \u2026 }"},{todo:{token:["entity.name.function.nasal","meta.function.nasal","keyword.operator.nasal","meta.function.nasal","storage.type.function.nasal","meta.function.nasal","punctuation.definition.parameters.begin.nasal"],regex:/([a-zA-Z_?$][\w?$]*)(\s*)(=)(\s*\(\s*)(func)(\s*)(\()/,push:[{token:"punctuation.definition.parameters.end.nasal",regex:/\)/,next:"pop"},{include:"$self"},{token:"variable.parameter.nasal",regex:/\w/},{defaultToken:"meta.function.nasal"}]},comment:"match stuff like: play = (func() { \u2026 }"},{todo:{token:["entity.name.function.nasal","meta.function.hash.nasal","storage.type.function.nasal","meta.function.hash.nasal","punctuation.definition.parameters.begin.nasal"],regex:/\b([a-zA-Z_?.$][\w?.$]*)(\s*:\s*\b)(func)(\s*)(\()/,push:[{token:"punctuation.definition.parameters.end.nasal",regex:/\)/,next:"pop"},{include:"$self"},{token:"variable.parameter.nasal",regex:/\w/},{defaultToken:"meta.function.hash.nasal"}]},comment:"match stuff like: foobar: func() { \u2026 }"},{todo:{token:["storage.type.function.nasal","meta.function.nasal","punctuation.definition.parameters.begin.nasal"],regex:/\b(func)(\s*)(\()/,push:[{token:"punctuation.definition.parameters.end.nasal",regex:/\)/,next:"pop"},{include:"$self"},{token:"variable.parameter.nasal",regex:/\w/},{defaultToken:"meta.function.nasal"}]},comment:"match stuff like: func() { \u2026 }"},{token:["keyword.operator.new.nasal","meta.class.instance.constructor","entity.name.type.instance.nasal"],regex:/(new)(\s+)(\w+(?:\.\w*)?)/},{token:"keyword.control.nasal",regex:/\b(?:if|else|elsif|while|for|foreach|forindex)\b/},{token:"keyword.control.nasal",regex:/\b(?:break(?:\s+[A-Z]{2,16})?(?=\s*(?:;|\}))|continue(?:\s+[A-Z]{2,16})?(?=\s*(?:;|\}))|[A-Z]{2,16}(?=\s*;(?:[^\)#;]*?;){0,2}[^\)#;]*?\)))\b/},{token:"keyword.operator.nasal",regex:/!|\*|\-|\+|~|\/|==|=|!=|<=|>=|<|>|!|\?|\:|\*=|\/=|\+=|\-=|~=|\.\.\.|\b(?:and|or)\b/},{token:"variable.language.nasal",regex:/\b(?:me|arg|parents|obj)\b/},{token:"storage.type.nasal",regex:/\b(?:return|var)\b/},{token:"constant.language.nil.nasal",regex:/\bnil\b/},{token:"punctuation.definition.string.begin.nasal",regex:/'/,push:[{token:"punctuation.definition.string.end.nasal",regex:/'/,next:"pop"},{token:"constant.character.escape.nasal",regex:/\\'/},{defaultToken:"string.quoted.single.nasal"}],comment:"Single quoted strings"},{token:"punctuation.definition.string.begin.nasal",regex:/"/,push:[{token:"punctuation.definition.string.end.nasal",regex:/"/,next:"pop"},{token:"constant.character.escape.nasal",regex:/\\(?:x[\da-fA-F]{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|r|n|t|\\|")/},{token:"constant.character.escape.nasal",regex:/%(?:%|(?:\d+\$)?[+-]?(?:[ 0]|'.{1})?-?\d*(?:\.\d+)?[bcdeEufFgGosxX])/},{defaultToken:"string.quoted.double.nasal"}],comment:"Double quoted strings"},{token:["punctuation.definition.string.begin.nasal","string.other","punctuation.definition.string.end.nasal"],regex:/(`)(.)(`)/,comment:"Single-byte ASCII character constants"},{token:["punctuation.definition.comment.nasal","comment.line.hash.nasal"],regex:/(#)(.*$)/,comment:"Comments"},{token:"constant.numeric.nasal",regex:/(?:(?:\b[0-9]+)?\.)?\b[0-9]+(?:[eE][-+]?[0-9]+)?\b/,comment:"Integers, floats, and scientific format"},{token:"constant.numeric.nasal",regex:/0[x|X][0-9a-fA-F]+/,comment:"Hex codes"},{token:"punctuation.terminator.statement.nasal",regex:/\;/},{token:["punctuation.section.scope.begin.nasal","punctuation.section.scope.end.nasal"],regex:/(\[)(\])/},{todo:{token:"punctuation.section.scope.begin.nasal",regex:/\{/,push:[{token:"punctuation.section.scope.end.nasal",regex:/\}/,next:"pop"},{include:"$self"}]}},{todo:{token:"punctuation.section.scope.begin.nasal",regex:/\(/,push:[{token:"punctuation.section.scope.end.nasal",regex:/\)/,next:"pop"},{include:"$self"}]}},{token:"invalid.illegal",regex:/%|\$|@|&|\^|\||\\|`/,comment:"Illegal characters"},{todo:{comment:"TODO: Symbols in hash keys"},comment:"TODO: Symbols in hash keys"},{token:"variable.language.nasal",regex:/\b(?:append|bind|call|caller|chr|closure|cmp|compile|contains|delete|die|find|ghosttype|id|int|keys|left|num|pop|right|setsize|size|sort|split|sprintf|streq|substr|subvec|typeof|readline)\b/,comment:"Core functions"},{token:"variable.language.nasal",regex:/\b(?:abort|abs|aircraftToCart|addcommand|airportinfo|airwaysRoute|assert|carttogeod|cmdarg|courseAndDistance|createDiscontinuity|createViaTo|createWP|createWPFrom|defined|directory|fgcommand|findAirportsByICAO|findAirportsWithinRange|findFixesByID|findNavaidByFrequency|findNavaidsByFrequency|findNavaidsByID|findNavaidsWithinRange|finddata|flightplan|geodinfo|geodtocart|get_cart_ground_intersection|getprop|greatCircleMove|interpolate|isa|logprint|magvar|maketimer|start|stop|restart|maketimestamp|md5|navinfo|parse_markdown|parsexml|print|printf|printlog|rand|registerFlightPlanDelegate|removecommand|removelistener|resolvepath|setlistener|_setlistener|setprop|srand|systime|thisfunc|tileIndex|tilePath|values)\b/,comment:"FG ext core functions"},{token:"variable.language.nasal",regex:/\b(?:singleShot|isRunning|simulatedTime)\b/,comment:"FG ext core functions"},{token:"constant.language.nasal",regex:/\b(?:D2R|FPS2KT|FT2M|GAL2L|IN2M|KG2LB|KT2FPS|KT2MPS|LG2GAL|LB2KG|M2FT|M2IN|M2NM|MPS2KT|NM2M|R2D)\b/,comment:"FG ext core constants"},{token:"support.function.nasal",regex:/\b(?:addChild|addChildren|alias|clearValue|equals|getAliasTarget|getAttribute|getBoolValue|getChild|getChildren|getIndex|getName|getNode|getParent|getPath|getType|getValue|getValues|initNode|remove|removeAllChildren|removeChild|removeChildren|setAttribute|setBoolValue|setDoubleValue|setIntValue|setValue|setValues|unalias|compileCondition|condition|copy|dump|getNode|nodeList|runBinding|setAll|wrap|wrapNode)\b/,comment:"FG func props"},{token:"support.class.nasal",regex:/\bNode\b/,comment:"FG node class"},{token:"variable.language.nasal",regex:/\b(?:props|globals)\b/,comment:"FG func props variables"},{todo:{token:["support.function.nasal","punctuation.definition.arguments.begin.nasal"],regex:/\b([a-zA-Z_?$][\w?$]*)(\()/,push:[{token:"punctuation.definition.arguments.end.nasal",regex:/\)/,next:"pop"},{include:"$self"},{defaultToken:"meta.function-call.nasal"}]},comment:"function call"}]},this.normalizeRules()};s.metaData={fileTypes:["nas"],name:"Nasal",scopeName:"source.nasal"},r.inherits(s,i),t.NasalHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/nasal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nasal_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./nasal_highlight_rules").NasalHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.$id="ace/mode/nasal"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/nasal"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-nginx.js b/www/js/ace/mode-nginx.js deleted file mode 100644 index ed50c48b0..000000000 --- a/www/js/ace/mode-nginx.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/nginx_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="include|index|absolute_redirect|aio|output_buffers|directio|sendfile|aio_write|alias|root|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|default_type|disable_symlinks|directio_alignment|error_page|etag|if_modified_since|ignore_invalid_headers|internal|keepalive_requests|keepalive_disable|keepalive_timeout|limit_except|large_client_header_buffers|limit_rate|limit_rate_after|lingering_close|lingering_time|lingering_timeout|listen|log_not_found|log_subrequest|max_ranges|merge_slashes|msie_padding|msie_refresh|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|output_buffers|port_in_redirect|postpone_output|read_ahead|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|satisfy|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|subrequest_output_buffer_size|tcp_nodelay|tcp_nopush|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|variables_hash_bucket_size|variables_hash_max_size|accept_mutex|accept_mutex_delay|debug_connection|error_log|daemon|debug_points|env|load_module|lock_file|master_process|multi_accept|pcre_jit|pid|ssl_engine|thread_pool|timer_resolution|use|user|worker_aio_requests|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_shutdown_timeout|working_directory|allow|deny|add_before_body|add_after_body|addition_types|api|status_zone|auth_basic|auth_basic_user_file|auth_jwt|auth_jwt|auth_jwt_claim_set|auth_jwt_header_set|auth_jwt_key_file|auth_jwt_key_request|auth_jwt_leeway|auth_request|auth_request_set|autoindex|autoindex_exact_size|autoindex_format|autoindex_localtime|ancient_browser|ancient_browser_value|modern_browser|modern_browser_value|charset|charset_map|charset_types|override_charset|source_charset|create_full_put_path|dav_access|dav_methods|min_delete_depth|empty_gif|f4f|f4f_buffer_size|fastcgi_bind|fastcgi_buffer_size|fastcgi_buffering|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_background_update|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_age|fastcgi_cache_lock_timeout|fastcgi_cache_max_range_offset|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_revalidate|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_catch_stderr|fastcgi_connect_timeout|fastcgi_force_ranges|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_limit_rate|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_next_upstream_timeout|fastcgi_next_upstream_tries|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_pass_request_body|fastcgi_pass_request_headers|fastcgi_read_timeout|fastcgi_request_buffering|fastcgi_send_lowat|fastcgi_send_timeout|fastcgi_socket_keepalive|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geoip_country|geoip_city|geoip_org|geoip_proxy|geoip_proxy_recursive|grpc_bind|grpc_buffer_size|grpc_connect_timeout|grpc_hide_header|grpc_ignore_headers|grpc_intercept_errors|grpc_next_upstream|grpc_next_upstream_timeout|grpc_next_upstream_tries|grpc_pass|grpc_pass_header|grpc_read_timeout|grpc_send_timeout|grpc_set_header|grpc_socket_keepalive|grpc_ssl_certificate|grpc_ssl_certificate_key|grpc_ssl_ciphers|grpc_ssl_crl|grpc_ssl_name|grpc_ssl_password_file|grpc_ssl_protocols|grpc_ssl_server_name|grpc_ssl_session_reuse|grpc_ssl_trusted_certificate|grpc_ssl_verify|grpc_ssl_verify_depth|gunzip|gunzip_buffers|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_types|gzip_vary|gzip_static|add_header|add_trailer|expires|hlshls_buffers|hls_forward_args|hls_fragment|hls_mp4_buffer_size|hls_mp4_max_buffer_size|image_filter|image_filter_buffer|image_filter_interlace|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|image_filter_webp_quality|js_content|js_include|js_set|keyval|keyval_zone|limit_conn|limit_conn_log_level|limit_conn_status|limit_conn_zone|limit_zone|limit_req|limit_req_log_level|limit_req_status|limit_req_zone|access_log|log_format|open_log_file_cache|map_hash_bucket_size|map_hash_max_size|memcached_bind|memcached_buffer_size|memcached_connect_timeout|memcached_force_ranges|memcached_gzip_flag|memcached_next_upstream|memcached_next_upstream_timeout|memcached_next_upstream_tries|memcached_pass|memcached_read_timeout|memcached_send_timeout|memcached_socket_keepalive|mirror|mirror_request_body|mp4|mp4_buffer_size|mp4_max_buffer_size|mp4_limit_rate|mp4_limit_rate_after|perl_modules|perl_require|perl_set|proxy_bind|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_background_update|proxy_cache_bypass|proxy_cache_convert_head|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_age|proxy_cache_lock_timeout|proxy_cache_max_range_offset|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_purge|proxy_cache_revalidate|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_force_ranges|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_limit_rate|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_next_upstream_timeout|proxy_next_upstream_tries|proxy_no_cache|proxy_pass|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_socket_keepalive|proxy_ssl_certificate|proxy_ssl_certificate_key|proxy_ssl_ciphers|proxy_ssl_crl|proxy_ssl_name|proxy_ssl_password_file|proxy_ssl_protocols|proxy_ssl_server_name|proxy_ssl_session_reuse|proxy_ssl_trusted_certificate|proxy_ssl_verify|proxy_ssl_verify_depth|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|random_index|set_real_ip_from|real_ip_header|real_ip_recursive|referer_hash_bucket_size|referer_hash_max_size|valid_referers|break|return|rewrite_log|set|uninitialized_variable_warn|scgi_bind|scgi_buffer_size|scgi_buffering|scgi_buffers|scgi_busy_buffers_size|scgi_cache|scgi_cache_background_update|scgi_cache_key|scgi_cache_lock|scgi_cache_lock_age|scgi_cache_lock_timeout|scgi_cache_max_range_offset|scgi_cache_methods|scgi_cache_min_uses|scgi_cache_path|scgi_cache_purge|scgi_cache_revalidate|scgi_cache_use_stale|scgi_cache_valid|scgi_connect_timeout|scgi_force_ranges|scgi_hide_header|scgi_ignore_client_abort|scgi_ignore_headers|scgi_intercept_errors|scgi_limit_rate|scgi_max_temp_file_size|scgi_next_upstream|scgi_next_upstream_timeout|scgi_next_upstream_tries|scgi_no_cache|scgi_param|scgi_pass|scgi_pass_header|scgi_pass_request_body|scgi_pass_request_headers|scgi_read_timeout|scgi_request_buffering|scgi_send_timeout|scgi_socket_keepalive|scgi_store|scgi_store_access|scgi_temp_file_write_size|scgi_temp_path|secure_link|secure_link_md5|secure_link_secret|session_log|session_log_format|session_log_zone|slice|spdy_chunk_size|spdy_headers_comp|ssi|ssi_last_modified|ssi_min_file_chunk|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_buffer_size|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_early_data|ssl_ecdh_curve|ssl_password_file|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_ticket_key|ssl_session_tickets|ssl_session_timeout|ssl_stapling|ssl_stapling_file|ssl_stapling_responder|ssl_stapling_verify|ssl_trusted_certificate|ssl_verify_client|ssl_verify_depth|status|status_format|status_zone|stub_status|sub_filter|sub_filter_last_modified|sub_filter_once|sub_filter_types|server|zone|state|hash|ip_hash|keepalive|keepalive_requests|keepalive_timeout|ntlm|least_conn|least_time|queue|random|sticky|sticky_cookie_insert|upstream_conf|health_check|userid|userid_domain|userid_expires|userid_mark|userid_name|userid_p3p|userid_path|userid_service|uwsgi_bind|uwsgi_buffer_size|uwsgi_buffering|uwsgi_buffers|uwsgi_busy_buffers_size|uwsgi_cache|uwsgi_cache_background_update|uwsgi_cache_bypass|uwsgi_cache_key|uwsgi_cache_lock|uwsgi_cache_lock_age|uwsgi_cache_lock_timeout|uwsgi_cache_max_range_offset|uwsgi_cache_methods|uwsgi_cache_min_uses|uwsgi_cache_path|uwsgi_cache_purge|uwsgi_cache_revalidate|uwsgi_cache_use_stale|uwsgi_cache_valid|uwsgi_connect_timeout|uwsgi_force_ranges|uwsgi_hide_header|uwsgi_ignore_client_abort|uwsgi_ignore_headers|uwsgi_intercept_errors|uwsgi_limit_rate|uwsgi_max_temp_file_size|uwsgi_modifier1|uwsgi_modifier2|uwsgi_next_upstream|uwsgi_next_upstream_timeout|uwsgi_next_upstream_tries|uwsgi_no_cache|uwsgi_param|uwsgi_pass|uwsgi_pass_header|uwsgi_pass_request_body|uwsgi_pass_request_headers|uwsgi_read_timeout|uwsgi_request_buffering|uwsgi_send_timeout|uwsgi_socket_keepalive|uwsgi_ssl_certificate|uwsgi_ssl_certificate_key|uwsgi_ssl_ciphers|uwsgi_ssl_crl|uwsgi_ssl_name|uwsgi_ssl_password_file|uwsgi_ssl_protocols|uwsgi_ssl_server_name|uwsgi_ssl_session_reuse|uwsgi_ssl_trusted_certificate|uwsgi_ssl_verify|uwsgi_ssl_verify_depth|uwsgi_store|uwsgi_store_access|uwsgi_temp_file_write_size|uwsgi_temp_path|http2_body_preread_size|http2_chunk_size|http2_idle_timeout|http2_max_concurrent_pushes|http2_max_concurrent_streams|http2_max_field_size|http2_max_header_size|http2_max_requests|http2_push|http2_push_preload|http2_recv_buffer_size|http2_recv_timeout|xml_entities|xslt_last_modified|xslt_param|xslt_string_param|xslt_stylesheet|xslt_types|listen|protocol|resolver|resolver_timeout|timeout|auth_http|auth_http_header|auth_http_pass_client_cert|auth_http_timeout|proxy_buffer|proxy_pass_error_message|proxy_timeout|xclient|starttls|imap_auth|imap_capabilities|imap_client_buffer|pop3_auth|pop3_capabilities|smtp_auth|smtp_capabilities|smtp_client_buffer|smtp_greeting_delay|preread_buffer_size|preread_timeout|proxy_protocol_timeout|js_access|js_filter|js_preread|proxy_download_rate|proxy_requests|proxy_responses|proxy_upload_rate|ssl_handshake_timeout|ssl_preread|health_check_timeout|zone_sync|zone_sync_buffers|zone_sync_connect_retry_interval|zone_sync_connect_timeout|zone_sync_interval|zone_sync_recv_buffer_size|zone_sync_server|zone_sync_ssl|zone_sync_ssl_certificate|zone_sync_ssl_certificate_key|zone_sync_ssl_ciphers|zone_sync_ssl_crl|zone_sync_ssl_name|zone_sync_ssl_password_file|zone_sync_ssl_protocols|zone_sync_ssl_server_name|zone_sync_ssl_trusted_certificate|zone_sync_ssl_verify_depth|zone_sync_timeout|google_perftools_profiles|proxy|perl";this.$rules={start:[{token:["storage.type","text","string.regexp","paren.lparen"],regex:"\\b(location)(\\s+)([\\^]?~[\\*]?\\s+.*?)({)"},{token:["storage.type","text","text","paren.lparen"],regex:"\\b(location|match|upstream)(\\s+)(.*?)({)"},{token:["storage.type","text","string","text","variable","text","paren.lparen"],regex:'\\b(split_clients|map)(\\s+)(\\".*\\")(\\s+)(\\$[\\w_]+)(\\s*)({)'},{token:["storage.type","text","paren.lparen"],regex:"\\b(http|events|server|mail|stream)(\\s*)({)"},{token:["storage.type","text","variable","text","variable","text","paren.lparen"],regex:"\\b(geo|map)(\\s+)(\\$[\\w_]+)?(\\s*)(\\$[\\w_]+)(\\s*)({)"},{token:"paren.rparen",regex:"(})"},{token:"paren.lparen",regex:"({)"},{token:["storage.type","text","paren.lparen"],regex:"\\b(if)(\\s+)(\\()",push:[{token:"paren.rparen",regex:"\\)|$",next:"pop"},{include:"lexical"}]},{token:"keyword",regex:"\\b("+e+")\\b",push:[{token:"punctuation",regex:";",next:"pop"},{include:"lexical"}]},{token:["keyword","text","string.regexp","text","punctuation"],regex:"\\b(rewrite)(\\s)(\\S*)(\\s.*)(;)"},{include:"lexical"},{include:"comments"}],comments:[{token:"comment",regex:"#.*$"}],lexical:[{token:"string",regex:"'",push:[{token:"string",regex:"'",next:"pop"},{include:"variables"},{defaultToken:"string"}]},{token:"string",regex:'"',push:[{token:"string",regex:'"',next:"pop"},{include:"variables"},{defaultToken:"string"}]},{token:"string.regexp",regex:/[!]?[~][*]?\s+.*(?=\))/},{token:"string.regexp",regex:/[\^]\S*(?=;$)/},{token:"string.regexp",regex:/[\^]\S*(?=;|\s|$)/},{token:"keyword.operator",regex:"\\B(\\+|\\-|\\*|\\=|!=)\\B"},{token:"constant.language",regex:"\\b(true|false|on|off|all|any|main|always)\\b"},{token:"text",regex:"\\s+"},{include:"variables"}],variables:[{token:"variable",regex:"\\$[\\w_]+"},{token:"variable.language",regex:"\\b(GET|POST|HEAD)\\b"}]},this.normalizeRules()};r.inherits(s,i),t.NginxHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/nginx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nginx_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./nginx_highlight_rules").NginxHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){i.call(this),this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/nginx"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/nginx"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-nim.js b/www/js/ace/mode-nim.js deleted file mode 100644 index bdbd60fec..000000000 --- a/www/js/ace/mode-nim.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/nim_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({variable:"var|let|const",keyword:"assert|parallel|spawn|export|include|from|template|mixin|bind|import|concept|raise|defer|try|finally|except|converter|proc|func|macro|method|and|or|not|xor|shl|shr|div|mod|in|notin|is|isnot|of|static|if|elif|else|case|of|discard|when|return|yield|block|break|while|echo|continue|asm|using|cast|addr|unsafeAddr|type|ref|ptr|do|declared|defined|definedInScope|compiles|sizeOf|is|shallowCopy|getAst|astToStr|spawn|procCall|for|iterator|as","storage.type":"newSeq|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|float|char|bool|string|set|pointer|float32|float64|enum|object|cstring|array|seq|openArray|varargs|UncheckedArray|tuple|set|distinct|void|auto|openarray|range","support.function":"lock|ze|toU8|toU16|toU32|ord|low|len|high|add|pop|contains|card|incl|excl|dealloc|inc","constant.language":"nil|true|false"},"identifier"),t="(?:0[xX][\\dA-Fa-f][\\dA-Fa-f_]*)",n="(?:[0-9][\\d_]*)",r="(?:0o[0-7][0-7_]*)",i="(?:0[bB][01][01_]*)",s="(?:"+t+"|"+n+"|"+r+"|"+i+")(?:'?[iIuU](?:8|16|32|64)|u)?\\b",o="(?:[eE][+-]?[\\d][\\d_]*)",u="(?:[\\d][\\d_]*(?:[.][\\d](?:[\\d_]*)"+o+"?)|"+o+")",a="(?:"+t+"(?:'(?:(?:[fF](?:32|64)?)|[dD])))|(?:"+u+"|"+n+"|"+r+"|"+i+")(?:'(?:(?:[fF](?:32|64)?)|[dD]))",f="\\\\([abeprcnlftv\\\"']|x[0-9A-Fa-f]{2}|[0-2][0-9]{2}|u[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})",l="[a-zA-Z][a-zA-Z0-9_]*";this.$rules={start:[{token:["identifier","keyword.operator","support.function"],regex:"("+l+")([.]{1})("+l+")(?=\\()"},{token:"paren.lparen",regex:"(\\{\\.)",next:[{token:"paren.rparen",regex:"(\\.\\}|\\})",next:"start"},{include:"methods"},{token:"identifier",regex:l},{token:"punctuation",regex:/[,]/},{token:"keyword.operator",regex:/[=:.]/},{token:"paren.lparen",regex:/[[(]/},{token:"paren.rparen",regex:/[\])]/},{include:"math"},{include:"strings"},{defaultToken:"text"}]},{token:"comment.doc.start",regex:/##\[(?!])/,push:"docBlockComment"},{token:"comment.start",regex:/#\[(?!])/,push:"blockComment"},{token:"comment.doc",regex:"##.*$"},{token:"comment",regex:"#.*$"},{include:"strings"},{token:"string",regex:"'(?:\\\\(?:[abercnlftv]|x[0-9A-Fa-f]{2}|[0-2][0-9]{2}|u[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})|.{1})?'"},{include:"methods"},{token:e,regex:"[a-zA-Z][a-zA-Z0-9_]*\\b"},{token:["keyword.operator","text","storage.type"],regex:"([:])(\\s+)("+l+")(?=$|\\)|\\[|,|\\s+=|;|\\s+\\{)"},{token:"paren.lparen",regex:/\[\.|{\||\(\.|\[:|[[({`]/},{token:"paren.rparen",regex:/\.\)|\|}|\.]|[\])}]/},{token:"keyword.operator",regex:/[=+\-*\/<>@$~&%|!?^.:\\]/},{token:"punctuation",regex:/[,;]/},{include:"math"}],blockComment:[{regex:/#\[]/,token:"comment"},{regex:/#\[(?!])/,token:"comment.start",push:"blockComment"},{regex:/]#/,token:"comment.end",next:"pop"},{defaultToken:"comment"}],docBlockComment:[{regex:/##\[]/,token:"comment.doc"},{regex:/##\[(?!])/,token:"comment.doc.start",push:"docBlockComment"},{regex:/]##/,token:"comment.doc.end",next:"pop"},{defaultToken:"comment.doc"}],math:[{token:"constant.float",regex:a},{token:"constant.float",regex:u},{token:"constant.integer",regex:s}],methods:[{token:"support.function",regex:"(\\w+)(?=\\()"}],strings:[{token:"string",regex:"(\\b"+l+')?"""',push:[{token:"string",regex:'"""',next:"pop"},{defaultToken:"string"}]},{token:"string",regex:"\\b"+l+'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{defaultToken:"string"}]},{token:"string",regex:'"',push:[{token:"string",regex:'"|$',next:"pop"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]}]},this.normalizeRules()};r.inherits(s,i),t.NimHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/nim",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nim_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./nim_highlight_rules").NimHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){i.call(this),this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="#",this.blockComment={start:"#[",end:"]#",nestable:!0},this.$id="ace/mode/nim"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/nim"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-nix.js b/www/js/ace/mode-nix.js deleted file mode 100644 index 85e9a1754..000000000 --- a/www/js/ace/mode-nix.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="hypot|hypotf|hypotl|sscanf|system|snprintf|scanf|scalbn|scalbnf|scalbnl|scalbln|scalblnf|scalblnl|sin|sinh|sinhf|sinhl|sinf|sinl|signal|signbit|strstr|strspn|strncpy|strncat|strncmp|strcspn|strchr|strcoll|strcpy|strcat|strcmp|strtoimax|strtod|strtoul|strtoull|strtoumax|strtok|strtof|strtol|strtold|strtoll|strerror|strpbrk|strftime|strlen|strrchr|strxfrm|sprintf|setjmp|setvbuf|setlocale|setbuf|sqrt|sqrtf|sqrtl|swscanf|swprintf|srand|nearbyint|nearbyintf|nearbyintl|nexttoward|nexttowardf|nexttowardl|nextafter|nextafterf|nextafterl|nan|nanf|nanl|csin|csinh|csinhf|csinhl|csinf|csinl|csqrt|csqrtf|csqrtl|ccos|ccosh|ccoshf|ccosf|ccosl|cimag|cimagf|cimagl|ctime|ctan|ctanh|ctanhf|ctanhl|ctanf|ctanl|cos|cosh|coshf|coshl|cosf|cosl|conj|conjf|conjl|copysign|copysignf|copysignl|cpow|cpowf|cpowl|cproj|cprojf|cprojl|ceil|ceilf|ceill|cexp|cexpf|cexpl|clock|clog|clogf|clogl|clearerr|casin|casinh|casinhf|casinhl|casinf|casinl|cacos|cacosh|cacoshf|cacoshl|cacosf|cacosl|catan|catanh|catanhf|catanhl|catanf|catanl|calloc|carg|cargf|cargl|cabs|cabsf|cabsl|creal|crealf|creall|cbrt|cbrtf|cbrtl|time|toupper|tolower|tan|tanh|tanhf|tanhl|tanf|tanl|trunc|truncf|truncl|tgamma|tgammaf|tgammal|tmpnam|tmpfile|isspace|isnormal|isnan|iscntrl|isinf|isdigit|isunordered|isupper|ispunct|isprint|isfinite|iswspace|iswcntrl|iswctype|iswdigit|iswupper|iswpunct|iswprint|iswlower|iswalnum|iswalpha|iswgraph|iswxdigit|iswblank|islower|isless|islessequal|islessgreater|isalnum|isalpha|isgreater|isgreaterequal|isgraph|isxdigit|isblank|ilogb|ilogbf|ilogbl|imaxdiv|imaxabs|div|difftime|_Exit|ungetc|ungetwc|pow|powf|powl|puts|putc|putchar|putwc|putwchar|perror|printf|erf|erfc|erfcf|erfcl|erff|erfl|exit|exp|exp2|exp2f|exp2l|expf|expl|expm1|expm1f|expm1l|vsscanf|vsnprintf|vscanf|vsprintf|vswscanf|vswprintf|vprintf|vfscanf|vfprintf|vfwscanf|vfwprintf|vwscanf|vwprintf|va_start|va_copy|va_end|va_arg|qsort|fscanf|fsetpos|fseek|fclose|ftell|fopen|fdim|fdimf|fdiml|fpclassify|fputs|fputc|fputws|fputwc|fprintf|feholdexcept|fesetenv|fesetexceptflag|fesetround|feclearexcept|fetestexcept|feof|feupdateenv|feraiseexcept|ferror|fegetenv|fegetexceptflag|fegetround|fflush|fwscanf|fwide|fwprintf|fwrite|floor|floorf|floorl|fabs|fabsf|fabsl|fgets|fgetc|fgetpos|fgetws|fgetwc|freopen|free|fread|frexp|frexpf|frexpl|fmin|fminf|fminl|fmod|fmodf|fmodl|fma|fmaf|fmal|fmax|fmaxf|fmaxl|ldiv|ldexp|ldexpf|ldexpl|longjmp|localtime|localeconv|log|log1p|log1pf|log1pl|log10|log10f|log10l|log2|log2f|log2l|logf|logl|logb|logbf|logbl|labs|lldiv|llabs|llrint|llrintf|llrintl|llround|llroundf|llroundl|lrint|lrintf|lrintl|lround|lroundf|lroundl|lgamma|lgammaf|lgammal|wscanf|wcsstr|wcsspn|wcsncpy|wcsncat|wcsncmp|wcscspn|wcschr|wcscoll|wcscpy|wcscat|wcscmp|wcstoimax|wcstod|wcstoul|wcstoull|wcstoumax|wcstok|wcstof|wcstol|wcstold|wcstoll|wcstombs|wcspbrk|wcsftime|wcslen|wcsrchr|wcsrtombs|wcsxfrm|wctob|wctomb|wcrtomb|wprintf|wmemset|wmemchr|wmemcpy|wmemcmp|wmemmove|assert|asctime|asin|asinh|asinhf|asinhl|asinf|asinl|acos|acosh|acoshf|acoshl|acosf|acosl|atoi|atof|atol|atoll|atexit|atan|atanh|atanhf|atanhl|atan2|atan2f|atan2l|atanf|atanl|abs|abort|gets|getc|getchar|getenv|getwc|getwchar|gmtime|rint|rintf|rintl|round|roundf|roundl|rename|realloc|rewind|remove|remquo|remquof|remquol|remainder|remainderf|remainderl|rand|raise|bsearch|btowc|modf|modff|modfl|memset|memchr|memcpy|memcmp|memmove|mktime|malloc|mbsinit|mbstowcs|mbsrtowcs|mbtowc|mblen|mbrtowc|mbrlen",u=function(e){var t="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",n="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",r="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",s="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",u="NULL|true|false|TRUE|FALSE|nullptr",a=this.$keywords=this.createKeywordMapper(Object.assign({"keyword.control":t,"storage.type":n,"storage.modifier":r,"keyword.operator":s,"variable.language":"this","constant.language":u,"support.function.C99.c":o},e),"identifier"),f="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",l=/\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source,c="%"+/(\d+\$)?/.source+/[#0\- +']*/.source+/[,;:_]?/.source+/((-?\d+)|\*(-?\d+\$)?)?/.source+/(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source+/(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source+/(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source;this.$rules={start:[{token:"comment",regex:"//$",next:"start"},{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:"'(?:"+l+"|.)?'"},{token:"string.start",regex:'"',stateName:"qqstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:l},{token:"constant.language.escape",regex:c},{token:"string.end",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"string.start",regex:'R"\\(',stateName:"rawString",next:[{token:"string.end",regex:'\\)"',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:a,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"},{token:"keyword.operator",regex:/--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(u,s),t.c_cppHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp",this.snippetFileId="ace/snippets/c_cpp"}.call(a.prototype),t.Mode=a}),define("ace/mode/nix_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="true|false",t="with|import|if|else|then|inherit",n="let|in|rec",r=this.createKeywordMapper({"constant.language.nix":e,"keyword.control.nix":t,"keyword.declaration.nix":n},"identifier");this.$rules={start:[{token:"comment",regex:/#.*$/},{token:"comment",regex:/\/\*/,next:"comment"},{token:"constant",regex:"<[^>]+>"},{regex:"(==|!=|<=?|>=?)",token:["keyword.operator.comparison.nix"]},{regex:"((?:[+*/%-]|\\~)=)",token:["keyword.operator.assignment.arithmetic.nix"]},{regex:"=",token:"keyword.operator.assignment.nix"},{token:"string",regex:"''",next:"qqdoc"},{token:"string",regex:"'",next:"qstring"},{token:"string",regex:'"',push:"qqstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{regex:"}",token:function(e,t,n){return n[1]&&n[1].charAt(0)=="q"?"constant.language.escape":"text"},next:"pop"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqdoc:[{token:"constant.language.escape",regex:/\$\{/,push:"start"},{token:"string",regex:"''",next:"pop"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:/\$\{/,push:"start"},{token:"string",regex:'"',next:"pop"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:/\$\{/,push:"start"},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},this.normalizeRules()};r.inherits(s,i),t.NixHighlightRules=s}),define("ace/mode/nix",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/nix_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp").Mode,s=e("./nix_highlight_rules").NixHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){i.call(this),this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="#",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/nix"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/nix"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-nsis.js b/www/js/ace/mode-nsis.js deleted file mode 100644 index d0b17953c..000000000 --- a/www/js/ace/mode-nsis.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/nsis_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"keyword.compiler.nsis",regex:/^\s*!(?:include|addincludedir|addplugindir|appendfile|assert|cd|delfile|echo|error|execute|packhdr|pragma|finalize|getdllversion|gettlbversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace|uninstfinalize)\b/,caseInsensitive:!0},{token:"keyword.command.nsis",regex:/^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetKnownFolderPath|GetLabelAddress|GetTempFileName|GetWinVer|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfRtlLanguage|IfShellVarContextAll|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|Int64Cmp|Int64CmpU|Int64Fmt|IntCmp|IntCmpU|IntFmt|IntOp|IntPtrCmp|IntPtrCmpU|IntPtrOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadAndSetImage|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestLongPathAware|ManifestMaxVersionTested|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|PEAddResource|PEDllCharacteristics|PERemoveResource|PESubsysVer|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/,caseInsensitive:!0},{token:"keyword.control.nsis",regex:/^\s*!(?:ifdef|ifndef|if|ifmacrodef|ifmacrondef|else|endif)\b/,caseInsensitive:!0},{token:"keyword.plugin.nsis",regex:/^\s*\w+::\w+/,caseInsensitive:!0},{token:"keyword.operator.comparison.nsis",regex:/[!<>]?=|<>|<|>/},{token:"support.function.nsis",regex:/(?:\b|^\s*)(?:Function|FunctionEnd|Section|SectionEnd|SectionGroup|SectionGroupEnd|PageEx|PageExEnd)\b/,caseInsensitive:!0},{token:"support.library.nsis",regex:/\${[\w\.:-]+}/},{token:"constant.nsis",regex:/\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/,caseInsensitive:!0},{token:"constant.library.nsis",regex:/\${(?:AtLeastServicePack|AtLeastWin7|AtLeastWin8|AtLeastWin10|AtLeastWin95|AtLeastWin98|AtLeastWin2000|AtLeastWin2003|AtLeastWin2008|AtLeastWin2008R2|AtLeastWinME|AtLeastWinNT4|AtLeastWinVista|AtLeastWinXP|AtMostServicePack|AtMostWin7|AtMostWin8|AtMostWin10|AtMostWin95|AtMostWin98|AtMostWin2000|AtMostWin2003|AtMostWin2008|AtMostWin2008R2|AtMostWinME|AtMostWinNT4|AtMostWinVista|AtMostWinXP|IsDomainController|IsNT|IsServer|IsServicePack|IsWin7|IsWin8|IsWin10|IsWin95|IsWin98|IsWin2000|IsWin2003|IsWin2008|IsWin2008R2|IsWinME|IsWinNT4|IsWinVista|IsWinXP)}/},{token:"constant.language.boolean.true.nsis",regex:/\b(?:true|on)\b/},{token:"constant.language.boolean.false.nsis",regex:/\b(?:false|off)\b/},{token:"constant.language.option.nsis",regex:/(?:\b|^\s*)(?:(?:un\.)?components|(?:un\.)?custom|(?:un\.)?directory|(?:un\.)?instfiles|(?:un\.)?license|uninstConfirm|admin|all|amd64-unicode|auto|both|bottom|bzip2|current|force|hide|highest|ifdiff|ifnewer|lastused|leave|left|listonly|lzma|nevershow|none|normal|notset|right|show|silent|silentlog|textonly|top|try|user|Win10|Win7|Win8|WinVista|x86-(ansi|unicode)|zlib)\b/,caseInsensitive:!0},{token:"constant.language.slash-option.nsis",regex:/\b\/(?:a|BRANDING|CENTER|COMPONENTSONLYONCUSTOM|CUSTOMSTRING=|date|e|ENABLECANCEL|FILESONLY|file|FINAL|GLOBAL|gray|ifempty|ifndef|ignorecase|IMGID=|ITALIC|LANG=|NOCUSTOM|noerrors|NONFATAL|nonfatal|oname=|o|REBOOTOK|redef|RESIZETOFIT|r|SHORT|SILENT|SOLID|STRIKE|TRIM|UNDERLINE|utcdate|windows|x)\b/,caseInsensitive:!0},{token:"constant.numeric.nsis",regex:/\b(?:0(?:x|X)[0-9a-fA-F]+|[0-9]+(?:\.[0-9]+)?)\b/},{token:"entity.name.function.nsis",regex:/\$\([\w\.:-]+\)/},{token:"storage.type.function.nsis",regex:/\$\w+/},{token:"punctuation.definition.string.begin.nsis",regex:/`/,push:[{token:"punctuation.definition.string.end.nsis",regex:/`/,next:"pop"},{token:"constant.character.escape.nsis",regex:/\$\\./},{defaultToken:"string.quoted.back.nsis"}]},{token:"punctuation.definition.string.begin.nsis",regex:/"/,push:[{token:"punctuation.definition.string.end.nsis",regex:/"/,next:"pop"},{token:"constant.character.escape.nsis",regex:/\$\\./},{defaultToken:"string.quoted.double.nsis"}]},{token:"punctuation.definition.string.begin.nsis",regex:/'/,push:[{token:"punctuation.definition.string.end.nsis",regex:/'/,next:"pop"},{token:"constant.character.escape.nsis",regex:/\$\\./},{defaultToken:"string.quoted.single.nsis"}]},{token:["punctuation.definition.comment.nsis","comment.line.nsis"],regex:/(;|#)(.*$)/},{token:"punctuation.definition.comment.nsis",regex:/\/\*/,push:[{token:"punctuation.definition.comment.nsis",regex:/\*\//,next:"pop"},{defaultToken:"comment.block.nsis"}]},{token:"text",regex:/(?:!include|!insertmacro)\b/}]},this.normalizeRules()};s.metaData={comment:"\n todo: - highlight functions\n ",fileTypes:["nsi","nsh"],name:"NSIS",scopeName:"source.nsis"},r.inherits(s,i),t.NSISHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/nsis",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nsis_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./nsis_highlight_rules").NSISHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart=[";","#"],this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/nsis"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/nsis"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-nunjucks.js b/www/js/ace/mode-nunjucks.js deleted file mode 100644 index 9d1b8a814..000000000 --- a/www/js/ace/mode-nunjucks.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/folding/nunjucks",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/html","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./html").FoldMode,o=e("../../range").Range,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){s.call(this,e,t)};r.inherits(a,s),function(){function e(e,t){var n=e.exec(t);if(n){var r=n[0].includes("set")?"set":n[1].toLowerCase();if(r){var i=n[0].toLowerCase().indexOf(r);return n.index+i+1}}}function t(e,t){var n,r=e.$tokenIndex,i=t?"punctuation.begin":"punctuation.end";e.step=t?e.stepBackward:e.stepForward;while(n=e.step()){if(n.type!==i)continue;break}if(!n)return;var s=e.getCurrentTokenPosition();return t||(s.column=s.column+n.value.length),e.$tokenIndex=r,s}this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.indentKeywords={block:1,"if":1,"for":1,asyncEach:1,asyncAll:1,macro:1,filter:1,call:1,"else":0,elif:0,set:1,endblock:-1,endif:-1,endfor:-1,endeach:-1,endall:-1,endmacro:-1,endfilter:-1,endcall:-1,endset:-1},this.foldingStartMarkerNunjucks=/(?:\{%-?\s*)(?:(block|if|else|elif|for|asyncEach|asyncAll|macro|filter|call)\b.*)|(?:\bset(?:[^=]*))(?=%})/i,this.foldingStopMarkerNunjucks=/(?:\{%-?\s*)(endblock|endif|endfor|endeach|endall|endmacro|endfilter|endcall|endset)\b.*(?=%})/i,this.getFoldWidgetRange=function(t,n,r){var i=t.doc.getLine(r),s=e(this.foldingStartMarkerNunjucks,i);return s?this.nunjucksBlock(t,r,s):(s=e(this.foldingStopMarkerNunjucks,i),s?this.nunjucksBlock(t,r,s):this.getFoldWidgetRangeBase(t,n,r))},this.getFoldWidget=function(t,n,r){var i=t.getLine(r),s=this.foldingStartMarkerNunjucks.test(i),o=this.foldingStopMarkerNunjucks.test(i);if(s&&!o){var u=e(this.foldingStartMarkerNunjucks,i);if(u){var a=t.getTokenAt(r,u).type;if(a==="keyword.control")return"start"}}if(o&&!s&&n==="markbeginend"){var u=e(this.foldingStopMarkerNunjucks,i);if(u){var a=t.getTokenAt(r,u).type;if(a==="keyword.control")return"end"}}return this.getFoldWidgetBase(t,n,r)},this.nunjucksBlock=function(e,n,r){var i=new u(e,n,r),s=i.getCurrentToken();if(!s||s.type!="keyword.control")return;var a=s.value,f=[a],l=this.indentKeywords[a];if(a==="else"||a==="elif")l=1;if(!l)return;var c=t(i,l===-1);if(!s)return;i.step=l===-1?i.stepBackward:i.stepForward;while(s=i.step()){if(s.type!=="keyword.control")continue;var h=l*this.indentKeywords[s.value];if(s.value==="set"){var p=i.getCurrentTokenPosition(),d=e.getLine(p.row).substring(p.column);if(!/^[^=]*%}/.test(d))continue}if(h>0)f.unshift(s.value);else if(h<=0){f.shift();if(!f.length)break;h===0&&f.unshift(s.value)}}if(!s)return null;var v=t(i,l===1);return l===1?o.fromPoints(c,v):o.fromPoints(v,c)}}.call(a.prototype)}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/nunjucks_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./html_highlight_rules").HtmlHighlightRules,o=function(){s.call(this),this.$rules.start.unshift({token:"punctuation.begin",regex:/{{-?/,push:[{token:"punctuation.end",regex:/-?}}/,next:"pop"},{include:"expression"}]},{token:"punctuation.begin",regex:/{%-?/,push:[{token:"punctuation.end",regex:/-?%}/,next:"pop"},{token:"constant.language.escape",regex:/\b(r\/.*\/[gimy]?)\b/},{include:"statement"}]},{token:"comment.begin",regex:/{#/,push:[{token:"comment.end",regex:/#}/,next:"pop"},{defaultToken:"comment"}]}),this.addRules({attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{token:"punctuation.begin",regex:/{{-?/,push:[{token:"punctuation.end",regex:/-?}}/,next:"pop"},{include:"expression"}]},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{token:"punctuation.begin",regex:/{{-?/,push:[{token:"punctuation.end",regex:/-?}}/,next:"pop"},{include:"expression"}]},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}],statement:[{token:"keyword.control",regex:/\b(block|endblock|extends|endif|elif|for|endfor|asyncEach|endeach|include|asyncAll|endall|macro|endmacro|set|endset|ignore missing|as|from|raw|verbatim|filter|endfilter)\b/},{include:"expression"}],expression:[{token:"constant.language",regex:/\b(true|false|none)\b/},{token:"string",regex:/"/,push:[{token:"string",regex:/"/,next:"pop"},{include:"escapeStrings"},{defaultToken:"string"}]},{token:"string",regex:/'/,push:[{token:"string",regex:/'/,next:"pop"},{include:"escapeStrings"},{defaultToken:"string"}]},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"keyword.operator",regex:/\+|-|\/\/|\/|%|\*\*|\*|===|==|!==|!=|>=|>|<=|>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(u,s),t.c_cppHighlightRules=u}),define("ace/mode/objectivec_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/c_cpp_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=function(){var e={"support.function.cocoa.leopard":"NSRectToCGRect|NSRectFromCGRect|NSMakeCollectable|NSStringFromProtocol|NSSizeToCGSize|NSSizeFromCGSize|NSDrawNinePartImage|NSDrawThreePartImage|NSPointToCGPoint|NSPointFromCGPoint|NSProtocolFromString|NSEventMaskFromType|NSValue","support.function.cocoa":"NSRoundDownToMultipleOfPageSize|NSRoundUpToMultipleOfPageSize|NSRunCriticalAlertPanel|NSRunCriticalAlertPanelRelativeToWindow|NSRunInformationalAlertPanel|NSRunInformationalAlertPanelRelativeToWindow|NSRunAlertPanel|NSRunAlertPanelRelativeToWindow|NSResetMapTable|NSResetHashTable|NSRecycleZone|NSRectClip|NSRectClipList|NSRectFill|NSRectFillUsingOperation|NSRectFillList|NSRectFillListUsingOperation|NSRectFillListWithGrays|NSRectFillListWithColors|NSRectFillListWithColorsUsingOperation|NSRectFromString|NSRecordAllocationEvent|NSReturnAddress|NSReleaseAlertPanel|NSReadPixel|NSRealMemoryAvailable|NSReallocateCollectable|NSRegisterServicesProvider|NSRangeFromString|NSGetSizeAndAlignment|NSGetCriticalAlertPanel|NSGetInformationalAlertPanel|NSGetUncaughtExceptionHandler|NSGetFileType|NSGetFileTypes|NSGetWindowServerMemory|NSGetAlertPanel|NSMinX|NSMinY|NSMidX|NSMidY|NSMouseInRect|NSMapRemove|NSMapGet|NSMapMember|NSMapInsert|NSMapInsertIfAbsent|NSMapInsertKnownAbsent|NSMakeRect|NSMakeRange|NSMakeSize|NSMakePoint|NSMaxRange|NSMaxX|NSMaxY|NSBitsPerSampleFromDepth|NSBitsPerPixelFromDepth|NSBestDepth|NSBeep|NSBeginCriticalAlertSheet|NSBeginInformationalAlertSheet|NSBeginAlertSheet|NSShouldRetainWithZone|NSShowsServicesMenuItem|NSShowAnimationEffect|NSStringFromRect|NSStringFromRange|NSStringFromMapTable|NSStringFromSize|NSStringFromSelector|NSStringFromHashTable|NSStringFromClass|NSStringFromPoint|NSSizeFromString|NSSetShowsServicesMenuItem|NSSetZoneName|NSSetUncaughtExceptionHandler|NSSetFocusRingStyle|NSSelectorFromString|NSSearchPathForDirectoriesInDomains|NSSwapBigShortToHost|NSSwapBigIntToHost|NSSwapBigDoubleToHost|NSSwapBigFloatToHost|NSSwapBigLongToHost|NSSwapBigLongLongToHost|NSSwapShort|NSSwapHostShortToBig|NSSwapHostShortToLittle|NSSwapHostIntToBig|NSSwapHostIntToLittle|NSSwapHostDoubleToBig|NSSwapHostDoubleToLittle|NSSwapHostFloatToBig|NSSwapHostFloatToLittle|NSSwapHostLongToBig|NSSwapHostLongToLittle|NSSwapHostLongLongToBig|NSSwapHostLongLongToLittle|NSSwapInt|NSSwapDouble|NSSwapFloat|NSSwapLittleShortToHost|NSSwapLittleIntToHost|NSSwapLittleDoubleToHost|NSSwapLittleFloatToHost|NSSwapLittleLongToHost|NSSwapLittleLongLongToHost|NSSwapLong|NSSwapLongLong|NSHighlightRect|NSHostByteOrder|NSHomeDirectory|NSHomeDirectoryForUser|NSHeight|NSHashRemove|NSHashGet|NSHashInsert|NSHashInsertIfAbsent|NSHashInsertKnownAbsent|NSHFSTypeCodeFromFileType|NSHFSTypeOfFile|NSNumberOfColorComponents|NSNextMapEnumeratorPair|NSNextHashEnumeratorItem|NSContainsRect|NSConvertGlyphsToPackedGlyphs|NSConvertSwappedDoubleToHost|NSConvertSwappedFloatToHost|NSConvertHostDoubleToSwapped|NSConvertHostFloatToSwapped|NSCountMapTable|NSCountHashTable|NSCountFrames|NSCountWindows|NSCountWindowsForContext|NSCopyMemoryPages|NSCopyMapTableWithZone|NSCopyBits|NSCopyHashTableWithZone|NSCopyObject|NSColorSpaceFromDepth|NSCompareMapTables|NSCompareHashTables|NSClassFromString|NSCreateMapTable|NSCreateMapTableWithZone|NSCreateHashTable|NSCreateHashTableWithZone|NSCreateZone|NSCreateFilenamePboardType|NSCreateFileContentsPboardType|NSTemporaryDirectory|NSIsControllerMarker|NSIsEmptyRect|NSIsFreedObject|NSInsetRect|NSIncrementExtraRefCount|NSIntersectsRect|NSIntersectionRect|NSIntersectionRange|NSInterfaceStyleForKey|NSIntegralRect|NSZoneRealloc|NSZoneMalloc|NSZoneName|NSZoneCalloc|NSZoneFromPointer|NSZoneFree|NSOpenStepRootDirectory|NSOffsetRect|NSDisableScreenUpdates|NSDivideRect|NSDottedFrameRect|NSDecimalRound|NSDecimalMultiply|NSDecimalString|NSDecimalSubtract|NSDecimalNormalize|NSDecimalCopy|NSDecimalCompact|NSDecimalCompare|NSDecimalIsNotANumber|NSDecimalDivide|NSDecimalPower|NSDecimalAdd|NSDecrementExtraRefCountWasZero|NSDefaultMallocZone|NSDeallocateMemoryPages|NSDeallocateObject|NSDrawGroove|NSDrawGrayBezel|NSDrawBitmap|NSDrawButton|NSDrawColorTiledRects|NSDrawTiledRects|NSDrawDarkBezel|NSDrawWhiteBezel|NSDrawWindowBackground|NSDrawLightBezel|NSUserName|NSUnionRect|NSUnionRange|NSUnregisterServicesProvider|NSUpdateDynamicServices|NSJavaBundleSetup|NSJavaBundleCleanup|NSJavaSetup|NSJavaSetupVirtualMachine|NSJavaNeedsToLoadClasses|NSJavaNeedsVirtualMachine|NSJavaClassesForBundle|NSJavaClassesFromPath|NSJavaObjectNamedInPath|NSJavaProvidesClasses|NSPointInRect|NSPointFromString|NSPerformService|NSPlanarFromDepth|NSPageSize|NSEndMapTableEnumeration|NSEndHashTableEnumeration|NSEnumerateMapTable|NSEnumerateHashTable|NSEnableScreenUpdates|NSEqualRects|NSEqualRanges|NSEqualSizes|NSEqualPoints|NSEraseRect|NSExtraRefCount|NSFileTypeForHFSTypeCode|NSFullUserName|NSFreeMapTable|NSFreeHashTable|NSFrameRect|NSFrameRectWithWidth|NSFrameRectWithWidthUsingOperation|NSFrameAddress|NSWindowList|NSWindowListForContext|NSWidth|NSLocationInRange|NSLog|NSLogv|NSLogPageSize|NSAccessibilityRoleDescription|NSAccessibilityRoleDescriptionForUIElement|NSAccessibilityRaiseBadArgumentException|NSAccessibilityUnignoredChildren|NSAccessibilityUnignoredChildrenForOnlyChild|NSAccessibilityUnignoredDescendant|NSAccessibilityUnignoredAncestor|NSAccessibilityPostNotification|NSAccessibilityActionDescription|NSApplicationMain|NSApplicationLoad|NSAvailableWindowDepths|NSAllMapTableValues|NSAllMapTableKeys|NSAllHashTableObjects|NSAllocateMemoryPages|NSAllocateCollectable|NSAllocateObject","support.class.cocoa.leopard":"NSRuleEditor|NSGarbageCollector|NSGradient|NSMapTable|NSHashTable|NSCondition|NSCollectionView|NSCollectionViewItem|NSToolbarItemGroup|NSTextInputClient|NSTreeNode|NSTrackingArea|NSInvocationOperation|NSOperation|NSOperationQueue|NSDictionaryController|NSDockTile|NSPointerFunctions|NSPointerArray|NSPathControl|NSPathControlDelegate|NSPathComponentCell|NSPathCell|NSPathCellDelegate|NSPrintPanelAccessorizing|NSPredicateEditor|NSPredicateEditorRowTemplate|NSViewController|NSFastEnumeration|NSAnimationContext|NSAnimatablePropertyContainer","support.class.cocoa":"NSRunLoop|NSRulerMarker|NSRulerView|NSResponder|NSRecursiveLock|NSRelativeSpecifier|NSRandomSpecifier|NSRangeSpecifier|NSGetCommand|NSGlyphGenerator|NSGlyphStorage|NSGlyphInfo|NSGraphicsContext|NSXMLNode|NSXMLDocument|NSXMLDTD|NSXMLDTDNode|NSXMLParser|NSXMLElement|NSMiddleSpecifier|NSMovie|NSMovieView|NSMoveCommand|NSMutableString|NSMutableSet|NSMutableCharacterSet|NSMutableCopying|NSMutableIndexSet|NSMutableDictionary|NSMutableData|NSMutableURLRequest|NSMutableParagraphStyle|NSMutableAttributedString|NSMutableArray|NSMessagePort|NSMessagePortNameServer|NSMenu|NSMenuItem|NSMenuItemCell|NSMenuView|NSMethodSignature|NSMetadataItem|NSMetadataQuery|NSMetadataQueryResultGroup|NSMetadataQueryAttributeValueTuple|NSMachBootstrapServer|NSMachPort|NSMatrix|NSBitmapImageRep|NSBox|NSBundle|NSButton|NSButtonCell|NSBezierPath|NSBrowser|NSBrowserCell|NSShadow|NSScanner|NSScriptSuiteRegistry|NSScriptCoercionHandler|NSScriptCommand|NSScriptCommandDescription|NSScriptClassDescription|NSScriptObjectSpecifier|NSScriptExecutionContext|NSScriptWhoseTest|NSScroller|NSScrollView|NSScreen|NSStepper|NSStepperCell|NSStatusBar|NSStatusItem|NSString|NSStream|NSSimpleHorizontalTypesetter|NSSimpleCString|NSSocketPort|NSSocketPortNameServer|NSSound|NSSortDescriptor|NSSpecifierTest|NSSpeechRecognizer|NSSpeechSynthesizer|NSSpellServer|NSSpellChecker|NSSplitView|NSSecureTextField|NSSecureTextFieldCell|NSSet|NSSetCommand|NSSearchField|NSSearchFieldCell|NSSerializer|NSSegmentedControl|NSSegmentedCell|NSSlider|NSSliderCell|NSSavePanel|NSHost|NSHTTPCookie|NSHTTPCookieStorage|NSHTTPURLResponse|NSHelpManager|NSNib|NSNibConnector|NSNibControlConnector|NSNibOutletConnector|NSNotification|NSNotificationCenter|NSNotificationQueue|NSNull|NSNumber|NSNumberFormatter|NSNetService|NSNetServiceBrowser|NSNameSpecifier|NSChangeSpelling|NSCharacterSet|NSConstantString|NSConnection|NSControl|NSController|NSConditionLock|NSCoding|NSCoder|NSCountCommand|NSCountedSet|NSCopying|NSColor|NSColorSpace|NSColorPickingCustom|NSColorPickingDefault|NSColorPicker|NSColorPanel|NSColorWell|NSColorList|NSCompoundPredicate|NSComparisonPredicate|NSComboBox|NSComboBoxCell|NSCustomImageRep|NSCursor|NSCIImageRep|NSCell|NSClipView|NSCloseCommand|NSCloneCommand|NSClassDescription|NSCachedImageRep|NSCachedURLResponse|NSCalendar|NSCalendarDate|NSCreateCommand|NSThread|NSTypesetter|NSTimeZone|NSTimer|NSToolbar|NSToolbarItem|NSToolbarItemValidations|NSTokenField|NSTokenFieldCell|NSText|NSTextBlock|NSTextStorage|NSTextContainer|NSTextTab|NSTextTable|NSTextTableBlock|NSTextInput|NSTextView|NSTextField|NSTextFieldCell|NSTextList|NSTextAttachment|NSTextAttachmentCell|NSTask|NSTableHeaderCell|NSTableHeaderView|NSTableColumn|NSTableView|NSTabView|NSTabViewItem|NSTreeController|NSIndexSpecifier|NSIndexSet|NSIndexPath|NSInputManager|NSInputStream|NSInputServiceProvider|NSInputServer|NSInputServerMouseTracker|NSInvocation|NSIgnoreMisspelledWords|NSImage|NSImageRep|NSImageCell|NSImageView|NSOutputStream|NSOutlineView|NSOpenGLContext|NSOpenGLPixelBuffer|NSOpenGLPixelFormat|NSOpenGLView|NSOpenPanel|NSObjCTypeSerializationCallBack|NSObject|NSObjectController|NSDistantObject|NSDistantObjectRequest|NSDistributedNotificationCenter|NSDistributedLock|NSDictionary|NSDirectoryEnumerator|NSDocument|NSDocumentController|NSDeserializer|NSDecimalNumber|NSDecimalNumberBehaviors|NSDecimalNumberHandler|NSDeleteCommand|NSDate|NSDateComponents|NSDatePicker|NSDatePickerCell|NSDateFormatter|NSData|NSDrawer|NSDraggingInfo|NSUserInterfaceValidations|NSUserDefaults|NSUserDefaultsController|NSURL|NSURLResponse|NSURLRequest|NSURLHandle|NSURLHandleClient|NSURLConnection|NSURLCache|NSURLCredential|NSURLCredentialStorage|NSURLDownload|NSURLDownloadDelegate|NSURLProtocol|NSURLProtocolClient|NSURLProtectionSpace|NSURLAuthenticationChallenge|NSURLAuthenticationChallengeSender|NSUniqueIDSpecifier|NSUndoManager|NSUnarchiver|NSPipe|NSPositionalSpecifier|NSPopUpButton|NSPopUpButtonCell|NSPort|NSPortMessage|NSPortNameServer|NSPortCoder|NSPICTImageRep|NSPersistentDocument|NSPDFImageRep|NSPasteboard|NSPanel|NSParagraphStyle|NSPageLayout|NSPrintInfo|NSPrinter|NSPrintOperation|NSPrintPanel|NSProcessInfo|NSProtocolChecker|NSPropertySpecifier|NSPropertyListSerialization|NSProgressIndicator|NSProxy|NSPredicate|NSEnumerator|NSEvent|NSEPSImageRep|NSError|NSException|NSExistsCommand|NSExpression|NSView|NSViewAnimation|NSValidatedToobarItem|NSValidatedUserInterfaceItem|NSValueTransformer|NSKeyedUnarchiver|NSKeyedArchiver|NSQuickDrawView|NSQuitCommand|NSFileManager|NSFileHandle|NSFileWrapper|NSFont|NSFontManager|NSFontDescriptor|NSFontPanel|NSFormCell|NSFormatter|NSWhoseSpecifier|NSWindow|NSWindowController|NSWorkspace|NSLock|NSLocking|NSLocale|NSLogicalTest|NSLevelIndicator|NSLevelIndicatorCell|NSLayoutManager|NSAssertionHandler|NSAnimation|NSActionCell|NSAttributedString|NSAutoreleasePool|NSATSTypesetter|NSApplication|NSAppleScript|NSAppleEventManager|NSAppleEventDescriptor|NSAffineTransform|NSAlert|NSArchiver|NSArray|NSArrayController","support.type.cocoa.leopard":"","support.class.quartz":"CISampler|CIContext|CIColor|CIImage|CIImageAccumulator|CIPlugIn|CIPlugInRegistration|CIVector|CIKernel|CIFilter|CIFilterGenerator|CIFilterShape|CARenderer|CAMediaTiming|CAMediaTimingFunction|CABasicAnimation|CAScrollLayer|CAConstraint|CAConstraintLayoutManager|CATiledLayer|CATextLayer|CATransition|CATransaction|CAOpenGLLayer|CAPropertyAnimation|CAKeyframeAnimation|CALayer|CAAnimation|CAAnimationGroup|CAAction","support.type.quartz":"CGFloat|CGPoint|CGSize|CGRect|CIFormat|CAConstraintAttribute","support.type.cocoa":"NSRect|NSRectEdge|NSRange|NSGlyph|NSGlyphRelation|NSGlyphLayoutMode|NSGradientType|NSModalSession|NSMatrixMode|NSMapEnumerator|NSBitmapImageFileType|NSBorderType|NSButtonType|NSBezelStyle|NSBackingStoreType|NSBrowserColumnResizingType|NSScrollerPart|NSScrollerArrow|NSScrollArrowPosition|NSScreenAuxiliaryOpaque|NSStringEncoding|NSSize|NSSocketNativeHandle|NSSelectionGranularity|NSSelectionDirection|NSSelectionAffinity|NSSwappedDouble|NSSwappedFloat|NSSaveOperationType|NSHashEnumerator|NSHandler|NSHandler2|NSControlSize|NSControlTint|NSCompositingOperation|NSComparisonResult|NSCellState|NSCellType|NSCellImagePosition|NSCellAttribute|NSThreadPrivate|NSTypesetterGlyphInfo|NSTickMarkPosition|NSTitlePosition|NSTimeInterval|NSToolTipTag|NSToolbarSizeMode|NSToolbarDisplayMode|NSTokenStyle|NSTIFFCompression|NSTextTabType|NSTextAlignment|NSTabState|NSTableViewDropOperation|NSTabViewType|NSTrackingRectTag|NSImageInterpolation|NSZone|NSOpenGLContextAuxiliary|NSOpenGLPixelFormatAuxiliary|NSDocumentChangeType|NSDatePickerElementFlags|NSDrawerState|NSDragOperation|NSUsableScrollerParts|NSPoint|NSPrintingPageOrder|NSProgressIndicatorStyle|NSProgressIndicatorThickness|NSProgressIndicatorThreadInfo|NSEventType|NSKeyValueObservingOptions|NSFontSymbolicTraits|NSFontTraitMask|NSFontAction|NSFocusRingType|NSWindowOrderingMode|NSWindowDepth|NSWorkspaceIconCreationOptions|NSWorkspaceLaunchOptions|NSWritingDirection|NSLineBreakMode|NSLayoutStatus|NSLayoutDirection|NSAnimationProgress|NSAnimationEffect|NSApplicationTerminateReply|NSApplicationDelegateReply|NSApplicationPrintReply|NSAppleEventManagerSuspensionID|NSAffineTransformStruct|NSAlertStyle","support.constant.cocoa":"NSRGBModeColorPanel|NSRGBColorSpaceModel|NSRightMouseDown|NSRightMouseDownMask|NSRightMouseDragged|NSRightMouseDraggedMask|NSRightMouseUp|NSRightMouseUpMask|NSRightTextMovement|NSRightTextAlignment|NSRightTabsBezelBorder|NSRightTabStopType|NSRightArrowFunctionKey|NSRoundRectBezelStyle|NSRoundBankers|NSRoundedBezelStyle|NSRoundedTokenStyle|NSRoundedDisclosureBezelStyle|NSRoundDown|NSRoundUp|NSRoundPlain|NSRoundLineCapStyle|NSRoundLineJoinStyle|NSRunStoppedResponse|NSRunContinuesResponse|NSRunAbortedResponse|NSResizableWindowMask|NSResetCursorRectsRunLoopOrdering|NSResetFunctionKey|NSRecessedBezelStyle|NSReceiversCantHandleCommandScriptError|NSReceiverEvaluationScriptError|NSReturnTextMovement|NSRedoFunctionKey|NSRequiredArgumentsMissingScriptError|NSRelevancyLevelIndicatorStyle|NSRelativeBefore|NSRelativeAfter|NSRegularSquareBezelStyle|NSRegularControlSize|NSRemoveTraitFontAction|NSRandomSubelement|NSRangeDateMode|NSRatingLevelIndicatorStyle|NSRadioModeMatrix|NSRadioButton|NSGIFFileType|NSGlyphBelow|NSGlyphInscribeBelow|NSGlyphInscribeBase|NSGlyphInscribeOverstrike|NSGlyphInscribeOverBelow|NSGlyphInscribeAbove|NSGlyphLayoutWithPrevious|NSGlyphLayoutAtAPoint|NSGlyphLayoutAgainstAPoint|NSGlyphAttributeBidiLevel|NSGlyphAttributeSoft|NSGlyphAttributeInscribe|NSGlyphAttributeElastic|NSGlyphAbove|NSGrooveBorder|NSGreaterThanComparison|NSGreaterThanOrEqualToComparison|NSGreaterThanOrEqualToPredicateOperatorType|NSGreaterThanPredicateOperatorType|NSGrayModeColorPanel|NSGrayColorSpaceModel|NSGradientNone|NSGradientConcaveStrong|NSGradientConcaveWeak|NSGradientConvexStrong|NSGradientConvexWeak|NSGraphiteControlTint|NSXMLNotationDeclarationKind|NSXMLNodeCompactEmptyElement|NSXMLNodeIsCDATA|NSXMLNodeOptionsNone|NSXMLNodeUseSingleQuotes|NSXMLNodeUseDoubleQuotes|NSXMLNodePreserveNamespaceOrder|NSXMLNodePreserveCharacterReferences|NSXMLNodePreserveCDATA|NSXMLNodePreserveDTD|NSXMLNodePreservePrefixes|NSXMLNodePreserveEntities|NSXMLNodePreserveEmptyElements|NSXMLNodePreserveQuotes|NSXMLNodePreserveWhitespace|NSXMLNodePreserveAttributeOrder|NSXMLNodePreserveAll|NSXMLNodePrettyPrint|NSXMLNodeExpandEmptyElement|NSXMLNamespaceKind|NSXMLCommentKind|NSXMLTextKind|NSXMLInvalidKind|NSXMLDocumentXMLKind|NSXMLDocumentXHTMLKind|NSXMLDocumentXInclude|NSXMLDocumentHTMLKind|NSXMLDocumentTidyXML|NSXMLDocumentTidyHTML|NSXMLDocumentTextKind|NSXMLDocumentIncludeContentTypeDeclaration|NSXMLDocumentValidate|NSXMLDocumentKind|NSXMLDTDKind|NSXMLParserGTRequiredError|NSXMLParserXMLDeclNotStartedError|NSXMLParserXMLDeclNotFinishedError|NSXMLParserMisplacedXMLDeclarationError|NSXMLParserMisplacedCDATAEndStringError|NSXMLParserMixedContentDeclNotStartedError|NSXMLParserMixedContentDeclNotFinishedError|NSXMLParserStandaloneValueError|NSXMLParserStringNotStartedError|NSXMLParserStringNotClosedError|NSXMLParserSpaceRequiredError|NSXMLParserSeparatorRequiredError|NSXMLParserNMTOKENRequiredError|NSXMLParserNotationNotStartedError|NSXMLParserNotationNotFinishedError|NSXMLParserNotWellBalancedError|NSXMLParserNoDTDError|NSXMLParserNamespaceDeclarationError|NSXMLParserNAMERequiredError|NSXMLParserCharacterRefInDTDError|NSXMLParserCharacterRefInPrologError|NSXMLParserCharacterRefInEpilogError|NSXMLParserCharacterRefAtEOFError|NSXMLParserConditionalSectionNotStartedError|NSXMLParserConditionalSectionNotFinishedError|NSXMLParserCommentNotFinishedError|NSXMLParserCommentContainsDoubleHyphenError|NSXMLParserCDATANotFinishedError|NSXMLParserTagNameMismatchError|NSXMLParserInternalError|NSXMLParserInvalidHexCharacterRefError|NSXMLParserInvalidCharacterRefError|NSXMLParserInvalidCharacterInEntityError|NSXMLParserInvalidCharacterError|NSXMLParserInvalidConditionalSectionError|NSXMLParserInvalidDecimalCharacterRefError|NSXMLParserInvalidURIError|NSXMLParserInvalidEncodingNameError|NSXMLParserInvalidEncodingError|NSXMLParserOutOfMemoryError|NSXMLParserDocumentStartError|NSXMLParserDelegateAbortedParseError|NSXMLParserDOCTYPEDeclNotFinishedError|NSXMLParserURIRequiredError|NSXMLParserURIFragmentError|NSXMLParserUndeclaredEntityError|NSXMLParserUnparsedEntityError|NSXMLParserUnknownEncodingError|NSXMLParserUnfinishedTagError|NSXMLParserPCDATARequiredError|NSXMLParserPublicIdentifierRequiredError|NSXMLParserParsedEntityRefMissingSemiError|NSXMLParserParsedEntityRefNoNameError|NSXMLParserParsedEntityRefInInternalSubsetError|NSXMLParserParsedEntityRefInInternalError|NSXMLParserParsedEntityRefInPrologError|NSXMLParserParsedEntityRefInEpilogError|NSXMLParserParsedEntityRefAtEOFError|NSXMLParserProcessingInstructionNotStartedError|NSXMLParserProcessingInstructionNotFinishedError|NSXMLParserPrematureDocumentEndError|NSXMLParserEncodingNotSupportedError|NSXMLParserEntityRefInDTDError|NSXMLParserEntityRefInPrologError|NSXMLParserEntityRefInEpilogError|NSXMLParserEntityReferenceMissingSemiError|NSXMLParserEntityReferenceWithoutNameError|NSXMLParserEntityRefLoopError|NSXMLParserEntityRefAtEOFError|NSXMLParserEntityBoundaryError|NSXMLParserEntityNotStartedError|NSXMLParserEntityNotFinishedError|NSXMLParserEntityIsParameterError|NSXMLParserEntityIsExternalError|NSXMLParserEntityValueRequiredError|NSXMLParserEqualExpectedError|NSXMLParserElementContentDeclNotStartedError|NSXMLParserElementContentDeclNotFinishedError|NSXMLParserExternalStandaloneEntityError|NSXMLParserExternalSubsetNotFinishedError|NSXMLParserExtraContentError|NSXMLParserEmptyDocumentError|NSXMLParserLiteralNotStartedError|NSXMLParserLiteralNotFinishedError|NSXMLParserLTRequiredError|NSXMLParserLTSlashRequiredError|NSXMLParserLessThanSymbolInAttributeError|NSXMLParserAttributeRedefinedError|NSXMLParserAttributeHasNoValueError|NSXMLParserAttributeNotStartedError|NSXMLParserAttributeNotFinishedError|NSXMLParserAttributeListNotStartedError|NSXMLParserAttributeListNotFinishedError|NSXMLProcessingInstructionKind|NSXMLEntityGeneralKind|NSXMLEntityDeclarationKind|NSXMLEntityUnparsedKind|NSXMLEntityParsedKind|NSXMLEntityParameterKind|NSXMLEntityPredefined|NSXMLElementDeclarationMixedKind|NSXMLElementDeclarationUndefinedKind|NSXMLElementDeclarationElementKind|NSXMLElementDeclarationEmptyKind|NSXMLElementDeclarationKind|NSXMLElementDeclarationAnyKind|NSXMLElementKind|NSXMLAttributeNMTokensKind|NSXMLAttributeNMTokenKind|NSXMLAttributeNotationKind|NSXMLAttributeCDATAKind|NSXMLAttributeIDRefsKind|NSXMLAttributeIDRefKind|NSXMLAttributeIDKind|NSXMLAttributeDeclarationKind|NSXMLAttributeEntityKind|NSXMLAttributeEntitiesKind|NSXMLAttributeEnumerationKind|NSXMLAttributeKind|NSMinXEdge|NSMiniaturizableWindowMask|NSMinYEdge|NSMinuteCalendarUnit|NSMiterLineJoinStyle|NSMiddleSubelement|NSMixedState|NSMonthCalendarUnit|NSModeSwitchFunctionKey|NSMouseMoved|NSMouseMovedMask|NSMouseEntered|NSMouseEnteredMask|NSMouseEventSubtype|NSMouseExited|NSMouseExitedMask|NSMoveToBezierPathElement|NSMomentaryChangeButton|NSMomentaryPushButton|NSMomentaryPushInButton|NSMomentaryLight|NSMomentaryLightButton|NSMenuFunctionKey|NSMacintoshInterfaceStyle|NSMacOSRomanStringEncoding|NSMatchesPredicateOperatorType|NSMappedRead|NSMaxXEdge|NSMaxYEdge|NSMACHOperatingSystem|NSBMPFileType|NSBottomTabsBezelBorder|NSBoldFontMask|NSBorderlessWindowMask|NSBoxSecondary|NSBoxSeparator|NSBoxOldStyle|NSBoxPrimary|NSButtLineCapStyle|NSBezelBorder|NSBevelLineJoinStyle|NSBelowBottom|NSBelowTop|NSBeginsWithComparison|NSBeginsWithPredicateOperatorType|NSBeginFunctionKey|NSBlueControlTint|NSBackspaceCharacter|NSBacktabTextMovement|NSBackingStoreRetained|NSBackingStoreBuffered|NSBackingStoreNonretained|NSBackTabCharacter|NSBackwardsSearch|NSBackgroundTab|NSBrowserNoColumnResizing|NSBrowserUserColumnResizing|NSBrowserAutoColumnResizing|NSBreakFunctionKey|NSShiftJISStringEncoding|NSShiftKeyMask|NSShowControlGlyphs|NSShowInvisibleGlyphs|NSShadowlessSquareBezelStyle|NSSysReqFunctionKey|NSSystemDomainMask|NSSystemDefined|NSSystemDefinedMask|NSSystemFunctionKey|NSSymbolStringEncoding|NSScannedOption|NSScaleNone|NSScaleToFit|NSScaleProportionally|NSScrollerNoPart|NSScrollerIncrementPage|NSScrollerIncrementLine|NSScrollerIncrementArrow|NSScrollerDecrementPage|NSScrollerDecrementLine|NSScrollerDecrementArrow|NSScrollerKnob|NSScrollerKnobSlot|NSScrollerArrowsMinEnd|NSScrollerArrowsMaxEnd|NSScrollerArrowsNone|NSScrollerArrowsDefaultSetting|NSScrollWheel|NSScrollWheelMask|NSScrollLockFunctionKey|NSScreenChangedEventType|NSStopFunctionKey|NSStringDrawingOneShot|NSStringDrawingDisableScreenFontSubstitution|NSStringDrawingUsesDeviceMetrics|NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin|NSStreamStatusReading|NSStreamStatusNotOpen|NSStreamStatusClosed|NSStreamStatusOpen|NSStreamStatusOpening|NSStreamStatusError|NSStreamStatusWriting|NSStreamStatusAtEnd|NSStreamEventHasBytesAvailable|NSStreamEventHasSpaceAvailable|NSStreamEventNone|NSStreamEventOpenCompleted|NSStreamEventEndEncountered|NSStreamEventErrorOccurred|NSSingleDateMode|NSSingleUnderlineStyle|NSSizeDownFontAction|NSSizeUpFontAction|NSSolarisOperatingSystem|NSSunOSOperatingSystem|NSSpecialPageOrder|NSSecondCalendarUnit|NSSelectByCharacter|NSSelectByParagraph|NSSelectByWord|NSSelectingNext|NSSelectingPrevious|NSSelectionAffinityDownstream|NSSelectionAffinityUpstream|NSSelectedTab|NSSelectFunctionKey|NSSegmentSwitchTrackingMomentary|NSSegmentSwitchTrackingSelectOne|NSSegmentSwitchTrackingSelectAny|NSSquareLineCapStyle|NSSwitchButton|NSSaveToOperation|NSSaveOptionsYes|NSSaveOptionsNo|NSSaveOptionsAsk|NSSaveOperation|NSSaveAsOperation|NSSmallSquareBezelStyle|NSSmallControlSize|NSSmallCapsFontMask|NSSmallIconButtonBezelStyle|NSHighlightModeMatrix|NSHSBModeColorPanel|NSHourMinuteSecondDatePickerElementFlag|NSHourMinuteDatePickerElementFlag|NSHourCalendarUnit|NSHorizontalRuler|NSHomeFunctionKey|NSHTTPCookieAcceptPolicyNever|NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain|NSHTTPCookieAcceptPolicyAlways|NSHelpButtonBezelStyle|NSHelpKeyMask|NSHelpFunctionKey|NSHeavierFontAction|NSHPUXOperatingSystem|NSYearMonthDayDatePickerElementFlag|NSYearMonthDatePickerElementFlag|NSYearCalendarUnit|NSNonStandardCharacterSetFontMask|NSNonZeroWindingRule|NSNonactivatingPanelMask|NSNonLossyASCIIStringEncoding|NSNoBorder|NSNotificationSuspensionBehaviorHold|NSNotificationSuspensionBehaviorCoalesce|NSNotificationSuspensionBehaviorDeliverImmediately|NSNotificationSuspensionBehaviorDrop|NSNotificationNoCoalescing|NSNotificationCoalescingOnSender|NSNotificationCoalescingOnName|NSNotificationDeliverImmediately|NSNotificationPostToAllSessions|NSNotPredicateType|NSNotEqualToPredicateOperatorType|NSNoScriptError|NSNoScrollerParts|NSNoSubelement|NSNoSpecifierError|NSNoCellMask|NSNoTitle|NSNoTopLevelContainersSpecifierError|NSNoTabsBezelBorder|NSNoTabsNoBorder|NSNoTabsLineBorder|NSNoInterfaceStyle|NSNoImage|NSNoUnderlineStyle|NSNoFontChangeAction|NSNullGlyph|NSNullCellType|NSNumericSearch|NSNumericPadKeyMask|NSNumberFormatterRoundHalfDown|NSNumberFormatterRoundHalfUp|NSNumberFormatterRoundHalfEven|NSNumberFormatterRoundCeiling|NSNumberFormatterRoundDown|NSNumberFormatterRoundUp|NSNumberFormatterRoundFloor|NSNumberFormatterBehavior10|NSNumberFormatterBehaviorDefault|NSNumberFormatterScientificStyle|NSNumberFormatterSpellOutStyle|NSNumberFormatterNoStyle|NSNumberFormatterCurrencyStyle|NSNumberFormatterDecimalStyle|NSNumberFormatterPercentStyle|NSNumberFormatterPadBeforeSuffix|NSNumberFormatterPadBeforePrefix|NSNumberFormatterPadAfterSuffix|NSNumberFormatterPadAfterPrefix|NSNetServicesBadArgumentError|NSNetServicesNotFoundError|NSNetServicesCollisionError|NSNetServicesCancelledError|NSNetServicesTimeoutError|NSNetServicesInvalidError|NSNetServicesUnknownError|NSNetServicesActivityInProgress|NSNetworkDomainMask|NSNewlineCharacter|NSNextStepInterfaceStyle|NSNextFunctionKey|NSNEXTSTEPStringEncoding|NSNativeShortGlyphPacking|NSNaturalTextAlignment|NSNarrowFontMask|NSChangeReadOtherContents|NSChangeGrayCell|NSChangeGrayCellMask|NSChangeBackgroundCell|NSChangeBackgroundCellMask|NSChangeCleared|NSChangeDone|NSChangeUndone|NSChangeAutosaved|NSCMYKModeColorPanel|NSCMYKColorSpaceModel|NSCircularBezelStyle|NSCircularSlider|NSConstantValueExpressionType|NSContinuousCapacityLevelIndicatorStyle|NSContentsCellMask|NSContainsComparison|NSContainerSpecifierError|NSControlGlyph|NSControlKeyMask|NSCondensedFontMask|NSColorPanelRGBModeMask|NSColorPanelGrayModeMask|NSColorPanelHSBModeMask|NSColorPanelCMYKModeMask|NSColorPanelColorListModeMask|NSColorPanelCustomPaletteModeMask|NSColorPanelCrayonModeMask|NSColorPanelWheelModeMask|NSColorPanelAllModesMask|NSColorListModeColorPanel|NSCoreServiceDirectory|NSCompositeXOR|NSCompositeSourceIn|NSCompositeSourceOut|NSCompositeSourceOver|NSCompositeSourceAtop|NSCompositeHighlight|NSCompositeCopy|NSCompositeClear|NSCompositeDestinationIn|NSCompositeDestinationOut|NSCompositeDestinationOver|NSCompositeDestinationAtop|NSCompositePlusDarker|NSCompositePlusLighter|NSCompressedFontMask|NSCommandKeyMask|NSCustomSelectorPredicateOperatorType|NSCustomPaletteModeColorPanel|NSCursorUpdate|NSCursorUpdateMask|NSCursorPointingDevice|NSCurveToBezierPathElement|NSCenterTextAlignment|NSCenterTabStopType|NSCellHighlighted|NSCellHasImageHorizontal|NSCellHasImageOnLeftOrBottom|NSCellHasOverlappingImage|NSCellChangesContents|NSCellIsBordered|NSCellIsInsetButton|NSCellDisabled|NSCellEditable|NSCellLightsByGray|NSCellLightsByBackground|NSCellLightsByContents|NSCellAllowsMixedState|NSClipPagination|NSClosePathBezierPathElement|NSClosableWindowMask|NSClockAndCalendarDatePickerStyle|NSClearControlTint|NSClearDisplayFunctionKey|NSClearLineFunctionKey|NSCaseInsensitiveSearch|NSCaseInsensitivePredicateOption|NSCannotCreateScriptCommandError|NSCancelButton|NSCancelTextMovement|NSCachesDirectory|NSCalculationNoError|NSCalculationOverflow|NSCalculationDivideByZero|NSCalculationUnderflow|NSCalculationLossOfPrecision|NSCarriageReturnCharacter|NSCriticalRequest|NSCriticalAlertStyle|NSCrayonModeColorPanel|NSThickSquareBezelStyle|NSThickerSquareBezelStyle|NSTypesetterBehavior|NSTypesetterHorizontalTabAction|NSTypesetterContainerBreakAction|NSTypesetterZeroAdvancementAction|NSTypesetterOriginalBehavior|NSTypesetterParagraphBreakAction|NSTypesetterWhitespaceAction|NSTypesetterLineBreakAction|NSTypesetterLatestBehavior|NSTickMarkRight|NSTickMarkBelow|NSTickMarkLeft|NSTickMarkAbove|NSTitledWindowMask|NSTimeZoneDatePickerElementFlag|NSToolbarItemVisibilityPriorityStandard|NSToolbarItemVisibilityPriorityHigh|NSToolbarItemVisibilityPriorityUser|NSToolbarItemVisibilityPriorityLow|NSTopTabsBezelBorder|NSToggleButton|NSTIFFCompressionNone|NSTIFFCompressionNEXT|NSTIFFCompressionCCITTFAX3|NSTIFFCompressionCCITTFAX4|NSTIFFCompressionOldJPEG|NSTIFFCompressionJPEG|NSTIFFCompressionPackBits|NSTIFFCompressionLZW|NSTIFFFileType|NSTerminateNow|NSTerminateCancel|NSTerminateLater|NSTextReadInapplicableDocumentTypeError|NSTextReadWriteErrorMinimum|NSTextReadWriteErrorMaximum|NSTextBlockMinimumHeight|NSTextBlockMinimumWidth|NSTextBlockMiddleAlignment|NSTextBlockMargin|NSTextBlockMaximumHeight|NSTextBlockMaximumWidth|NSTextBlockBottomAlignment|NSTextBlockBorder|NSTextBlockBaselineAlignment|NSTextBlockHeight|NSTextBlockTopAlignment|NSTextBlockPercentageValueType|NSTextBlockPadding|NSTextBlockWidth|NSTextBlockAbsoluteValueType|NSTextStorageEditedCharacters|NSTextStorageEditedAttributes|NSTextCellType|NSTexturedRoundedBezelStyle|NSTexturedBackgroundWindowMask|NSTexturedSquareBezelStyle|NSTextTableFixedLayoutAlgorithm|NSTextTableAutomaticLayoutAlgorithm|NSTextFieldRoundedBezel|NSTextFieldSquareBezel|NSTextFieldAndStepperDatePickerStyle|NSTextWriteInapplicableDocumentTypeError|NSTextListPrependEnclosingMarker|NSTwoByteGlyphPacking|NSTabCharacter|NSTabTextMovement|NSTabletPoint|NSTabletPointMask|NSTabletPointEventSubtype|NSTabletProximity|NSTabletProximityMask|NSTabletProximityEventSubtype|NSTableColumnNoResizing|NSTableColumnUserResizingMask|NSTableColumnAutoresizingMask|NSTableViewReverseSequentialColumnAutoresizingStyle|NSTableViewGridNone|NSTableViewSolidHorizontalGridLineMask|NSTableViewSolidVerticalGridLineMask|NSTableViewSequentialColumnAutoresizingStyle|NSTableViewNoColumnAutoresizing|NSTableViewUniformColumnAutoresizingStyle|NSTableViewFirstColumnOnlyAutoresizingStyle|NSTableViewLastColumnOnlyAutoresizingStyle|NSTrackModeMatrix|NSInsertCharFunctionKey|NSInsertFunctionKey|NSInsertLineFunctionKey|NSIntType|NSInternalScriptError|NSInternalSpecifierError|NSIndexSubelement|NSInvalidIndexSpecifierError|NSInformationalRequest|NSInformationalAlertStyle|NSInPredicateOperatorType|NSItalicFontMask|NSISO2022JPStringEncoding|NSISOLatin1StringEncoding|NSISOLatin2StringEncoding|NSIdentityMappingCharacterCollection|NSIllegalTextMovement|NSImageRight|NSImageRepMatchesDevice|NSImageRepLoadStatusReadingHeader|NSImageRepLoadStatusCompleted|NSImageRepLoadStatusInvalidData|NSImageRepLoadStatusUnexpectedEOF|NSImageRepLoadStatusUnknownType|NSImageRepLoadStatusWillNeedAllData|NSImageBelow|NSImageCellType|NSImageCacheBySize|NSImageCacheNever|NSImageCacheDefault|NSImageCacheAlways|NSImageInterpolationHigh|NSImageInterpolationNone|NSImageInterpolationDefault|NSImageInterpolationLow|NSImageOnly|NSImageOverlaps|NSImageFrameGroove|NSImageFrameGrayBezel|NSImageFrameButton|NSImageFrameNone|NSImageFramePhoto|NSImageLoadStatusReadError|NSImageLoadStatusCompleted|NSImageLoadStatusCancelled|NSImageLoadStatusInvalidData|NSImageLoadStatusUnexpectedEOF|NSImageLeft|NSImageAlignRight|NSImageAlignBottom|NSImageAlignBottomRight|NSImageAlignBottomLeft|NSImageAlignCenter|NSImageAlignTop|NSImageAlignTopRight|NSImageAlignTopLeft|NSImageAlignLeft|NSImageAbove|NSOnState|NSOneByteGlyphPacking|NSOnOffButton|NSOnlyScrollerArrows|NSOtherMouseDown|NSOtherMouseDownMask|NSOtherMouseDragged|NSOtherMouseDraggedMask|NSOtherMouseUp|NSOtherMouseUpMask|NSOtherTextMovement|NSOSF1OperatingSystem|NSOpenGLGOResetLibrary|NSOpenGLGORetainRenderers|NSOpenGLGOClearFormatCache|NSOpenGLGOFormatCacheSize|NSOpenGLPFARobust|NSOpenGLPFARendererID|NSOpenGLPFAMinimumPolicy|NSOpenGLPFAMultisample|NSOpenGLPFAMultiScreen|NSOpenGLPFAMPSafe|NSOpenGLPFAMaximumPolicy|NSOpenGLPFABackingStore|NSOpenGLPFAScreenMask|NSOpenGLPFAStencilSize|NSOpenGLPFAStereo|NSOpenGLPFASingleRenderer|NSOpenGLPFASupersample|NSOpenGLPFASamples|NSOpenGLPFASampleBuffers|NSOpenGLPFASampleAlpha|NSOpenGLPFANoRecovery|NSOpenGLPFAColorSize|NSOpenGLPFAColorFloat|NSOpenGLPFACompliant|NSOpenGLPFAClosestPolicy|NSOpenGLPFAOffScreen|NSOpenGLPFADoubleBuffer|NSOpenGLPFADepthSize|NSOpenGLPFAPixelBuffer|NSOpenGLPFAVirtualScreenCount|NSOpenGLPFAFullScreen|NSOpenGLPFAWindow|NSOpenGLPFAAccumSize|NSOpenGLPFAAccelerated|NSOpenGLPFAAuxBuffers|NSOpenGLPFAAuxDepthStencil|NSOpenGLPFAAlphaSize|NSOpenGLPFAAllRenderers|NSOpenStepUnicodeReservedBase|NSOperationNotSupportedForKeyScriptError|NSOperationNotSupportedForKeySpecifierError|NSOffState|NSOKButton|NSOrPredicateType|NSObjCBitfield|NSObjCBoolType|NSObjCShortType|NSObjCStringType|NSObjCStructType|NSObjCSelectorType|NSObjCNoType|NSObjCCharType|NSObjCObjectType|NSObjCDoubleType|NSObjCUnionType|NSObjCPointerType|NSObjCVoidType|NSObjCFloatType|NSObjCLongType|NSObjCLonglongType|NSObjCArrayType|NSDisclosureBezelStyle|NSDiscreteCapacityLevelIndicatorStyle|NSDisplayWindowRunLoopOrdering|NSDiacriticInsensitivePredicateOption|NSDirectSelection|NSDirectPredicateModifier|NSDocModalWindowMask|NSDocumentDirectory|NSDocumentationDirectory|NSDoubleType|NSDownTextMovement|NSDownArrowFunctionKey|NSDescendingPageOrder|NSDesktopDirectory|NSDecimalTabStopType|NSDeviceNColorSpaceModel|NSDeviceIndependentModifierFlagsMask|NSDeveloperDirectory|NSDeveloperApplicationDirectory|NSDefaultControlTint|NSDefaultTokenStyle|NSDeleteCharacter|NSDeleteCharFunctionKey|NSDeleteFunctionKey|NSDeleteLineFunctionKey|NSDemoApplicationDirectory|NSDayCalendarUnit|NSDateFormatterMediumStyle|NSDateFormatterBehavior10|NSDateFormatterBehaviorDefault|NSDateFormatterShortStyle|NSDateFormatterNoStyle|NSDateFormatterFullStyle|NSDateFormatterLongStyle|NSDrawerClosingState|NSDrawerClosedState|NSDrawerOpeningState|NSDrawerOpenState|NSDragOperationGeneric|NSDragOperationMove|NSDragOperationNone|NSDragOperationCopy|NSDragOperationDelete|NSDragOperationPrivate|NSDragOperationEvery|NSDragOperationLink|NSDragOperationAll|NSUserCancelledError|NSUserDirectory|NSUserDomainMask|NSUserFunctionKey|NSURLHandleNotLoaded|NSURLHandleLoadSucceeded|NSURLHandleLoadInProgress|NSURLHandleLoadFailed|NSURLCredentialPersistenceNone|NSURLCredentialPersistencePermanent|NSURLCredentialPersistenceForSession|NSUnscaledWindowMask|NSUncachedRead|NSUnicodeStringEncoding|NSUnitalicFontMask|NSUnifiedTitleAndToolbarWindowMask|NSUndoCloseGroupingRunLoopOrdering|NSUndoFunctionKey|NSUndefinedDateComponent|NSUnderlineStyleSingle|NSUnderlineStyleNone|NSUnderlineStyleThick|NSUnderlineStyleDouble|NSUnderlinePatternSolid|NSUnderlinePatternDot|NSUnderlinePatternDash|NSUnderlinePatternDashDot|NSUnderlinePatternDashDotDot|NSUnknownColorSpaceModel|NSUnknownPointingDevice|NSUnknownPageOrder|NSUnknownKeyScriptError|NSUnknownKeySpecifierError|NSUnboldFontMask|NSUtilityWindowMask|NSUTF8StringEncoding|NSUpdateWindowsRunLoopOrdering|NSUpTextMovement|NSUpArrowFunctionKey|NSJustifiedTextAlignment|NSJPEG2000FileType|NSJPEGFileType|NSJapaneseEUCGlyphPacking|NSJapaneseEUCStringEncoding|NSPostNow|NSPosterFontMask|NSPostWhenIdle|NSPostASAP|NSPositionReplace|NSPositionBefore|NSPositionBeginning|NSPositionEnd|NSPositionAfter|NSPositiveIntType|NSPositiveDoubleType|NSPositiveFloatType|NSPopUpNoArrow|NSPopUpArrowAtBottom|NSPopUpArrowAtCenter|NSPowerOffEventType|NSPortraitOrientation|NSPNGFileType|NSPushInCell|NSPushInCellMask|NSPushOnPushOffButton|NSPenTipMask|NSPenUpperSideMask|NSPenPointingDevice|NSPenLowerSideMask|NSPeriodic|NSPeriodicMask|NSPPScaleField|NSPPStatusTitle|NSPPStatusField|NSPPSaveButton|NSPPNoteTitle|NSPPNoteField|NSPPNameTitle|NSPPNameField|NSPPCopiesField|NSPPTitleField|NSPPImageButton|NSPPOptionsButton|NSPPPaperFeedButton|NSPPPageRangeTo|NSPPPageRangeFrom|NSPPPageChoiceMatrix|NSPPPreviewButton|NSPPLayoutButton|NSPlainTextTokenStyle|NSPauseFunctionKey|NSParagraphSeparatorCharacter|NSPageDownFunctionKey|NSPageUpFunctionKey|NSPrintingReplyLater|NSPrintingSuccess|NSPrintingCancelled|NSPrintingFailure|NSPrintScreenFunctionKey|NSPrinterTableNotFound|NSPrinterTableOK|NSPrinterTableError|NSPrintFunctionKey|NSPropertyListXMLFormat|NSPropertyListMutableContainers|NSPropertyListMutableContainersAndLeaves|NSPropertyListBinaryFormat|NSPropertyListImmutable|NSPropertyListOpenStepFormat|NSProprietaryStringEncoding|NSProgressIndicatorBarStyle|NSProgressIndicatorSpinningStyle|NSProgressIndicatorPreferredSmallThickness|NSProgressIndicatorPreferredThickness|NSProgressIndicatorPreferredLargeThickness|NSProgressIndicatorPreferredAquaThickness|NSPressedTab|NSPrevFunctionKey|NSPLHeightForm|NSPLCancelButton|NSPLTitleField|NSPLImageButton|NSPLOKButton|NSPLOrientationMatrix|NSPLUnitsButton|NSPLPaperNameButton|NSPLWidthForm|NSEnterCharacter|NSEndsWithComparison|NSEndsWithPredicateOperatorType|NSEndFunctionKey|NSEvenOddWindingRule|NSEverySubelement|NSEvaluatedObjectExpressionType|NSEqualToComparison|NSEqualToPredicateOperatorType|NSEraserPointingDevice|NSEraCalendarUnit|NSEraDatePickerElementFlag|NSExclude10|NSExcludeQuickDrawElementsIconCreationOption|NSExpandedFontMask|NSExecuteFunctionKey|NSViewMinXMargin|NSViewMinYMargin|NSViewMaxXMargin|NSViewMaxYMargin|NSViewHeightSizable|NSViewNotSizable|NSViewWidthSizable|NSViaPanelFontAction|NSVerticalRuler|NSValidationErrorMinimum|NSValidationErrorMaximum|NSVariableExpressionType|NSKeySpecifierEvaluationScriptError|NSKeyDown|NSKeyDownMask|NSKeyUp|NSKeyUpMask|NSKeyPathExpressionType|NSKeyValueMinusSetMutation|NSKeyValueSetSetMutation|NSKeyValueChangeReplacement|NSKeyValueChangeRemoval|NSKeyValueChangeSetting|NSKeyValueChangeInsertion|NSKeyValueIntersectSetMutation|NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld|NSKeyValueUnionSetMutation|NSKeyValueValidationError|NSQTMovieNormalPlayback|NSQTMovieLoopingBackAndForthPlayback|NSQTMovieLoopingPlayback|NSF11FunctionKey|NSF17FunctionKey|NSF12FunctionKey|NSF18FunctionKey|NSF13FunctionKey|NSF19FunctionKey|NSF14FunctionKey|NSF15FunctionKey|NSF1FunctionKey|NSF10FunctionKey|NSF16FunctionKey|NSF7FunctionKey|NSFindPanelActionReplace|NSFindPanelActionReplaceAndFind|NSFindPanelActionReplaceAll|NSFindPanelActionReplaceAllInSelection|NSFindPanelActionShowFindPanel|NSFindPanelActionSetFindString|NSFindPanelActionSelectAll|NSFindPanelActionSelectAllInSelection|NSFindPanelActionNext|NSFindPanelActionPrevious|NSFindFunctionKey|NSFitPagination|NSFileReadNoSuchFileError|NSFileReadNoPermissionError|NSFileReadCorruptFileError|NSFileReadInvalidFileNameError|NSFileReadInapplicableStringEncodingError|NSFileReadUnsupportedSchemeError|NSFileReadUnknownError|NSFileHandlingPanelCancelButton|NSFileHandlingPanelOKButton|NSFileNoSuchFileError|NSFileErrorMinimum|NSFileErrorMaximum|NSFileWriteNoPermissionError|NSFileWriteInvalidFileNameError|NSFileWriteInapplicableStringEncodingError|NSFileWriteOutOfSpaceError|NSFileWriteUnsupportedSchemeError|NSFileWriteUnknownError|NSFileLockingError|NSFixedPitchFontMask|NSF21FunctionKey|NSF27FunctionKey|NSF22FunctionKey|NSF28FunctionKey|NSF23FunctionKey|NSF29FunctionKey|NSF24FunctionKey|NSF25FunctionKey|NSF2FunctionKey|NSF20FunctionKey|NSF26FunctionKey|NSFontMonoSpaceTrait|NSFontModernSerifsClass|NSFontBoldTrait|NSFontSymbolicClass|NSFontScriptsClass|NSFontSlabSerifsClass|NSFontSansSerifClass|NSFontCondensedTrait|NSFontCollectionApplicationOnlyMask|NSFontClarendonSerifsClass|NSFontTransitionalSerifsClass|NSFontIntegerAdvancementsRenderingMode|NSFontItalicTrait|NSFontOldStyleSerifsClass|NSFontOrnamentalsClass|NSFontDefaultRenderingMode|NSFontUnknownClass|NSFontUIOptimizedTrait|NSFontPanelShadowEffectModeMask|NSFontPanelStandardModesMask|NSFontPanelStrikethroughEffectModeMask|NSFontPanelSizeModeMask|NSFontPanelCollectionModeMask|NSFontPanelTextColorEffectModeMask|NSFontPanelDocumentColorEffectModeMask|NSFontPanelUnderlineEffectModeMask|NSFontPanelFaceModeMask|NSFontPanelAllModesMask|NSFontPanelAllEffectsModeMask|NSFontExpandedTrait|NSFontVerticalTrait|NSFontFamilyClassMask|NSFontFreeformSerifsClass|NSFontAntialiasedRenderingMode|NSFontAntialiasedIntegerAdvancementsRenderingMode|NSFocusRingBelow|NSFocusRingTypeNone|NSFocusRingTypeDefault|NSFocusRingTypeExterior|NSFocusRingOnly|NSFocusRingAbove|NSFourByteGlyphPacking|NSFormattingError|NSFormattingErrorMinimum|NSFormattingErrorMaximum|NSFormFeedCharacter|NSF8FunctionKey|NSFunctionExpressionType|NSFunctionKeyMask|NSF31FunctionKey|NSF32FunctionKey|NSF33FunctionKey|NSF34FunctionKey|NSF35FunctionKey|NSF3FunctionKey|NSF30FunctionKey|NSF9FunctionKey|NSF4FunctionKey|NSFPRevertButton|NSFPSizeTitle|NSFPSizeField|NSFPSetButton|NSFPCurrentField|NSFPPreviewButton|NSFPPreviewField|NSFloatingPointSamplesBitmapFormat|NSFloatType|NSFlagsChanged|NSFlagsChangedMask|NSFaxButton|NSF5FunctionKey|NSF6FunctionKey|NSWheelModeColorPanel|NSWindowsNTOperatingSystem|NSWindowsCP1251StringEncoding|NSWindowsCP1252StringEncoding|NSWindowsCP1253StringEncoding|NSWindowsCP1254StringEncoding|NSWindowsCP1250StringEncoding|NSWindows95InterfaceStyle|NSWindows95OperatingSystem|NSWindowMiniaturizeButton|NSWindowMovedEventType|NSWindowBelow|NSWindowCloseButton|NSWindowToolbarButton|NSWindowZoomButton|NSWindowOut|NSWindowDocumentIconButton|NSWindowExposedEventType|NSWindowAbove|NSWorkspaceLaunchNewInstance|NSWorkspaceLaunchInhibitingBackgroundOnly|NSWorkspaceLaunchDefault|NSWorkspaceLaunchPreferringClassic|NSWorkspaceLaunchWithoutActivation|NSWorkspaceLaunchWithoutAddingToRecents|NSWorkspaceLaunchAsync|NSWorkspaceLaunchAndHide|NSWorkspaceLaunchAndHideOthers|NSWorkspaceLaunchAndPrint|NSWorkspaceLaunchAllowingClassicStartup|NSWeekdayCalendarUnit|NSWeekdayOrdinalCalendarUnit|NSWeekCalendarUnit|NSWantsBidiLevels|NSWarningAlertStyle|NSWritingDirectionRightToLeft|NSWritingDirectionNatural|NSWritingDirectionLeftToRight|NSWrapCalendarComponents|NSListModeMatrix|NSLineMovesRight|NSLineMovesDown|NSLineMovesUp|NSLineMovesLeft|NSLineBorder|NSLineBreakByCharWrapping|NSLineBreakByClipping|NSLineBreakByTruncatingMiddle|NSLineBreakByTruncatingHead|NSLineBreakByTruncatingTail|NSLineBreakByWordWrapping|NSLineSeparatorCharacter|NSLineSweepRight|NSLineSweepDown|NSLineSweepUp|NSLineSweepLeft|NSLineToBezierPathElement|NSLineDoesntMove|NSLinearSlider|NSLiteralSearch|NSLikePredicateOperatorType|NSLighterFontAction|NSLibraryDirectory|NSLocalDomainMask|NSLessThanComparison|NSLessThanOrEqualToComparison|NSLessThanOrEqualToPredicateOperatorType|NSLessThanPredicateOperatorType|NSLeftMouseDown|NSLeftMouseDownMask|NSLeftMouseDragged|NSLeftMouseDraggedMask|NSLeftMouseUp|NSLeftMouseUpMask|NSLeftTextMovement|NSLeftTextAlignment|NSLeftTabsBezelBorder|NSLeftTabStopType|NSLeftArrowFunctionKey|NSLayoutRightToLeft|NSLayoutNotDone|NSLayoutCantFit|NSLayoutOutOfGlyphs|NSLayoutDone|NSLayoutLeftToRight|NSLandscapeOrientation|NSLABColorSpaceModel|NSAsciiWithDoubleByteEUCGlyphPacking|NSAscendingPageOrder|NSAnyType|NSAnyPredicateModifier|NSAnyEventMask|NSAnchoredSearch|NSAnimationBlocking|NSAnimationNonblocking|NSAnimationNonblockingThreaded|NSAnimationEffectDisappearingItemDefault|NSAnimationEffectPoof|NSAnimationEaseIn|NSAnimationEaseInOut|NSAnimationEaseOut|NSAnimationLinear|NSAndPredicateType|NSAtBottom|NSAttachmentCharacter|NSAtomicWrite|NSAtTop|NSASCIIStringEncoding|NSAdobeGB1CharacterCollection|NSAdobeCNS1CharacterCollection|NSAdobeJapan1CharacterCollection|NSAdobeJapan2CharacterCollection|NSAdobeKorea1CharacterCollection|NSAddTraitFontAction|NSAdminApplicationDirectory|NSAutosaveOperation|NSAutoPagination|NSApplicationSupportDirectory|NSApplicationDirectory|NSApplicationDefined|NSApplicationDefinedMask|NSApplicationDelegateReplySuccess|NSApplicationDelegateReplyCancel|NSApplicationDelegateReplyFailure|NSApplicationDeactivatedEventType|NSApplicationActivatedEventType|NSAppKitDefined|NSAppKitDefinedMask|NSAlternateKeyMask|NSAlphaShiftKeyMask|NSAlphaNonpremultipliedBitmapFormat|NSAlphaFirstBitmapFormat|NSAlertSecondButtonReturn|NSAlertThirdButtonReturn|NSAlertOtherReturn|NSAlertDefaultReturn|NSAlertErrorReturn|NSAlertFirstButtonReturn|NSAlertAlternateReturn|NSAllScrollerParts|NSAllDomainsMask|NSAllPredicateModifier|NSAllLibrariesDirectory|NSAllApplicationsDirectory|NSArgumentsWrongScriptError|NSArgumentEvaluationScriptError|NSAboveBottom|NSAboveTop|NSAWTEventType","support.constant.notification.cocoa.leopard":"NSMenuDidBeginTrackingNotification|NSViewDidUpdateTrackingAreasNotification","support.constant.notification.cocoa":"NSMenuDidRemoveItemNotification|NSMenuDidSendActionNotification|NSMenuDidChangeItemNotification|NSMenuDidEndTrackingNotification|NSMenuDidAddItemNotification|NSMenuWillSendActionNotification|NSSystemColorsDidChangeNotification|NSSplitViewDidResizeSubviewsNotification|NSSplitViewWillResizeSubviewsNotification|NSContextHelpModeDidDeactivateNotification|NSContextHelpModeDidActivateNotification|NSControlTintDidChangeNotification|NSControlTextDidBeginEditingNotification|NSControlTextDidChangeNotification|NSControlTextDidEndEditingNotification|NSColorPanelColorDidChangeNotification|NSColorListDidChangeNotification|NSComboBoxSelectionIsChangingNotification|NSComboBoxSelectionDidChangeNotification|NSComboBoxWillDismissNotification|NSComboBoxWillPopUpNotification|NSClassDescriptionNeededForClassNotification|NSToolbarDidRemoveItemNotification|NSToolbarWillAddItemNotification|NSTextStorageDidProcessEditingNotification|NSTextStorageWillProcessEditingNotification|NSTextDidBeginEditingNotification|NSTextDidChangeNotification|NSTextDidEndEditingNotification|NSTextViewDidChangeSelectionNotification|NSTextViewDidChangeTypingAttributesNotification|NSTextViewWillChangeNotifyingTextViewNotification|NSTableViewSelectionIsChangingNotification|NSTableViewSelectionDidChangeNotification|NSTableViewColumnDidResizeNotification|NSTableViewColumnDidMoveNotification|NSImageRepRegistryDidChangeNotification|NSOutlineViewSelectionIsChangingNotification|NSOutlineViewSelectionDidChangeNotification|NSOutlineViewColumnDidResizeNotification|NSOutlineViewColumnDidMoveNotification|NSOutlineViewItemDidCollapseNotification|NSOutlineViewItemDidExpandNotification|NSOutlineViewItemWillCollapseNotification|NSOutlineViewItemWillExpandNotification|NSDrawerDidCloseNotification|NSDrawerDidOpenNotification|NSDrawerWillCloseNotification|NSDrawerWillOpenNotification|NSPopUpButtonCellWillPopUpNotification|NSPopUpButtonWillPopUpNotification|NSViewGlobalFrameDidChangeNotification|NSViewBoundsDidChangeNotification|NSViewFocusDidChangeNotification|NSViewFrameDidChangeNotification|NSFontSetChangedNotification|NSWindowDidResizeNotification|NSWindowDidResignMainNotification|NSWindowDidResignKeyNotification|NSWindowDidMiniaturizeNotification|NSWindowDidMoveNotification|NSWindowDidBecomeMainNotification|NSWindowDidBecomeKeyNotification|NSWindowDidChangeScreenNotification|NSWindowDidChangeScreenProfileNotification|NSWindowDidDeminiaturizeNotification|NSWindowDidUpdateNotification|NSWindowDidEndSheetNotification|NSWindowDidExposeNotification|NSWindowWillMiniaturizeNotification|NSWindowWillMoveNotification|NSWindowWillBeginSheetNotification|NSWindowWillCloseNotification|NSWorkspaceSessionDidResignActiveNotification|NSWorkspaceSessionDidBecomeActiveNotification|NSWorkspaceDidMountNotification|NSWorkspaceDidTerminateApplicationNotification|NSWorkspaceDidUnmountNotification|NSWorkspaceDidPerformFileOperationNotification|NSWorkspaceDidWakeNotification|NSWorkspaceDidLaunchApplicationNotification|NSWorkspaceWillSleepNotification|NSWorkspaceWillUnmountNotification|NSWorkspaceWillPowerOffNotification|NSWorkspaceWillLaunchApplicationNotification|NSAntialiasThresholdChangedNotification|NSApplicationDidResignActiveNotification|NSApplicationDidBecomeActiveNotification|NSApplicationDidHideNotification|NSApplicationDidChangeScreenParametersNotification|NSApplicationDidUnhideNotification|NSApplicationDidUpdateNotification|NSApplicationDidFinishLaunchingNotification|NSApplicationWillResignActiveNotification|NSApplicationWillBecomeActiveNotification|NSApplicationWillHideNotification|NSApplicationWillTerminateNotification|NSApplicationWillUnhideNotification|NSApplicationWillUpdateNotification|NSApplicationWillFinishLaunchingNotification|NSAppleEventManagerWillProcessFirstEventNotification","support.constant.cocoa.leopard":"NSRuleEditorRowTypeSimple|NSRuleEditorRowTypeCompound|NSRuleEditorNestingModeSingle|NSRuleEditorNestingModeSimple|NSRuleEditorNestingModeCompound|NSRuleEditorNestingModeList|NSGradientDrawsBeforeStartingLocation|NSGradientDrawsAfterEndingLocation|NSMinusSetExpressionType|NSMachPortDeallocateReceiveRight|NSMachPortDeallocateSendRight|NSMachPortDeallocateNone|NSMapTableStrongMemory|NSMapTableCopyIn|NSMapTableZeroingWeakMemory|NSMapTableObjectPointerPersonality|NSBoxCustom|NSBundleExecutableArchitectureX86|NSBundleExecutableArchitectureI386|NSBundleExecutableArchitecturePPC|NSBundleExecutableArchitecturePPC64|NSBetweenPredicateOperatorType|NSBackgroundStyleRaised|NSBackgroundStyleDark|NSBackgroundStyleLight|NSBackgroundStyleLowered|NSStringDrawingTruncatesLastVisibleLine|NSStringEncodingConversionExternalRepresentation|NSStringEncodingConversionAllowLossy|NSSubqueryExpressionType|NSSpeechSentenceBoundary|NSSpeechImmediateBoundary|NSSpeechWordBoundary|NSSpellingStateGrammarFlag|NSSpellingStateSpellingFlag|NSSplitViewDividerStyleThin|NSSplitViewDividerStyleThick|NSServiceRequestTimedOutError|NSServiceMiscellaneousError|NSServiceMalformedServiceDictionaryError|NSServiceInvalidPasteboardDataError|NSServiceErrorMinimum|NSServiceErrorMaximum|NSServiceApplicationNotFoundError|NSServiceApplicationLaunchFailedError|NSSegmentStyleRoundRect|NSSegmentStyleRounded|NSSegmentStyleSmallSquare|NSSegmentStyleCapsule|NSSegmentStyleTexturedRounded|NSSegmentStyleTexturedSquare|NSSegmentStyleAutomatic|NSHUDWindowMask|NSHashTableStrongMemory|NSHashTableCopyIn|NSHashTableZeroingWeakMemory|NSHashTableObjectPointerPersonality|NSNoModeColorPanel|NSNetServiceNoAutoRename|NSChangeRedone|NSContainsPredicateOperatorType|NSColorRenderingIntentRelativeColorimetric|NSColorRenderingIntentSaturation|NSColorRenderingIntentDefault|NSColorRenderingIntentPerceptual|NSColorRenderingIntentAbsoluteColorimetric|NSCollectorDisabledOption|NSCellHitNone|NSCellHitContentArea|NSCellHitTrackableArea|NSCellHitEditableTextArea|NSTimeZoneNameStyleShortStandard|NSTimeZoneNameStyleShortDaylightSaving|NSTimeZoneNameStyleStandard|NSTimeZoneNameStyleDaylightSaving|NSTextFieldDatePickerStyle|NSTableViewSelectionHighlightStyleRegular|NSTableViewSelectionHighlightStyleSourceList|NSTrackingMouseMoved|NSTrackingMouseEnteredAndExited|NSTrackingCursorUpdate|NSTrackingInVisibleRect|NSTrackingEnabledDuringMouseDrag|NSTrackingAssumeInside|NSTrackingActiveInKeyWindow|NSTrackingActiveInActiveApp|NSTrackingActiveWhenFirstResponder|NSTrackingActiveAlways|NSIntersectSetExpressionType|NSIndexedColorSpaceModel|NSImageScaleNone|NSImageScaleProportionallyDown|NSImageScaleProportionallyUpOrDown|NSImageScaleAxesIndependently|NSOpenGLPFAAllowOfflineRenderers|NSOperationQueueDefaultMaxConcurrentOperationCount|NSOperationQueuePriorityHigh|NSOperationQueuePriorityNormal|NSOperationQueuePriorityVeryHigh|NSOperationQueuePriorityVeryLow|NSOperationQueuePriorityLow|NSDiacriticInsensitiveSearch|NSDownloadsDirectory|NSUnionSetExpressionType|NSUTF16BigEndianStringEncoding|NSUTF16StringEncoding|NSUTF16LittleEndianStringEncoding|NSUTF32BigEndianStringEncoding|NSUTF32StringEncoding|NSUTF32LittleEndianStringEncoding|NSPointerFunctionsMachVirtualMemory|NSPointerFunctionsMallocMemory|NSPointerFunctionsStrongMemory|NSPointerFunctionsStructPersonality|NSPointerFunctionsCStringPersonality|NSPointerFunctionsCopyIn|NSPointerFunctionsIntegerPersonality|NSPointerFunctionsZeroingWeakMemory|NSPointerFunctionsOpaqueMemory|NSPointerFunctionsOpaquePersonality|NSPointerFunctionsObjectPointerPersonality|NSPointerFunctionsObjectPersonality|NSPathStyleStandard|NSPathStyleNavigationBar|NSPathStylePopUp|NSPatternColorSpaceModel|NSPrintPanelShowsScaling|NSPrintPanelShowsCopies|NSPrintPanelShowsOrientation|NSPrintPanelShowsPaperSize|NSPrintPanelShowsPageRange|NSPrintPanelShowsPageSetupAccessory|NSPrintPanelShowsPreview|NSExecutableRuntimeMismatchError|NSExecutableNotLoadableError|NSExecutableErrorMinimum|NSExecutableErrorMaximum|NSExecutableLinkError|NSExecutableLoadError|NSExecutableArchitectureMismatchError|NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionPrior|NSFindPanelSubstringMatchTypeStartsWith|NSFindPanelSubstringMatchTypeContains|NSFindPanelSubstringMatchTypeEndsWith|NSFindPanelSubstringMatchTypeFullWord|NSFileReadTooLargeError|NSFileReadUnknownStringEncodingError|NSForcedOrderingSearch|NSWindowBackingLocationMainMemory|NSWindowBackingLocationDefault|NSWindowBackingLocationVideoMemory|NSWindowSharingReadOnly|NSWindowSharingReadWrite|NSWindowSharingNone|NSWindowCollectionBehaviorMoveToActiveSpace|NSWindowCollectionBehaviorCanJoinAllSpaces|NSWindowCollectionBehaviorDefault|NSWidthInsensitiveSearch|NSAggregateExpressionType"},t="\\\\(?:[abefnrtv'\"?\\\\]|[0-3]\\d{1,2}|[4-7]\\d?|222|x[a-zA-Z0-9]+)",n=[{regex:"\\b_cmd\\b",token:"variable.other.selector.objc"},{regex:"\\b(?:self|super)\\b",token:"variable.language.objc"}],r=new s(e),o=r.getRules();this.$keywordList=r.$keywordList,this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:["storage.type.objc","punctuation.definition.storage.type.objc","entity.name.type.objc","text","entity.other.inherited-class.objc"],regex:"(@)(interface|protocol)(?!.+;)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*:\\s*)([A-Za-z]+)"},{token:["storage.type.objc"],regex:"(@end)"},{token:["storage.type.objc","entity.name.type.objc","entity.other.inherited-class.objc"],regex:"(@implementation)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*?::\\s*(?:[A-Za-z][A-Za-z0-9]*))?"},{token:"string.begin.objc",regex:'@"',next:"constant_NSString"},{token:"storage.type.objc",regex:"\\bid\\s*<",next:"protocol_list"},{token:"keyword.control.macro.objc",regex:"\\bNS_DURING|NS_HANDLER|NS_ENDHANDLER\\b"},{token:["punctuation.definition.keyword.objc","keyword.control.exception.objc"],regex:"(@)(try|catch|finally|throw)\\b"},{token:["punctuation.definition.keyword.objc","keyword.other.objc"],regex:"(@)(defs|encode)\\b"},{token:["storage.type.id.objc","text"],regex:"(\\bid\\b)(\\s|\\n)?"},{token:"storage.type.objc",regex:"\\bIBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class\\b"},{token:["punctuation.definition.storage.type.objc","storage.type.objc"],regex:"(@)(class|protocol)\\b"},{token:["punctuation.definition.storage.type.objc","punctuation"],regex:"(@selector)(\\s*\\()",next:"selectors"},{token:["punctuation.definition.storage.modifier.objc","storage.modifier.objc"],regex:"(@)(synchronized|public|private|protected|package)\\b"},{token:"constant.language.objc",regex:"\\bYES|NO|Nil|nil\\b"},{token:"support.variable.foundation",regex:"\\bNSApp\\b"},{token:r.getKeywords(),regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.section.scope.begin.objc",regex:"\\[",next:"bracketed_content"},{token:"meta.function.objc",regex:"^(?:-|\\+)\\s*"}],constant_NSString:[{token:"constant.character.escape.objc",regex:t},{token:"invalid.illegal.unknown-escape.objc",regex:"\\\\."},{token:"string",regex:'[^"\\\\]+'},{token:"punctuation.definition.string.end",regex:'"',next:"start"}],protocol_list:[{token:"punctuation.section.scope.end.objc",regex:">",next:"start"},{token:"support.other.protocol.objc",regex:"\bNS(?:GlyphStorage|M(?:utableCopying|enuItem)|C(?:hangeSpelling|o(?:ding|pying|lorPicking(?:Custom|Default)))|T(?:oolbarItemValidations|ext(?:Input|AttachmentCell))|I(?:nputServ(?:iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(?:CTypeSerializationCallBack|ect)|D(?:ecimalNumberBehaviors|raggingInfo)|U(?:serInterfaceValidations|RL(?:HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(?:ToobarItem|UserInterfaceItem)|Locking)\b"}],selectors:[{token:"support.function.any-method.name-of-parameter.objc",regex:"\\b(?:[a-zA-Z_:][\\w]*)+"},{token:"punctuation",regex:"\\)",next:"start"}],bracketed_content:[{token:"punctuation.section.scope.end.objc",regex:"]",next:"start"},{token:["support.function.any-method.objc"],regex:"(?:predicateWithFormat:| NSPredicate predicateWithFormat:)",next:"start"},{token:"support.function.any-method.objc",regex:"\\w+(?::|(?=]))",next:"start"}],bracketed_strings:[{token:"punctuation.section.scope.end.objc",regex:"]",next:"start"},{token:"keyword.operator.logical.predicate.cocoa",regex:"\\b(?:AND|OR|NOT|IN)\\b"},{token:["invalid.illegal.unknown-method.objc","punctuation.separator.arguments.objc"],regex:"\\b(\\w+)(:)"},{regex:"\\b(?:ALL|ANY|SOME|NONE)\\b",token:"constant.language.predicate.cocoa"},{regex:"\\b(?:NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\b",token:"constant.language.predicate.cocoa"},{regex:"\\b(?:MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\b",token:"keyword.operator.comparison.predicate.cocoa"},{regex:"\\bC(?:ASEINSENSITIVE|I)\\b",token:"keyword.other.modifier.predicate.cocoa"},{regex:"\\b(?:ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\b",token:"keyword.other.predicate.cocoa"},{regex:t,token:"constant.character.escape.objc"},{regex:"\\\\.",token:"invalid.illegal.unknown-escape.objc"},{token:"string",regex:'[^"\\\\]'},{token:"punctuation.definition.string.end.objc",regex:'"',next:"predicates"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{defaultToken:"comment"}],methods:[{token:"meta.function.objc",regex:"(?=\\{|#)|;",next:"start"}]};for(var u in o)this.$rules[u]?this.$rules[u].push&&this.$rules[u].push.apply(this.$rules[u],o[u]):this.$rules[u]=o[u];this.$rules.bracketed_content=this.$rules.bracketed_content.concat(this.$rules.start,n),this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.ObjectiveCHighlightRules=o}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/objectivec",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/objectivec_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./objectivec_highlight_rules").ObjectiveCHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/objectivec"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/objectivec"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-ocaml.js b/www/js/ace/mode-ocaml.js deleted file mode 100644 index 63271226f..000000000 --- a/www/js/ace/mode-ocaml.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/ocaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|object|of|open|or|private|rec|sig|struct|then|to|try|type|val|virtual|when|while|with",t="true|false",n="abs|abs_big_int|abs_float|abs_num|abstract_tag|accept|access|acos|add|add_available_units|add_big_int|add_buffer|add_channel|add_char|add_initializer|add_int_big_int|add_interfaces|add_num|add_string|add_substitute|add_substring|alarm|allocated_bytes|allow_only|allow_unsafe_modules|always|append|appname_get|appname_set|approx_num_exp|approx_num_fix|arg|argv|arith_status|array|array1_of_genarray|array2_of_genarray|array3_of_genarray|asin|asr|assoc|assq|at_exit|atan|atan2|auto_synchronize|background|basename|beginning_of_input|big_int_of_int|big_int_of_num|big_int_of_string|bind|bind_class|bind_tag|bits|bits_of_float|black|blit|blit_image|blue|bool|bool_of_string|bounded_full_split|bounded_split|bounded_split_delim|bprintf|break|broadcast|bscanf|button_down|c_layout|capitalize|cardinal|cardinal|catch|catch_break|ceil|ceiling_num|channel|char|char_of_int|chdir|check|check_suffix|chmod|choose|chop_extension|chop_suffix|chown|chown|chr|chroot|classify_float|clear|clear_available_units|clear_close_on_exec|clear_graph|clear_nonblock|clear_parser|close|close|closeTk|close_box|close_graph|close_in|close_in_noerr|close_out|close_out_noerr|close_process|close_process|close_process_full|close_process_in|close_process_out|close_subwindow|close_tag|close_tbox|closedir|closedir|closure_tag|code|combine|combine|combine|command|compact|compare|compare_big_int|compare_num|complex32|complex64|concat|conj|connect|contains|contains_from|contents|copy|cos|cosh|count|count|counters|create|create_alarm|create_image|create_matrix|create_matrix|create_matrix|create_object|create_object_and_run_initializers|create_object_opt|create_process|create_process|create_process_env|create_process_env|create_table|current|current_dir_name|current_point|current_x|current_y|curveto|custom_tag|cyan|data_size|decr|decr_num|default_available_units|delay|delete_alarm|descr_of_in_channel|descr_of_out_channel|destroy|diff|dim|dim1|dim2|dim3|dims|dirname|display_mode|div|div_big_int|div_num|double_array_tag|double_tag|draw_arc|draw_char|draw_circle|draw_ellipse|draw_image|draw_poly|draw_poly_line|draw_rect|draw_segments|draw_string|dummy_pos|dummy_table|dump_image|dup|dup2|elements|empty|end_of_input|environment|eprintf|epsilon_float|eq_big_int|eq_num|equal|err_formatter|error_message|escaped|establish_server|executable_name|execv|execve|execvp|execvpe|exists|exists2|exit|exp|failwith|fast_sort|fchmod|fchown|field|file|file_exists|fill|fill_arc|fill_circle|fill_ellipse|fill_poly|fill_rect|filter|final_tag|finalise|find|find_all|first_chars|firstkey|flatten|float|float32|float64|float_of_big_int|float_of_bits|float_of_int|float_of_num|float_of_string|floor|floor_num|flush|flush_all|flush_input|flush_str_formatter|fold|fold_left|fold_left2|fold_right|fold_right2|for_all|for_all2|force|force_newline|force_val|foreground|fork|format_of_string|formatter_of_buffer|formatter_of_out_channel|fortran_layout|forward_tag|fprintf|frexp|from|from_channel|from_file|from_file_bin|from_function|from_string|fscanf|fst|fstat|ftruncate|full_init|full_major|full_split|gcd_big_int|ge_big_int|ge_num|genarray_of_array1|genarray_of_array2|genarray_of_array3|get|get_all_formatter_output_functions|get_approx_printing|get_copy|get_ellipsis_text|get_error_when_null_denominator|get_floating_precision|get_formatter_output_functions|get_formatter_tag_functions|get_image|get_margin|get_mark_tags|get_max_boxes|get_max_indent|get_method|get_method_label|get_normalize_ratio|get_normalize_ratio_when_printing|get_print_tags|get_state|get_variable|getcwd|getegid|getegid|getenv|getenv|getenv|geteuid|geteuid|getgid|getgid|getgrgid|getgrgid|getgrnam|getgrnam|getgroups|gethostbyaddr|gethostbyname|gethostname|getitimer|getlogin|getpeername|getpid|getppid|getprotobyname|getprotobynumber|getpwnam|getpwuid|getservbyname|getservbyport|getsockname|getsockopt|getsockopt_float|getsockopt_int|getsockopt_optint|gettimeofday|getuid|global_replace|global_substitute|gmtime|green|grid|group_beginning|group_end|gt_big_int|gt_num|guard|handle_unix_error|hash|hash_param|hd|header_size|i|id|ignore|in_channel_length|in_channel_of_descr|incr|incr_num|index|index_from|inet_addr_any|inet_addr_of_string|infinity|infix_tag|init|init_class|input|input_binary_int|input_byte|input_char|input_line|input_value|int|int16_signed|int16_unsigned|int32|int64|int8_signed|int8_unsigned|int_of_big_int|int_of_char|int_of_float|int_of_num|int_of_string|integer_num|inter|interactive|inv|invalid_arg|is_block|is_empty|is_implicit|is_int|is_int_big_int|is_integer_num|is_relative|iter|iter2|iteri|join|junk|key_pressed|kill|kind|kprintf|kscanf|land|last_chars|layout|lazy_from_fun|lazy_from_val|lazy_is_val|lazy_tag|ldexp|le_big_int|le_num|length|lexeme|lexeme_char|lexeme_end|lexeme_end_p|lexeme_start|lexeme_start_p|lineto|link|list|listen|lnot|loadfile|loadfile_private|localtime|lock|lockf|log|log10|logand|lognot|logor|logxor|lor|lower_window|lowercase|lseek|lsl|lsr|lstat|lt_big_int|lt_num|lxor|magenta|magic|mainLoop|major|major_slice|make|make_formatter|make_image|make_lexer|make_matrix|make_self_init|map|map2|map_file|mapi|marshal|match_beginning|match_end|matched_group|matched_string|max|max_array_length|max_big_int|max_elt|max_float|max_int|max_num|max_string_length|mem|mem_assoc|mem_assq|memq|merge|min|min_big_int|min_elt|min_float|min_int|min_num|minor|minus_big_int|minus_num|minus_one|mkdir|mkfifo|mktime|mod|mod_big_int|mod_float|mod_num|modf|mouse_pos|moveto|mul|mult_big_int|mult_int_big_int|mult_num|nan|narrow|nat_of_num|nativeint|neg|neg_infinity|new_block|new_channel|new_method|new_variable|next|nextkey|nice|nice|no_scan_tag|norm|norm2|not|npeek|nth|nth_dim|num_digits_big_int|num_dims|num_of_big_int|num_of_int|num_of_nat|num_of_ratio|num_of_string|O|obj|object_tag|ocaml_version|of_array|of_channel|of_float|of_int|of_int32|of_list|of_nativeint|of_string|one|openTk|open_box|open_connection|open_graph|open_hbox|open_hovbox|open_hvbox|open_in|open_in_bin|open_in_gen|open_out|open_out_bin|open_out_gen|open_process|open_process_full|open_process_in|open_process_out|open_subwindow|open_tag|open_tbox|open_temp_file|open_vbox|opendbm|opendir|openfile|or|os_type|out_channel_length|out_channel_of_descr|output|output_binary_int|output_buffer|output_byte|output_char|output_string|output_value|over_max_boxes|pack|params|parent_dir_name|parse|parse_argv|partition|pause|peek|pipe|pixels|place|plot|plots|point_color|polar|poll|pop|pos_in|pos_out|pow|power_big_int_positive_big_int|power_big_int_positive_int|power_int_positive_big_int|power_int_positive_int|power_num|pp_close_box|pp_close_tag|pp_close_tbox|pp_force_newline|pp_get_all_formatter_output_functions|pp_get_ellipsis_text|pp_get_formatter_output_functions|pp_get_formatter_tag_functions|pp_get_margin|pp_get_mark_tags|pp_get_max_boxes|pp_get_max_indent|pp_get_print_tags|pp_open_box|pp_open_hbox|pp_open_hovbox|pp_open_hvbox|pp_open_tag|pp_open_tbox|pp_open_vbox|pp_over_max_boxes|pp_print_as|pp_print_bool|pp_print_break|pp_print_char|pp_print_cut|pp_print_float|pp_print_flush|pp_print_if_newline|pp_print_int|pp_print_newline|pp_print_space|pp_print_string|pp_print_tab|pp_print_tbreak|pp_set_all_formatter_output_functions|pp_set_ellipsis_text|pp_set_formatter_out_channel|pp_set_formatter_output_functions|pp_set_formatter_tag_functions|pp_set_margin|pp_set_mark_tags|pp_set_max_boxes|pp_set_max_indent|pp_set_print_tags|pp_set_tab|pp_set_tags|pred|pred_big_int|pred_num|prerr_char|prerr_endline|prerr_float|prerr_int|prerr_newline|prerr_string|print|print_as|print_bool|print_break|print_char|print_cut|print_endline|print_float|print_flush|print_if_newline|print_int|print_newline|print_space|print_stat|print_string|print_tab|print_tbreak|printf|prohibit|public_method_label|push|putenv|quo_num|quomod_big_int|quote|raise|raise_window|ratio_of_num|rcontains_from|read|read_float|read_int|read_key|read_line|readdir|readdir|readlink|really_input|receive|recv|recvfrom|red|ref|regexp|regexp_case_fold|regexp_string|regexp_string_case_fold|register|register_exception|rem|remember_mode|remove|remove_assoc|remove_assq|rename|replace|replace_first|replace_matched|repr|reset|reshape|reshape_1|reshape_2|reshape_3|rev|rev_append|rev_map|rev_map2|rewinddir|rgb|rhs_end|rhs_end_pos|rhs_start|rhs_start_pos|rindex|rindex_from|rlineto|rmdir|rmoveto|round_num|run_initializers|run_initializers_opt|scanf|search_backward|search_forward|seek_in|seek_out|select|self|self_init|send|sendto|set|set_all_formatter_output_functions|set_approx_printing|set_binary_mode_in|set_binary_mode_out|set_close_on_exec|set_close_on_exec|set_color|set_ellipsis_text|set_error_when_null_denominator|set_field|set_floating_precision|set_font|set_formatter_out_channel|set_formatter_output_functions|set_formatter_tag_functions|set_line_width|set_margin|set_mark_tags|set_max_boxes|set_max_indent|set_method|set_nonblock|set_nonblock|set_normalize_ratio|set_normalize_ratio_when_printing|set_print_tags|set_signal|set_state|set_tab|set_tag|set_tags|set_text_size|set_window_title|setgid|setgid|setitimer|setitimer|setsid|setsid|setsockopt|setsockopt|setsockopt_float|setsockopt_float|setsockopt_int|setsockopt_int|setsockopt_optint|setsockopt_optint|setuid|setuid|shift_left|shift_left|shift_left|shift_right|shift_right|shift_right|shift_right_logical|shift_right_logical|shift_right_logical|show_buckets|shutdown|shutdown|shutdown_connection|shutdown_connection|sigabrt|sigalrm|sigchld|sigcont|sigfpe|sighup|sigill|sigint|sigkill|sign_big_int|sign_num|signal|signal|sigpending|sigpending|sigpipe|sigprocmask|sigprocmask|sigprof|sigquit|sigsegv|sigstop|sigsuspend|sigsuspend|sigterm|sigtstp|sigttin|sigttou|sigusr1|sigusr2|sigvtalrm|sin|singleton|sinh|size|size|size_x|size_y|sleep|sleep|sleep|slice_left|slice_left|slice_left_1|slice_left_2|slice_right|slice_right|slice_right_1|slice_right_2|snd|socket|socket|socket|socketpair|socketpair|sort|sound|split|split_delim|sprintf|sprintf|sqrt|sqrt|sqrt_big_int|square_big_int|square_num|sscanf|stable_sort|stable_sort|stable_sort|stable_sort|stable_sort|stable_sort|stat|stat|stat|stat|stat|stats|stats|std_formatter|stdbuf|stderr|stderr|stderr|stdib|stdin|stdin|stdin|stdout|stdout|stdout|str_formatter|string|string_after|string_before|string_match|string_of_big_int|string_of_bool|string_of_float|string_of_format|string_of_inet_addr|string_of_inet_addr|string_of_int|string_of_num|string_partial_match|string_tag|sub|sub|sub_big_int|sub_left|sub_num|sub_right|subset|subset|substitute_first|substring|succ|succ|succ|succ|succ_big_int|succ_num|symbol_end|symbol_end_pos|symbol_start|symbol_start_pos|symlink|symlink|sync|synchronize|system|system|system|tag|take|tan|tanh|tcdrain|tcdrain|tcflow|tcflow|tcflush|tcflush|tcgetattr|tcgetattr|tcsendbreak|tcsendbreak|tcsetattr|tcsetattr|temp_file|text_size|time|time|time|timed_read|timed_write|times|times|tl|tl|tl|to_buffer|to_channel|to_float|to_hex|to_int|to_int32|to_list|to_list|to_list|to_nativeint|to_string|to_string|to_string|to_string|to_string|top|top|total_size|transfer|transp|truncate|truncate|truncate|truncate|truncate|truncate|try_lock|umask|umask|uncapitalize|uncapitalize|uncapitalize|union|union|unit_big_int|unlink|unlink|unlock|unmarshal|unsafe_blit|unsafe_fill|unsafe_get|unsafe_get|unsafe_set|unsafe_set|update|uppercase|uppercase|uppercase|uppercase|usage|utimes|utimes|wait|wait|wait|wait|wait_next_event|wait_pid|wait_read|wait_signal|wait_timed_read|wait_timed_write|wait_write|waitpid|white|widen|window_id|word_size|wrap|wrap_abort|write|yellow|yield|zero|zero_big_int|Arg|Arith_status|Array|Array1|Array2|Array3|ArrayLabels|Big_int|Bigarray|Buffer|Callback|CamlinternalOO|Char|Complex|Condition|Dbm|Digest|Dynlink|Event|Filename|Format|Gc|Genarray|Genlex|Graphics|GraphicsX11|Hashtbl|Int32|Int64|LargeFile|Lazy|Lexing|List|ListLabels|Make|Map|Marshal|MoreLabels|Mutex|Nativeint|Num|Obj|Oo|Parsing|Pervasives|Printexc|Printf|Queue|Random|Scanf|Scanning|Set|Sort|Stack|State|StdLabels|Str|Stream|String|StringLabels|Sys|Thread|ThreadUnix|Tk|Unix|UnixLabels|Weak",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t,"support.function":n},"identifier"),i="(?:(?:[1-9]\\d*)|(?:0))",s="(?:0[oO]?[0-7]+)",o="(?:0[xX][\\dA-Fa-f]+)",u="(?:0[bB][01]+)",a="(?:"+i+"|"+s+"|"+o+"|"+u+")",f="(?:[eE][+-]?\\d+)",l="(?:\\.\\d+)",c="(?:\\d+)",h="(?:(?:"+c+"?"+l+")|(?:"+c+"\\.))",p="(?:(?:"+h+"|"+c+")"+f+")",d="(?:"+p+"|"+h+")";this.$rules={start:[{token:"comment",regex:"\\(\\*.*?\\*\\)\\s*?$"},{token:"comment",regex:"\\(\\*.*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"'.'"},{token:"string",regex:'"',next:"qstring"},{token:"constant.numeric",regex:"(?:"+d+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:d},{token:"constant.numeric",regex:a+"\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|="},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\)",next:"start"},{defaultToken:"comment"}],qstring:[{token:"string",regex:'"',next:"start"},{token:"string",regex:".+"}]}};r.inherits(s,i),t.OcamlHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/ocaml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ocaml_highlight_rules","ace/mode/matching_brace_outdent","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ocaml_highlight_rules").OcamlHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour,this.$outdent=new o};r.inherits(a,i);var f=/(?:[({[=:]|[-=]>|\b(?:else|try|with))\s*$/;(function(){this.toggleCommentLines=function(e,t,n,r){var i,s,o=!0,a=/^\s*\(\*(.*)\*\)/;for(i=n;i<=r;i++)if(!a.test(t.getLine(i))){o=!1;break}var f=new u(0,0,0,0);for(i=n;i<=r;i++)s=t.getLine(i),f.start.row=i,f.end.row=i,f.end.column=s.length,t.replace(f,o?s.match(a)[1]:"(*"+s+"*)")},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;return(!i.length||i[i.length-1].type!=="comment")&&e==="start"&&f.test(t)&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/ocaml"}).call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/ocaml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-odin.js b/www/js/ace/mode-odin.js deleted file mode 100644 index 08c195e26..000000000 --- a/www/js/ace/mode-odin.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/odin_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=this&&this.__read||function(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,s=[],o;try{while((t===void 0||t-->0)&&!(i=r.next()).done)s.push(i.value)}catch(u){o={error:u}}finally{try{i&&!i.done&&(n=r["return"])&&n.call(r)}finally{if(o)throw o.error}}return s},i=this&&this.__spreadArray||function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,s;r>","&","&~","\\+","\\-","~","\\|",">","<","<=",">=","==","!="].concat(":").map(function(e){return e+"="}).concat("=",":=","::","->","\\^","&",":").join("|"),u="new|cap|copy|panic|len|make|delete|append|free",a="nil|true|false",f=this.createKeywordMapper({keyword:e,"constant.language":a,"support.function":u,"support.type":n},""),l="\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g,"[a-fA-F\\d]");this.$rules={start:[{token:"comment",regex:/\/\/.*$/},o.getStartRule("doc-start"),{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"string",regex:/"(?:[^"\\]|\\.)*?"/},{token:"string",regex:"`",next:"bqstring"},{token:"support.constant",regex:/#[a-z_]+/},{token:"constant.numeric",regex:"'(?:[^\\'\ud800-\udbff]|[\ud800-\udbff][\udc00-\udfff]|"+l.replace('"',"")+")'"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:["entity.name.function","text","keyword.operator","text","keyword"],regex:"([a-zA-Z_$][a-zA-Z0-9_$]*)(\\s+)(::)(\\s+)(proc)\\b"},{token:function(e){return e[e.length-1]=="("?[{type:f(e.slice(0,-1))||"support.function",value:e.slice(0,-1)},{type:"paren.lparen",value:e.slice(-1)}]:f(e)||"identifier"},regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?"},{token:"keyword.operator",regex:s},{token:"punctuation.operator",regex:"\\?|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],bqstring:[{token:"string",regex:"`",next:"start"},{defaultToken:"string"}]},this.embedRules(o,"doc-",[o.getEndRule("start")])};s.inherits(a,u),t.OdinHighlightRules=a}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/odin",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/odin_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("./odin_highlight_rules").OdinHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new u,this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/odin"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/odin"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-partiql.js b/www/js/ace/mode-partiql.js deleted file mode 100644 index 4a2a9a12d..000000000 --- a/www/js/ace/mode-partiql.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/ion_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="TRUE|FALSE",t=e,n="NULL.NULL|NULL.BOOL|NULL.INT|NULL.FLOAT|NULL.DECIMAL|NULL.TIMESTAMP|NULL.STRING|NULL.SYMBOL|NULL.BLOB|NULL.CLOB|NULL.STRUCT|NULL.LIST|NULL.SEXP|NULL",r=n,i=this.createKeywordMapper({"constant.language.bool.ion":t,"constant.language.null.ion":r},"constant.other.symbol.identifier.ion",!0),s={token:i,regex:"\\b\\w+(?:\\.\\w+)?\\b"};this.$rules={start:[{include:"value"}],value:[{include:"whitespace"},{include:"comment"},{include:"annotation"},{include:"string"},{include:"number"},{include:"keywords"},{include:"symbol"},{include:"clob"},{include:"blob"},{include:"struct"},{include:"list"},{include:"sexp"}],sexp:[{token:"punctuation.definition.sexp.begin.ion",regex:"\\(",push:[{token:"punctuation.definition.sexp.end.ion",regex:"\\)",next:"pop"},{include:"comment"},{include:"value"},{token:"storage.type.symbol.operator.ion",regex:"[\\!\\#\\%\\&\\*\\+\\-\\./\\;\\<\\=\\>\\?\\@\\^\\`\\|\\~]+"}]}],comment:[{token:"comment.line.ion",regex:"//[^\\n]*"},{token:"comment.block.ion",regex:"/\\*",push:[{token:"comment.block.ion",regex:"[*]/",next:"pop"},{token:"comment.block.ion",regex:"[^*/]+"},{token:"comment.block.ion",regex:"[*/]+"}]}],list:[{token:"punctuation.definition.list.begin.ion",regex:"\\[",push:[{token:"punctuation.definition.list.end.ion",regex:"\\]",next:"pop"},{include:"comment"},{include:"value"},{token:"punctuation.definition.list.separator.ion",regex:","}]}],struct:[{token:"punctuation.definition.struct.begin.ion",regex:"\\{",push:[{token:"punctuation.definition.struct.end.ion",regex:"\\}",next:"pop"},{include:"comment"},{include:"value"},{token:"punctuation.definition.struct.separator.ion",regex:",|:"}]}],blob:[{token:["punctuation.definition.blob.begin.ion","string.other.blob.ion","punctuation.definition.blob.end.ion"],regex:'(\\{\\{)([^"]*)(\\}\\})'}],clob:[{token:["punctuation.definition.clob.begin.ion","string.other.clob.ion","punctuation.definition.clob.end.ion"],regex:'(\\{\\{)("[^"]*")(\\}\\})'}],symbol:[{token:"storage.type.symbol.quoted.ion",regex:"(['])((?:(?:\\\\')|(?:[^']))*?)(['])"},{token:"storage.type.symbol.identifier.ion",regex:"[\\$_a-zA-Z][\\$_a-zA-Z0-9]*"}],number:[{token:"constant.numeric.timestamp.ion",regex:"\\d{4}(?:-\\d{2})?(?:-\\d{2})?T(?:\\d{2}:\\d{2})(?::\\d{2})?(?:\\.\\d+)?(?:Z|[-+]\\d{2}:\\d{2})?"},{token:"constant.numeric.timestamp.ion",regex:"\\d{4}-\\d{2}-\\d{2}T?"},{token:"constant.numeric.integer.binary.ion",regex:"-?0[bB][01](?:_?[01])*"},{token:"constant.numeric.integer.hex.ion",regex:"-?0[xX][0-9a-fA-F](?:_?[0-9a-fA-F])*"},{token:"constant.numeric.float.ion",regex:"-?(?:0|[1-9](?:_?\\d)*)(?:\\.(?:\\d(?:_?\\d)*)?)?(?:[eE][+-]?\\d+)"},{token:"constant.numeric.float.ion",regex:"(?:[-+]inf)|(?:nan)"},{token:"constant.numeric.decimal.ion",regex:"-?(?:0|[1-9](?:_?\\d)*)(?:(?:(?:\\.(?:\\d(?:_?\\d)*)?)(?:[dD][+-]?\\d+)|\\.(?:\\d(?:_?\\d)*)?)|(?:[dD][+-]?\\d+))"},{token:"constant.numeric.integer.ion",regex:"-?(?:0|[1-9](?:_?\\d)*)"}],string:[{token:["punctuation.definition.string.begin.ion","string.quoted.double.ion","punctuation.definition.string.end.ion"],regex:'(["])((?:(?:\\\\")|(?:[^"]))*?)(["])'},{token:"punctuation.definition.string.begin.ion",regex:"'{3}",push:[{token:"punctuation.definition.string.end.ion",regex:"'{3}",next:"pop"},{token:"string.quoted.triple.ion",regex:"(?:\\\\'|[^'])+"},{token:"string.quoted.triple.ion",regex:"'"}]}],annotation:[{token:["variable.language.annotation.ion","punctuation.definition.annotation.ion"],regex:/('(?:[^'\\]|\\.)*')\s*(::)/},{token:["variable.language.annotation.ion","punctuation.definition.annotation.ion"],regex:"([\\$_a-zA-Z][\\$_a-zA-Z0-9]*)\\s*(::)"}],whitespace:[{token:"text.ion",regex:"\\s+"}]},this.$rules.keywords=[s],this.normalizeRules()};r.inherits(s,i),t.IonHighlightRules=s}),define("ace/mode/partiql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/ion_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./ion_highlight_rules").IonHighlightRules,o=function(){var e="MISSING",t="FALSE|NULL|TRUE",n=e+"|"+t,r="PIVOT|UNPIVOT|LIMIT|TUPLE|REMOVE|INDEX|CONFLICT|DO|NOTHING|RETURNING|MODIFIED|NEW|OLD|LET",i="ABSOLUTE|ACTION|ADD|ALL|ALLOCATE|ALTER|AND|ANY|ARE|AS|ASC|ASSERTION|AT|AUTHORIZATION|BEGIN|BETWEEN|BIT_LENGTH|BY|CASCADE|CASCADED|CASE|CATALOG|CHAR|CHARACTER_LENGTH|CHAR_LENGTH|CHECK|CLOSE|COLLATE|COLLATION|COLUMN|COMMIT|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONTINUE|CONVERT|CORRESPONDING|CREATE|CROSS|CURRENT|CURSOR|DEALLOCATE|DEC|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DESC|DESCRIBE|DESCRIPTOR|DIAGNOSTICS|DISCONNECT|DISTINCT|DOMAIN|DROP|ELSE|END|END-EXEC|ESCAPE|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXTERNAL|EXTRACT|FETCH|FIRST|FOR|FOREIGN|FOUND|FROM|FULL|GET|GLOBAL|GO|GOTO|GRANT|GROUP|HAVING|IDENTITY|IMMEDIATE|IN|INDICATOR|INITIALLY|INNER|INPUT|INSENSITIVE|INSERT|INTERSECT|INTERVAL|INTO|IS|ISOLATION|JOIN|KEY|LANGUAGE|LAST|LEFT|LEVEL|LIKE|LOCAL|LOWER|MATCH|MODULE|NAMES|NATIONAL|NATURAL|NCHAR|NEXT|NO|NOT|OCTET_LENGTH|OF|ON|ONLY|OPEN|OPTION|OR|ORDER|OUTER|OUTPUT|OVERLAPS|PAD|PARTIAL|POSITION|PRECISION|PREPARE|PRESERVE|PRIMARY|PRIOR|PRIVILEGES|PROCEDURE|PUBLIC|READ|REAL|REFERENCES|RELATIVE|RESTRICT|REVOKE|RIGHT|ROLLBACK|ROWS|SCHEMA|SCROLL|SECTION|SELECT|SESSION|SET|SIZE|SOME|SPACE|SQL|SQLCODE|SQLERROR|SQLSTATE|TABLE|TEMPORARY|THEN|TIME|TO|TRANSACTION|TRANSLATE|TRANSLATION|UNION|UNIQUE|UNKNOWN|UPDATE|UPPER|USAGE|USER|USING|VALUE|VALUES|VIEW|WHEN|WHENEVER|WHERE|WITH|WORK|WRITE|ZONE",o=r+"|"+i,u="BOOL|BOOLEAN|STRING|SYMBOL|CLOB|BLOB|STRUCT|LIST|SEXP|BAG",a="CHARACTER|DATE|DECIMAL|DOUBLE|FLOAT|INT|INTEGER|NUMERIC|SMALLINT|TIMESTAMP|VARCHAR|VARYING",f=u+"|"+a,l="AVG|COUNT|MAX|MIN|SUM",c=l,h="CAST|COALESCE|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|EXISTS|DATE_ADD|DATE_DIFF|NULLIF|SESSION_USER|SUBSTRING|SYSTEM_USER|TRIM",p=h,d=this.createKeywordMapper({"constant.language.partiql":n,"keyword.other.partiql":o,"storage.type.partiql":f,"support.function.aggregation.partiql":c,"support.function.partiql":p},"variable.language.identifier.partiql",!0),v={token:d,regex:"\\b\\w+\\b"};this.$rules={start:[{include:"whitespace"},{include:"comment"},{include:"value"}],value:[{include:"whitespace"},{include:"comment"},{include:"tuple_value"},{include:"collection_value"},{include:"scalar_value"}],scalar_value:[{include:"string"},{include:"number"},{include:"keywords"},{include:"identifier"},{include:"embed-ion"},{include:"operator"},{include:"punctuation"}],punctuation:[{token:"punctuation.partiql",regex:"[;:()\\[\\]\\{\\},.]"}],operator:[{token:"keyword.operator.partiql",regex:"[+*/<>=~!@#%&|?^-]+"}],identifier:[{token:"variable.language.identifier.quoted.partiql",regex:'(["])((?:(?:\\\\.)|(?:[^"\\\\]))*?)(["])'},{token:"variable.language.identifier.at.partiql",regex:"@\\w+"},{token:"variable.language.identifier.partiql",regex:"\\b\\w+(?:\\.\\w+)?\\b"}],number:[{token:"constant.numeric.partiql",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"}],string:[{token:["punctuation.definition.string.begin.partiql","string.quoted.single.partiql","punctuation.definition.string.end.partiql"],regex:"(['])((?:(?:\\\\.)|(?:[^'\\\\]))*?)(['])"}],collection_value:[{include:"array_value"},{include:"bag_value"}],bag_value:[{token:"punctuation.definition.bag.begin.partiql",regex:"<<",push:[{token:"punctuation.definition.bag.end.partiql",regex:">>",next:"pop"},{include:"comment"},{token:"punctuation.definition.bag.separator.partiql",regex:","},{include:"value"}]}],comment:[{token:"comment.line.partiql",regex:"--.*"},{token:"comment.block.partiql",regex:"/\\*",push:"comment__1"}],comment__1:[{token:"comment.block.partiql",regex:"[*]/",next:"pop"},{token:"comment.block.partiql",regex:"[^*/]+"},{token:"comment.block.partiql",regex:"/\\*",push:"comment__1"},{token:"comment.block.partiql",regex:"[*/]+"}],array_value:[{token:"punctuation.definition.array.begin.partiql",regex:"\\[",push:[{token:"punctuation.definition.array.end.partiql",regex:"\\]",next:"pop"},{include:"comment"},{token:"punctuation.definition.array.separator.partiql",regex:","},{include:"value"}]}],tuple_value:[{token:"punctuation.definition.tuple.begin.partiql",regex:"\\{",push:[{token:"punctuation.definition.tuple.end.partiql",regex:"\\}",next:"pop"},{include:"comment"},{token:"punctuation.definition.tuple.separator.partiql",regex:",|:"},{include:"value"}]}],whitespace:[{token:"text.partiql",regex:"\\s+"}]},this.$rules.keywords=[v],this.$rules["embed-ion"]=[{token:"punctuation.definition.ion.begin.partiql",regex:"`",next:"ion-start"}],this.embedRules(s,"ion-",[{token:"punctuation.definition.ion.end.partiql",regex:"`",next:"start"}]),this.normalizeRules()};r.inherits(o,i),t.PartiqlHighlightRules=o}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/partiql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/partiql_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./partiql_highlight_rules").PartiqlHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="--",this.blockComment={start:"/*",end:"*/",nestable:!0},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/partiql"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/partiql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-pascal.js b/www/js/ace/mode-pascal.js deleted file mode 100644 index fb57bd163..000000000 --- a/www/js/ace/mode-pascal.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/pascal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"keyword.control":"absolute|abstract|all|and|and_then|array|as|asm|attribute|begin|bindable|case|class|const|constructor|destructor|div|do|do|else|end|except|export|exports|external|far|file|finalization|finally|for|forward|goto|if|implementation|import|in|inherited|initialization|interface|interrupt|is|label|library|mod|module|name|near|nil|not|object|of|only|operator|or|or_else|otherwise|packed|pow|private|program|property|protected|public|published|qualified|record|repeat|resident|restricted|segment|set|shl|shr|then|to|try|type|unit|until|uses|value|var|view|virtual|while|with|xor"},"identifier",!0);this.$rules={start:[{caseInsensitive:!0,token:["variable","text","storage.type.prototype","entity.name.function.prototype"],regex:"\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?(?=(?:\\(.*?\\))?;\\s*(?:attribute|forward|external))"},{caseInsensitive:!0,token:["variable","text","storage.type.function","entity.name.function"],regex:"\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?"},{caseInsensitive:!0,token:e,regex:/\b[a-z_]+\b/},{token:"constant.numeric",regex:"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"punctuation.definition.comment",regex:"--.*$"},{token:"punctuation.definition.comment",regex:"//.*$"},{token:"punctuation.definition.comment",regex:"\\(\\*",push:[{token:"punctuation.definition.comment",regex:"\\*\\)",next:"pop"},{defaultToken:"comment.block.one"}]},{token:"punctuation.definition.comment",regex:"\\{",push:[{token:"punctuation.definition.comment",regex:"\\}",next:"pop"},{defaultToken:"comment.block.two"}]},{token:"punctuation.definition.string.begin",regex:'"',push:[{token:"constant.character.escape",regex:"\\\\."},{token:"punctuation.definition.string.end",regex:'"',next:"pop"},{defaultToken:"string.quoted.double"}]},{token:"punctuation.definition.string.begin",regex:"'",push:[{token:"constant.character.escape.apostrophe",regex:"''"},{token:"punctuation.definition.string.end",regex:"'",next:"pop"},{defaultToken:"string.quoted.single"}]},{token:"keyword.operator",regex:"[+\\-;,/*%]|:=|="}]},this.normalizeRules()};r.inherits(s,i),t.PascalHighlightRules=s}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)"},{token:"comment",regex:"#.*$"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}],block_comment:[{token:"comment.doc",regex:"^=cut\\b",next:"start"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),t.PerlHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/perl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/perl_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./perl_highlight_rules").PerlHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new u({start:"^=(begin|item)\\b",end:"^=(cut)\\b"}),this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="#",this.blockComment=[{start:"=begin",end:"=cut",lineStartOnly:!0},{start:"=item",end:"=cut",lineStartOnly:!0}],this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/perl",this.snippetFileId="ace/snippets/perl"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/perl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-pgsql.js b/www/js/ace/mode-pgsql.js deleted file mode 100644 index 3b449b42e..000000000 --- a/www/js/ace/mode-pgsql.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/perl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars",t="ARGV|ENV|INC|SIG",n="getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|getpeername|setpriority|getprotoent|setprotoent|getpriority|endprotoent|getservent|setservent|endservent|sethostent|socketpair|getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|map|die|uc|lc|do",r=this.createKeywordMapper({keyword:e,"constant.language":t,"support.function":n},"identifier");this.$rules={start:[{token:"comment.doc",regex:"^=(?:begin|item)\\b",next:"block_comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0x[0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)"},{token:"comment",regex:"#.*$"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}],block_comment:[{token:"comment.doc",regex:"^=cut\\b",next:"start"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),t.PerlHighlightRules=s}),define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield|async|await|nonlocal",t="True|False|None|NotImplemented|Ellipsis|__debug__",n="abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|apply|delattr|help|next|setattr|set|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|ascii|breakpoint|bytes",r=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":n,"variable.language":"self|cls","constant.language":t,keyword:e},"identifier"),i="[uU]?",s="[rR]",o="[fF]",u="(?:[rR][fF]|[fF][rR])",a="(?:(?:[1-9]\\d*)|(?:0))",f="(?:0[oO]?[0-7]+)",l="(?:0[xX][\\dA-Fa-f]+)",c="(?:0[bB][01]+)",h="(?:"+a+"|"+f+"|"+l+"|"+c+")",p="(?:[eE][+-]?\\d+)",d="(?:\\.\\d+)",v="(?:\\d+)",m="(?:(?:"+v+"?"+d+")|(?:"+v+"\\.))",g="(?:(?:"+m+"|"+v+")"+p+")",y="(?:"+g+"|"+m+")",b="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:i+'"{3}',next:"qqstring3"},{token:"string",regex:i+'"(?=.)',next:"qqstring"},{token:"string",regex:i+"'{3}",next:"qstring3"},{token:"string",regex:i+"'(?=.)",next:"qstring"},{token:"string",regex:s+'"{3}',next:"rawqqstring3"},{token:"string",regex:s+'"(?=.)',next:"rawqqstring"},{token:"string",regex:s+"'{3}",next:"rawqstring3"},{token:"string",regex:s+"'(?=.)",next:"rawqstring"},{token:"string",regex:o+'"{3}',next:"fqqstring3"},{token:"string",regex:o+'"(?=.)',next:"fqqstring"},{token:"string",regex:o+"'{3}",next:"fqstring3"},{token:"string",regex:o+"'(?=.)",next:"fqstring"},{token:"string",regex:u+'"{3}',next:"rfqqstring3"},{token:"string",regex:u+'"(?=.)',next:"rfqqstring"},{token:"string",regex:u+"'{3}",next:"rfqstring3"},{token:"string",regex:u+"'(?=.)",next:"rfqstring"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"punctuation",regex:",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:["keyword","text","entity.name.function"],regex:"(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)"},{token:"text",regex:"\\s+"},{include:"constants"}],qqstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],rawqqstring3:[{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],rawqstring3:[{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],rawqqstring:[{token:"string",regex:"\\\\$",next:"rawqqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],rawqstring:[{token:"string",regex:"\\\\$",next:"rawqstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],fqqstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqqstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"\\\\$",next:"fqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring3:[{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring3:[{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring:[{token:"string",regex:"\\\\$",next:"rfqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring:[{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstringParRules:[{token:"paren.lparen",regex:"[\\[\\(]"},{token:"paren.rparen",regex:"[\\]\\)]"},{token:"string",regex:"\\s+"},{token:"string",regex:"'[^']*'"},{token:"string",regex:'"[^"]*"'},{token:"function.support",regex:"(!s|!r|!a)"},{include:"constants"},{token:"paren.rparen",regex:"}",next:"pop"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"}],constants:[{token:"constant.numeric",regex:"(?:"+y+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:y},{token:"constant.numeric",regex:h+"[lL]\\b"},{token:"constant.numeric",regex:h+"\\b"},{token:["punctuation","function.support"],regex:"(\\.)([a-zA-Z_]+)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}]},this.normalizeRules()};r.inherits(s,i),t.PythonHighlightRules=s}),define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/pgsql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/perl_highlight_rules","ace/mode/python_highlight_rules","ace/mode/json_highlight_rules","ace/mode/javascript_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=e("./perl_highlight_rules").PerlHighlightRules,a=e("./python_highlight_rules").PythonHighlightRules,f=e("./json_highlight_rules").JsonHighlightRules,l=e("./javascript_highlight_rules").JavaScriptHighlightRules,c=function(){var e="abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|analyse|analyze|and|any|anyarray|anyelement|anyenum|anynonarray|anyrange|array|as|asc|assertion|assignment|asymmetric|at|attribute|authorization|backward|before|begin|between|bigint|binary|bit|bool|boolean|both|box|bpchar|by|bytea|cache|called|cascade|cascaded|case|cast|catalog|chain|char|character|characteristics|check|checkpoint|cid|cidr|circle|class|close|cluster|coalesce|collate|collation|column|comment|comments|commit|committed|concurrently|configuration|connection|constraint|constraints|content|continue|conversion|copy|cost|create|cross|cstring|csv|current|current_catalog|current_date|current_role|current_schema|current_time|current_timestamp|current_user|cursor|cycle|data|database|date|daterange|day|deallocate|dec|decimal|declare|default|defaults|deferrable|deferred|definer|delete|delimiter|delimiters|desc|dictionary|disable|discard|distinct|do|document|domain|double|drop|each|else|enable|encoding|encrypted|end|enum|escape|event|event_trigger|except|exclude|excluding|exclusive|execute|exists|explain|extension|external|extract|false|family|fdw_handler|fetch|first|float|float4|float8|following|for|force|foreign|forward|freeze|from|full|function|functions|global|grant|granted|greatest|group|gtsvector|handler|having|header|hold|hour|identity|if|ilike|immediate|immutable|implicit|in|including|increment|index|indexes|inet|inherit|inherits|initially|inline|inner|inout|input|insensitive|insert|instead|int|int2|int2vector|int4|int4range|int8|int8range|integer|internal|intersect|interval|into|invoker|is|isnull|isolation|join|json|key|label|language|language_handler|large|last|lateral|lc_collate|lc_ctype|leading|leakproof|least|left|level|like|limit|line|listen|load|local|localtime|localtimestamp|location|lock|lseg|macaddr|mapping|match|materialized|maxvalue|minute|minvalue|mode|money|month|move|name|names|national|natural|nchar|next|no|none|not|nothing|notify|notnull|nowait|null|nullif|nulls|numeric|numrange|object|of|off|offset|oid|oids|oidvector|on|only|opaque|operator|option|options|or|order|out|outer|over|overlaps|overlay|owned|owner|parser|partial|partition|passing|password|path|pg_attribute|pg_auth_members|pg_authid|pg_class|pg_database|pg_node_tree|pg_proc|pg_type|placing|plans|point|polygon|position|preceding|precision|prepare|prepared|preserve|primary|prior|privileges|procedural|procedure|program|quote|range|read|real|reassign|recheck|record|recursive|ref|refcursor|references|refresh|regclass|regconfig|regdictionary|regoper|regoperator|regproc|regprocedure|regtype|reindex|relative|release|reltime|rename|repeatable|replace|replica|reset|restart|restrict|returning|returns|revoke|right|role|rollback|row|rows|rule|savepoint|schema|scroll|search|second|security|select|sequence|sequences|serializable|server|session|session_user|set|setof|share|show|similar|simple|smallint|smgr|snapshot|some|stable|standalone|start|statement|statistics|stdin|stdout|storage|strict|strip|substring|symmetric|sysid|system|table|tables|tablespace|temp|template|temporary|text|then|tid|time|timestamp|timestamptz|timetz|tinterval|to|trailing|transaction|treat|trigger|trim|true|truncate|trusted|tsquery|tsrange|tstzrange|tsvector|txid_snapshot|type|types|unbounded|uncommitted|unencrypted|union|unique|unknown|unlisten|unlogged|until|update|user|using|uuid|vacuum|valid|validate|validator|value|values|varbit|varchar|variadic|varying|verbose|version|view|void|volatile|when|where|whitespace|window|with|without|work|wrapper|write|xid|xml|xmlattributes|xmlconcat|xmlelement|xmlexists|xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone|ties",t="RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|RI_FKey_noaction_del|RI_FKey_noaction_upd|RI_FKey_restrict_del|RI_FKey_restrict_upd|RI_FKey_setdefault_del|RI_FKey_setdefault_upd|RI_FKey_setnull_del|RI_FKey_setnull_upd|abbrev|abs|abstime|abstimeeq|abstimege|abstimegt|abstimein|abstimele|abstimelt|abstimene|abstimeout|abstimerecv|abstimesend|aclcontains|acldefault|aclexplode|aclinsert|aclitemeq|aclitemin|aclitemout|aclremove|acos|age|any_in|any_out|anyarray_in|anyarray_out|anyarray_recv|anyarray_send|anyelement_in|anyelement_out|anyenum_in|anyenum_out|anynonarray_in|anynonarray_out|anyrange_in|anyrange_out|anytextcat|area|areajoinsel|areasel|array_agg|array_agg_finalfn|array_agg_transfn|array_append|array_cat|array_dims|array_eq|array_fill|array_ge|array_gt|array_in|array_larger|array_le|array_length|array_lower|array_lt|array_ndims|array_ne|array_out|array_prepend|array_recv|array_remove|array_replace|array_send|array_smaller|array_to_json|array_to_string|array_typanalyze|array_upper|arraycontained|arraycontains|arraycontjoinsel|arraycontsel|arrayoverlap|ascii|ascii_to_mic|ascii_to_utf8|asin|atan|atan2|avg|big5_to_euc_tw|big5_to_mic|big5_to_utf8|bit_and|bit_in|bit_length|bit_or|bit_out|bit_recv|bit_send|bitand|bitcat|bitcmp|biteq|bitge|bitgt|bitle|bitlt|bitne|bitnot|bitor|bitshiftleft|bitshiftright|bittypmodin|bittypmodout|bitxor|bool|bool_and|bool_or|booland_statefunc|booleq|boolge|boolgt|boolin|boolle|boollt|boolne|boolor_statefunc|boolout|boolrecv|boolsend|box|box_above|box_above_eq|box_add|box_below|box_below_eq|box_center|box_contain|box_contain_pt|box_contained|box_distance|box_div|box_eq|box_ge|box_gt|box_in|box_intersect|box_le|box_left|box_lt|box_mul|box_out|box_overabove|box_overbelow|box_overlap|box_overleft|box_overright|box_recv|box_right|box_same|box_send|box_sub|bpchar_larger|bpchar_pattern_ge|bpchar_pattern_gt|bpchar_pattern_le|bpchar_pattern_lt|bpchar_smaller|bpcharcmp|bpchareq|bpcharge|bpchargt|bpchariclike|bpcharicnlike|bpcharicregexeq|bpcharicregexne|bpcharin|bpcharle|bpcharlike|bpcharlt|bpcharne|bpcharnlike|bpcharout|bpcharrecv|bpcharregexeq|bpcharregexne|bpcharsend|bpchartypmodin|bpchartypmodout|broadcast|btabstimecmp|btarraycmp|btbeginscan|btboolcmp|btbpchar_pattern_cmp|btbuild|btbuildempty|btbulkdelete|btcanreturn|btcharcmp|btcostestimate|btendscan|btfloat48cmp|btfloat4cmp|btfloat4sortsupport|btfloat84cmp|btfloat8cmp|btfloat8sortsupport|btgetbitmap|btgettuple|btinsert|btint24cmp|btint28cmp|btint2cmp|btint2sortsupport|btint42cmp|btint48cmp|btint4cmp|btint4sortsupport|btint82cmp|btint84cmp|btint8cmp|btint8sortsupport|btmarkpos|btnamecmp|btnamesortsupport|btoidcmp|btoidsortsupport|btoidvectorcmp|btoptions|btrecordcmp|btreltimecmp|btrescan|btrestrpos|btrim|bttext_pattern_cmp|bttextcmp|bttidcmp|bttintervalcmp|btvacuumcleanup|bytea_string_agg_finalfn|bytea_string_agg_transfn|byteacat|byteacmp|byteaeq|byteage|byteagt|byteain|byteale|bytealike|bytealt|byteane|byteanlike|byteaout|bytearecv|byteasend|cash_cmp|cash_div_cash|cash_div_flt4|cash_div_flt8|cash_div_int2|cash_div_int4|cash_eq|cash_ge|cash_gt|cash_in|cash_le|cash_lt|cash_mi|cash_mul_flt4|cash_mul_flt8|cash_mul_int2|cash_mul_int4|cash_ne|cash_out|cash_pl|cash_recv|cash_send|cash_words|cashlarger|cashsmaller|cbrt|ceil|ceiling|center|char|char_length|character_length|chareq|charge|chargt|charin|charle|charlt|charne|charout|charrecv|charsend|chr|cideq|cidin|cidout|cidr|cidr_in|cidr_out|cidr_recv|cidr_send|cidrecv|cidsend|circle|circle_above|circle_add_pt|circle_below|circle_center|circle_contain|circle_contain_pt|circle_contained|circle_distance|circle_div_pt|circle_eq|circle_ge|circle_gt|circle_in|circle_le|circle_left|circle_lt|circle_mul_pt|circle_ne|circle_out|circle_overabove|circle_overbelow|circle_overlap|circle_overleft|circle_overright|circle_recv|circle_right|circle_same|circle_send|circle_sub_pt|clock_timestamp|close_lb|close_ls|close_lseg|close_pb|close_pl|close_ps|close_sb|close_sl|col_description|concat|concat_ws|contjoinsel|contsel|convert|convert_from|convert_to|corr|cos|cot|count|covar_pop|covar_samp|cstring_in|cstring_out|cstring_recv|cstring_send|cume_dist|current_database|current_query|current_schema|current_schemas|current_setting|current_user|currtid|currtid2|currval|cursor_to_xml|cursor_to_xmlschema|database_to_xml|database_to_xml_and_xmlschema|database_to_xmlschema|date|date_cmp|date_cmp_timestamp|date_cmp_timestamptz|date_eq|date_eq_timestamp|date_eq_timestamptz|date_ge|date_ge_timestamp|date_ge_timestamptz|date_gt|date_gt_timestamp|date_gt_timestamptz|date_in|date_larger|date_le|date_le_timestamp|date_le_timestamptz|date_lt|date_lt_timestamp|date_lt_timestamptz|date_mi|date_mi_interval|date_mii|date_ne|date_ne_timestamp|date_ne_timestamptz|date_out|date_part|date_pl_interval|date_pli|date_recv|date_send|date_smaller|date_sortsupport|date_trunc|daterange|daterange_canonical|daterange_subdiff|datetime_pl|datetimetz_pl|dcbrt|decode|degrees|dense_rank|dexp|diagonal|diameter|dispell_init|dispell_lexize|dist_cpoly|dist_lb|dist_pb|dist_pc|dist_pl|dist_ppath|dist_ps|dist_sb|dist_sl|div|dlog1|dlog10|domain_in|domain_recv|dpow|dround|dsimple_init|dsimple_lexize|dsnowball_init|dsnowball_lexize|dsqrt|dsynonym_init|dsynonym_lexize|dtrunc|elem_contained_by_range|encode|enum_cmp|enum_eq|enum_first|enum_ge|enum_gt|enum_in|enum_larger|enum_last|enum_le|enum_lt|enum_ne|enum_out|enum_range|enum_recv|enum_send|enum_smaller|eqjoinsel|eqsel|euc_cn_to_mic|euc_cn_to_utf8|euc_jis_2004_to_shift_jis_2004|euc_jis_2004_to_utf8|euc_jp_to_mic|euc_jp_to_sjis|euc_jp_to_utf8|euc_kr_to_mic|euc_kr_to_utf8|euc_tw_to_big5|euc_tw_to_mic|euc_tw_to_utf8|event_trigger_in|event_trigger_out|every|exp|factorial|family|fdw_handler_in|fdw_handler_out|first_value|float4|float48div|float48eq|float48ge|float48gt|float48le|float48lt|float48mi|float48mul|float48ne|float48pl|float4_accum|float4abs|float4div|float4eq|float4ge|float4gt|float4in|float4larger|float4le|float4lt|float4mi|float4mul|float4ne|float4out|float4pl|float4recv|float4send|float4smaller|float4um|float4up|float8|float84div|float84eq|float84ge|float84gt|float84le|float84lt|float84mi|float84mul|float84ne|float84pl|float8_accum|float8_avg|float8_corr|float8_covar_pop|float8_covar_samp|float8_regr_accum|float8_regr_avgx|float8_regr_avgy|float8_regr_intercept|float8_regr_r2|float8_regr_slope|float8_regr_sxx|float8_regr_sxy|float8_regr_syy|float8_stddev_pop|float8_stddev_samp|float8_var_pop|float8_var_samp|float8abs|float8div|float8eq|float8ge|float8gt|float8in|float8larger|float8le|float8lt|float8mi|float8mul|float8ne|float8out|float8pl|float8recv|float8send|float8smaller|float8um|float8up|floor|flt4_mul_cash|flt8_mul_cash|fmgr_c_validator|fmgr_internal_validator|fmgr_sql_validator|format|format_type|gb18030_to_utf8|gbk_to_utf8|generate_series|generate_subscripts|get_bit|get_byte|get_current_ts_config|getdatabaseencoding|getpgusername|gin_cmp_prefix|gin_cmp_tslexeme|gin_extract_tsquery|gin_extract_tsvector|gin_tsquery_consistent|ginarrayconsistent|ginarrayextract|ginbeginscan|ginbuild|ginbuildempty|ginbulkdelete|gincostestimate|ginendscan|gingetbitmap|gininsert|ginmarkpos|ginoptions|ginqueryarrayextract|ginrescan|ginrestrpos|ginvacuumcleanup|gist_box_compress|gist_box_consistent|gist_box_decompress|gist_box_penalty|gist_box_picksplit|gist_box_same|gist_box_union|gist_circle_compress|gist_circle_consistent|gist_point_compress|gist_point_consistent|gist_point_distance|gist_poly_compress|gist_poly_consistent|gistbeginscan|gistbuild|gistbuildempty|gistbulkdelete|gistcostestimate|gistendscan|gistgetbitmap|gistgettuple|gistinsert|gistmarkpos|gistoptions|gistrescan|gistrestrpos|gistvacuumcleanup|gtsquery_compress|gtsquery_consistent|gtsquery_decompress|gtsquery_penalty|gtsquery_picksplit|gtsquery_same|gtsquery_union|gtsvector_compress|gtsvector_consistent|gtsvector_decompress|gtsvector_penalty|gtsvector_picksplit|gtsvector_same|gtsvector_union|gtsvectorin|gtsvectorout|has_any_column_privilege|has_column_privilege|has_database_privilege|has_foreign_data_wrapper_privilege|has_function_privilege|has_language_privilege|has_schema_privilege|has_sequence_privilege|has_server_privilege|has_table_privilege|has_tablespace_privilege|has_type_privilege|hash_aclitem|hash_array|hash_numeric|hash_range|hashbeginscan|hashbpchar|hashbuild|hashbuildempty|hashbulkdelete|hashchar|hashcostestimate|hashendscan|hashenum|hashfloat4|hashfloat8|hashgetbitmap|hashgettuple|hashinet|hashinsert|hashint2|hashint2vector|hashint4|hashint8|hashmacaddr|hashmarkpos|hashname|hashoid|hashoidvector|hashoptions|hashrescan|hashrestrpos|hashtext|hashvacuumcleanup|hashvarlena|height|host|hostmask|iclikejoinsel|iclikesel|icnlikejoinsel|icnlikesel|icregexeqjoinsel|icregexeqsel|icregexnejoinsel|icregexnesel|inet_client_addr|inet_client_port|inet_in|inet_out|inet_recv|inet_send|inet_server_addr|inet_server_port|inetand|inetmi|inetmi_int8|inetnot|inetor|inetpl|initcap|int2|int24div|int24eq|int24ge|int24gt|int24le|int24lt|int24mi|int24mul|int24ne|int24pl|int28div|int28eq|int28ge|int28gt|int28le|int28lt|int28mi|int28mul|int28ne|int28pl|int2_accum|int2_avg_accum|int2_mul_cash|int2_sum|int2abs|int2and|int2div|int2eq|int2ge|int2gt|int2in|int2larger|int2le|int2lt|int2mi|int2mod|int2mul|int2ne|int2not|int2or|int2out|int2pl|int2recv|int2send|int2shl|int2shr|int2smaller|int2um|int2up|int2vectoreq|int2vectorin|int2vectorout|int2vectorrecv|int2vectorsend|int2xor|int4|int42div|int42eq|int42ge|int42gt|int42le|int42lt|int42mi|int42mul|int42ne|int42pl|int48div|int48eq|int48ge|int48gt|int48le|int48lt|int48mi|int48mul|int48ne|int48pl|int4_accum|int4_avg_accum|int4_mul_cash|int4_sum|int4abs|int4and|int4div|int4eq|int4ge|int4gt|int4in|int4inc|int4larger|int4le|int4lt|int4mi|int4mod|int4mul|int4ne|int4not|int4or|int4out|int4pl|int4range|int4range_canonical|int4range_subdiff|int4recv|int4send|int4shl|int4shr|int4smaller|int4um|int4up|int4xor|int8|int82div|int82eq|int82ge|int82gt|int82le|int82lt|int82mi|int82mul|int82ne|int82pl|int84div|int84eq|int84ge|int84gt|int84le|int84lt|int84mi|int84mul|int84ne|int84pl|int8_accum|int8_avg|int8_avg_accum|int8_sum|int8abs|int8and|int8div|int8eq|int8ge|int8gt|int8in|int8inc|int8inc_any|int8inc_float8_float8|int8larger|int8le|int8lt|int8mi|int8mod|int8mul|int8ne|int8not|int8or|int8out|int8pl|int8pl_inet|int8range|int8range_canonical|int8range_subdiff|int8recv|int8send|int8shl|int8shr|int8smaller|int8um|int8up|int8xor|integer_pl_date|inter_lb|inter_sb|inter_sl|internal_in|internal_out|interval_accum|interval_avg|interval_cmp|interval_div|interval_eq|interval_ge|interval_gt|interval_hash|interval_in|interval_larger|interval_le|interval_lt|interval_mi|interval_mul|interval_ne|interval_out|interval_pl|interval_pl_date|interval_pl_time|interval_pl_timestamp|interval_pl_timestamptz|interval_pl_timetz|interval_recv|interval_send|interval_smaller|interval_transform|interval_um|intervaltypmodin|intervaltypmodout|intinterval|isclosed|isempty|isfinite|ishorizontal|iso8859_1_to_utf8|iso8859_to_utf8|iso_to_koi8r|iso_to_mic|iso_to_win1251|iso_to_win866|isopen|isparallel|isperp|isvertical|johab_to_utf8|json_agg|json_agg_finalfn|json_agg_transfn|json_array_element|json_array_element_text|json_array_elements|json_array_length|json_each|json_each_text|json_extract_path|json_extract_path_op|json_extract_path_text|json_extract_path_text_op|json_in|json_object_field|json_object_field_text|json_object_keys|json_out|json_populate_record|json_populate_recordset|json_recv|json_send|justify_days|justify_hours|justify_interval|koi8r_to_iso|koi8r_to_mic|koi8r_to_utf8|koi8r_to_win1251|koi8r_to_win866|koi8u_to_utf8|lag|language_handler_in|language_handler_out|last_value|lastval|latin1_to_mic|latin2_to_mic|latin2_to_win1250|latin3_to_mic|latin4_to_mic|lead|left|length|like|like_escape|likejoinsel|likesel|line|line_distance|line_eq|line_horizontal|line_in|line_interpt|line_intersect|line_out|line_parallel|line_perp|line_recv|line_send|line_vertical|ln|lo_close|lo_creat|lo_create|lo_export|lo_import|lo_lseek|lo_lseek64|lo_open|lo_tell|lo_tell64|lo_truncate|lo_truncate64|lo_unlink|log|loread|lower|lower_inc|lower_inf|lowrite|lpad|lseg|lseg_center|lseg_distance|lseg_eq|lseg_ge|lseg_gt|lseg_horizontal|lseg_in|lseg_interpt|lseg_intersect|lseg_le|lseg_length|lseg_lt|lseg_ne|lseg_out|lseg_parallel|lseg_perp|lseg_recv|lseg_send|lseg_vertical|ltrim|macaddr_and|macaddr_cmp|macaddr_eq|macaddr_ge|macaddr_gt|macaddr_in|macaddr_le|macaddr_lt|macaddr_ne|macaddr_not|macaddr_or|macaddr_out|macaddr_recv|macaddr_send|makeaclitem|masklen|max|md5|mic_to_ascii|mic_to_big5|mic_to_euc_cn|mic_to_euc_jp|mic_to_euc_kr|mic_to_euc_tw|mic_to_iso|mic_to_koi8r|mic_to_latin1|mic_to_latin2|mic_to_latin3|mic_to_latin4|mic_to_sjis|mic_to_win1250|mic_to_win1251|mic_to_win866|min|mktinterval|mod|money|mul_d_interval|name|nameeq|namege|namegt|nameiclike|nameicnlike|nameicregexeq|nameicregexne|namein|namele|namelike|namelt|namene|namenlike|nameout|namerecv|nameregexeq|nameregexne|namesend|neqjoinsel|neqsel|netmask|network|network_cmp|network_eq|network_ge|network_gt|network_le|network_lt|network_ne|network_sub|network_subeq|network_sup|network_supeq|nextval|nlikejoinsel|nlikesel|notlike|now|npoints|nth_value|ntile|numeric_abs|numeric_accum|numeric_add|numeric_avg|numeric_avg_accum|numeric_cmp|numeric_div|numeric_div_trunc|numeric_eq|numeric_exp|numeric_fac|numeric_ge|numeric_gt|numeric_in|numeric_inc|numeric_larger|numeric_le|numeric_ln|numeric_log|numeric_lt|numeric_mod|numeric_mul|numeric_ne|numeric_out|numeric_power|numeric_recv|numeric_send|numeric_smaller|numeric_sqrt|numeric_stddev_pop|numeric_stddev_samp|numeric_sub|numeric_transform|numeric_uminus|numeric_uplus|numeric_var_pop|numeric_var_samp|numerictypmodin|numerictypmodout|numnode|numrange|numrange_subdiff|obj_description|octet_length|oid|oideq|oidge|oidgt|oidin|oidlarger|oidle|oidlt|oidne|oidout|oidrecv|oidsend|oidsmaller|oidvectoreq|oidvectorge|oidvectorgt|oidvectorin|oidvectorle|oidvectorlt|oidvectorne|oidvectorout|oidvectorrecv|oidvectorsend|oidvectortypes|on_pb|on_pl|on_ppath|on_ps|on_sb|on_sl|opaque_in|opaque_out|overlaps|overlay|path|path_add|path_add_pt|path_center|path_contain_pt|path_distance|path_div_pt|path_in|path_inter|path_length|path_mul_pt|path_n_eq|path_n_ge|path_n_gt|path_n_le|path_n_lt|path_npoints|path_out|path_recv|path_send|path_sub_pt|pclose|percent_rank|pg_advisory_lock|pg_advisory_lock_shared|pg_advisory_unlock|pg_advisory_unlock_all|pg_advisory_unlock_shared|pg_advisory_xact_lock|pg_advisory_xact_lock_shared|pg_available_extension_versions|pg_available_extensions|pg_backend_pid|pg_backup_start_time|pg_cancel_backend|pg_char_to_encoding|pg_client_encoding|pg_collation_for|pg_collation_is_visible|pg_column_is_updatable|pg_column_size|pg_conf_load_time|pg_conversion_is_visible|pg_create_restore_point|pg_current_xlog_insert_location|pg_current_xlog_location|pg_cursor|pg_database_size|pg_describe_object|pg_encoding_max_length|pg_encoding_to_char|pg_event_trigger_dropped_objects|pg_export_snapshot|pg_extension_config_dump|pg_extension_update_paths|pg_function_is_visible|pg_get_constraintdef|pg_get_expr|pg_get_function_arguments|pg_get_function_identity_arguments|pg_get_function_result|pg_get_functiondef|pg_get_indexdef|pg_get_keywords|pg_get_multixact_members|pg_get_ruledef|pg_get_serial_sequence|pg_get_triggerdef|pg_get_userbyid|pg_get_viewdef|pg_has_role|pg_identify_object|pg_indexes_size|pg_is_in_backup|pg_is_in_recovery|pg_is_other_temp_schema|pg_is_xlog_replay_paused|pg_last_xact_replay_timestamp|pg_last_xlog_receive_location|pg_last_xlog_replay_location|pg_listening_channels|pg_lock_status|pg_ls_dir|pg_my_temp_schema|pg_node_tree_in|pg_node_tree_out|pg_node_tree_recv|pg_node_tree_send|pg_notify|pg_opclass_is_visible|pg_operator_is_visible|pg_opfamily_is_visible|pg_options_to_table|pg_postmaster_start_time|pg_prepared_statement|pg_prepared_xact|pg_read_binary_file|pg_read_file|pg_relation_filenode|pg_relation_filepath|pg_relation_is_updatable|pg_relation_size|pg_reload_conf|pg_rotate_logfile|pg_sequence_parameters|pg_show_all_settings|pg_size_pretty|pg_sleep|pg_start_backup|pg_stat_clear_snapshot|pg_stat_file|pg_stat_get_activity|pg_stat_get_analyze_count|pg_stat_get_autoanalyze_count|pg_stat_get_autovacuum_count|pg_stat_get_backend_activity|pg_stat_get_backend_activity_start|pg_stat_get_backend_client_addr|pg_stat_get_backend_client_port|pg_stat_get_backend_dbid|pg_stat_get_backend_idset|pg_stat_get_backend_pid|pg_stat_get_backend_start|pg_stat_get_backend_userid|pg_stat_get_backend_waiting|pg_stat_get_backend_xact_start|pg_stat_get_bgwriter_buf_written_checkpoints|pg_stat_get_bgwriter_buf_written_clean|pg_stat_get_bgwriter_maxwritten_clean|pg_stat_get_bgwriter_requested_checkpoints|pg_stat_get_bgwriter_stat_reset_time|pg_stat_get_bgwriter_timed_checkpoints|pg_stat_get_blocks_fetched|pg_stat_get_blocks_hit|pg_stat_get_buf_alloc|pg_stat_get_buf_fsync_backend|pg_stat_get_buf_written_backend|pg_stat_get_checkpoint_sync_time|pg_stat_get_checkpoint_write_time|pg_stat_get_db_blk_read_time|pg_stat_get_db_blk_write_time|pg_stat_get_db_blocks_fetched|pg_stat_get_db_blocks_hit|pg_stat_get_db_conflict_all|pg_stat_get_db_conflict_bufferpin|pg_stat_get_db_conflict_lock|pg_stat_get_db_conflict_snapshot|pg_stat_get_db_conflict_startup_deadlock|pg_stat_get_db_conflict_tablespace|pg_stat_get_db_deadlocks|pg_stat_get_db_numbackends|pg_stat_get_db_stat_reset_time|pg_stat_get_db_temp_bytes|pg_stat_get_db_temp_files|pg_stat_get_db_tuples_deleted|pg_stat_get_db_tuples_fetched|pg_stat_get_db_tuples_inserted|pg_stat_get_db_tuples_returned|pg_stat_get_db_tuples_updated|pg_stat_get_db_xact_commit|pg_stat_get_db_xact_rollback|pg_stat_get_dead_tuples|pg_stat_get_function_calls|pg_stat_get_function_self_time|pg_stat_get_function_total_time|pg_stat_get_last_analyze_time|pg_stat_get_last_autoanalyze_time|pg_stat_get_last_autovacuum_time|pg_stat_get_last_vacuum_time|pg_stat_get_live_tuples|pg_stat_get_numscans|pg_stat_get_tuples_deleted|pg_stat_get_tuples_fetched|pg_stat_get_tuples_hot_updated|pg_stat_get_tuples_inserted|pg_stat_get_tuples_returned|pg_stat_get_tuples_updated|pg_stat_get_vacuum_count|pg_stat_get_wal_senders|pg_stat_get_xact_blocks_fetched|pg_stat_get_xact_blocks_hit|pg_stat_get_xact_function_calls|pg_stat_get_xact_function_self_time|pg_stat_get_xact_function_total_time|pg_stat_get_xact_numscans|pg_stat_get_xact_tuples_deleted|pg_stat_get_xact_tuples_fetched|pg_stat_get_xact_tuples_hot_updated|pg_stat_get_xact_tuples_inserted|pg_stat_get_xact_tuples_returned|pg_stat_get_xact_tuples_updated|pg_stat_reset|pg_stat_reset_shared|pg_stat_reset_single_function_counters|pg_stat_reset_single_table_counters|pg_stop_backup|pg_switch_xlog|pg_table_is_visible|pg_table_size|pg_tablespace_databases|pg_tablespace_location|pg_tablespace_size|pg_terminate_backend|pg_timezone_abbrevs|pg_timezone_names|pg_total_relation_size|pg_trigger_depth|pg_try_advisory_lock|pg_try_advisory_lock_shared|pg_try_advisory_xact_lock|pg_try_advisory_xact_lock_shared|pg_ts_config_is_visible|pg_ts_dict_is_visible|pg_ts_parser_is_visible|pg_ts_template_is_visible|pg_type_is_visible|pg_typeof|pg_xlog_location_diff|pg_xlog_replay_pause|pg_xlog_replay_resume|pg_xlogfile_name|pg_xlogfile_name_offset|pi|plainto_tsquery|plpgsql_call_handler|plpgsql_inline_handler|plpgsql_validator|point|point_above|point_add|point_below|point_distance|point_div|point_eq|point_horiz|point_in|point_left|point_mul|point_ne|point_out|point_recv|point_right|point_send|point_sub|point_vert|poly_above|poly_below|poly_center|poly_contain|poly_contain_pt|poly_contained|poly_distance|poly_in|poly_left|poly_npoints|poly_out|poly_overabove|poly_overbelow|poly_overlap|poly_overleft|poly_overright|poly_recv|poly_right|poly_same|poly_send|polygon|popen|position|positionjoinsel|positionsel|postgresql_fdw_validator|pow|power|prsd_end|prsd_headline|prsd_lextype|prsd_nexttoken|prsd_start|pt_contained_circle|pt_contained_poly|query_to_xml|query_to_xml_and_xmlschema|query_to_xmlschema|querytree|quote_ident|quote_literal|quote_nullable|radians|radius|random|range_adjacent|range_after|range_before|range_cmp|range_contained_by|range_contains|range_contains_elem|range_eq|range_ge|range_gist_compress|range_gist_consistent|range_gist_decompress|range_gist_penalty|range_gist_picksplit|range_gist_same|range_gist_union|range_gt|range_in|range_intersect|range_le|range_lt|range_minus|range_ne|range_out|range_overlaps|range_overleft|range_overright|range_recv|range_send|range_typanalyze|range_union|rangesel|rank|record_eq|record_ge|record_gt|record_in|record_le|record_lt|record_ne|record_out|record_recv|record_send|regclass|regclassin|regclassout|regclassrecv|regclasssend|regconfigin|regconfigout|regconfigrecv|regconfigsend|regdictionaryin|regdictionaryout|regdictionaryrecv|regdictionarysend|regexeqjoinsel|regexeqsel|regexnejoinsel|regexnesel|regexp_matches|regexp_replace|regexp_split_to_array|regexp_split_to_table|regoperatorin|regoperatorout|regoperatorrecv|regoperatorsend|regoperin|regoperout|regoperrecv|regopersend|regprocedurein|regprocedureout|regprocedurerecv|regproceduresend|regprocin|regprocout|regprocrecv|regprocsend|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|regr_slope|regr_sxx|regr_sxy|regr_syy|regtypein|regtypeout|regtyperecv|regtypesend|reltime|reltimeeq|reltimege|reltimegt|reltimein|reltimele|reltimelt|reltimene|reltimeout|reltimerecv|reltimesend|repeat|replace|reverse|right|round|row_number|row_to_json|rpad|rtrim|scalargtjoinsel|scalargtsel|scalarltjoinsel|scalarltsel|schema_to_xml|schema_to_xml_and_xmlschema|schema_to_xmlschema|session_user|set_bit|set_byte|set_config|set_masklen|setseed|setval|setweight|shell_in|shell_out|shift_jis_2004_to_euc_jis_2004|shift_jis_2004_to_utf8|shobj_description|sign|similar_escape|sin|sjis_to_euc_jp|sjis_to_mic|sjis_to_utf8|slope|smgreq|smgrin|smgrne|smgrout|spg_kd_choose|spg_kd_config|spg_kd_inner_consistent|spg_kd_picksplit|spg_quad_choose|spg_quad_config|spg_quad_inner_consistent|spg_quad_leaf_consistent|spg_quad_picksplit|spg_range_quad_choose|spg_range_quad_config|spg_range_quad_inner_consistent|spg_range_quad_leaf_consistent|spg_range_quad_picksplit|spg_text_choose|spg_text_config|spg_text_inner_consistent|spg_text_leaf_consistent|spg_text_picksplit|spgbeginscan|spgbuild|spgbuildempty|spgbulkdelete|spgcanreturn|spgcostestimate|spgendscan|spggetbitmap|spggettuple|spginsert|spgmarkpos|spgoptions|spgrescan|spgrestrpos|spgvacuumcleanup|split_part|sqrt|statement_timestamp|stddev|stddev_pop|stddev_samp|string_agg|string_agg_finalfn|string_agg_transfn|string_to_array|strip|strpos|substr|substring|sum|suppress_redundant_updates_trigger|table_to_xml|table_to_xml_and_xmlschema|table_to_xmlschema|tan|text|text_ge|text_gt|text_larger|text_le|text_lt|text_pattern_ge|text_pattern_gt|text_pattern_le|text_pattern_lt|text_smaller|textanycat|textcat|texteq|texticlike|texticnlike|texticregexeq|texticregexne|textin|textlen|textlike|textne|textnlike|textout|textrecv|textregexeq|textregexne|textsend|thesaurus_init|thesaurus_lexize|tideq|tidge|tidgt|tidin|tidlarger|tidle|tidlt|tidne|tidout|tidrecv|tidsend|tidsmaller|time_cmp|time_eq|time_ge|time_gt|time_hash|time_in|time_larger|time_le|time_lt|time_mi_interval|time_mi_time|time_ne|time_out|time_pl_interval|time_recv|time_send|time_smaller|time_transform|timedate_pl|timemi|timenow|timeofday|timepl|timestamp_cmp|timestamp_cmp_date|timestamp_cmp_timestamptz|timestamp_eq|timestamp_eq_date|timestamp_eq_timestamptz|timestamp_ge|timestamp_ge_date|timestamp_ge_timestamptz|timestamp_gt|timestamp_gt_date|timestamp_gt_timestamptz|timestamp_hash|timestamp_in|timestamp_larger|timestamp_le|timestamp_le_date|timestamp_le_timestamptz|timestamp_lt|timestamp_lt_date|timestamp_lt_timestamptz|timestamp_mi|timestamp_mi_interval|timestamp_ne|timestamp_ne_date|timestamp_ne_timestamptz|timestamp_out|timestamp_pl_interval|timestamp_recv|timestamp_send|timestamp_smaller|timestamp_sortsupport|timestamp_transform|timestamptypmodin|timestamptypmodout|timestamptz_cmp|timestamptz_cmp_date|timestamptz_cmp_timestamp|timestamptz_eq|timestamptz_eq_date|timestamptz_eq_timestamp|timestamptz_ge|timestamptz_ge_date|timestamptz_ge_timestamp|timestamptz_gt|timestamptz_gt_date|timestamptz_gt_timestamp|timestamptz_in|timestamptz_larger|timestamptz_le|timestamptz_le_date|timestamptz_le_timestamp|timestamptz_lt|timestamptz_lt_date|timestamptz_lt_timestamp|timestamptz_mi|timestamptz_mi_interval|timestamptz_ne|timestamptz_ne_date|timestamptz_ne_timestamp|timestamptz_out|timestamptz_pl_interval|timestamptz_recv|timestamptz_send|timestamptz_smaller|timestamptztypmodin|timestamptztypmodout|timetypmodin|timetypmodout|timetz_cmp|timetz_eq|timetz_ge|timetz_gt|timetz_hash|timetz_in|timetz_larger|timetz_le|timetz_lt|timetz_mi_interval|timetz_ne|timetz_out|timetz_pl_interval|timetz_recv|timetz_send|timetz_smaller|timetzdate_pl|timetztypmodin|timetztypmodout|timezone|tinterval|tintervalct|tintervalend|tintervaleq|tintervalge|tintervalgt|tintervalin|tintervalle|tintervalleneq|tintervallenge|tintervallengt|tintervallenle|tintervallenlt|tintervallenne|tintervallt|tintervalne|tintervalout|tintervalov|tintervalrecv|tintervalrel|tintervalsame|tintervalsend|tintervalstart|to_ascii|to_char|to_date|to_hex|to_json|to_number|to_timestamp|to_tsquery|to_tsvector|transaction_timestamp|translate|trigger_in|trigger_out|trunc|ts_debug|ts_headline|ts_lexize|ts_match_qv|ts_match_tq|ts_match_tt|ts_match_vq|ts_parse|ts_rank|ts_rank_cd|ts_rewrite|ts_stat|ts_token_type|ts_typanalyze|tsmatchjoinsel|tsmatchsel|tsq_mcontained|tsq_mcontains|tsquery_and|tsquery_cmp|tsquery_eq|tsquery_ge|tsquery_gt|tsquery_le|tsquery_lt|tsquery_ne|tsquery_not|tsquery_or|tsqueryin|tsqueryout|tsqueryrecv|tsquerysend|tsrange|tsrange_subdiff|tstzrange|tstzrange_subdiff|tsvector_cmp|tsvector_concat|tsvector_eq|tsvector_ge|tsvector_gt|tsvector_le|tsvector_lt|tsvector_ne|tsvector_update_trigger|tsvector_update_trigger_column|tsvectorin|tsvectorout|tsvectorrecv|tsvectorsend|txid_current|txid_current_snapshot|txid_snapshot_in|txid_snapshot_out|txid_snapshot_recv|txid_snapshot_send|txid_snapshot_xip|txid_snapshot_xmax|txid_snapshot_xmin|txid_visible_in_snapshot|uhc_to_utf8|unique_key_recheck|unknownin|unknownout|unknownrecv|unknownsend|unnest|upper|upper_inc|upper_inf|utf8_to_ascii|utf8_to_big5|utf8_to_euc_cn|utf8_to_euc_jis_2004|utf8_to_euc_jp|utf8_to_euc_kr|utf8_to_euc_tw|utf8_to_gb18030|utf8_to_gbk|utf8_to_iso8859|utf8_to_iso8859_1|utf8_to_johab|utf8_to_koi8r|utf8_to_koi8u|utf8_to_shift_jis_2004|utf8_to_sjis|utf8_to_uhc|utf8_to_win|uuid_cmp|uuid_eq|uuid_ge|uuid_gt|uuid_hash|uuid_in|uuid_le|uuid_lt|uuid_ne|uuid_out|uuid_recv|uuid_send|var_pop|var_samp|varbit_in|varbit_out|varbit_recv|varbit_send|varbit_transform|varbitcmp|varbiteq|varbitge|varbitgt|varbitle|varbitlt|varbitne|varbittypmodin|varbittypmodout|varchar_transform|varcharin|varcharout|varcharrecv|varcharsend|varchartypmodin|varchartypmodout|variance|version|void_in|void_out|void_recv|void_send|width|width_bucket|win1250_to_latin2|win1250_to_mic|win1251_to_iso|win1251_to_koi8r|win1251_to_mic|win1251_to_win866|win866_to_iso|win866_to_koi8r|win866_to_mic|win866_to_win1251|win_to_utf8|xideq|xideqint4|xidin|xidout|xidrecv|xidsend|xml|xml_in|xml_is_well_formed|xml_is_well_formed_content|xml_is_well_formed_document|xml_out|xml_recv|xml_send|xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|xpath_exists",n=this.createKeywordMapper({"support.function":t,keyword:e},"identifier",!0),r=[{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"variable.language",regex:'".*?"'},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:n,regex:"[a-zA-Z_][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|~=|~>=~|~>~|~~|~~\\*"},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}];this.$rules={start:[{token:"comment",regex:"--.*$"},s.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"keyword.statementBegin",regex:"[a-zA-Z]+",next:"statement"},{token:"support.buildin",regex:"^\\\\[\\S]+.*$"}],statement:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\/\\*",next:"commentStatement"},{token:"statementEnd",regex:";",next:"start"},{token:"string",regex:"\\$perl\\$",next:"perl-start"},{token:"string",regex:"\\$python\\$",next:"python-start"},{token:"string",regex:"\\$json\\$",next:"json-start"},{token:"string",regex:"\\$(js|javascript)\\$",next:"javascript-start"},{token:"string",regex:"\\$\\$$",next:"dollarSql"},{token:"string",regex:"\\$[\\w_0-9]*\\$",next:"dollarStatementString"}].concat(r),dollarSql:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\/\\*",next:"commentDollarSql"},{token:["keyword","statementEnd","text","string"],regex:"(^|END)(;)?(\\s*)(\\$\\$)",next:"statement"},{token:"string",regex:"\\$[\\w_0-9]*\\$",next:"dollarSqlString"}].concat(r),comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],commentStatement:[{token:"comment",regex:"\\*\\/",next:"statement"},{defaultToken:"comment"}],commentDollarSql:[{token:"comment",regex:"\\*\\/",next:"dollarSql"},{defaultToken:"comment"}],dollarStatementString:[{token:"string",regex:".*?\\$[\\w_0-9]*\\$",next:"statement"},{token:"string",regex:".+"}],dollarSqlString:[{token:"string",regex:".*?\\$[\\w_0-9]*\\$",next:"dollarSql"},{token:"string",regex:".+"}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.embedRules(u,"perl-",[{token:"string",regex:"\\$perl\\$",next:"statement"}]),this.embedRules(a,"python-",[{token:"string",regex:"\\$python\\$",next:"statement"}]),this.embedRules(f,"json-",[{token:"string",regex:"\\$json\\$",next:"statement"}]),this.embedRules(l,"javascript-",[{token:"string",regex:"\\$(js|javascript)\\$",next:"statement"}])};r.inherits(c,o),t.PgsqlHighlightRules=c}),define("ace/mode/pgsql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pgsql_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../mode/text").Mode,s=e("./pgsql_highlight_rules").PgsqlHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="--",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){return e=="start"||e=="keyword.statementEnd"?"":this.$getIndent(t)},this.$id="ace/mode/pgsql"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/pgsql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-php.js b/www/js/ace/mode-php.js deleted file mode 100644 index 8c2d0fae7..000000000 --- a/www/js/ace/mode-php.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/php_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=e("./html_highlight_rules").HtmlHighlightRules,a=function(){var e=s,t=i.arrayToMap("abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_column|array_combine|array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|class_parents|class_uses|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|get_declared_interfaces|get_declared_traits|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|m_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|m_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|m_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|m_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_affected_rows|mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_cache_stats|mysqli_change_user|mysqli_character_set_name|mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_dump_debug_info|mysqli_embedded_server_end|mysqli_embedded_server_start|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|mysqli_execute|mysqli_fetch|mysqli_fetch_all|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|mysqli_free_result|mysqli_get_charset|mysqli_get_client_info|mysqli_get_client_stats|mysqli_get_client_version|mysqli_get_connection_stats|mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_get_warnings|mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_link_construct|mysqli_master_query|mysqli_more_results|mysqli_multi_query|mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_poll|mysqli_prepare|mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_reap_async_query|mysqli_refresh|mysqli_report|mysqli_result|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|mysqli_send_query|mysqli_set_charset|mysqli_set_local_infile_default|mysqli_set_local_infile_handler|mysqli_set_opt|mysqli_slave_query|mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt|mysqli_stmt_affected_rows|mysqli_stmt_attr_get|mysqli_stmt_attr_set|mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_field_count|mysqli_stmt_free_result|mysqli_stmt_get_result|mysqli_stmt_get_warnings|mysqli_stmt_init|mysqli_stmt_insert_id|mysqli_stmt_next_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|mysqli_stmt_reset|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning|mysqli_warning_count|mysqlnd_ms_get_stats|mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|trait_exists|transliterator|traversable|trigger_error|trim|uasort|ucfirst|ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type|array_is_list|fdatasync|fdiv|fsync|get_debug_type|get_resource_id|json_validate|mb_str_pad|mysqli_execute_query|preg_last_error_msg|stream_context_set_options|str_contains|str_ends_with|str_starts_with".split("|")),n=i.arrayToMap("abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|final|finally|for|foreach|function|global|goto|if|implements|instanceof|insteadof|interface|namespace|new|or|private|protected|public|static|switch|throw|trait|try|use|var|while|xor|yield".split("|")),r=i.arrayToMap("__halt_compiler|die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset".split("|")),o=i.arrayToMap("true|TRUE|false|FALSE|null|NULL|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__|__TRAIT__".split("|")),u=i.arrayToMap("$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|$http_response_header|$argc|$argv".split("|")),a=i.arrayToMap("key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregisterset_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|sql_regcase".split("|")),f=i.arrayToMap("cfunction|old_function".split("|")),l=i.arrayToMap([]);this.$rules={start:[{token:"comment",regex:/(?:#|\/\/)(?:[^?]|\?[^>])*/},e.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)"},{token:"string",regex:'"',next:"qqstring"},{token:"string",regex:"'",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language",regex:"\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|VERSION))|__COMPILER_HALT_OFFSET__)\\b"},{token:["keyword","text","support.class"],regex:"\\b(new)(\\s+)(\\w+)"},{token:["support.class","keyword.operator"],regex:"\\b(\\w+)(::)"},{token:"constant.language",regex:"\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b"},{token:function(e){return n.hasOwnProperty(e)?"keyword":o.hasOwnProperty(e)?"constant.language":u.hasOwnProperty(e)?"variable.language":l.hasOwnProperty(e)?"invalid.illegal":t.hasOwnProperty(e)?"support.function":e=="debugger"?"invalid.deprecated":e.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/)?"variable":"identifier"},regex:/[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/},{onMatch:function(e,t,n){e=e.substr(3);if(e[0]=="'"||e[0]=='"')e=e.slice(1,-1);return n.unshift(this.next,e),"markup.list"},regex:/<<<(?:\w+|'\w+'|"\w+")$/,next:"heredoc"},{token:"keyword.operator",regex:"::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|\\.=|=|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"punctuation.operator",regex:/[,;]/},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],heredoc:[{onMatch:function(e,t,n){return n[1]!=e?(this.next="","string"):(n.shift(),n.shift(),this.next=this.nextState,"markup.list")},regex:"^\\w+(?=;?$)",nextState:"start"},{token:"string",regex:".*"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqstring:[{token:"constant.language.escape",regex:'\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})'},{token:"variable",regex:/\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/},{token:"variable",regex:/\$\{[^"\}]+\}?/},{token:"string",regex:'"',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string",regex:"'",next:"start"},{defaultToken:"string"}]},this.embedRules(s,"doc-",[s.getEndRule("start")])};r.inherits(a,o);var f=function(){u.call(this);var e=[{token:"support.php_tag",regex:"<\\?(?:php|=)?",push:"php-start"}],t=[{token:"support.php_tag",regex:"\\?>",next:"pop"}];for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],e);this.embedRules(a,"php-",t,["start"]),this.normalizeRules()};r.inherits(f,u),t.PhpHighlightRules=f,t.PhpLangHighlightRules=a}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/php_completions",["require","exports","module"],function(e,t,n){"use strict";function s(e,t){return e.type.lastIndexOf(t)>-1}var r={abs:["int abs(int number)","Return the absolute value of the number"],acos:["float acos(float number)","Return the arc cosine of the number in radians"],acosh:["float acosh(float number)","Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number"],addGlob:["bool addGlob(string pattern[,int flags [, array options]])","Add files matching the glob pattern. See php's glob for the pattern syntax."],addPattern:["bool addPattern(string pattern[, string path [, array options]])","Add files matching the pcre pattern. See php's pcre for the pattern syntax."],addcslashes:["string addcslashes(string str, string charlist)","Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except '\\n', '\\r', '\\t' etc...)"],addslashes:["string addslashes(string str)","Escapes single quote, double quotes and backslash characters in a string with backslashes"],apache_child_terminate:["bool apache_child_terminate()","Terminate apache process after this request"],apache_get_modules:["array apache_get_modules()","Get a list of loaded Apache modules"],apache_get_version:["string apache_get_version()","Fetch Apache version"],apache_getenv:["bool apache_getenv(string variable [, bool walk_to_top])","Get an Apache subprocess_env variable"],apache_lookup_uri:["object apache_lookup_uri(string URI)","Perform a partial request of the given URI to obtain information about it"],apache_note:["string apache_note(string note_name [, string note_value])","Get and set Apache request notes"],apache_request_auth_name:["string apache_request_auth_name()",""],apache_request_auth_type:["string apache_request_auth_type()",""],apache_request_discard_request_body:["long apache_request_discard_request_body()",""],apache_request_err_headers_out:["array apache_request_err_headers_out([{string name|array list} [, string value [, bool replace = false]]])","* fetch all headers that go out in case of an error or a subrequest"],apache_request_headers:["array apache_request_headers()","Fetch all HTTP request headers"],apache_request_headers_in:["array apache_request_headers_in()","* fetch all incoming request headers"],apache_request_headers_out:["array apache_request_headers_out([{string name|array list} [, string value [, bool replace = false]]])","* fetch all outgoing request headers"],apache_request_is_initial_req:["bool apache_request_is_initial_req()",""],apache_request_log_error:["bool apache_request_log_error(string message, [long facility])",""],apache_request_meets_conditions:["long apache_request_meets_conditions()",""],apache_request_remote_host:["int apache_request_remote_host([int type])",""],apache_request_run:["long apache_request_run()","This is a wrapper for ap_sub_run_req and ap_destory_sub_req. It takes sub_request, runs it, destroys it, and returns it's status."],apache_request_satisfies:["long apache_request_satisfies()",""],apache_request_server_port:["int apache_request_server_port()",""],apache_request_set_etag:["void apache_request_set_etag()",""],apache_request_set_last_modified:["void apache_request_set_last_modified()",""],apache_request_some_auth_required:["bool apache_request_some_auth_required()",""],apache_request_sub_req_lookup_file:["object apache_request_sub_req_lookup_file(string file)","Returns sub-request for the specified file. You would need to run it yourself with run()."],apache_request_sub_req_lookup_uri:["object apache_request_sub_req_lookup_uri(string uri)","Returns sub-request for the specified uri. You would need to run it yourself with run()"],apache_request_sub_req_method_uri:["object apache_request_sub_req_method_uri(string method, string uri)","Returns sub-request for the specified file. You would need to run it yourself with run()."],apache_request_update_mtime:["long apache_request_update_mtime([int dependency_mtime])",""],apache_reset_timeout:["bool apache_reset_timeout()","Reset the Apache write timer"],apache_response_headers:["array apache_response_headers()","Fetch all HTTP response headers"],apache_setenv:["bool apache_setenv(string variable, string value [, bool walk_to_top])","Set an Apache subprocess_env variable"],array_change_key_case:["array array_change_key_case(array input [, int case=CASE_LOWER])","Retuns an array with all string keys lowercased [or uppercased]"],array_chunk:["array array_chunk(array input, int size [, bool preserve_keys])","Split array into chunks"],array_combine:["array array_combine(array keys, array values)","Creates an array by using the elements of the first parameter as keys and the elements of the second as the corresponding values"],array_count_values:["array array_count_values(array input)","Return the value as key and the frequency of that value in input as value"],array_diff:["array array_diff(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have values which are not present in any of the others arguments."],array_diff_assoc:["array array_diff_assoc(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal"],array_diff_key:["array array_diff_key(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have keys which are not present in any of the others arguments. This function is like array_diff() but works on the keys instead of the values. The associativity is preserved."],array_diff_uassoc:["array array_diff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func)","Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Elements are compared by user supplied function."],array_diff_ukey:["array array_diff_ukey(array arr1, array arr2 [, array ...], callback key_comp_func)","Returns the entries of arr1 that have keys which are not present in any of the others arguments. User supplied function is used for comparing the keys. This function is like array_udiff() but works on the keys instead of the values. The associativity is preserved."],array_fill:["array array_fill(int start_key, int num, mixed val)","Create an array containing num elements starting with index start_key each initialized to val"],array_fill_keys:["array array_fill_keys(array keys, mixed val)","Create an array using the elements of the first parameter as keys each initialized to val"],array_filter:["array array_filter(array input [, mixed callback])","Filters elements from the array via the callback."],array_flip:["array array_flip(array input)","Return array with key <-> value flipped"],array_intersect:["array array_intersect(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have values which are present in all the other arguments"],array_intersect_assoc:["array array_intersect_assoc(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check"],array_intersect_key:["array array_intersect_key(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). Equivalent of array_intersect_assoc() but does not do compare of the data."],array_intersect_uassoc:["array array_intersect_uassoc(array arr1, array arr2 [, array ...], callback key_compare_func)","Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check and they are compared by using an user-supplied callback."],array_intersect_ukey:["array array_intersect_ukey(array arr1, array arr2 [, array ...], callback key_compare_func)","Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). The comparison of the keys is performed by a user supplied function. Equivalent of array_intersect_uassoc() but does not do compare of the data."],array_key_exists:["bool array_key_exists(mixed key, array search)","Checks if the given key or index exists in the array"],array_keys:["array array_keys(array input [, mixed search_value[, bool strict]])","Return just the keys from the input array, optionally only for the specified search_value"],array_key_first:["mixed array_key_first(array arr)","Returns the first key of arr if the array is not empty; NULL otherwise"],array_key_last:["mixed array_key_last(array arr)","Returns the last key of arr if the array is not empty; NULL otherwise"],array_map:["array array_map(mixed callback, array input1 [, array input2 ,...])","Applies the callback to the elements in given arrays."],array_merge:["array array_merge(array arr1, array arr2 [, array ...])","Merges elements from passed arrays into one array"],array_merge_recursive:["array array_merge_recursive(array arr1, array arr2 [, array ...])","Recursively merges elements from passed arrays into one array"],array_multisort:["bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...])","Sort multiple arrays at once similar to how ORDER BY clause works in SQL"],array_pad:["array array_pad(array input, int pad_size, mixed pad_value)","Returns a copy of input array padded with pad_value to size pad_size"],array_pop:["mixed array_pop(array stack)","Pops an element off the end of the array"],array_product:["mixed array_product(array input)","Returns the product of the array entries"],array_push:["int array_push(array stack, mixed var [, mixed ...])","Pushes elements onto the end of the array"],array_rand:["mixed array_rand(array input [, int num_req])","Return key/keys for random entry/entries in the array"],array_reduce:["mixed array_reduce(array input, mixed callback [, mixed initial])","Iteratively reduce the array to a single value via the callback."],array_replace:["array array_replace(array arr1, array arr2 [, array ...])","Replaces elements from passed arrays into one array"],array_replace_recursive:["array array_replace_recursive(array arr1, array arr2 [, array ...])","Recursively replaces elements from passed arrays into one array"],array_reverse:["array array_reverse(array input [, bool preserve keys])","Return input as a new array with the order of the entries reversed"],array_search:["mixed array_search(mixed needle, array haystack [, bool strict])","Searches the array for a given value and returns the corresponding key if successful"],array_shift:["mixed array_shift(array stack)","Pops an element off the beginning of the array"],array_slice:["array array_slice(array input, int offset [, int length [, bool preserve_keys]])","Returns elements specified by offset and length"],array_splice:["array array_splice(array input, int offset [, int length [, array replacement]])","Removes the elements designated by offset and length and replace them with supplied array"],array_sum:["mixed array_sum(array input)","Returns the sum of the array entries"],array_udiff:["array array_udiff(array arr1, array arr2 [, array ...], callback data_comp_func)","Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function."],array_udiff_assoc:["array array_udiff_assoc(array arr1, array arr2 [, array ...], callback key_comp_func)","Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys are compared by user supplied function."],array_udiff_uassoc:["array array_udiff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func, callback key_comp_func)","Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys and elements are compared by user supplied functions."],array_uintersect:["array array_uintersect(array arr1, array arr2 [, array ...], callback data_compare_func)","Returns the entries of arr1 that have values which are present in all the other arguments. Data is compared by using an user-supplied callback."],array_uintersect_assoc:["array array_uintersect_assoc(array arr1, array arr2 [, array ...], callback data_compare_func)","Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Data is compared by using an user-supplied callback."],array_uintersect_uassoc:["array array_uintersect_uassoc(array arr1, array arr2 [, array ...], callback data_compare_func, callback key_compare_func)","Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Both data and keys are compared by using user-supplied callbacks."],array_unique:["array array_unique(array input [, int sort_flags])","Removes duplicate values from array"],array_unshift:["int array_unshift(array stack, mixed var [, mixed ...])","Pushes elements onto the beginning of the array"],array_values:["array array_values(array input)","Return just the values from the input array"],array_walk:["bool array_walk(array input, string funcname [, mixed userdata])","Apply a user function to every member of an array"],array_walk_recursive:["bool array_walk_recursive(array input, string funcname [, mixed userdata])","Apply a user function recursively to every member of an array"],arsort:["bool arsort(array &array_arg [, int sort_flags])","Sort an array in reverse order and maintain index association"],asin:["float asin(float number)","Returns the arc sine of the number in radians"],asinh:["float asinh(float number)","Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number"],asort:["bool asort(array &array_arg [, int sort_flags])","Sort an array and maintain index association"],assert:["int assert(string|bool assertion)","Checks if assertion is false"],assert_options:["mixed assert_options(int what [, mixed value])","Set/get the various assert flags"],atan:["float atan(float number)","Returns the arc tangent of the number in radians"],atan2:["float atan2(float y, float x)","Returns the arc tangent of y/x, with the resulting quadrant determined by the signs of y and x"],atanh:["float atanh(float number)","Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number"],attachIterator:["void attachIterator(Iterator iterator[, mixed info])","Attach a new iterator"],base64_decode:["string base64_decode(string str[, bool strict])","Decodes string using MIME base64 algorithm"],base64_encode:["string base64_encode(string str)","Encodes string using MIME base64 algorithm"],base_convert:["string base_convert(string number, int frombase, int tobase)","Converts a number in a string from any base <= 36 to any base <= 36"],basename:["string basename(string path [, string suffix])","Returns the filename component of the path"],bcadd:["string bcadd(string left_operand, string right_operand [, int scale])","Returns the sum of two arbitrary precision numbers"],bccomp:["int bccomp(string left_operand, string right_operand [, int scale])","Compares two arbitrary precision numbers"],bcdiv:["string bcdiv(string left_operand, string right_operand [, int scale])","Returns the quotient of two arbitrary precision numbers (division)"],bcmod:["string bcmod(string left_operand, string right_operand)","Returns the modulus of the two arbitrary precision operands"],bcmul:["string bcmul(string left_operand, string right_operand [, int scale])","Returns the multiplication of two arbitrary precision numbers"],bcpow:["string bcpow(string x, string y [, int scale])","Returns the value of an arbitrary precision number raised to the power of another"],bcpowmod:["string bcpowmod(string x, string y, string mod [, int scale])","Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous"],bcscale:["bool bcscale(int scale)","Sets default scale parameter for all bc math functions"],bcsqrt:["string bcsqrt(string operand [, int scale])","Returns the square root of an arbitray precision number"],bcsub:["string bcsub(string left_operand, string right_operand [, int scale])","Returns the difference between two arbitrary precision numbers"],bin2hex:["string bin2hex(string data)","Converts the binary representation of data to hex"],bind_textdomain_codeset:["string bind_textdomain_codeset (string domain, string codeset)","Specify the character encoding in which the messages from the DOMAIN message catalog will be returned."],bindec:["int bindec(string binary_number)","Returns the decimal equivalent of the binary number"],bindtextdomain:["string bindtextdomain(string domain_name, string dir)","Bind to the text domain domain_name, looking for translations in dir. Returns the current domain"],birdstep_autocommit:["bool birdstep_autocommit(int index)",""],birdstep_close:["bool birdstep_close(int id)",""],birdstep_commit:["bool birdstep_commit(int index)",""],birdstep_connect:["int birdstep_connect(string server, string user, string pass)",""],birdstep_exec:["int birdstep_exec(int index, string exec_str)",""],birdstep_fetch:["bool birdstep_fetch(int index)",""],birdstep_fieldname:["string birdstep_fieldname(int index, int col)",""],birdstep_fieldnum:["int birdstep_fieldnum(int index)",""],birdstep_freeresult:["bool birdstep_freeresult(int index)",""],birdstep_off_autocommit:["bool birdstep_off_autocommit(int index)",""],birdstep_result:["mixed birdstep_result(int index, mixed col)",""],birdstep_rollback:["bool birdstep_rollback(int index)",""],bzcompress:["string bzcompress(string source [, int blocksize100k [, int workfactor]])","Compresses a string into BZip2 encoded data"],bzdecompress:["string bzdecompress(string source [, int small])","Decompresses BZip2 compressed data"],bzerrno:["int bzerrno(resource bz)","Returns the error number"],bzerror:["array bzerror(resource bz)","Returns the error number and error string in an associative array"],bzerrstr:["string bzerrstr(resource bz)","Returns the error string"],bzopen:["resource bzopen(string|int file|fp, string mode)","Opens a new BZip2 stream"],bzread:["string bzread(resource bz[, int length])","Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified"],cal_days_in_month:["int cal_days_in_month(int calendar, int month, int year)","Returns the number of days in a month for a given year and calendar"],cal_from_jd:["array cal_from_jd(int jd, int calendar)","Converts from Julian Day Count to a supported calendar and return extended information"],cal_info:["array cal_info([int calendar])","Returns information about a particular calendar"],cal_to_jd:["int cal_to_jd(int calendar, int month, int day, int year)","Converts from a supported calendar to Julian Day Count"],call_user_func:["mixed call_user_func(mixed function_name [, mixed parmeter] [, mixed ...])","Call a user function which is the first parameter"],call_user_func_array:["mixed call_user_func_array(string function_name, array parameters)","Call a user function which is the first parameter with the arguments contained in array"],call_user_method:["mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...])","Call a user method on a specific object or class"],call_user_method_array:["mixed call_user_method_array(string method_name, mixed object, array params)","Call a user method on a specific object or class using a parameter array"],ceil:["float ceil(float number)","Returns the next highest integer value of the number"],chdir:["bool chdir(string directory)","Change the current directory"],checkdate:["bool checkdate(int month, int day, int year)","Returns true(1) if it is a valid date in gregorian calendar"],chgrp:["bool chgrp(string filename, mixed group)","Change file group"],chmod:["bool chmod(string filename, int mode)","Change file mode"],chown:["bool chown(string filename, mixed user)","Change file owner"],chr:["string chr(int ascii)","Converts ASCII code to a character"],chroot:["bool chroot(string directory)","Change root directory"],chunk_split:["string chunk_split(string str [, int chunklen [, string ending]])","Returns split line"],class_alias:["bool class_alias(string user_class_name , string alias_name [, bool autoload])","Creates an alias for user defined class"],class_exists:["bool class_exists(string classname [, bool autoload])","Checks if the class exists"],class_implements:["array class_implements(mixed what [, bool autoload ])","Return all classes and interfaces implemented by SPL"],class_parents:["array class_parents(object instance [, bool autoload = true])","Return an array containing the names of all parent classes"],clearstatcache:["void clearstatcache([bool clear_realpath_cache[, string filename]])","Clear file stat cache"],closedir:["void closedir([resource dir_handle])","Close directory connection identified by the dir_handle"],closelog:["bool closelog()","Close connection to system logger"],collator_asort:["bool collator_asort( Collator $coll, array(string) $arr )","* Sort array using specified collator, maintaining index association."],collator_compare:["int collator_compare( Collator $coll, string $str1, string $str2 )","* Compare two strings."],collator_create:["Collator collator_create( string $locale )","* Create collator."],collator_get_attribute:["int collator_get_attribute( Collator $coll, int $attr )","* Get collation attribute value."],collator_get_error_code:["int collator_get_error_code( Collator $coll )","* Get collator's last error code."],collator_get_error_message:["string collator_get_error_message( Collator $coll )","* Get text description for collator's last error code."],collator_get_locale:["string collator_get_locale( Collator $coll, int $type )","* Gets the locale name of the collator."],collator_get_sort_key:["bool collator_get_sort_key( Collator $coll, string $str )","* Get a sort key for a string from a Collator. }}}"],collator_get_strength:["int collator_get_strength(Collator coll)","* Returns the current collation strength."],collator_set_attribute:["bool collator_set_attribute( Collator $coll, int $attr, int $val )","* Set collation attribute."],collator_set_strength:["bool collator_set_strength(Collator coll, int strength)","* Set the collation strength."],collator_sort:["bool collator_sort( Collator $coll, array(string) $arr [, int $sort_flags] )","* Sort array using specified collator."],collator_sort_with_sort_keys:["bool collator_sort_with_sort_keys( Collator $coll, array(string) $arr )","* Equivalent to standard PHP sort using Collator. * Uses ICU ucol_getSortKey for performance."],com_create_guid:["string com_create_guid()","Generate a globally unique identifier (GUID)"],com_event_sink:["bool com_event_sink(object comobject, object sinkobject [, mixed sinkinterface])","Connect events from a COM object to a PHP object"],com_get_active_object:["object com_get_active_object(string progid [, int code_page ])","Returns a handle to an already running instance of a COM object"],com_load_typelib:["bool com_load_typelib(string typelib_name [, int case_insensitive])","Loads a Typelibrary and registers its constants"],com_message_pump:["bool com_message_pump([int timeoutms])","Process COM messages, sleeping for up to timeoutms milliseconds"],com_print_typeinfo:["bool com_print_typeinfo(object comobject | string typelib, string dispinterface, bool wantsink)","Print out a PHP class definition for a dispatchable interface"],compact:["array compact(mixed var_names [, mixed ...])","Creates a hash containing variables and their values"],compose_locale:["static string compose_locale($array)","* Creates a locale by combining the parts of locale-ID passed * }}}"],confirm_extname_compiled:["string confirm_extname_compiled(string arg)","Return a string to confirm that the module is compiled in"],connection_aborted:["int connection_aborted()","Returns true if client disconnected"],connection_status:["int connection_status()","Returns the connection status bitfield"],constant:["mixed constant(string const_name)","Given the name of a constant this function will return the constant's associated value"],convert_cyr_string:["string convert_cyr_string(string str, string from, string to)","Convert from one Cyrillic character set to another"],convert_uudecode:["string convert_uudecode(string data)","decode a uuencoded string"],convert_uuencode:["string convert_uuencode(string data)","uuencode a string"],copy:["bool copy(string source_file, string destination_file [, resource context])","Copy a file"],cos:["float cos(float number)","Returns the cosine of the number in radians"],cosh:["float cosh(float number)","Returns the hyperbolic cosine of the number, defined as (exp(number) + exp(-number))/2"],count:["int count(mixed var [, int mode])","Count the number of elements in a variable (usually an array)"],count_chars:["mixed count_chars(string input [, int mode])","Returns info about what characters are used in input"],crc32:["string crc32(string str)","Calculate the crc32 polynomial of a string"],create_function:["string create_function(string args, string code)","Creates an anonymous function, and returns its name"],crypt:["string crypt(string str [, string salt])","Hash a string"],ctype_alnum:["bool ctype_alnum(mixed c)","Checks for alphanumeric character(s)"],ctype_alpha:["bool ctype_alpha(mixed c)","Checks for alphabetic character(s)"],ctype_cntrl:["bool ctype_cntrl(mixed c)","Checks for control character(s)"],ctype_digit:["bool ctype_digit(mixed c)","Checks for numeric character(s)"],ctype_graph:["bool ctype_graph(mixed c)","Checks for any printable character(s) except space"],ctype_lower:["bool ctype_lower(mixed c)","Checks for lowercase character(s)"],ctype_print:["bool ctype_print(mixed c)","Checks for printable character(s)"],ctype_punct:["bool ctype_punct(mixed c)","Checks for any printable character which is not whitespace or an alphanumeric character"],ctype_space:["bool ctype_space(mixed c)","Checks for whitespace character(s)"],ctype_upper:["bool ctype_upper(mixed c)","Checks for uppercase character(s)"],ctype_xdigit:["bool ctype_xdigit(mixed c)","Checks for character(s) representing a hexadecimal digit"],curl_close:["void curl_close(resource ch)","Close a cURL session"],curl_copy_handle:["resource curl_copy_handle(resource ch)","Copy a cURL handle along with all of it's preferences"],curl_errno:["int curl_errno(resource ch)","Return an integer containing the last error number"],curl_error:["string curl_error(resource ch)","Return a string contain the last error for the current session"],curl_exec:["bool curl_exec(resource ch)","Perform a cURL session"],curl_getinfo:["mixed curl_getinfo(resource ch [, int option])","Get information regarding a specific transfer"],curl_init:["resource curl_init([string url])","Initialize a cURL session"],curl_multi_add_handle:["int curl_multi_add_handle(resource mh, resource ch)","Add a normal cURL handle to a cURL multi handle"],curl_multi_close:["void curl_multi_close(resource mh)","Close a set of cURL handles"],curl_multi_exec:["int curl_multi_exec(resource mh, int &still_running)","Run the sub-connections of the current cURL handle"],curl_multi_getcontent:["string curl_multi_getcontent(resource ch)","Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set"],curl_multi_info_read:["array curl_multi_info_read(resource mh [, long msgs_in_queue])","Get information about the current transfers"],curl_multi_init:["resource curl_multi_init()","Returns a new cURL multi handle"],curl_multi_remove_handle:["int curl_multi_remove_handle(resource mh, resource ch)","Remove a multi handle from a set of cURL handles"],curl_multi_select:["int curl_multi_select(resource mh[, double timeout])",'Get all the sockets associated with the cURL extension, which can then be "selected"'],curl_setopt:["bool curl_setopt(resource ch, int option, mixed value)","Set an option for a cURL transfer"],curl_setopt_array:["bool curl_setopt_array(resource ch, array options)","Set an array of option for a cURL transfer"],curl_version:["array curl_version([int version])","Return cURL version information."],current:["mixed current(array array_arg)","Return the element currently pointed to by the internal array pointer"],date:["string date(string format [, long timestamp])","Format a local date/time"],date_add:["DateTime date_add(DateTime object, DateInterval interval)","Adds an interval to the current date in object."],date_create:["DateTime date_create([string time[, DateTimeZone object]])","Returns new DateTime object"],date_create_from_format:["DateTime date_create_from_format(string format, string time[, DateTimeZone object])","Returns new DateTime object formatted according to the specified format"],date_date_set:["DateTime date_date_set(DateTime object, long year, long month, long day)","Sets the date."],date_default_timezone_get:["string date_default_timezone_get()","Gets the default timezone used by all date/time functions in a script"],date_default_timezone_set:["bool date_default_timezone_set(string timezone_identifier)","Sets the default timezone used by all date/time functions in a script"],date_diff:["DateInterval date_diff(DateTime object [, bool absolute])","Returns the difference between two DateTime objects."],date_format:["string date_format(DateTime object, string format)","Returns date formatted according to given format"],date_get_last_errors:["array date_get_last_errors()","Returns the warnings and errors found while parsing a date/time string."],date_interval_create_from_date_string:["DateInterval date_interval_create_from_date_string(string time)","Uses the normal date parsers and sets up a DateInterval from the relative parts of the parsed string"],date_interval_format:["string date_interval_format(DateInterval object, string format)","Formats the interval."],date_isodate_set:["DateTime date_isodate_set(DateTime object, long year, long week[, long day])","Sets the ISO date."],date_modify:["DateTime date_modify(DateTime object, string modify)","Alters the timestamp."],date_offset_get:["long date_offset_get(DateTime object)","Returns the DST offset."],date_parse:["array date_parse(string date)","Returns associative array with detailed info about given date"],date_parse_from_format:["array date_parse_from_format(string format, string date)","Returns associative array with detailed info about given date"],date_sub:["DateTime date_sub(DateTime object, DateInterval interval)","Subtracts an interval to the current date in object."],date_sun_info:["array date_sun_info(long time, float latitude, float longitude)","Returns an array with information about sun set/rise and twilight begin/end"],date_sunrise:["mixed date_sunrise(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])","Returns time of sunrise for a given day and location"],date_sunset:["mixed date_sunset(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])","Returns time of sunset for a given day and location"],date_time_set:["DateTime date_time_set(DateTime object, long hour, long minute[, long second])","Sets the time."],date_timestamp_get:["long date_timestamp_get(DateTime object)","Gets the Unix timestamp."],date_timestamp_set:["DateTime date_timestamp_set(DateTime object, long unixTimestamp)","Sets the date and time based on an Unix timestamp."],date_timezone_get:["DateTimeZone date_timezone_get(DateTime object)","Return new DateTimeZone object relative to give DateTime"],date_timezone_set:["DateTime date_timezone_set(DateTime object, DateTimeZone object)","Sets the timezone for the DateTime object."],datefmt_create:["IntlDateFormatter datefmt_create(string $locale, long date_type, long time_type[, string $timezone_str, long $calendar, string $pattern] )","* Create formatter."],datefmt_format:["string datefmt_format( [mixed]int $args or array $args )","* Format the time value as a string. }}}"],datefmt_get_calendar:["string datefmt_get_calendar( IntlDateFormatter $mf )","* Get formatter calendar."],datefmt_get_datetype:["string datefmt_get_datetype( IntlDateFormatter $mf )","* Get formatter datetype."],datefmt_get_error_code:["int datefmt_get_error_code( IntlDateFormatter $nf )","* Get formatter's last error code."],datefmt_get_error_message:["string datefmt_get_error_message( IntlDateFormatter $coll )","* Get text description for formatter's last error code."],datefmt_get_locale:["string datefmt_get_locale(IntlDateFormatter $mf)","* Get formatter locale."],datefmt_get_pattern:["string datefmt_get_pattern( IntlDateFormatter $mf )","* Get formatter pattern."],datefmt_get_timetype:["string datefmt_get_timetype( IntlDateFormatter $mf )","* Get formatter timetype."],datefmt_get_timezone_id:["string datefmt_get_timezone_id( IntlDateFormatter $mf )","* Get formatter timezone_id."],datefmt_isLenient:["string datefmt_isLenient(IntlDateFormatter $mf)","* Get formatter locale."],datefmt_localtime:["integer datefmt_localtime( IntlDateFormatter $fmt, string $text_to_parse[, int $parse_pos ])","* Parse the string $value to a localtime array }}}"],datefmt_parse:["integer datefmt_parse( IntlDateFormatter $fmt, string $text_to_parse [, int $parse_pos] )","* Parse the string $value starting at parse_pos to a Unix timestamp -int }}}"],datefmt_setLenient:["string datefmt_setLenient(IntlDateFormatter $mf)","* Set formatter lenient."],datefmt_set_calendar:["bool datefmt_set_calendar( IntlDateFormatter $mf, int $calendar )","* Set formatter calendar."],datefmt_set_pattern:["bool datefmt_set_pattern( IntlDateFormatter $mf, string $pattern )","* Set formatter pattern."],datefmt_set_timezone_id:["bool datefmt_set_timezone_id( IntlDateFormatter $mf,$timezone_id)","* Set formatter timezone_id."],dba_close:["void dba_close(resource handle)","Closes database"],dba_delete:["bool dba_delete(string key, resource handle)","Deletes the entry associated with key If inifile: remove all other key lines"],dba_exists:["bool dba_exists(string key, resource handle)","Checks, if the specified key exists"],dba_fetch:["string dba_fetch(string key, [int skip ,] resource handle)","Fetches the data associated with key"],dba_firstkey:["string dba_firstkey(resource handle)","Resets the internal key pointer and returns the first key"],dba_handlers:["array dba_handlers([bool full_info])","List configured database handlers"],dba_insert:["bool dba_insert(string key, string value, resource handle)","If not inifile: Insert value as key, return false, if key exists already If inifile: Add vakue as key (next instance of key)"],dba_key_split:["array|false dba_key_split(string key)","Splits an inifile key into an array of the form array(0=>group,1=>value_name) but returns false if input is false or null"],dba_list:["array dba_list()","List opened databases"],dba_nextkey:["string dba_nextkey(resource handle)","Returns the next key"],dba_open:["resource dba_open(string path, string mode [, string handlername, string ...])","Opens path using the specified handler in mode"],dba_optimize:["bool dba_optimize(resource handle)","Optimizes (e.g. clean up, vacuum) database"],dba_popen:["resource dba_popen(string path, string mode [, string handlername, string ...])","Opens path using the specified handler in mode persistently"],dba_replace:["bool dba_replace(string key, string value, resource handle)","Inserts value as key, replaces key, if key exists already If inifile: remove all other key lines"],dba_sync:["bool dba_sync(resource handle)","Synchronizes database"],dcgettext:["string dcgettext(string domain_name, string msgid, long category)","Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist"],dcngettext:["string dcngettext(string domain, string msgid1, string msgid2, int n, int category)","Plural version of dcgettext()"],debug_backtrace:["array debug_backtrace([bool provide_object])","Return backtrace as array"],debug_print_backtrace:["void debug_print_backtrace()","Prints a PHP backtrace"],debug_zval_dump:["void debug_zval_dump(mixed var)","Dumps a string representation of an internal Zend value to output"],decbin:["string decbin(int decimal_number)","Returns a string containing a binary representation of the number"],dechex:["string dechex(int decimal_number)","Returns a string containing a hexadecimal representation of the given number"],decoct:["string decoct(int decimal_number)","Returns a string containing an octal representation of the given number"],define:["bool define(string constant_name, mixed value, bool case_insensitive=false)","Define a new constant"],define_syslog_variables:["void define_syslog_variables()","Initializes all syslog-related variables"],defined:["bool defined(string constant_name)","Check whether a constant exists"],deg2rad:["float deg2rad(float number)","Converts the number in degrees to the radian equivalent"],dgettext:["string dgettext(string domain_name, string msgid)","Return the translation of msgid for domain_name, or msgid unaltered if a translation does not exist"],die:["void die([mixed status])","Output a message and terminate the current script"],dir:["object dir(string directory[, resource context])","Directory class with properties, handle and class and methods read, rewind and close"],dirname:["string dirname(string path)","Returns the directory name component of the path"],disk_free_space:["float disk_free_space(string path)","Get free disk space for filesystem that path is on"],disk_total_space:["float disk_total_space(string path)","Get total disk space for filesystem that path is on"],display_disabled_function:["void display_disabled_function()","Dummy function which displays an error when a disabled function is called."],dl:["int dl(string extension_filename)","Load a PHP extension at runtime"],dngettext:["string dngettext(string domain, string msgid1, string msgid2, int count)","Plural version of dgettext()"],dns_check_record:["bool dns_check_record(string host [, string type])","Check DNS records corresponding to a given Internet host name or IP address"],dns_get_mx:["bool dns_get_mx(string hostname, array mxhosts [, array weight])","Get MX records corresponding to a given Internet host name"],dns_get_record:["array|false dns_get_record(string hostname [, int type[, array authns, array addtl]])","Get any Resource Record corresponding to a given Internet host name"],dom_attr_is_id:["bool dom_attr_is_id()","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-isId Since: DOM Level 3"],dom_characterdata_append_data:["void dom_characterdata_append_data(string arg)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-32791A2F Since:"],dom_characterdata_delete_data:["void dom_characterdata_delete_data(int offset, int count)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7C603781 Since:"],dom_characterdata_insert_data:["void dom_characterdata_insert_data(int offset, string arg)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3EDB695F Since:"],dom_characterdata_replace_data:["void dom_characterdata_replace_data(int offset, int count, string arg)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-E5CBA7FB Since:"],dom_characterdata_substring_data:["string dom_characterdata_substring_data(int offset, int count)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6531BCCF Since:"],dom_document_adopt_node:["DOMNode dom_document_adopt_node(DOMNode source)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-adoptNode Since: DOM Level 3"],dom_document_create_attribute:["DOMAttr dom_document_create_attribute(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1084891198 Since:"],dom_document_create_attribute_ns:["DOMAttr dom_document_create_attribute_ns(string namespaceURI, string qualifiedName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrAttrNS Since: DOM Level 2"],dom_document_create_cdatasection:["DOMCdataSection dom_document_create_cdatasection(string data)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D26C0AF8 Since:"],dom_document_create_comment:["DOMComment dom_document_create_comment(string data)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1334481328 Since:"],dom_document_create_document_fragment:["DOMDocumentFragment dom_document_create_document_fragment()","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-35CB04B5 Since:"],dom_document_create_element:["DOMElement dom_document_create_element(string tagName [, string value])","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-2141741547 Since:"],dom_document_create_element_ns:["DOMElement dom_document_create_element_ns(string namespaceURI, string qualifiedName [,string value])","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrElNS Since: DOM Level 2"],dom_document_create_entity_reference:["DOMEntityReference dom_document_create_entity_reference(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-392B75AE Since:"],dom_document_create_processing_instruction:["DOMProcessingInstruction dom_document_create_processing_instruction(string target, string data)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-135944439 Since:"],dom_document_create_text_node:["DOMText dom_document_create_text_node(string data)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1975348127 Since:"],dom_document_get_element_by_id:["DOMElement dom_document_get_element_by_id(string elementId)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBId Since: DOM Level 2"],dom_document_get_elements_by_tag_name:["DOMNodeList dom_document_get_elements_by_tag_name(string tagname)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C9094 Since:"],dom_document_get_elements_by_tag_name_ns:["DOMNodeList dom_document_get_elements_by_tag_name_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBTNNS Since: DOM Level 2"],dom_document_import_node:["DOMNode dom_document_import_node(DOMNode importedNode, bool deep)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Core-Document-importNode Since: DOM Level 2"],dom_document_load:["DOMNode dom_document_load(string source [, int options])","URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-load Since: DOM Level 3"],dom_document_load_html:["DOMNode dom_document_load_html(string source)","Since: DOM extended"],dom_document_load_html_file:["DOMNode dom_document_load_html_file(string source)","Since: DOM extended"],dom_document_loadxml:["DOMNode dom_document_loadxml(string source [, int options])","URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-loadXML Since: DOM Level 3"],dom_document_normalize_document:["void dom_document_normalize_document()","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-normalizeDocument Since: DOM Level 3"],dom_document_relaxNG_validate_file:["bool dom_document_relaxNG_validate_file(string filename); */","PHP_FUNCTION(dom_document_relaxNG_validate_file) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_relaxNG_validate_file"],dom_document_relaxNG_validate_xml:["bool dom_document_relaxNG_validate_xml(string source); */","PHP_FUNCTION(dom_document_relaxNG_validate_xml) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_relaxNG_validate_xml"],dom_document_rename_node:["DOMNode dom_document_rename_node(node n, string namespaceURI, string qualifiedName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNode Since: DOM Level 3"],dom_document_save:["int dom_document_save(string file)","Convenience method to save to file"],dom_document_save_html:["string dom_document_save_html()","Convenience method to output as html"],dom_document_save_html_file:["int dom_document_save_html_file(string file)","Convenience method to save to file as html"],dom_document_savexml:["string dom_document_savexml([node n])","URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXML Since: DOM Level 3"],dom_document_schema_validate:["bool dom_document_schema_validate(string source); */","PHP_FUNCTION(dom_document_schema_validate_xml) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_schema_validate"],dom_document_schema_validate_file:["bool dom_document_schema_validate_file(string filename); */","PHP_FUNCTION(dom_document_schema_validate_file) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_schema_validate_file"],dom_document_validate:["bool dom_document_validate()","Since: DOM extended"],dom_document_xinclude:["int dom_document_xinclude([int options])","Substitutues xincludes in a DomDocument"],dom_domconfiguration_can_set_parameter:["bool dom_domconfiguration_can_set_parameter(string name, domuserdata value)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameter Since:"],dom_domconfiguration_get_parameter:["domdomuserdata dom_domconfiguration_get_parameter(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameter Since:"],dom_domconfiguration_set_parameter:["dom_void dom_domconfiguration_set_parameter(string name, domuserdata value)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-property Since:"],dom_domerrorhandler_handle_error:["dom_bool dom_domerrorhandler_handle_error(domerror error)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleError Since:"],dom_domimplementation_create_document:["DOMDocument dom_domimplementation_create_document(string namespaceURI, string qualifiedName, DOMDocumentType doctype)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocument Since: DOM Level 2"],dom_domimplementation_create_document_type:["DOMDocumentType dom_domimplementation_create_document_type(string qualifiedName, string publicId, string systemId)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocType Since: DOM Level 2"],dom_domimplementation_get_feature:["DOMNode dom_domimplementation_get_feature(string feature, string version)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeature Since: DOM Level 3"],dom_domimplementation_has_feature:["bool dom_domimplementation_has_feature(string feature, string version)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7 Since:"],dom_domimplementationlist_item:["domdomimplementation dom_domimplementationlist_item(int index)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-item Since:"],dom_domimplementationsource_get_domimplementation:["domdomimplementation dom_domimplementationsource_get_domimplementation(string features)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpl Since:"],dom_domimplementationsource_get_domimplementations:["domimplementationlist dom_domimplementationsource_get_domimplementations(string features)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpls Since:"],dom_domstringlist_item:["domstring dom_domstringlist_item(int index)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-item Since:"],dom_element_get_attribute:["string dom_element_get_attribute(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9 Since:"],dom_element_get_attribute_node:["DOMAttr dom_element_get_attribute_node(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8 Since:"],dom_element_get_attribute_node_ns:["DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNS Since: DOM Level 2"],dom_element_get_attribute_ns:["string dom_element_get_attribute_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNS Since: DOM Level 2"],dom_element_get_elements_by_tag_name:["DOMNodeList dom_element_get_elements_by_tag_name(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918D Since:"],dom_element_get_elements_by_tag_name_ns:["DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942 Since: DOM Level 2"],dom_element_has_attribute:["bool dom_element_has_attribute(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttr Since: DOM Level 2"],dom_element_has_attribute_ns:["bool dom_element_has_attribute_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNS Since: DOM Level 2"],dom_element_remove_attribute:["void dom_element_remove_attribute(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9 Since:"],dom_element_remove_attribute_node:["DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198 Since:"],dom_element_remove_attribute_ns:["void dom_element_remove_attribute_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNS Since: DOM Level 2"],dom_element_set_attribute:["void dom_element_set_attribute(string name, string value)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082 Since:"],dom_element_set_attribute_node:["DOMAttr dom_element_set_attribute_node(DOMAttr newAttr)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154 Since:"],dom_element_set_attribute_node_ns:["DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNS Since: DOM Level 2"],dom_element_set_attribute_ns:["void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNS Since: DOM Level 2"],dom_element_set_id_attribute:["void dom_element_set_id_attribute(string name, bool isId)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttr Since: DOM Level 3"],dom_element_set_id_attribute_node:["void dom_element_set_id_attribute_node(attr idAttr, bool isId)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNode Since: DOM Level 3"],dom_element_set_id_attribute_ns:["void dom_element_set_id_attribute_ns(string namespaceURI, string localName, bool isId)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNS Since: DOM Level 3"],dom_import_simplexml:["somNode dom_import_simplexml(sxeobject node)","Get a simplexml_element object from dom to allow for processing"],dom_namednodemap_get_named_item:["DOMNode dom_namednodemap_get_named_item(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549 Since:"],dom_namednodemap_get_named_item_ns:["DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNS Since: DOM Level 2"],dom_namednodemap_item:["DOMNode dom_namednodemap_item(int index)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9 Since:"],dom_namednodemap_remove_named_item:["DOMNode dom_namednodemap_remove_named_item(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193 Since:"],dom_namednodemap_remove_named_item_ns:["DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNS Since: DOM Level 2"],dom_namednodemap_set_named_item:["DOMNode dom_namednodemap_set_named_item(DOMNode arg)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788 Since:"],dom_namednodemap_set_named_item_ns:["DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNS Since: DOM Level 2"],dom_namelist_get_name:["string dom_namelist_get_name(int index)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getName Since:"],dom_namelist_get_namespace_uri:["string dom_namelist_get_namespace_uri(int index)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURI Since:"],dom_node_append_child:["DomNode dom_node_append_child(DomNode newChild)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107 Since:"],dom_node_clone_node:["DomNode dom_node_clone_node(bool deep)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4 Since:"],dom_node_compare_document_position:["short dom_node_compare_document_position(DomNode other)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPosition Since: DOM Level 3"],dom_node_get_feature:["DomNode dom_node_get_feature(string feature, string version)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeature Since: DOM Level 3"],dom_node_get_user_data:["mixed dom_node_get_user_data(string key)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserData Since: DOM Level 3"],dom_node_has_attributes:["bool dom_node_has_attributes()","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrs Since: DOM Level 2"],dom_node_has_child_nodes:["bool dom_node_has_child_nodes()","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187 Since:"],dom_node_insert_before:["domnode dom_node_insert_before(DomNode newChild, DomNode refChild)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727 Since:"],dom_node_is_default_namespace:["bool dom_node_is_default_namespace(string namespaceURI)","URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespace Since: DOM Level 3"],dom_node_is_equal_node:["bool dom_node_is_equal_node(DomNode arg)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNode Since: DOM Level 3"],dom_node_is_same_node:["bool dom_node_is_same_node(DomNode other)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNode Since: DOM Level 3"],dom_node_is_supported:["bool dom_node_is_supported(string feature, string version)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supports Since: DOM Level 2"],dom_node_lookup_namespace_uri:["string dom_node_lookup_namespace_uri(string prefix)","URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI Since: DOM Level 3"],dom_node_lookup_prefix:["string dom_node_lookup_prefix(string namespaceURI)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefix Since: DOM Level 3"],dom_node_normalize:["void dom_node_normalize()","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalize Since:"],dom_node_remove_child:["DomNode dom_node_remove_child(DomNode oldChild)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066 Since:"],dom_node_replace_child:["DomNode dom_node_replace_child(DomNode newChild, DomNode oldChild)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307 Since:"],dom_node_set_user_data:["mixed dom_node_set_user_data(string key, mixed data, userdatahandler handler)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserData Since: DOM Level 3"],dom_nodelist_item:["DOMNode dom_nodelist_item(int index)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136 Since:"],dom_string_extend_find_offset16:["int dom_string_extend_find_offset16(int offset32)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16 Since:"],dom_string_extend_find_offset32:["int dom_string_extend_find_offset32(int offset16)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32 Since:"],dom_text_is_whitespace_in_element_content:["bool dom_text_is_whitespace_in_element_content()","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContent Since: DOM Level 3"],dom_text_replace_whole_text:["DOMText dom_text_replace_whole_text(string content)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeText Since: DOM Level 3"],dom_text_split_text:["DOMText dom_text_split_text(int offset)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1D Since:"],dom_userdatahandler_handle:["dom_void dom_userdatahandler_handle(short operation, string key, domobject data, node src, node dst)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEvent Since:"],dom_xpath_evaluate:["mixed dom_xpath_evaluate(string expr [,DOMNode context])",""],dom_xpath_query:["DOMNodeList dom_xpath_query(string expr [,DOMNode context])",""],dom_xpath_register_ns:["bool dom_xpath_register_ns(string prefix, string uri)",""],dom_xpath_register_php_functions:["void dom_xpath_register_php_functions()",""],each:["array each(array arr)","Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element"],easter_date:["int easter_date([int year])","Return the timestamp of midnight on Easter of a given year (defaults to current year)"],easter_days:["int easter_days([int year, [int method]])","Return the number of days after March 21 that Easter falls on for a given year (defaults to current year)"],echo:["void echo(string arg1 [, string ...])","Output one or more strings"],empty:["bool empty(mixed var)","Determine whether a variable is empty"],enchant_broker_describe:["array enchant_broker_describe(resource broker)","Enumerates the Enchant providers and tells you some rudimentary information about them. The same info is provided through phpinfo()"],enchant_broker_dict_exists:["bool enchant_broker_dict_exists(resource broker, string tag)","Whether a dictionary exists or not. Using non-empty tag"],enchant_broker_free:["bool enchant_broker_free(resource broker)","Destroys the broker object and its dictionnaries"],enchant_broker_free_dict:["resource enchant_broker_free_dict(resource dict)","Free the dictionary resource"],enchant_broker_get_dict_path:["string enchant_broker_get_dict_path(resource broker, int dict_type)","Get the directory path for a given backend, works with ispell and myspell"],enchant_broker_get_error:["string enchant_broker_get_error(resource broker)","Returns the last error of the broker"],enchant_broker_init:["resource enchant_broker_init()","create a new broker object capable of requesting"],enchant_broker_list_dicts:["string enchant_broker_list_dicts(resource broker)","Lists the dictionaries available for the given broker"],enchant_broker_request_dict:["resource enchant_broker_request_dict(resource broker, string tag)",'create a new dictionary using tag, the non-empty language tag you wish to request a dictionary for ("en_US", "de_DE", ...)'],enchant_broker_request_pwl_dict:["resource enchant_broker_request_pwl_dict(resource broker, string filename)","creates a dictionary using a PWL file. A PWL file is personal word file one word per line. It must exist before the call."],enchant_broker_set_dict_path:["bool enchant_broker_set_dict_path(resource broker, int dict_type, string value)","Set the directory path for a given backend, works with ispell and myspell"],enchant_broker_set_ordering:["bool enchant_broker_set_ordering(resource broker, string tag, string ordering)","Declares a preference of dictionaries to use for the language described/referred to by 'tag'. The ordering is a comma delimited list of provider names. As a special exception, the \"*\" tag can be used as a language tag to declare a default ordering for any language that does not explictly declare an ordering."],enchant_dict_add_to_personal:["void enchant_dict_add_to_personal(resource dict, string word)","add 'word' to personal word list"],enchant_dict_add_to_session:["void enchant_dict_add_to_session(resource dict, string word)","add 'word' to this spell-checking session"],enchant_dict_check:["bool enchant_dict_check(resource dict, string word)","If the word is correctly spelled return true, otherwise return false"],enchant_dict_describe:["array enchant_dict_describe(resource dict)","Describes an individual dictionary 'dict'"],enchant_dict_get_error:["string enchant_dict_get_error(resource dict)","Returns the last error of the current spelling-session"],enchant_dict_is_in_session:["bool enchant_dict_is_in_session(resource dict, string word)","whether or not 'word' exists in this spelling-session"],enchant_dict_quick_check:["bool enchant_dict_quick_check(resource dict, string word [, array &suggestions])","If the word is correctly spelled return true, otherwise return false, if suggestions variable is provided, fill it with spelling alternatives."],enchant_dict_store_replacement:["void enchant_dict_store_replacement(resource dict, string mis, string cor)","add a correction for 'mis' using 'cor'. Notes that you replaced @mis with @cor, so it's possibly more likely that future occurrences of @mis will be replaced with @cor. So it might bump @cor up in the suggestion list."],enchant_dict_suggest:["array enchant_dict_suggest(resource dict, string word)","Will return a list of values if any of those pre-conditions are not met."],end:["mixed end(array array_arg)","Advances array argument's internal pointer to the last element and return it"],ereg:["int ereg(string pattern, string string [, array registers])","Regular expression match"],ereg_replace:["string ereg_replace(string pattern, string replacement, string string)","Replace regular expression"],eregi:["int eregi(string pattern, string string [, array registers])","Case-insensitive regular expression match"],eregi_replace:["string eregi_replace(string pattern, string replacement, string string)","Case insensitive replace regular expression"],error_get_last:["array error_get_last()","Get the last occurred error as associative array. Returns NULL if there hasn't been an error yet."],error_log:["bool error_log(string message [, int message_type [, string destination [, string extra_headers]]])","Send an error message somewhere"],error_reporting:["int error_reporting([int new_error_level])","Return the current error_reporting level, and if an argument was passed - change to the new level"],escapeshellarg:["string escapeshellarg(string arg)","Quote and escape an argument for use in a shell command"],escapeshellcmd:["string escapeshellcmd(string command)","Escape shell metacharacters"],exec:["string exec(string command [, array &output [, int &return_value]])","Execute an external program"],exif_imagetype:["int exif_imagetype(string imagefile)","Get the type of an image"],exif_read_data:["array exif_read_data(string filename [, sections_needed [, sub_arrays[, read_thumbnail]]])","Reads header data from the JPEG/TIFF image filename and optionally reads the internal thumbnails"],exif_tagname:["string exif_tagname(index)","Get headername for index or false if not defined"],exif_thumbnail:["string exif_thumbnail(string filename [, &width, &height [, &imagetype]])","Reads the embedded thumbnail"],exit:["void exit([mixed status])","Output a message and terminate the current script"],exp:["float exp(float number)","Returns e raised to the power of the number"],explode:["array explode(string separator, string str [, int limit])","Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned."],expm1:["float expm1(float number)","Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero"],extension_loaded:["bool extension_loaded(string extension_name)","Returns true if the named extension is loaded"],extract:["int extract(array var_array [, int extract_type [, string prefix]])","Imports variables into symbol table from an array"],ezmlm_hash:["int ezmlm_hash(string addr)","Calculate EZMLM list hash value."],fclose:["bool fclose(resource fp)","Close an open file pointer"],feof:["bool feof(resource fp)","Test for end-of-file on a file pointer"],fflush:["bool fflush(resource fp)","Flushes output"],fgetc:["string fgetc(resource fp)","Get a character from file pointer"],fgetcsv:["array fgetcsv(resource fp [,int length [, string delimiter [, string enclosure [, string escape]]]])","Get line from file pointer and parse for CSV fields"],fgets:["string fgets(resource fp[, int length])","Get a line from file pointer"],fgetss:["string fgetss(resource fp [, int length [, string allowable_tags]])","Get a line from file pointer and strip HTML tags"],file:["array file(string filename [, int flags[, resource context]])","Read entire file into an array"],file_exists:["bool file_exists(string filename)","Returns true if filename exists"],file_get_contents:["string file_get_contents(string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]])","Read the entire file into a string"],file_put_contents:["int file_put_contents(string file, mixed data [, int flags [, resource context]])","Write/Create a file with contents data and return the number of bytes written"],fileatime:["int fileatime(string filename)","Get last access time of file"],filectime:["int filectime(string filename)","Get inode modification time of file"],filegroup:["int filegroup(string filename)","Get file group"],fileinode:["int fileinode(string filename)","Get file inode"],filemtime:["int filemtime(string filename)","Get last modification time of file"],fileowner:["int fileowner(string filename)","Get file owner"],fileperms:["int fileperms(string filename)","Get file permissions"],filesize:["int filesize(string filename)","Get file size"],filetype:["string filetype(string filename)","Get file type"],filter_has_var:["mixed filter_has_var(constant type, string variable_name)","* Returns true if the variable with the name 'name' exists in source."],filter_input:["mixed filter_input(constant type, string variable_name [, long filter [, mixed options]])","* Returns the filtered variable 'name'* from source `type`."],filter_input_array:["mixed filter_input_array(constant type, [, mixed options]])","* Returns an array with all arguments defined in 'definition'."],filter_var:["mixed filter_var(mixed variable [, long filter [, mixed options]])","* Returns the filtered version of the vriable."],filter_var_array:["mixed filter_var_array(array data, [, mixed options]])","* Returns an array with all arguments defined in 'definition'."],finfo_buffer:["string finfo_buffer(resource finfo, char *string [, int options [, resource context]])","Return infromation about a string buffer."],finfo_close:["resource finfo_close(resource finfo)","Close fileinfo resource."],finfo_file:["string finfo_file(resource finfo, char *file_name [, int options [, resource context]])","Return information about a file."],finfo_open:["resource finfo_open([int options [, string arg]])","Create a new fileinfo resource."],finfo_set_flags:["bool finfo_set_flags(resource finfo, int options)","Set libmagic configuration options."],floatval:["float floatval(mixed var)","Get the float value of a variable"],flock:["bool flock(resource fp, int operation [, int &wouldblock])","Portable file locking"],floor:["float floor(float number)","Returns the next lowest integer value from the number"],flush:["void flush()","Flush the output buffer"],fmod:["float fmod(float x, float y)","Returns the remainder of dividing x by y as a float"],fnmatch:["bool fnmatch(string pattern, string filename [, int flags])","Match filename against pattern"],fopen:["resource fopen(string filename, string mode [, bool use_include_path [, resource context]])","Open a file or a URL and return a file pointer"],forward_static_call:["mixed forward_static_call(mixed function_name [, mixed parmeter] [, mixed ...])","Call a user function which is the first parameter"],fpassthru:["int fpassthru(resource fp)","Output all remaining data from a file pointer"],fprintf:["int fprintf(resource stream, string format [, mixed arg1 [, mixed ...]])","Output a formatted string into a stream"],fputcsv:["int fputcsv(resource fp, array fields [, string delimiter [, string enclosure]])","Format line as CSV and write to file pointer"],fread:["string fread(resource fp, int length)","Binary-safe file read"],frenchtojd:["int frenchtojd(int month, int day, int year)","Converts a french republic calendar date to julian day count"],fscanf:["mixed fscanf(resource stream, string format [, string ...])","Implements a mostly ANSI compatible fscanf()"],fseek:["int fseek(resource fp, int offset [, int whence])","Seek on a file pointer"],fsockopen:["resource fsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])","Open Internet or Unix domain socket connection"],fstat:["array fstat(resource fp)","Stat() on a filehandle"],ftell:["int ftell(resource fp)","Get file pointer's read/write position"],ftok:["int ftok(string pathname, string proj)","Convert a pathname and a project identifier to a System V IPC key"],ftp_alloc:["bool ftp_alloc(resource stream, int size[, &response])","Attempt to allocate space on the remote FTP server"],ftp_cdup:["bool ftp_cdup(resource stream)","Changes to the parent directory"],ftp_chdir:["bool ftp_chdir(resource stream, string directory)","Changes directories"],ftp_chmod:["int ftp_chmod(resource stream, int mode, string filename)","Sets permissions on a file"],ftp_close:["bool ftp_close(resource stream)","Closes the FTP stream"],ftp_connect:["resource ftp_connect(string host [, int port [, int timeout]])","Opens a FTP stream"],ftp_delete:["bool ftp_delete(resource stream, string file)","Deletes a file"],ftp_exec:["bool ftp_exec(resource stream, string command)","Requests execution of a program on the FTP server"],ftp_fget:["bool ftp_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])","Retrieves a file from the FTP server and writes it to an open file"],ftp_fput:["bool ftp_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])","Stores a file from an open file to the FTP server"],ftp_get:["bool ftp_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])","Retrieves a file from the FTP server and writes it to a local file"],ftp_get_option:["mixed ftp_get_option(resource stream, int option)","Gets an FTP option"],ftp_login:["bool ftp_login(resource stream, string username, string password)","Logs into the FTP server"],ftp_mdtm:["int ftp_mdtm(resource stream, string filename)","Returns the last modification time of the file, or -1 on error"],ftp_mkdir:["string ftp_mkdir(resource stream, string directory)","Creates a directory and returns the absolute path for the new directory or false on error"],ftp_nb_continue:["int ftp_nb_continue(resource stream)","Continues retrieving/sending a file nbronously"],ftp_nb_fget:["int ftp_nb_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])","Retrieves a file from the FTP server asynchronly and writes it to an open file"],ftp_nb_fput:["int ftp_nb_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])","Stores a file from an open file to the FTP server nbronly"],ftp_nb_get:["int ftp_nb_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])","Retrieves a file from the FTP server nbhronly and writes it to a local file"],ftp_nb_put:["int ftp_nb_put(resource stream, string remote_file, string local_file, int mode[, int startpos])","Stores a file on the FTP server"],ftp_nlist:["array ftp_nlist(resource stream, string directory)","Returns an array of filenames in the given directory"],ftp_pasv:["bool ftp_pasv(resource stream, bool pasv)","Turns passive mode on or off"],ftp_put:["bool ftp_put(resource stream, string remote_file, string local_file, int mode[, int startpos])","Stores a file on the FTP server"],ftp_pwd:["string ftp_pwd(resource stream)","Returns the present working directory"],ftp_raw:["array ftp_raw(resource stream, string command)","Sends a literal command to the FTP server"],ftp_rawlist:["array ftp_rawlist(resource stream, string directory [, bool recursive])","Returns a detailed listing of a directory as an array of output lines"],ftp_rename:["bool ftp_rename(resource stream, string src, string dest)","Renames the given file to a new path"],ftp_rmdir:["bool ftp_rmdir(resource stream, string directory)","Removes a directory"],ftp_set_option:["bool ftp_set_option(resource stream, int option, mixed value)","Sets an FTP option"],ftp_site:["bool ftp_site(resource stream, string cmd)","Sends a SITE command to the server"],ftp_size:["int ftp_size(resource stream, string filename)","Returns the size of the file, or -1 on error"],ftp_ssl_connect:["resource ftp_ssl_connect(string host [, int port [, int timeout]])","Opens a FTP-SSL stream"],ftp_systype:["string ftp_systype(resource stream)","Returns the system type identifier"],ftruncate:["bool ftruncate(resource fp, int size)","Truncate file to 'size' length"],func_get_arg:["mixed func_get_arg(int arg_num)","Get the $arg_num'th argument that was passed to the function"],func_get_args:["array func_get_args()","Get an array of the arguments that were passed to the function"],func_num_args:["int func_num_args()","Get the number of arguments that were passed to the function"],"function ":["",""],"foreach ":["",""],function_exists:["bool function_exists(string function_name)","Checks if the function exists"],fwrite:["int fwrite(resource fp, string str [, int length])","Binary-safe file write"],gc_collect_cycles:["int gc_collect_cycles()","Forces collection of any existing garbage cycles. Returns number of freed zvals"],gc_disable:["void gc_disable()","Deactivates the circular reference collector"],gc_enable:["void gc_enable()","Activates the circular reference collector"],gc_enabled:["void gc_enabled()","Returns status of the circular reference collector"],gd_info:["array gd_info()",""],getKeywords:["static array getKeywords(string $locale) {","* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array * }}}"],get_browser:["mixed get_browser([string browser_name [, bool return_array]])","Get information about the capabilities of a browser. If browser_name is omitted or null, HTTP_USER_AGENT is used. Returns an object by default; if return_array is true, returns an array."],get_called_class:["string get_called_class()",'Retrieves the "Late Static Binding" class name'],get_cfg_var:["mixed get_cfg_var(string option_name)","Get the value of a PHP configuration option"],get_class:["string get_class([object object])","Retrieves the class name"],get_class_methods:["array get_class_methods(mixed class)","Returns an array of method names for class or class instance."],get_class_vars:["array get_class_vars(string class_name)","Returns an array of default properties of the class."],get_current_user:["string get_current_user()","Get the name of the owner of the current PHP script"],get_declared_classes:["array get_declared_classes()","Returns an array of all declared classes."],get_declared_interfaces:["array get_declared_interfaces()","Returns an array of all declared interfaces."],get_defined_constants:["array get_defined_constants([bool categorize])","Return an array containing the names and values of all defined constants"],get_defined_functions:["array get_defined_functions()","Returns an array of all defined functions"],get_defined_vars:["array get_defined_vars()","Returns an associative array of names and values of all currently defined variable names (variables in the current scope)"],get_display_language:["static string get_display_language($locale[, $in_locale = null])","* gets the language for the $locale in $in_locale or default_locale"],get_display_name:["static string get_display_name($locale[, $in_locale = null])","* gets the name for the $locale in $in_locale or default_locale"],get_display_region:["static string get_display_region($locale, $in_locale = null)","* gets the region for the $locale in $in_locale or default_locale"],get_display_script:["static string get_display_script($locale, $in_locale = null)","* gets the script for the $locale in $in_locale or default_locale"],get_extension_funcs:["array get_extension_funcs(string extension_name)","Returns an array with the names of functions belonging to the named extension"],get_headers:["array get_headers(string url[, int format])","fetches all the headers sent by the server in response to a HTTP request"],get_html_translation_table:["array get_html_translation_table([int table [, int quote_style]])","Returns the internal translation table used by htmlspecialchars and htmlentities"],get_include_path:["string get_include_path()","Get the current include_path configuration option"],get_included_files:["array get_included_files()","Returns an array with the file names that were include_once()'d"],get_loaded_extensions:["array get_loaded_extensions([bool zend_extensions])","Return an array containing names of loaded extensions"],get_magic_quotes_gpc:["int get_magic_quotes_gpc()","Get the current active configuration setting of magic_quotes_gpc"],get_magic_quotes_runtime:["int get_magic_quotes_runtime()","Get the current active configuration setting of magic_quotes_runtime"],get_meta_tags:["array get_meta_tags(string filename [, bool use_include_path])","Extracts all meta tag content attributes from a file and returns an array"],get_object_vars:["array get_object_vars(object obj)","Returns an array of object properties"],get_parent_class:["string get_parent_class([mixed object])","Retrieves the parent class name for object or class or current scope."],get_resource_type:["string get_resource_type(resource res)","Get the resource type name for a given resource"],getallheaders:["array getallheaders()",""],getcwd:["mixed getcwd()","Gets the current directory"],getdate:["array getdate([int timestamp])","Get date/time information"],getenv:["string getenv(string varname)","Get the value of an environment variable"],gethostbyaddr:["string gethostbyaddr(string ip_address)","Get the Internet host name corresponding to a given IP address"],gethostbyname:["string gethostbyname(string hostname)","Get the IP address corresponding to a given Internet host name"],gethostbynamel:["array gethostbynamel(string hostname)","Return a list of IP addresses that a given hostname resolves to."],gethostname:["string gethostname()","Get the host name of the current machine"],getimagesize:["array getimagesize(string imagefile [, array info])","Get the size of an image as 4-element array"],getlastmod:["int getlastmod()","Get time of last page modification"],getmygid:["int getmygid()","Get PHP script owner's GID"],getmyinode:["int getmyinode()","Get the inode of the current script being parsed"],getmypid:["int getmypid()","Get current process ID"],getmyuid:["int getmyuid()","Get PHP script owner's UID"],getopt:["array getopt(string options [, array longopts])","Get options from the command line argument list"],getprotobyname:["int getprotobyname(string name)","Returns protocol number associated with name as per /etc/protocols"],getprotobynumber:["string getprotobynumber(int proto)","Returns protocol name associated with protocol number proto"],getrandmax:["int getrandmax()","Returns the maximum value a random number can have"],getrusage:["array getrusage([int who])","Returns an array of usage statistics"],getservbyname:["int getservbyname(string service, string protocol)",'Returns port associated with service. Protocol must be "tcp" or "udp"'],getservbyport:["string getservbyport(int port, string protocol)",'Returns service name associated with port. Protocol must be "tcp" or "udp"'],gettext:["string gettext(string msgid)","Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist"],gettimeofday:["array gettimeofday([bool get_as_float])","Returns the current time as array"],gettype:["string gettype(mixed var)","Returns the type of the variable"],glob:["array glob(string pattern [, int flags])","Find pathnames matching a pattern"],gmdate:["string gmdate(string format [, long timestamp])","Format a GMT date/time"],gmmktime:["int gmmktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])","Get UNIX timestamp for a GMT date"],gmp_abs:["resource gmp_abs(resource a)","Calculates absolute value"],gmp_add:["resource gmp_add(resource a, resource b)","Add a and b"],gmp_and:["resource gmp_and(resource a, resource b)","Calculates logical AND of a and b"],gmp_clrbit:["void gmp_clrbit(resource &a, int index)","Clears bit in a"],gmp_cmp:["int gmp_cmp(resource a, resource b)","Compares two numbers"],gmp_com:["resource gmp_com(resource a)","Calculates one's complement of a"],gmp_div_q:["resource gmp_div_q(resource a, resource b [, int round])","Divide a by b, returns quotient only"],gmp_div_qr:["array gmp_div_qr(resource a, resource b [, int round])","Divide a by b, returns quotient and reminder"],gmp_div_r:["resource gmp_div_r(resource a, resource b [, int round])","Divide a by b, returns reminder only"],gmp_divexact:["resource gmp_divexact(resource a, resource b)","Divide a by b using exact division algorithm"],gmp_fact:["resource gmp_fact(int a)","Calculates factorial function"],gmp_gcd:["resource gmp_gcd(resource a, resource b)","Computes greatest common denominator (gcd) of a and b"],gmp_gcdext:["array gmp_gcdext(resource a, resource b)","Computes G, S, and T, such that AS + BT = G = `gcd' (A, B)"],gmp_hamdist:["int gmp_hamdist(resource a, resource b)","Calculates hamming distance between a and b"],gmp_init:["resource gmp_init(mixed number [, int base])","Initializes GMP number"],gmp_intval:["int gmp_intval(resource gmpnumber)","Gets signed long value of GMP number"],gmp_invert:["resource gmp_invert(resource a, resource b)","Computes the inverse of a modulo b"],gmp_jacobi:["int gmp_jacobi(resource a, resource b)","Computes Jacobi symbol"],gmp_legendre:["int gmp_legendre(resource a, resource b)","Computes Legendre symbol"],gmp_mod:["resource gmp_mod(resource a, resource b)","Computes a modulo b"],gmp_mul:["resource gmp_mul(resource a, resource b)","Multiply a and b"],gmp_neg:["resource gmp_neg(resource a)","Negates a number"],gmp_nextprime:["resource gmp_nextprime(resource a)","Finds next prime of a"],gmp_or:["resource gmp_or(resource a, resource b)","Calculates logical OR of a and b"],gmp_perfect_square:["bool gmp_perfect_square(resource a)","Checks if a is an exact square"],gmp_popcount:["int gmp_popcount(resource a)","Calculates the population count of a"],gmp_pow:["resource gmp_pow(resource base, int exp)","Raise base to power exp"],gmp_powm:["resource gmp_powm(resource base, resource exp, resource mod)","Raise base to power exp and take result modulo mod"],gmp_prob_prime:["int gmp_prob_prime(resource a[, int reps])",'Checks if a is "probably prime"'],gmp_random:["resource gmp_random([int limiter])","Gets random number"],gmp_scan0:["int gmp_scan0(resource a, int start)","Finds first zero bit"],gmp_scan1:["int gmp_scan1(resource a, int start)","Finds first non-zero bit"],gmp_setbit:["void gmp_setbit(resource &a, int index[, bool set_clear])","Sets or clear bit in a"],gmp_sign:["int gmp_sign(resource a)","Gets the sign of the number"],gmp_sqrt:["resource gmp_sqrt(resource a)","Takes integer part of square root of a"],gmp_sqrtrem:["array gmp_sqrtrem(resource a)","Square root with remainder"],gmp_strval:["string gmp_strval(resource gmpnumber [, int base])","Gets string representation of GMP number"],gmp_sub:["resource gmp_sub(resource a, resource b)","Subtract b from a"],gmp_testbit:["bool gmp_testbit(resource a, int index)","Tests if bit is set in a"],gmp_xor:["resource gmp_xor(resource a, resource b)","Calculates logical exclusive OR of a and b"],gmstrftime:["string gmstrftime(string format [, int timestamp])","Format a GMT/UCT time/date according to locale settings"],grapheme_extract:["string grapheme_extract(string str, int size[, int extract_type[, int start[, int next]]])","Function to extract a sequence of default grapheme clusters"],grapheme_stripos:["int grapheme_stripos(string haystack, string needle [, int offset ])","Find position of first occurrence of a string within another, ignoring case differences"],grapheme_stristr:["string grapheme_stristr(string haystack, string needle[, bool part])","Finds first occurrence of a string within another"],grapheme_strlen:["int grapheme_strlen(string str)","Get number of graphemes in a string"],grapheme_strpos:["int grapheme_strpos(string haystack, string needle [, int offset ])","Find position of first occurrence of a string within another"],grapheme_strripos:["int grapheme_strripos(string haystack, string needle [, int offset])","Find position of last occurrence of a string within another, ignoring case"],grapheme_strrpos:["int grapheme_strrpos(string haystack, string needle [, int offset])","Find position of last occurrence of a string within another"],grapheme_strstr:["string grapheme_strstr(string haystack, string needle[, bool part])","Finds first occurrence of a string within another"],grapheme_substr:["string grapheme_substr(string str, int start [, int length])","Returns part of a string"],gregoriantojd:["int gregoriantojd(int month, int day, int year)","Converts a gregorian calendar date to julian day count"],gzcompress:["string gzcompress(string data [, int level])","Gzip-compress a string"],gzdeflate:["string gzdeflate(string data [, int level])","Gzip-compress a string"],gzencode:["string gzencode(string data [, int level [, int encoding_mode]])","GZ encode a string"],gzfile:["array gzfile(string filename [, int use_include_path])","Read und uncompress entire .gz-file into an array"],gzinflate:["string gzinflate(string data [, int length])","Unzip a gzip-compressed string"],gzopen:["resource gzopen(string filename, string mode [, int use_include_path])","Open a .gz-file and return a .gz-file pointer"],gzuncompress:["string gzuncompress(string data [, int length])","Unzip a gzip-compressed string"],hash:["string hash(string algo, string data[, bool raw_output = false])","Generate a hash of a given input string Returns lowercase hexits by default"],hash_algos:["array hash_algos()","Return a list of registered hashing algorithms"],hash_copy:["resource hash_copy(resource context)","Copy hash resource"],hash_file:["string hash_file(string algo, string filename[, bool raw_output = false])","Generate a hash of a given file Returns lowercase hexits by default"],hash_final:["string hash_final(resource context[, bool raw_output=false])","Output resulting digest"],hash_hmac:["string hash_hmac(string algo, string data, string key[, bool raw_output = false])","Generate a hash of a given input string with a key using HMAC Returns lowercase hexits by default"],hash_hmac_file:["string hash_hmac_file(string algo, string filename, string key[, bool raw_output = false])","Generate a hash of a given file with a key using HMAC Returns lowercase hexits by default"],hash_init:["resource hash_init(string algo[, int options, string key])","Initialize a hashing context"],hash_update:["bool hash_update(resource context, string data)","Pump data into the hashing algorithm"],hash_update_file:["bool hash_update_file(resource context, string filename[, resource context])","Pump data into the hashing algorithm from a file"],hash_update_stream:["int hash_update_stream(resource context, resource handle[, integer length])","Pump data into the hashing algorithm from an open stream"],header:["void header(string header [, bool replace, [int http_response_code]])","Sends a raw HTTP header"],header_remove:["void header_remove([string name])","Removes an HTTP header previously set using header()"],headers_list:["array headers_list()","Return list of headers to be sent / already sent"],headers_sent:["bool headers_sent([string &$file [, int &$line]])","Returns true if headers have already been sent, false otherwise"],hebrev:["string hebrev(string str [, int max_chars_per_line])","Converts logical Hebrew text to visual text"],hebrevc:["string hebrevc(string str [, int max_chars_per_line])","Converts logical Hebrew text to visual text with newline conversion"],hexdec:["int hexdec(string hexadecimal_number)","Returns the decimal equivalent of the hexadecimal number"],highlight_file:["bool highlight_file(string file_name [, bool return] )","Syntax highlight a source file"],highlight_string:["bool highlight_string(string string [, bool return] )","Syntax highlight a string or optionally return it"],html_entity_decode:["string html_entity_decode(string string [, int quote_style][, string charset])","Convert all HTML entities to their applicable characters"],htmlentities:["string htmlentities(string string [, int quote_style[, string charset[, bool double_encode]]])","Convert all applicable characters to HTML entities"],htmlspecialchars:["string htmlspecialchars(string string [, int quote_style[, string charset[, bool double_encode]]])","Convert special characters to HTML entities"],htmlspecialchars_decode:["string htmlspecialchars_decode(string string [, int quote_style])","Convert special HTML entities back to characters"],http_build_query:["string http_build_query(mixed formdata [, string prefix [, string arg_separator]])","Generates a form-encoded query string from an associative array or object."],hypot:["float hypot(float num1, float num2)","Returns sqrt(num1*num1 + num2*num2)"],ibase_add_user:["bool ibase_add_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])","Add a user to security database"],ibase_affected_rows:["int ibase_affected_rows( [ resource link_identifier ] )","Returns the number of rows affected by the previous INSERT, UPDATE or DELETE statement"],ibase_backup:["mixed ibase_backup(resource service_handle, string source_db, string dest_file [, int options [, bool verbose]])","Initiates a backup task in the service manager and returns immediately"],ibase_blob_add:["bool ibase_blob_add(resource blob_handle, string data)","Add data into created blob"],ibase_blob_cancel:["bool ibase_blob_cancel(resource blob_handle)","Cancel creating blob"],ibase_blob_close:["string ibase_blob_close(resource blob_handle)","Close blob"],ibase_blob_create:["resource ibase_blob_create([resource link_identifier])","Create blob for adding data"],ibase_blob_echo:["bool ibase_blob_echo([ resource link_identifier, ] string blob_id)","Output blob contents to browser"],ibase_blob_get:["string ibase_blob_get(resource blob_handle, int len)","Get len bytes data from open blob"],ibase_blob_import:["string ibase_blob_import([ resource link_identifier, ] resource file)","Create blob, copy file in it, and close it"],ibase_blob_info:["array ibase_blob_info([ resource link_identifier, ] string blob_id)","Return blob length and other useful info"],ibase_blob_open:["resource ibase_blob_open([ resource link_identifier, ] string blob_id)","Open blob for retrieving data parts"],ibase_close:["bool ibase_close([resource link_identifier])","Close an InterBase connection"],ibase_commit:["bool ibase_commit( resource link_identifier )","Commit transaction"],ibase_commit_ret:["bool ibase_commit_ret( resource link_identifier )","Commit transaction and retain the transaction context"],ibase_connect:["resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])","Open a connection to an InterBase database"],ibase_db_info:["string ibase_db_info(resource service_handle, string db, int action [, int argument])","Request statistics about a database"],ibase_delete_user:["bool ibase_delete_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])","Delete a user from security database"],ibase_drop_db:["bool ibase_drop_db([resource link_identifier])","Drop an InterBase database"],ibase_errcode:["int ibase_errcode()","Return error code"],ibase_errmsg:["string ibase_errmsg()","Return error message"],ibase_execute:["mixed ibase_execute(resource query [, mixed bind_arg [, mixed bind_arg [, ...]]])","Execute a previously prepared query"],ibase_fetch_assoc:["array ibase_fetch_assoc(resource result [, int fetch_flags])","Fetch a row from the results of a query"],ibase_fetch_object:["object ibase_fetch_object(resource result [, int fetch_flags])","Fetch a object from the results of a query"],ibase_fetch_row:["array ibase_fetch_row(resource result [, int fetch_flags])","Fetch a row from the results of a query"],ibase_field_info:["array ibase_field_info(resource query_result, int field_number)","Get information about a field"],ibase_free_event_handler:["bool ibase_free_event_handler(resource event)","Frees the event handler set by ibase_set_event_handler()"],ibase_free_query:["bool ibase_free_query(resource query)","Free memory used by a query"],ibase_free_result:["bool ibase_free_result(resource result)","Free the memory used by a result"],ibase_gen_id:["int ibase_gen_id(string generator [, int increment [, resource link_identifier ]])","Increments the named generator and returns its new value"],ibase_maintain_db:["bool ibase_maintain_db(resource service_handle, string db, int action [, int argument])","Execute a maintenance command on the database server"],ibase_modify_user:["bool ibase_modify_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])","Modify a user in security database"],ibase_name_result:["bool ibase_name_result(resource result, string name)","Assign a name to a result for use with ... WHERE CURRENT OF statements"],ibase_num_fields:["int ibase_num_fields(resource query_result)","Get the number of fields in result"],ibase_num_params:["int ibase_num_params(resource query)","Get the number of params in a prepared query"],ibase_num_rows:["int ibase_num_rows( resource result_identifier )","Return the number of rows that are available in a result"],ibase_param_info:["array ibase_param_info(resource query, int field_number)","Get information about a parameter"],ibase_pconnect:["resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])","Open a persistent connection to an InterBase database"],ibase_prepare:["resource ibase_prepare(resource link_identifier[, string query [, resource trans_identifier ]])","Prepare a query for later execution"],ibase_query:["mixed ibase_query([resource link_identifier, [ resource link_identifier, ]] string query [, mixed bind_arg [, mixed bind_arg [, ...]]])","Execute a query"],ibase_restore:["mixed ibase_restore(resource service_handle, string source_file, string dest_db [, int options [, bool verbose]])","Initiates a restore task in the service manager and returns immediately"],ibase_rollback:["bool ibase_rollback( resource link_identifier )","Rollback transaction"],ibase_rollback_ret:["bool ibase_rollback_ret( resource link_identifier )","Rollback transaction and retain the transaction context"],ibase_server_info:["string ibase_server_info(resource service_handle, int action)","Request information about a database server"],ibase_service_attach:["resource ibase_service_attach(string host, string dba_username, string dba_password)","Connect to the service manager"],ibase_service_detach:["bool ibase_service_detach(resource service_handle)","Disconnect from the service manager"],ibase_set_event_handler:["resource ibase_set_event_handler([resource link_identifier,] callback handler, string event [, string event [, ...]])","Register the callback for handling each of the named events"],ibase_trans:["resource ibase_trans([int trans_args [, resource link_identifier [, ... ], int trans_args [, resource link_identifier [, ... ]] [, ...]]])","Start a transaction over one or several databases"],ibase_wait_event:["string ibase_wait_event([resource link_identifier,] string event [, string event [, ...]])","Waits for any one of the passed Interbase events to be posted by the database, and returns its name"],iconv:["string iconv(string in_charset, string out_charset, string str)","Returns str converted to the out_charset character set"],iconv_get_encoding:["mixed iconv_get_encoding([string type])","Get internal encoding and output encoding for ob_iconv_handler()"],iconv_mime_decode:["string iconv_mime_decode(string encoded_string [, int mode, string charset])","Decodes a mime header field"],iconv_mime_decode_headers:["array iconv_mime_decode_headers(string headers [, int mode, string charset])","Decodes multiple mime header fields"],iconv_mime_encode:["string iconv_mime_encode(string field_name, string field_value [, array preference])","Composes a mime header field with field_name and field_value in a specified scheme"],iconv_set_encoding:["bool iconv_set_encoding(string type, string charset)","Sets internal encoding and output encoding for ob_iconv_handler()"],iconv_strlen:["int iconv_strlen(string str [, string charset])","Returns the character count of str"],iconv_strpos:["int iconv_strpos(string haystack, string needle [, int offset [, string charset]])","Finds position of first occurrence of needle within part of haystack beginning with offset"],iconv_strrpos:["int iconv_strrpos(string haystack, string needle [, string charset])","Finds position of last occurrence of needle within part of haystack beginning with offset"],iconv_substr:["string iconv_substr(string str, int offset, [int length, string charset])","Returns specified part of a string"],idate:["int idate(string format [, int timestamp])","Format a local time/date as integer"],idn_to_ascii:["int idn_to_ascii(string domain[, int options])","Converts an Unicode domain to ASCII representation, as defined in the IDNA RFC"],idn_to_utf8:["int idn_to_utf8(string domain[, int options])","Converts an ASCII representation of the domain to Unicode (UTF-8), as defined in the IDNA RFC"],ignore_user_abort:["int ignore_user_abort([string value])","Set whether we want to ignore a user abort event or not"],image2wbmp:["bool image2wbmp(resource im [, string filename [, int threshold]])","Output WBMP image to browser or file"],image_type_to_extension:["string image_type_to_extension(int imagetype [, bool include_dot])","Get file extension for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype"],image_type_to_mime_type:["string image_type_to_mime_type(int imagetype)","Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype"],imagealphablending:["bool imagealphablending(resource im, bool on)","Turn alpha blending mode on or off for the given image"],imageantialias:["bool imageantialias(resource im, bool on)","Should antialiased functions used or not"],imagearc:["bool imagearc(resource im, int cx, int cy, int w, int h, int s, int e, int col)","Draw a partial ellipse"],imagechar:["bool imagechar(resource im, int font, int x, int y, string c, int col)","Draw a character"],imagecharup:["bool imagecharup(resource im, int font, int x, int y, string c, int col)","Draw a character rotated 90 degrees counter-clockwise"],imagecolorallocate:["int imagecolorallocate(resource im, int red, int green, int blue)","Allocate a color for an image"],imagecolorallocatealpha:["int imagecolorallocatealpha(resource im, int red, int green, int blue, int alpha)","Allocate a color with an alpha level. Works for true color and palette based images"],imagecolorat:["int imagecolorat(resource im, int x, int y)","Get the index of the color of a pixel"],imagecolorclosest:["int imagecolorclosest(resource im, int red, int green, int blue)","Get the index of the closest color to the specified color"],imagecolorclosestalpha:["int imagecolorclosestalpha(resource im, int red, int green, int blue, int alpha)","Find the closest matching colour with alpha transparency"],imagecolorclosesthwb:["int imagecolorclosesthwb(resource im, int red, int green, int blue)","Get the index of the color which has the hue, white and blackness nearest to the given color"],imagecolordeallocate:["bool imagecolordeallocate(resource im, int index)","De-allocate a color for an image"],imagecolorexact:["int imagecolorexact(resource im, int red, int green, int blue)","Get the index of the specified color"],imagecolorexactalpha:["int imagecolorexactalpha(resource im, int red, int green, int blue, int alpha)","Find exact match for colour with transparency"],imagecolormatch:["bool imagecolormatch(resource im1, resource im2)","Makes the colors of the palette version of an image more closely match the true color version"],imagecolorresolve:["int imagecolorresolve(resource im, int red, int green, int blue)","Get the index of the specified color or its closest possible alternative"],imagecolorresolvealpha:["int imagecolorresolvealpha(resource im, int red, int green, int blue, int alpha)","Resolve/Allocate a colour with an alpha level. Works for true colour and palette based images"],imagecolorset:["void imagecolorset(resource im, int col, int red, int green, int blue)","Set the color for the specified palette index"],imagecolorsforindex:["array imagecolorsforindex(resource im, int col)","Get the colors for an index"],imagecolorstotal:["int imagecolorstotal(resource im)","Find out the number of colors in an image's palette"],imagecolortransparent:["int imagecolortransparent(resource im [, int col])","Define a color as transparent"],imageconvolution:["resource imageconvolution(resource src_im, array matrix3x3, double div, double offset)","Apply a 3x3 convolution matrix, using coefficient div and offset"],imagecopy:["bool imagecopy(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)","Copy part of an image"],imagecopymerge:["bool imagecopymerge(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)","Merge one part of an image with another"],imagecopymergegray:["bool imagecopymergegray(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)","Merge one part of an image with another"],imagecopyresampled:["bool imagecopyresampled(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)","Copy and resize part of an image using resampling to help ensure clarity"],imagecopyresized:["bool imagecopyresized(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)","Copy and resize part of an image"],imagecreate:["resource imagecreate(int x_size, int y_size)","Create a new image"],imagecreatefromgd:["resource imagecreatefromgd(string filename)","Create a new image from GD file or URL"],imagecreatefromgd2:["resource imagecreatefromgd2(string filename)","Create a new image from GD2 file or URL"],imagecreatefromgd2part:["resource imagecreatefromgd2part(string filename, int srcX, int srcY, int width, int height)","Create a new image from a given part of GD2 file or URL"],imagecreatefromgif:["resource imagecreatefromgif(string filename)","Create a new image from GIF file or URL"],imagecreatefromjpeg:["resource imagecreatefromjpeg(string filename)","Create a new image from JPEG file or URL"],imagecreatefrompng:["resource imagecreatefrompng(string filename)","Create a new image from PNG file or URL"],imagecreatefromstring:["resource imagecreatefromstring(string image)","Create a new image from the image stream in the string"],imagecreatefromwbmp:["resource imagecreatefromwbmp(string filename)","Create a new image from WBMP file or URL"],imagecreatefromxbm:["resource imagecreatefromxbm(string filename)","Create a new image from XBM file or URL"],imagecreatefromxpm:["resource imagecreatefromxpm(string filename)","Create a new image from XPM file or URL"],imagecreatetruecolor:["resource imagecreatetruecolor(int x_size, int y_size)","Create a new true color image"],imagedashedline:["bool imagedashedline(resource im, int x1, int y1, int x2, int y2, int col)","Draw a dashed line"],imagedestroy:["bool imagedestroy(resource im)","Destroy an image"],imageellipse:["bool imageellipse(resource im, int cx, int cy, int w, int h, int color)","Draw an ellipse"],imagefill:["bool imagefill(resource im, int x, int y, int col)","Flood fill"],imagefilledarc:["bool imagefilledarc(resource im, int cx, int cy, int w, int h, int s, int e, int col, int style)","Draw a filled partial ellipse"],imagefilledellipse:["bool imagefilledellipse(resource im, int cx, int cy, int w, int h, int color)","Draw an ellipse"],imagefilledpolygon:["bool imagefilledpolygon(resource im, array point, int num_points, int col)","Draw a filled polygon"],imagefilledrectangle:["bool imagefilledrectangle(resource im, int x1, int y1, int x2, int y2, int col)","Draw a filled rectangle"],imagefilltoborder:["bool imagefilltoborder(resource im, int x, int y, int border, int col)","Flood fill to specific color"],imagefilter:["bool imagefilter(resource src_im, int filtertype, [args] )","Applies Filter an image using a custom angle"],imagefontheight:["int imagefontheight(int font)","Get font height"],imagefontwidth:["int imagefontwidth(int font)","Get font width"],imageftbbox:["array imageftbbox(float size, float angle, string font_file, string text [, array extrainfo])","Give the bounding box of a text using fonts via freetype2"],imagefttext:["array imagefttext(resource im, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo])","Write text to the image using fonts via freetype2"],imagegammacorrect:["bool imagegammacorrect(resource im, float inputgamma, float outputgamma)","Apply a gamma correction to a GD image"],imagegd:["bool imagegd(resource im [, string filename])","Output GD image to browser or file"],imagegd2:["bool imagegd2(resource im [, string filename, [, int chunk_size, [, int type]]])","Output GD2 image to browser or file"],imagegif:["bool imagegif(resource im [, string filename])","Output GIF image to browser or file"],imagegrabscreen:["resource imagegrabscreen()","Grab a screenshot"],imagegrabwindow:["resource imagegrabwindow(int window_handle [, int client_area])","Grab a window or its client area using a windows handle (HWND property in COM instance)"],imageinterlace:["int imageinterlace(resource im [, int interlace])","Enable or disable interlace"],imageistruecolor:["bool imageistruecolor(resource im)","return true if the image uses truecolor"],imagejpeg:["bool imagejpeg(resource im [, string filename [, int quality]])","Output JPEG image to browser or file"],imagelayereffect:["bool imagelayereffect(resource im, int effect)","Set the alpha blending flag to use the bundled libgd layering effects"],imageline:["bool imageline(resource im, int x1, int y1, int x2, int y2, int col)","Draw a line"],imageloadfont:["int imageloadfont(string filename)","Load a new font"],imagepalettecopy:["void imagepalettecopy(resource dst, resource src)","Copy the palette from the src image onto the dst image"],imagepng:["bool imagepng(resource im [, string filename])","Output PNG image to browser or file"],imagepolygon:["bool imagepolygon(resource im, array point, int num_points, int col)","Draw a polygon"],imagepsbbox:["array imagepsbbox(string text, resource font, int size [, int space, int tightness, float angle])","Return the bounding box needed by a string if rasterized"],imagepscopyfont:["int imagepscopyfont(int font_index)","Make a copy of a font for purposes like extending or reenconding"],imagepsencodefont:["bool imagepsencodefont(resource font_index, string filename)","To change a fonts character encoding vector"],imagepsextendfont:["bool imagepsextendfont(resource font_index, float extend)","Extend or or condense if (extend < 1) a font"],imagepsfreefont:["bool imagepsfreefont(resource font_index)","Free memory used by a font"],imagepsloadfont:["resource imagepsloadfont(string pathname)","Load a new font from specified file"],imagepsslantfont:["bool imagepsslantfont(resource font_index, float slant)","Slant a font"],imagepstext:["array imagepstext(resource image, string text, resource font, int size, int foreground, int background, int xcoord, int ycoord [, int space [, int tightness [, float angle [, int antialias])","Rasterize a string over an image"],imagerectangle:["bool imagerectangle(resource im, int x1, int y1, int x2, int y2, int col)","Draw a rectangle"],imagerotate:["resource imagerotate(resource src_im, float angle, int bgdcolor [, int ignoretransparent])","Rotate an image using a custom angle"],imagesavealpha:["bool imagesavealpha(resource im, bool on)","Include alpha channel to a saved image"],imagesetbrush:["bool imagesetbrush(resource image, resource brush)",'Set the brush image to $brush when filling $image with the "IMG_COLOR_BRUSHED" color'],imagesetpixel:["bool imagesetpixel(resource im, int x, int y, int col)","Set a single pixel"],imagesetstyle:["bool imagesetstyle(resource im, array styles)","Set the line drawing styles for use with imageline and IMG_COLOR_STYLED."],imagesetthickness:["bool imagesetthickness(resource im, int thickness)","Set line thickness for drawing lines, ellipses, rectangles, polygons etc."],imagesettile:["bool imagesettile(resource image, resource tile)",'Set the tile image to $tile when filling $image with the "IMG_COLOR_TILED" color'],imagestring:["bool imagestring(resource im, int font, int x, int y, string str, int col)","Draw a string horizontally"],imagestringup:["bool imagestringup(resource im, int font, int x, int y, string str, int col)","Draw a string vertically - rotated 90 degrees counter-clockwise"],imagesx:["int imagesx(resource im)","Get image width"],imagesy:["int imagesy(resource im)","Get image height"],imagetruecolortopalette:["void imagetruecolortopalette(resource im, bool ditherFlag, int colorsWanted)","Convert a true colour image to a palette based image with a number of colours, optionally using dithering."],imagettfbbox:["array imagettfbbox(float size, float angle, string font_file, string text)","Give the bounding box of a text using TrueType fonts"],imagettftext:["array imagettftext(resource im, float size, float angle, int x, int y, int col, string font_file, string text)","Write text to the image using a TrueType font"],imagetypes:["int imagetypes()","Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM"],imagewbmp:["bool imagewbmp(resource im [, string filename, [, int foreground]])","Output WBMP image to browser or file"],imagexbm:["int imagexbm(int im, string filename [, int foreground])","Output XBM image to browser or file"],imap_8bit:["string imap_8bit(string text)","Convert an 8-bit string to a quoted-printable string"],imap_alerts:["array imap_alerts()","Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called."],imap_append:["bool imap_append(resource stream_id, string folder, string message [, string options [, string internal_date]])","Append a new message to a specified mailbox"],imap_base64:["string imap_base64(string text)","Decode BASE64 encoded text"],imap_binary:["string imap_binary(string text)","Convert an 8bit string to a base64 string"],imap_body:["string imap_body(resource stream_id, int msg_no [, int options])","Read the message body"],imap_bodystruct:["object imap_bodystruct(resource stream_id, int msg_no, string section)","Read the structure of a specified body section of a specific message"],imap_check:["object imap_check(resource stream_id)","Get mailbox properties"],imap_clearflag_full:["bool imap_clearflag_full(resource stream_id, string sequence, string flag [, int options])","Clears flags on messages"],imap_close:["bool imap_close(resource stream_id [, int options])","Close an IMAP stream"],imap_createmailbox:["bool imap_createmailbox(resource stream_id, string mailbox)","Create a new mailbox"],imap_delete:["bool imap_delete(resource stream_id, int msg_no [, int options])","Mark a message for deletion"],imap_deletemailbox:["bool imap_deletemailbox(resource stream_id, string mailbox)","Delete a mailbox"],imap_errors:["array imap_errors()","Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called."],imap_expunge:["bool imap_expunge(resource stream_id)","Permanently delete all messages marked for deletion"],imap_fetch_overview:["array imap_fetch_overview(resource stream_id, string sequence [, int options])","Read an overview of the information in the headers of the given message sequence"],imap_fetchbody:["string imap_fetchbody(resource stream_id, int msg_no, string section [, int options])","Get a specific body section"],imap_fetchheader:["string imap_fetchheader(resource stream_id, int msg_no [, int options])","Get the full unfiltered header for a message"],imap_fetchstructure:["object imap_fetchstructure(resource stream_id, int msg_no [, int options])","Read the full structure of a message"],imap_gc:["bool imap_gc(resource stream_id, int flags)","This function garbage collects (purges) the cache of entries of a specific type."],imap_get_quota:["array imap_get_quota(resource stream_id, string qroot)","Returns the quota set to the mailbox account qroot"],imap_get_quotaroot:["array imap_get_quotaroot(resource stream_id, string mbox)","Returns the quota set to the mailbox account mbox"],imap_getacl:["array imap_getacl(resource stream_id, string mailbox)","Gets the ACL for a given mailbox"],imap_getmailboxes:["array imap_getmailboxes(resource stream_id, string ref, string pattern)","Reads the list of mailboxes and returns a full array of objects containing name, attributes, and delimiter"],imap_getsubscribed:["array imap_getsubscribed(resource stream_id, string ref, string pattern)","Return a list of subscribed mailboxes, in the same format as imap_getmailboxes()"],imap_headerinfo:["object imap_headerinfo(resource stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])","Read the headers of the message"],imap_headers:["array imap_headers(resource stream_id)","Returns headers for all messages in a mailbox"],imap_last_error:["string imap_last_error()","Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call."],imap_list:["array imap_list(resource stream_id, string ref, string pattern)","Read the list of mailboxes"],imap_listscan:["array imap_listscan(resource stream_id, string ref, string pattern, string content)","Read list of mailboxes containing a certain string"],imap_lsub:["array imap_lsub(resource stream_id, string ref, string pattern)","Return a list of subscribed mailboxes"],imap_mail:["bool imap_mail(string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]])","Send an email message"],imap_mail_compose:["string imap_mail_compose(array envelope, array body)","Create a MIME message based on given envelope and body sections"],imap_mail_copy:["bool imap_mail_copy(resource stream_id, string msglist, string mailbox [, int options])","Copy specified message to a mailbox"],imap_mail_move:["bool imap_mail_move(resource stream_id, string sequence, string mailbox [, int options])","Move specified message to a mailbox"],imap_mailboxmsginfo:["object imap_mailboxmsginfo(resource stream_id)","Returns info about the current mailbox"],imap_mime_header_decode:["array imap_mime_header_decode(string str)","Decode mime header element in accordance with RFC 2047 and return array of objects containing 'charset' encoding and decoded 'text'"],imap_msgno:["int imap_msgno(resource stream_id, int unique_msg_id)","Get the sequence number associated with a UID"],imap_mutf7_to_utf8:["string imap_mutf7_to_utf8(string in)","Decode a modified UTF-7 string to UTF-8"],imap_num_msg:["int imap_num_msg(resource stream_id)","Gives the number of messages in the current mailbox"],imap_num_recent:["int imap_num_recent(resource stream_id)","Gives the number of recent messages in current mailbox"],imap_open:["resource imap_open(string mailbox, string user, string password [, int options [, int n_retries]])","Open an IMAP stream to a mailbox"],imap_ping:["bool imap_ping(resource stream_id)","Check if the IMAP stream is still active"],imap_qprint:["string imap_qprint(string text)","Convert a quoted-printable string to an 8-bit string"],imap_renamemailbox:["bool imap_renamemailbox(resource stream_id, string old_name, string new_name)","Rename a mailbox"],imap_reopen:["bool imap_reopen(resource stream_id, string mailbox [, int options [, int n_retries]])","Reopen an IMAP stream to a new mailbox"],imap_rfc822_parse_adrlist:["array imap_rfc822_parse_adrlist(string address_string, string default_host)","Parses an address string"],imap_rfc822_parse_headers:["object imap_rfc822_parse_headers(string headers [, string default_host])","Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo()"],imap_rfc822_write_address:["string imap_rfc822_write_address(string mailbox, string host, string personal)","Returns a properly formatted email address given the mailbox, host, and personal info"],imap_savebody:['bool imap_savebody(resource stream_id, string|resource file, int msg_no[, string section = ""[, int options = 0]])',"Save a specific body section to a file"],imap_search:["array imap_search(resource stream_id, string criteria [, int options [, string charset]])","Return a list of messages matching the given criteria"],imap_set_quota:["bool imap_set_quota(resource stream_id, string qroot, int mailbox_size)","Will set the quota for qroot mailbox"],imap_setacl:["bool imap_setacl(resource stream_id, string mailbox, string id, string rights)","Sets the ACL for a given mailbox"],imap_setflag_full:["bool imap_setflag_full(resource stream_id, string sequence, string flag [, int options])","Sets flags on messages"],imap_sort:["array imap_sort(resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset]]])","Sort an array of message headers, optionally including only messages that meet specified criteria."],imap_status:["object imap_status(resource stream_id, string mailbox, int options)","Get status info from a mailbox"],imap_subscribe:["bool imap_subscribe(resource stream_id, string mailbox)","Subscribe to a mailbox"],imap_thread:["array imap_thread(resource stream_id [, int options])","Return threaded by REFERENCES tree"],imap_timeout:["mixed imap_timeout(int timeout_type [, int timeout])","Set or fetch imap timeout"],imap_uid:["int imap_uid(resource stream_id, int msg_no)","Get the unique message id associated with a standard sequential message number"],imap_undelete:["bool imap_undelete(resource stream_id, int msg_no [, int flags])","Remove the delete flag from a message"],imap_unsubscribe:["bool imap_unsubscribe(resource stream_id, string mailbox)","Unsubscribe from a mailbox"],imap_utf7_decode:["string imap_utf7_decode(string buf)","Decode a modified UTF-7 string"],imap_utf7_encode:["string imap_utf7_encode(string buf)","Encode a string in modified UTF-7"],imap_utf8:["string imap_utf8(string mime_encoded_text)","Convert a mime-encoded text to UTF-8"],imap_utf8_to_mutf7:["string imap_utf8_to_mutf7(string in)","Encode a UTF-8 string to modified UTF-7"],implode:["string implode([string glue,] array pieces)","Joins array elements placing glue string between items and return one string"],import_request_variables:["bool import_request_variables(string types [, string prefix])","Import GET/POST/Cookie variables into the global scope"],in_array:["bool in_array(mixed needle, array haystack [, bool strict])","Checks if the given value exists in the array"],include:["bool include(string path)","Includes and evaluates the specified file"],include_once:["bool include_once(string path)","Includes and evaluates the specified file"],inet_ntop:["string inet_ntop(string in_addr)","Converts a packed inet address to a human readable IP address string"],inet_pton:["string inet_pton(string ip_address)","Converts a human readable IP address to a packed binary string"],ini_get:["string ini_get(string varname)","Get a configuration option"],ini_get_all:["array ini_get_all([string extension[, bool details = true]])","Get all configuration options"],ini_restore:["void ini_restore(string varname)","Restore the value of a configuration option specified by varname"],ini_set:["string ini_set(string varname, string newvalue)","Set a configuration option, returns false on error and the old value of the configuration option on success"],interface_exists:["bool interface_exists(string classname [, bool autoload])","Checks if the class exists"],intl_error_name:["string intl_error_name()","* Return a string for a given error code. * The string will be the same as the name of the error code constant."],intl_get_error_code:["int intl_get_error_code()","* Get code of the last occured error."],intl_get_error_message:["string intl_get_error_message()","* Get text description of the last occured error."],intl_is_failure:["bool intl_is_failure()","* Check whether the given error code indicates a failure. * Returns true if it does, and false if the code * indicates success or a warning."],intval:["int intval(mixed var [, int base])","Get the integer value of a variable using the optional base for the conversion"],ip2long:["int ip2long(string ip_address)","Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address"],iptcembed:["array iptcembed(string iptcdata, string jpeg_file_name [, int spool])","Embed binary IPTC data into a JPEG image."],iptcparse:["array iptcparse(string iptcdata)","Parse binary IPTC-data into associative array"],is_a:["bool is_a(object object, string class_name)","Returns true if the object is of this class or has this class as one of its parents"],is_array:["bool is_array(mixed var)","Returns true if variable is an array"],is_bool:["bool is_bool(mixed var)","Returns true if variable is a boolean"],is_callable:["bool is_callable(mixed var [, bool syntax_only [, string callable_name]])","Returns true if var is callable."],is_countable:["bool is_countable(mixed var)","Returns true if var is countable, false otherwise"],is_dir:["bool is_dir(string filename)","Returns true if file is directory"],is_executable:["bool is_executable(string filename)","Returns true if file is executable"],is_file:["bool is_file(string filename)","Returns true if file is a regular file"],is_finite:["bool is_finite(float val)","Returns whether argument is finite"],is_float:["bool is_float(mixed var)","Returns true if variable is float point"],is_infinite:["bool is_infinite(float val)","Returns whether argument is infinite"],is_link:["bool is_link(string filename)","Returns true if file is symbolic link"],is_long:["bool is_long(mixed var)","Returns true if variable is a long (integer)"],is_nan:["bool is_nan(float val)","Returns whether argument is not a number"],is_null:["bool is_null(mixed var)","Returns true if variable is null"],is_numeric:["bool is_numeric(mixed value)","Returns true if value is a number or a numeric string"],is_object:["bool is_object(mixed var)","Returns true if variable is an object"],is_readable:["bool is_readable(string filename)","Returns true if file can be read"],is_resource:["bool is_resource(mixed var)","Returns true if variable is a resource"],is_scalar:["bool is_scalar(mixed value)","Returns true if value is a scalar"],is_string:["bool is_string(mixed var)","Returns true if variable is a string"],is_subclass_of:["bool is_subclass_of(object object, string class_name)","Returns true if the object has this class as one of its parents"],is_uploaded_file:["bool is_uploaded_file(string path)","Check if file was created by rfc1867 upload"],is_writable:["bool is_writable(string filename)","Returns true if file can be written"],isset:["bool isset(mixed var [, mixed var])","Determine whether a variable is set"],iterator_apply:["int iterator_apply(Traversable iterator, callable function [, array args = null)","Calls a function for every element in an iterator"],iterator_count:["int iterator_count(Traversable iterator)","Count the elements in an iterator"],iterator_to_array:["array iterator_to_array(Traversable iterator [, bool use_keys = true])","Copy the iterator into an array"],jddayofweek:["mixed jddayofweek(int juliandaycount [, int mode])","Returns name or number of day of week from julian day count"],jdmonthname:["string jdmonthname(int juliandaycount, int mode)","Returns name of month for julian day count"],jdtofrench:["string jdtofrench(int juliandaycount)","Converts a julian day count to a french republic calendar date"],jdtogregorian:["string jdtogregorian(int juliandaycount)","Converts a julian day count to a gregorian calendar date"],jdtojewish:["string jdtojewish(int juliandaycount [, bool hebrew [, int fl]])","Converts a julian day count to a jewish calendar date"],jdtojulian:["string jdtojulian(int juliandaycount)","Convert a julian day count to a julian calendar date"],jdtounix:["int jdtounix(int jday)","Convert Julian Day to UNIX timestamp"],jewishtojd:["int jewishtojd(int month, int day, int year)","Converts a jewish calendar date to a julian day count"],join:["string join([string glue,] array pieces)","Returns a string containing a string representation of all the arrayelements in the same order, with the glue string between each element"],jpeg2wbmp:["bool jpeg2wbmp(string f_org, string f_dest, int d_height, int d_width, int threshold)","Convert JPEG image to WBMP image"],json_decode:["mixed json_decode(string json [, bool assoc [, long depth]])","Decodes the JSON representation into a PHP value"],json_encode:["string json_encode(mixed data [, int options])","Returns the JSON representation of a value"],json_last_error:["int json_last_error()","Returns the error code of the last json_decode()."],juliantojd:["int juliantojd(int month, int day, int year)","Converts a julian calendar date to julian day count"],key:["mixed key(array array_arg)","Return the key of the element currently pointed to by the internal array pointer"],krsort:["bool krsort(array &array_arg [, int sort_flags])","Sort an array by key value in reverse order"],ksort:["bool ksort(array &array_arg [, int sort_flags])","Sort an array by key"],lcfirst:["string lcfirst(string str)","Make a string's first character lowercase"],lcg_value:["float lcg_value()","Returns a value from the combined linear congruential generator"],lchgrp:["bool lchgrp(string filename, mixed group)","Change symlink group"],ldap_8859_to_t61:["string ldap_8859_to_t61(string value)","Translate 8859 characters to t61 characters"],ldap_add:["bool ldap_add(resource link, string dn, array entry)","Add entries to LDAP directory"],ldap_bind:["bool ldap_bind(resource link [, string dn [, string password]])","Bind to LDAP directory"],ldap_compare:["bool ldap_compare(resource link, string dn, string attr, string value)","Determine if an entry has a specific value for one of its attributes"],ldap_connect:["resource ldap_connect([string host [, int port [, string wallet [, string wallet_passwd [, int authmode]]]]])","Connect to an LDAP server"],ldap_count_entries:["int ldap_count_entries(resource link, resource result)","Count the number of entries in a search result"],ldap_delete:["bool ldap_delete(resource link, string dn)","Delete an entry from a directory"],ldap_dn2ufn:["string ldap_dn2ufn(string dn)","Convert DN to User Friendly Naming format"],ldap_err2str:["string ldap_err2str(int errno)","Convert error number to error string"],ldap_errno:["int ldap_errno(resource link)","Get the current ldap error number"],ldap_error:["string ldap_error(resource link)","Get the current ldap error string"],ldap_explode_dn:["array ldap_explode_dn(string dn, int with_attrib)","Splits DN into its component parts"],ldap_first_attribute:["string ldap_first_attribute(resource link, resource result_entry)","Return first attribute"],ldap_first_entry:["resource ldap_first_entry(resource link, resource result)","Return first result id"],ldap_first_reference:["resource ldap_first_reference(resource link, resource result)","Return first reference"],ldap_free_result:["bool ldap_free_result(resource result)","Free result memory"],ldap_get_attributes:["array ldap_get_attributes(resource link, resource result_entry)","Get attributes from a search result entry"],ldap_get_dn:["string ldap_get_dn(resource link, resource result_entry)","Get the DN of a result entry"],ldap_get_entries:["array ldap_get_entries(resource link, resource result)","Get all result entries"],ldap_get_option:["bool ldap_get_option(resource link, int option, mixed retval)","Get the current value of various session-wide parameters"],ldap_get_values_len:["array ldap_get_values_len(resource link, resource result_entry, string attribute)","Get all values with lengths from a result entry"],ldap_list:["resource ldap_list(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])","Single-level search"],ldap_mod_add:["bool ldap_mod_add(resource link, string dn, array entry)","Add attribute values to current"],ldap_mod_del:["bool ldap_mod_del(resource link, string dn, array entry)","Delete attribute values"],ldap_mod_replace:["bool ldap_mod_replace(resource link, string dn, array entry)","Replace attribute values with new ones"],ldap_next_attribute:["string ldap_next_attribute(resource link, resource result_entry)","Get the next attribute in result"],ldap_next_entry:["resource ldap_next_entry(resource link, resource result_entry)","Get next result entry"],ldap_next_reference:["resource ldap_next_reference(resource link, resource reference_entry)","Get next reference"],ldap_parse_reference:["bool ldap_parse_reference(resource link, resource reference_entry, array referrals)","Extract information from reference entry"],ldap_parse_result:["bool ldap_parse_result(resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals)","Extract information from result"],ldap_read:["resource ldap_read(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])","Read an entry"],ldap_rename:["bool ldap_rename(resource link, string dn, string newrdn, string newparent, bool deleteoldrdn)","Modify the name of an entry"],ldap_sasl_bind:["bool ldap_sasl_bind(resource link [, string binddn [, string password [, string sasl_mech [, string sasl_realm [, string sasl_authc_id [, string sasl_authz_id [, string props]]]]]]])","Bind to LDAP directory using SASL"],ldap_search:["resource ldap_search(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])","Search LDAP tree under base_dn"],ldap_set_option:["bool ldap_set_option(resource link, int option, mixed newval)","Set the value of various session-wide parameters"],ldap_set_rebind_proc:["bool ldap_set_rebind_proc(resource link, string callback)","Set a callback function to do re-binds on referral chasing."],ldap_sort:["bool ldap_sort(resource link, resource result, string sortfilter)","Sort LDAP result entries"],ldap_start_tls:["bool ldap_start_tls(resource link)","Start TLS"],ldap_t61_to_8859:["string ldap_t61_to_8859(string value)","Translate t61 characters to 8859 characters"],ldap_unbind:["bool ldap_unbind(resource link)","Unbind from LDAP directory"],leak:["void leak(int num_bytes=3)","Cause an intentional memory leak, for testing/debugging purposes"],levenshtein:["int levenshtein(string str1, string str2[, int cost_ins, int cost_rep, int cost_del])","Calculate Levenshtein distance between two strings"],libxml_clear_errors:["void libxml_clear_errors()","Clear last error from libxml"],libxml_disable_entity_loader:["bool libxml_disable_entity_loader([bool disable])","Disable/Enable ability to load external entities"],libxml_get_errors:["object libxml_get_errors()","Retrieve array of errors"],libxml_get_last_error:["object libxml_get_last_error()","Retrieve last error from libxml"],libxml_set_streams_context:["void libxml_set_streams_context(resource streams_context)","Set the streams context for the next libxml document load or write"],libxml_use_internal_errors:["bool libxml_use_internal_errors([bool use_errors])","Disable libxml errors and allow user to fetch error information as needed"],link:["int link(string target, string link)","Create a hard link"],linkinfo:["int linkinfo(string filename)","Returns the st_dev field of the UNIX C stat structure describing the link"],litespeed_request_headers:["array litespeed_request_headers()","Fetch all HTTP request headers"],litespeed_response_headers:["array litespeed_response_headers()","Fetch all HTTP response headers"],locale_accept_from_http:["string locale_accept_from_http(string $http_accept)",null],locale_canonicalize:["static string locale_canonicalize(Locale $loc, string $locale)","* @param string $locale The locale string to canonicalize"],locale_filter_matches:["bool locale_filter_matches(string $langtag, string $locale[, bool $canonicalize])","* Checks if a $langtag filter matches with $locale according to RFC 4647's basic filtering algorithm"],locale_get_all_variants:["static array locale_get_all_variants($locale)","* gets an array containing the list of variants, or null"],locale_get_default:["static string locale_get_default( )","Get default locale"],locale_get_keywords:["static array locale_get_keywords(string $locale) {","* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array"],locale_get_primary_language:["static string locale_get_primary_language($locale)","* gets the primary language for the $locale"],locale_get_region:["static string locale_get_region($locale)","* gets the region for the $locale"],locale_get_script:["static string locale_get_script($locale)","* gets the script for the $locale"],locale_lookup:["string locale_lookup(array $langtag, string $locale[, bool $canonicalize[, string $default = null]])","* Searchs the items in $langtag for the best match to the language * range"],locale_set_default:["static string locale_set_default( string $locale )","Set default locale"],localeconv:["array localeconv()","Returns numeric formatting information based on the current locale"],localtime:["array localtime([int timestamp [, bool associative_array]])","Returns the results of the C system call localtime as an associative array if the associative_array argument is set to 1 other wise it is a regular array"],log:["float log(float number, [float base])","Returns the natural logarithm of the number, or the base log if base is specified"],log10:["float log10(float number)","Returns the base-10 logarithm of the number"],log1p:["float log1p(float number)","Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero"],long2ip:["string long2ip(int proper_address)","Converts an (IPv4) Internet network address into a string in Internet standard dotted format"],lstat:["array lstat(string filename)","Give information about a file or symbolic link"],ltrim:["string ltrim(string str [, string character_mask])","Strips whitespace from the beginning of a string"],mail:["int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])","Send an email message"],max:["mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])","Return the highest value in an array or a series of arguments"],mb_check_encoding:["bool mb_check_encoding([string var[, string encoding]])","Check if the string is valid for the specified encoding"],mb_convert_case:["string mb_convert_case(string sourcestring, int mode [, string encoding])","Returns a case-folded version of sourcestring"],mb_convert_encoding:["string mb_convert_encoding(string str, string to-encoding [, mixed from-encoding])","Returns converted string in desired encoding"],mb_convert_kana:["string mb_convert_kana(string str [, string option] [, string encoding])","Conversion between full-width character and half-width character (Japanese)"],mb_convert_variables:["string mb_convert_variables(string to-encoding, mixed from-encoding, mixed vars [, ...])","Converts the string resource in variables to desired encoding"],mb_decode_mimeheader:["string mb_decode_mimeheader(string string)",'Decodes the MIME "encoded-word" in the string'],mb_decode_numericentity:["string mb_decode_numericentity(string string, array convmap [, string encoding])","Converts HTML numeric entities to character code"],mb_detect_encoding:["string mb_detect_encoding(string str [, mixed encoding_list [, bool strict]])","Encodings of the given string is returned (as a string)"],mb_detect_order:["bool|array mb_detect_order([mixed encoding-list])","Sets the current detect_order or Return the current detect_order as a array"],mb_encode_mimeheader:["string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]])",'Converts the string to MIME "encoded-word" in the format of =?charset?(B|Q)?encoded_string?='],mb_encode_numericentity:["string mb_encode_numericentity(string string, array convmap [, string encoding])","Converts specified characters to HTML numeric entities"],mb_encoding_aliases:["array mb_encoding_aliases(string encoding)","Returns an array of the aliases of a given encoding name"],mb_ereg:["int mb_ereg(string pattern, string string [, array registers])","Regular expression match for multibyte string"],mb_ereg_match:["bool mb_ereg_match(string pattern, string string [,string option])","Regular expression match for multibyte string"],mb_ereg_replace:["string mb_ereg_replace(string pattern, string replacement, string string [, string option])","Replace regular expression for multibyte string"],mb_ereg_search:["bool mb_ereg_search([string pattern[, string option]])","Regular expression search for multibyte string"],mb_ereg_search_getpos:["int mb_ereg_search_getpos()","Get search start position"],mb_ereg_search_getregs:["array mb_ereg_search_getregs()","Get matched substring of the last time"],mb_ereg_search_init:["bool mb_ereg_search_init(string string [, string pattern[, string option]])","Initialize string and regular expression for search."],mb_ereg_search_pos:["array mb_ereg_search_pos([string pattern[, string option]])","Regular expression search for multibyte string"],mb_ereg_search_regs:["array mb_ereg_search_regs([string pattern[, string option]])","Regular expression search for multibyte string"],mb_ereg_search_setpos:["bool mb_ereg_search_setpos(int position)","Set search start position"],mb_eregi:["int mb_eregi(string pattern, string string [, array registers])","Case-insensitive regular expression match for multibyte string"],mb_eregi_replace:["string mb_eregi_replace(string pattern, string replacement, string string)","Case insensitive replace regular expression for multibyte string"],mb_get_info:["mixed mb_get_info([string type])","Returns the current settings of mbstring"],mb_http_input:["mixed mb_http_input([string type])","Returns the input encoding"],mb_http_output:["string mb_http_output([string encoding])","Sets the current output_encoding or returns the current output_encoding as a string"],mb_internal_encoding:["string mb_internal_encoding([string encoding])","Sets the current internal encoding or Returns the current internal encoding as a string"],mb_language:["string mb_language([string language])","Sets the current language or Returns the current language as a string"],mb_list_encodings:["mixed mb_list_encodings()","Returns an array of all supported entity encodings"],mb_output_handler:["string mb_output_handler(string contents, int status)","Returns string in output buffer converted to the http_output encoding"],mb_parse_str:["bool mb_parse_str(string encoded_string [, array result])","Parses GET/POST/COOKIE data and sets global variables"],mb_preferred_mime_name:["string mb_preferred_mime_name(string encoding)","Return the preferred MIME name (charset) as a string"],mb_regex_encoding:["string mb_regex_encoding([string encoding])","Returns the current encoding for regex as a string."],mb_regex_set_options:["string mb_regex_set_options([string options])","Set or get the default options for mbregex functions"],mb_send_mail:["int mb_send_mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])","* Sends an email message with MIME scheme"],mb_split:["array mb_split(string pattern, string string [, int limit])","split multibyte string into array by regular expression"],mb_strcut:["string mb_strcut(string str, int start [, int length [, string encoding]])","Returns part of a string"],mb_strimwidth:["string mb_strimwidth(string str, int start, int width [, string trimmarker [, string encoding]])","Trim the string in terminal width"],mb_stripos:["int mb_stripos(string haystack, string needle [, int offset [, string encoding]])","Finds position of first occurrence of a string within another, case insensitive"],mb_stristr:["string mb_stristr(string haystack, string needle[, bool part[, string encoding]])","Finds first occurrence of a string within another, case insensitive"],mb_strlen:["int mb_strlen(string str [, string encoding])","Get character numbers of a string"],mb_strpos:["int mb_strpos(string haystack, string needle [, int offset [, string encoding]])","Find position of first occurrence of a string within another"],mb_strrchr:["string mb_strrchr(string haystack, string needle[, bool part[, string encoding]])","Finds the last occurrence of a character in a string within another"],mb_strrichr:["string mb_strrichr(string haystack, string needle[, bool part[, string encoding]])","Finds the last occurrence of a character in a string within another, case insensitive"],mb_strripos:["int mb_strripos(string haystack, string needle [, int offset [, string encoding]])","Finds position of last occurrence of a string within another, case insensitive"],mb_strrpos:["int mb_strrpos(string haystack, string needle [, int offset [, string encoding]])","Find position of last occurrence of a string within another"],mb_strstr:["string mb_strstr(string haystack, string needle[, bool part[, string encoding]])","Finds first occurrence of a string within another"],mb_strtolower:["string mb_strtolower(string sourcestring [, string encoding])","* Returns a lowercased version of sourcestring"],mb_strtoupper:["string mb_strtoupper(string sourcestring [, string encoding])","* Returns a uppercased version of sourcestring"],mb_strwidth:["int mb_strwidth(string str [, string encoding])","Gets terminal width of a string"],mb_substitute_character:["mixed mb_substitute_character([mixed substchar])","Sets the current substitute_character or returns the current substitute_character"],mb_substr:["string mb_substr(string str, int start [, int length [, string encoding]])","Returns part of a string"],mb_substr_count:["int mb_substr_count(string haystack, string needle [, string encoding])","Count the number of substring occurrences"],mcrypt_cbc:["string mcrypt_cbc(int cipher, string key, string data, int mode, string iv)","CBC crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_cfb:["string mcrypt_cfb(int cipher, string key, string data, int mode, string iv)","CFB crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_create_iv:["string mcrypt_create_iv(int size, int source)","Create an initialization vector (IV)"],mcrypt_decrypt:["string mcrypt_decrypt(string cipher, string key, string data, string mode, string iv)","OFB crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_ecb:["string mcrypt_ecb(int cipher, string key, string data, int mode, string iv)","ECB crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_enc_get_algorithms_name:["string mcrypt_enc_get_algorithms_name(resource td)","Returns the name of the algorithm specified by the descriptor td"],mcrypt_enc_get_block_size:["int mcrypt_enc_get_block_size(resource td)","Returns the block size of the cipher specified by the descriptor td"],mcrypt_enc_get_iv_size:["int mcrypt_enc_get_iv_size(resource td)","Returns the size of the IV in bytes of the algorithm specified by the descriptor td"],mcrypt_enc_get_key_size:["int mcrypt_enc_get_key_size(resource td)","Returns the maximum supported key size in bytes of the algorithm specified by the descriptor td"],mcrypt_enc_get_modes_name:["string mcrypt_enc_get_modes_name(resource td)","Returns the name of the mode specified by the descriptor td"],mcrypt_enc_get_supported_key_sizes:["array mcrypt_enc_get_supported_key_sizes(resource td)","This function decrypts the crypttext"],mcrypt_enc_is_block_algorithm:["bool mcrypt_enc_is_block_algorithm(resource td)","Returns TRUE if the alrogithm is a block algorithms"],mcrypt_enc_is_block_algorithm_mode:["bool mcrypt_enc_is_block_algorithm_mode(resource td)","Returns TRUE if the mode is for use with block algorithms"],mcrypt_enc_is_block_mode:["bool mcrypt_enc_is_block_mode(resource td)","Returns TRUE if the mode outputs blocks"],mcrypt_enc_self_test:["int mcrypt_enc_self_test(resource td)","This function runs the self test on the algorithm specified by the descriptor td"],mcrypt_encrypt:["string mcrypt_encrypt(string cipher, string key, string data, string mode, string iv)","OFB crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_generic:["string mcrypt_generic(resource td, string data)","This function encrypts the plaintext"],mcrypt_generic_deinit:["bool mcrypt_generic_deinit(resource td)","This function terminates encrypt specified by the descriptor td"],mcrypt_generic_init:["int mcrypt_generic_init(resource td, string key, string iv)","This function initializes all buffers for the specific module"],mcrypt_get_block_size:["int mcrypt_get_block_size(string cipher, string module)","Get the key size of cipher"],mcrypt_get_cipher_name:["string mcrypt_get_cipher_name(string cipher)","Get the key size of cipher"],mcrypt_get_iv_size:["int mcrypt_get_iv_size(string cipher, string module)","Get the IV size of cipher (Usually the same as the blocksize)"],mcrypt_get_key_size:["int mcrypt_get_key_size(string cipher, string module)","Get the key size of cipher"],mcrypt_list_algorithms:["array mcrypt_list_algorithms([string lib_dir])",'List all algorithms in "module_dir"'],mcrypt_list_modes:["array mcrypt_list_modes([string lib_dir])",'List all modes "module_dir"'],mcrypt_module_close:["bool mcrypt_module_close(resource td)","Free the descriptor td"],mcrypt_module_get_algo_block_size:["int mcrypt_module_get_algo_block_size(string algorithm [, string lib_dir])","Returns the block size of the algorithm"],mcrypt_module_get_algo_key_size:["int mcrypt_module_get_algo_key_size(string algorithm [, string lib_dir])","Returns the maximum supported key size of the algorithm"],mcrypt_module_get_supported_key_sizes:["array mcrypt_module_get_supported_key_sizes(string algorithm [, string lib_dir])","This function decrypts the crypttext"],mcrypt_module_is_block_algorithm:["bool mcrypt_module_is_block_algorithm(string algorithm [, string lib_dir])","Returns TRUE if the algorithm is a block algorithm"],mcrypt_module_is_block_algorithm_mode:["bool mcrypt_module_is_block_algorithm_mode(string mode [, string lib_dir])","Returns TRUE if the mode is for use with block algorithms"],mcrypt_module_is_block_mode:["bool mcrypt_module_is_block_mode(string mode [, string lib_dir])","Returns TRUE if the mode outputs blocks of bytes"],mcrypt_module_open:["resource mcrypt_module_open(string cipher, string cipher_directory, string mode, string mode_directory)","Opens the module of the algorithm and the mode to be used"],mcrypt_module_self_test:["bool mcrypt_module_self_test(string algorithm [, string lib_dir])",'Does a self test of the module "module"'],mcrypt_ofb:["string mcrypt_ofb(int cipher, string key, string data, int mode, string iv)","OFB crypt/decrypt data using key key with cipher cipher starting with iv"],md5:["string md5(string str, [ bool raw_output])","Calculate the md5 hash of a string"],md5_file:["string md5_file(string filename [, bool raw_output])","Calculate the md5 hash of given filename"],mdecrypt_generic:["string mdecrypt_generic(resource td, string data)","This function decrypts the plaintext"],memory_get_peak_usage:["int memory_get_peak_usage([real_usage])","Returns the peak allocated by PHP memory"],memory_get_usage:["int memory_get_usage([real_usage])","Returns the allocated by PHP memory"],metaphone:["string metaphone(string text[, int phones])","Break english phrases down into their phonemes"],method_exists:["bool method_exists(object object, string method)","Checks if the class method exists"],mhash:["string mhash(int hash, string data [, string key])","Hash data with hash"],mhash_count:["int mhash_count()","Gets the number of available hashes"],mhash_get_block_size:["int mhash_get_block_size(int hash)","Gets the block size of hash"],mhash_get_hash_name:["string mhash_get_hash_name(int hash)","Gets the name of hash"],mhash_keygen_s2k:["string mhash_keygen_s2k(int hash, string input_password, string salt, int bytes)","Generates a key using hash functions"],microtime:["mixed microtime([bool get_as_float])","Returns either a string or a float containing the current time in seconds and microseconds"],mime_content_type:["string mime_content_type(string filename|resource stream)","Return content-type for file"],min:["mixed min(mixed arg1 [, mixed arg2 [, mixed ...]])","Return the lowest value in an array or a series of arguments"],mkdir:["bool mkdir(string pathname [, int mode [, bool recursive [, resource context]]])","Create a directory"],mktime:["int mktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])","Get UNIX timestamp for a date"],money_format:["string money_format(string format , float value)","Convert monetary value(s) to string"],move_uploaded_file:["bool move_uploaded_file(string path, string new_path)","Move a file if and only if it was created by an upload"],msg_get_queue:["resource msg_get_queue(int key [, int perms])","Attach to a message queue"],msg_queue_exists:["bool msg_queue_exists(int key)","Check whether a message queue exists"],msg_receive:["mixed msg_receive(resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]])","Send a message of type msgtype (must be > 0) to a message queue"],msg_remove_queue:["bool msg_remove_queue(resource queue)","Destroy the queue"],msg_send:["bool msg_send(resource queue, int msgtype, mixed message [, bool serialize=true [, bool blocking=true [, int errorcode]]])","Send a message of type msgtype (must be > 0) to a message queue"],msg_set_queue:["bool msg_set_queue(resource queue, array data)","Set information for a message queue"],msg_stat_queue:["array msg_stat_queue(resource queue)","Returns information about a message queue"],msgfmt_create:["MessageFormatter msgfmt_create( string $locale, string $pattern )","* Create formatter."],msgfmt_format:["mixed msgfmt_format( MessageFormatter $nf, array $args )","* Format a message."],msgfmt_format_message:["mixed msgfmt_format_message( string $locale, string $pattern, array $args )","* Format a message."],msgfmt_get_error_code:["int msgfmt_get_error_code( MessageFormatter $nf )","* Get formatter's last error code."],msgfmt_get_error_message:["string msgfmt_get_error_message( MessageFormatter $coll )","* Get text description for formatter's last error code."],msgfmt_get_locale:["string msgfmt_get_locale(MessageFormatter $mf)","* Get formatter locale."],msgfmt_get_pattern:["string msgfmt_get_pattern( MessageFormatter $mf )","* Get formatter pattern."],msgfmt_parse:["array msgfmt_parse( MessageFormatter $nf, string $source )","* Parse a message."],msgfmt_set_pattern:["bool msgfmt_set_pattern( MessageFormatter $mf, string $pattern )","* Set formatter pattern."],mssql_bind:["bool mssql_bind(resource stmt, string param_name, mixed var, int type [, bool is_output [, bool is_null [, int maxlen]]])","Adds a parameter to a stored procedure or a remote stored procedure"],mssql_close:["bool mssql_close([resource conn_id])","Closes a connection to a MS-SQL server"],mssql_connect:["int mssql_connect([string servername [, string username [, string password [, bool new_link]]]])","Establishes a connection to a MS-SQL server"],mssql_data_seek:["bool mssql_data_seek(resource result_id, int offset)","Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number"],mssql_execute:["mixed mssql_execute(resource stmt [, bool skip_results = false])","Executes a stored procedure on a MS-SQL server database"],mssql_fetch_array:["array mssql_fetch_array(resource result_id [, int result_type])","Returns an associative array of the current row in the result set specified by result_id"],mssql_fetch_assoc:["array mssql_fetch_assoc(resource result_id)","Returns an associative array of the current row in the result set specified by result_id"],mssql_fetch_batch:["int mssql_fetch_batch(resource result_index)","Returns the next batch of records"],mssql_fetch_field:["object mssql_fetch_field(resource result_id [, int offset])","Gets information about certain fields in a query result"],mssql_fetch_object:["object mssql_fetch_object(resource result_id)","Returns a pseudo-object of the current row in the result set specified by result_id"],mssql_fetch_row:["array mssql_fetch_row(resource result_id)","Returns an array of the current row in the result set specified by result_id"],mssql_field_length:["int mssql_field_length(resource result_id [, int offset])","Get the length of a MS-SQL field"],mssql_field_name:["string mssql_field_name(resource result_id [, int offset])","Returns the name of the field given by offset in the result set given by result_id"],mssql_field_seek:["bool mssql_field_seek(resource result_id, int offset)","Seeks to the specified field offset"],mssql_field_type:["string mssql_field_type(resource result_id [, int offset])","Returns the type of a field"],mssql_free_result:["bool mssql_free_result(resource result_index)","Free a MS-SQL result index"],mssql_free_statement:["bool mssql_free_statement(resource result_index)","Free a MS-SQL statement index"],mssql_get_last_message:["string mssql_get_last_message()","Gets the last message from the MS-SQL server"],mssql_guid_string:["string mssql_guid_string(string binary [,bool short_format])","Converts a 16 byte binary GUID to a string"],mssql_init:["int mssql_init(string sp_name [, resource conn_id])","Initializes a stored procedure or a remote stored procedure"],mssql_min_error_severity:["void mssql_min_error_severity(int severity)","Sets the lower error severity"],mssql_min_message_severity:["void mssql_min_message_severity(int severity)","Sets the lower message severity"],mssql_next_result:["bool mssql_next_result(resource result_id)","Move the internal result pointer to the next result"],mssql_num_fields:["int mssql_num_fields(resource mssql_result_index)","Returns the number of fields fetched in from the result id specified"],mssql_num_rows:["int mssql_num_rows(resource mssql_result_index)","Returns the number of rows fetched in from the result id specified"],mssql_pconnect:["int mssql_pconnect([string servername [, string username [, string password [, bool new_link]]]])","Establishes a persistent connection to a MS-SQL server"],mssql_query:["resource mssql_query(string query [, resource conn_id [, int batch_size]])","Perform an SQL query on a MS-SQL server database"],mssql_result:["string mssql_result(resource result_id, int row, mixed field)","Returns the contents of one cell from a MS-SQL result set"],mssql_rows_affected:["int mssql_rows_affected(resource conn_id)","Returns the number of records affected by the query"],mssql_select_db:["bool mssql_select_db(string database_name [, resource conn_id])","Select a MS-SQL database"],mt_getrandmax:["int mt_getrandmax()","Returns the maximum value a random number from Mersenne Twister can have"],mt_rand:["int mt_rand([int min, int max])","Returns a random number from Mersenne Twister"],mt_srand:["void mt_srand([int seed])","Seeds Mersenne Twister random number generator"],mysql_affected_rows:["int mysql_affected_rows([int link_identifier])","Gets number of affected rows in previous MySQL operation"],mysql_client_encoding:["string mysql_client_encoding([int link_identifier])","Returns the default character set for the current connection"],mysql_close:["bool mysql_close([int link_identifier])","Close a MySQL connection"],mysql_connect:["resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]])","Opens a connection to a MySQL Server"],mysql_create_db:["bool mysql_create_db(string database_name [, int link_identifier])","Create a MySQL database"],mysql_data_seek:["bool mysql_data_seek(resource result, int row_number)","Move internal result pointer"],mysql_db_query:["resource mysql_db_query(string database_name, string query [, int link_identifier])","Sends an SQL query to MySQL"],mysql_drop_db:["bool mysql_drop_db(string database_name [, int link_identifier])","Drops (delete) a MySQL database"],mysql_errno:["int mysql_errno([int link_identifier])","Returns the number of the error message from previous MySQL operation"],mysql_error:["string mysql_error([int link_identifier])","Returns the text of the error message from previous MySQL operation"],mysql_escape_string:["string mysql_escape_string(string to_be_escaped)","Escape string for mysql query"],mysql_fetch_array:["array mysql_fetch_array(resource result [, int result_type])","Fetch a result row as an array (associative, numeric or both)"],mysql_fetch_assoc:["array mysql_fetch_assoc(resource result)","Fetch a result row as an associative array"],mysql_fetch_field:["object mysql_fetch_field(resource result [, int field_offset])","Gets column information from a result and return as an object"],mysql_fetch_lengths:["array mysql_fetch_lengths(resource result)","Gets max data size of each column in a result"],mysql_fetch_object:["object mysql_fetch_object(resource result [, string class_name [, NULL|array ctor_params]])","Fetch a result row as an object"],mysql_fetch_row:["array mysql_fetch_row(resource result)","Gets a result row as an enumerated array"],mysql_field_flags:["string mysql_field_flags(resource result, int field_offset)","Gets the flags associated with the specified field in a result"],mysql_field_len:["int mysql_field_len(resource result, int field_offset)","Returns the length of the specified field"],mysql_field_name:["string mysql_field_name(resource result, int field_index)","Gets the name of the specified field in a result"],mysql_field_seek:["bool mysql_field_seek(resource result, int field_offset)","Sets result pointer to a specific field offset"],mysql_field_table:["string mysql_field_table(resource result, int field_offset)","Gets name of the table the specified field is in"],mysql_field_type:["string mysql_field_type(resource result, int field_offset)","Gets the type of the specified field in a result"],mysql_free_result:["bool mysql_free_result(resource result)","Free result memory"],mysql_get_client_info:["string mysql_get_client_info()","Returns a string that represents the client library version"],mysql_get_host_info:["string mysql_get_host_info([int link_identifier])","Returns a string describing the type of connection in use, including the server host name"],mysql_get_proto_info:["int mysql_get_proto_info([int link_identifier])","Returns the protocol version used by current connection"],mysql_get_server_info:["string mysql_get_server_info([int link_identifier])","Returns a string that represents the server version number"],mysql_info:["string mysql_info([int link_identifier])","Returns a string containing information about the most recent query"],mysql_insert_id:["int mysql_insert_id([int link_identifier])","Gets the ID generated from the previous INSERT operation"],mysql_list_dbs:["resource mysql_list_dbs([int link_identifier])","List databases available on a MySQL server"],mysql_list_fields:["resource mysql_list_fields(string database_name, string table_name [, int link_identifier])","List MySQL result fields"],mysql_list_processes:["resource mysql_list_processes([int link_identifier])","Returns a result set describing the current server threads"],mysql_list_tables:["resource mysql_list_tables(string database_name [, int link_identifier])","List tables in a MySQL database"],mysql_num_fields:["int mysql_num_fields(resource result)","Gets number of fields in a result"],mysql_num_rows:["int mysql_num_rows(resource result)","Gets number of rows in a result"],mysql_pconnect:["resource mysql_pconnect([string hostname[:port][:/path/to/socket] [, string username [, string password [, int flags]]]])","Opens a persistent connection to a MySQL Server"],mysql_ping:["bool mysql_ping([int link_identifier])","Ping a server connection. If no connection then reconnect."],mysql_query:["resource mysql_query(string query [, int link_identifier])","Sends an SQL query to MySQL"],mysql_real_escape_string:["string mysql_real_escape_string(string to_be_escaped [, int link_identifier])","Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection"],mysql_result:["mixed mysql_result(resource result, int row [, mixed field])","Gets result data"],mysql_select_db:["bool mysql_select_db(string database_name [, int link_identifier])","Selects a MySQL database"],mysql_set_charset:["bool mysql_set_charset(string csname [, int link_identifier])","sets client character set"],mysql_stat:["string mysql_stat([int link_identifier])","Returns a string containing status information"],mysql_thread_id:["int mysql_thread_id([int link_identifier])","Returns the thread id of current connection"],mysql_unbuffered_query:["resource mysql_unbuffered_query(string query [, int link_identifier])","Sends an SQL query to MySQL, without fetching and buffering the result rows"],mysqli_affected_rows:["mixed mysqli_affected_rows(object link)","Get number of affected rows in previous MySQL operation"],mysqli_autocommit:["bool mysqli_autocommit(object link, bool mode)","Turn auto commit on or of"],mysqli_cache_stats:["array mysqli_cache_stats()","Returns statistics about the zval cache"],mysqli_change_user:["bool mysqli_change_user(object link, string user, string password, string database)","Change logged-in user of the active connection"],mysqli_character_set_name:["string mysqli_character_set_name(object link)","Returns the name of the character set used for this connection"],mysqli_close:["bool mysqli_close(object link)","Close connection"],mysqli_commit:["bool mysqli_commit(object link)","Commit outstanding actions and close transaction"],mysqli_connect:["object mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]])","Open a connection to a mysql server"],mysqli_connect_errno:["int mysqli_connect_errno()","Returns the numerical value of the error message from last connect command"],mysqli_connect_error:["string mysqli_connect_error()","Returns the text of the error message from previous MySQL operation"],mysqli_data_seek:["bool mysqli_data_seek(object result, int offset)","Move internal result pointer"],mysqli_debug:["void mysqli_debug(string debug)",""],mysqli_dump_debug_info:["bool mysqli_dump_debug_info(object link)",""],mysqli_embedded_server_end:["void mysqli_embedded_server_end()",""],mysqli_embedded_server_start:["bool mysqli_embedded_server_start(bool start, array arguments, array groups)","initialize and start embedded server"],mysqli_errno:["int mysqli_errno(object link)","Returns the numerical value of the error message from previous MySQL operation"],mysqli_error:["string mysqli_error(object link)","Returns the text of the error message from previous MySQL operation"],mysqli_fetch_all:["mixed mysqli_fetch_all(object result [,int resulttype])","Fetches all result rows as an associative array, a numeric array, or both"],mysqli_fetch_array:["mixed mysqli_fetch_array(object result [,int resulttype])","Fetch a result row as an associative array, a numeric array, or both"],mysqli_fetch_assoc:["mixed mysqli_fetch_assoc(object result)","Fetch a result row as an associative array"],mysqli_fetch_field:["mixed mysqli_fetch_field(object result)","Get column information from a result and return as an object"],mysqli_fetch_field_direct:["mixed mysqli_fetch_field_direct(object result, int offset)","Fetch meta-data for a single field"],mysqli_fetch_fields:["mixed mysqli_fetch_fields(object result)","Return array of objects containing field meta-data"],mysqli_fetch_lengths:["mixed mysqli_fetch_lengths(object result)","Get the length of each output in a result"],mysqli_fetch_object:["mixed mysqli_fetch_object(object result [, string class_name [, NULL|array ctor_params]])","Fetch a result row as an object"],mysqli_fetch_row:["array mysqli_fetch_row(object result)","Get a result row as an enumerated array"],mysqli_field_count:["int mysqli_field_count(object link)","Fetch the number of fields returned by the last query for the given link"],mysqli_field_seek:["int mysqli_field_seek(object result, int fieldnr)","Set result pointer to a specified field offset"],mysqli_field_tell:["int mysqli_field_tell(object result)","Get current field offset of result pointer"],mysqli_free_result:["void mysqli_free_result(object result)","Free query result memory for the given result handle"],mysqli_get_charset:["object mysqli_get_charset(object link)","returns a character set object"],mysqli_get_client_info:["string mysqli_get_client_info()","Get MySQL client info"],mysqli_get_client_stats:["array mysqli_get_client_stats()","Returns statistics about the zval cache"],mysqli_get_client_version:["int mysqli_get_client_version()","Get MySQL client info"],mysqli_get_connection_stats:["array mysqli_get_connection_stats()","Returns statistics about the zval cache"],mysqli_get_host_info:["string mysqli_get_host_info(object link)","Get MySQL host info"],mysqli_get_proto_info:["int mysqli_get_proto_info(object link)","Get MySQL protocol information"],mysqli_get_server_info:["string mysqli_get_server_info(object link)","Get MySQL server info"],mysqli_get_server_version:["int mysqli_get_server_version(object link)","Return the MySQL version for the server referenced by the given link"],mysqli_get_warnings:["object mysqli_get_warnings(object link)",""],mysqli_info:["string mysqli_info(object link)","Get information about the most recent query"],mysqli_init:["resource mysqli_init()","Initialize mysqli and return a resource for use with mysql_real_connect"],mysqli_insert_id:["mixed mysqli_insert_id(object link)","Get the ID generated from the previous INSERT operation"],mysqli_kill:["bool mysqli_kill(object link, int processid)","Kill a mysql process on the server"],mysqli_link_construct:["object mysqli_link_construct()",""],mysqli_more_results:["bool mysqli_more_results(object link)","check if there any more query results from a multi query"],mysqli_multi_query:["bool mysqli_multi_query(object link, string query)","allows to execute multiple queries"],mysqli_next_result:["bool mysqli_next_result(object link)","read next result from multi_query"],mysqli_num_fields:["int mysqli_num_fields(object result)","Get number of fields in result"],mysqli_num_rows:["mixed mysqli_num_rows(object result)","Get number of rows in result"],mysqli_options:["bool mysqli_options(object link, int flags, mixed values)","Set options"],mysqli_ping:["bool mysqli_ping(object link)","Ping a server connection or reconnect if there is no connection"],mysqli_poll:["int mysqli_poll(array read, array write, array error, long sec [, long usec])","Poll connections"],mysqli_prepare:["mixed mysqli_prepare(object link, string query)","Prepare a SQL statement for execution"],mysqli_query:["mixed mysqli_query(object link, string query [,int resultmode])",""],mysqli_real_connect:["bool mysqli_real_connect(object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]])","Open a connection to a mysql server"],mysqli_real_escape_string:["string mysqli_real_escape_string(object link, string escapestr)","Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection"],mysqli_real_query:["bool mysqli_real_query(object link, string query)","Binary-safe version of mysql_query()"],mysqli_reap_async_query:["int mysqli_reap_async_query(object link)","Poll connections"],mysqli_refresh:["bool mysqli_refresh(object link, long options)","Flush tables or caches, or reset replication server information"],mysqli_report:["bool mysqli_report(int flags)","sets report level"],mysqli_rollback:["bool mysqli_rollback(object link)","Undo actions from current transaction"],mysqli_select_db:["bool mysqli_select_db(object link, string dbname)","Select a MySQL database"],mysqli_set_charset:["bool mysqli_set_charset(object link, string csname)","sets client character set"],mysqli_set_local_infile_default:["void mysqli_set_local_infile_default(object link)","unsets user defined handler for load local infile command"],mysqli_set_local_infile_handler:["bool mysqli_set_local_infile_handler(object link, callback read_func)","Set callback functions for LOAD DATA LOCAL INFILE"],mysqli_sqlstate:["string mysqli_sqlstate(object link)","Returns the SQLSTATE error from previous MySQL operation"],mysqli_ssl_set:["bool mysqli_ssl_set(object link ,string key ,string cert ,string ca ,string capath ,string cipher])",""],mysqli_stat:["mixed mysqli_stat(object link)","Get current system status"],mysqli_stmt_affected_rows:["mixed mysqli_stmt_affected_rows(object stmt)","Return the number of rows affected in the last query for the given link"],mysqli_stmt_attr_get:["int mysqli_stmt_attr_get(object stmt, long attr)",""],mysqli_stmt_attr_set:["int mysqli_stmt_attr_set(object stmt, long attr, long mode)",""],mysqli_stmt_bind_param:["bool mysqli_stmt_bind_param(object stmt, string types, mixed variable [,mixed,....])","Bind variables to a prepared statement as parameters"],mysqli_stmt_bind_result:["bool mysqli_stmt_bind_result(object stmt, mixed var, [,mixed, ...])","Bind variables to a prepared statement for result storage"],mysqli_stmt_close:["bool mysqli_stmt_close(object stmt)","Close statement"],mysqli_stmt_data_seek:["void mysqli_stmt_data_seek(object stmt, int offset)","Move internal result pointer"],mysqli_stmt_errno:["int mysqli_stmt_errno(object stmt)",""],mysqli_stmt_error:["string mysqli_stmt_error(object stmt)",""],mysqli_stmt_execute:["bool mysqli_stmt_execute(object stmt)","Execute a prepared statement"],mysqli_stmt_fetch:["mixed mysqli_stmt_fetch(object stmt)","Fetch results from a prepared statement into the bound variables"],mysqli_stmt_field_count:["int mysqli_stmt_field_count(object stmt) {","Return the number of result columns for the given statement"],mysqli_stmt_free_result:["void mysqli_stmt_free_result(object stmt)","Free stored result memory for the given statement handle"],mysqli_stmt_get_result:["object mysqli_stmt_get_result(object link)","Buffer result set on client"],mysqli_stmt_get_warnings:["object mysqli_stmt_get_warnings(object link)",""],mysqli_stmt_init:["mixed mysqli_stmt_init(object link)","Initialize statement object"],mysqli_stmt_insert_id:["mixed mysqli_stmt_insert_id(object stmt)","Get the ID generated from the previous INSERT operation"],mysqli_stmt_next_result:["bool mysqli_stmt_next_result(object link)","read next result from multi_query"],mysqli_stmt_num_rows:["mixed mysqli_stmt_num_rows(object stmt)","Return the number of rows in statements result set"],mysqli_stmt_param_count:["int mysqli_stmt_param_count(object stmt)","Return the number of parameter for the given statement"],mysqli_stmt_prepare:["bool mysqli_stmt_prepare(object stmt, string query)","prepare server side statement with query"],mysqli_stmt_reset:["bool mysqli_stmt_reset(object stmt)","reset a prepared statement"],mysqli_stmt_result_metadata:["mixed mysqli_stmt_result_metadata(object stmt)","return result set from statement"],mysqli_stmt_send_long_data:["bool mysqli_stmt_send_long_data(object stmt, int param_nr, string data)",""],mysqli_stmt_sqlstate:["string mysqli_stmt_sqlstate(object stmt)",""],mysqli_stmt_store_result:["bool mysqli_stmt_store_result(stmt)",""],mysqli_store_result:["object mysqli_store_result(object link)","Buffer result set on client"],mysqli_thread_id:["int mysqli_thread_id(object link)","Return the current thread ID"],mysqli_thread_safe:["bool mysqli_thread_safe()","Return whether thread safety is given or not"],mysqli_use_result:["mixed mysqli_use_result(object link)","Directly retrieve query results - do not buffer results on client side"],mysqli_warning_count:["int mysqli_warning_count(object link)","Return number of warnings from the last query for the given link"],natcasesort:["void natcasesort(array &array_arg)","Sort an array using case-insensitive natural sort"],natsort:["void natsort(array &array_arg)","Sort an array using natural sort"],next:["mixed next(array array_arg)","Move array argument's internal pointer to the next element and return it"],ngettext:["string ngettext(string MSGID1, string MSGID2, int N)","Plural version of gettext()"],nl2br:["string nl2br(string str [, bool is_xhtml])","Converts newlines to HTML line breaks"],nl_langinfo:["string nl_langinfo(int item)","Query language and locale information"],normalizer_is_normalize:["bool normalizer_is_normalize( string $input [, string $form = FORM_C] )","* Test if a string is in a given normalization form."],normalizer_normalize:["string normalizer_normalize( string $input [, string $form = FORM_C] )","* Normalize a string."],nsapi_request_headers:["array nsapi_request_headers()","Get all headers from the request"],nsapi_response_headers:["array nsapi_response_headers()","Get all headers from the response"],nsapi_virtual:["bool nsapi_virtual(string uri)","Perform an NSAPI sub-request"],number_format:["string number_format(float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]])","Formats a number with grouped thousands"],numfmt_create:["NumberFormatter numfmt_create( string $locale, int style[, string $pattern ] )","* Create number formatter."],numfmt_format:["mixed numfmt_format( NumberFormatter $nf, mixed $num[, int type] )","* Format a number."],numfmt_format_currency:["mixed numfmt_format_currency( NumberFormatter $nf, double $num, string $currency )","* Format a number as currency."],numfmt_get_attribute:["mixed numfmt_get_attribute( NumberFormatter $nf, int $attr )","* Get formatter attribute value."],numfmt_get_error_code:["int numfmt_get_error_code( NumberFormatter $nf )","* Get formatter's last error code."],numfmt_get_error_message:["string numfmt_get_error_message( NumberFormatter $nf )","* Get text description for formatter's last error code."],numfmt_get_locale:["string numfmt_get_locale( NumberFormatter $nf[, int type] )","* Get formatter locale."],numfmt_get_pattern:["string numfmt_get_pattern( NumberFormatter $nf )","* Get formatter pattern."],numfmt_get_symbol:["string numfmt_get_symbol( NumberFormatter $nf, int $attr )","* Get formatter symbol value."],numfmt_get_text_attribute:["string numfmt_get_text_attribute( NumberFormatter $nf, int $attr )","* Get formatter attribute value."],numfmt_parse:["mixed numfmt_parse( NumberFormatter $nf, string $str[, int $type, int &$position ])","* Parse a number."],numfmt_parse_currency:["double numfmt_parse_currency( NumberFormatter $nf, string $str, string $¤cy[, int $&position] )","* Parse a number as currency."],numfmt_parse_message:["array numfmt_parse_message( string $locale, string $pattern, string $source )","* Parse a message."],numfmt_set_attribute:["bool numfmt_set_attribute( NumberFormatter $nf, int $attr, mixed $value )","* Get formatter attribute value."],numfmt_set_pattern:["bool numfmt_set_pattern( NumberFormatter $nf, string $pattern )","* Set formatter pattern."],numfmt_set_symbol:["bool numfmt_set_symbol( NumberFormatter $nf, int $attr, string $symbol )","* Set formatter symbol value."],numfmt_set_text_attribute:["bool numfmt_set_text_attribute( NumberFormatter $nf, int $attr, string $value )","* Get formatter attribute value."],ob_clean:["bool ob_clean()","Clean (delete) the current output buffer"],ob_end_clean:["bool ob_end_clean()","Clean the output buffer, and delete current output buffer"],ob_end_flush:["bool ob_end_flush()","Flush (send) the output buffer, and delete current output buffer"],ob_flush:["bool ob_flush()","Flush (send) contents of the output buffer. The last buffer content is sent to next buffer"],ob_get_clean:["bool ob_get_clean()","Get current buffer contents and delete current output buffer"],ob_get_contents:["string ob_get_contents()","Return the contents of the output buffer"],ob_get_flush:["bool ob_get_flush()","Get current buffer contents, flush (send) the output buffer, and delete current output buffer"],ob_get_length:["int ob_get_length()","Return the length of the output buffer"],ob_get_level:["int ob_get_level()","Return the nesting level of the output buffer"],ob_get_status:["false|array ob_get_status([bool full_status])","Return the status of the active or all output buffers"],ob_gzhandler:["string ob_gzhandler(string str, int mode)","Encode str based on accept-encoding setting - designed to be called from ob_start()"],ob_iconv_handler:["string ob_iconv_handler(string contents, int status)","Returns str in output buffer converted to the iconv.output_encoding character set"],ob_implicit_flush:["void ob_implicit_flush([int flag])","Turn implicit flush on/off and is equivalent to calling flush() after every output call"],ob_list_handlers:["false|array ob_list_handlers()","* List all output_buffers in an array"],ob_start:["bool ob_start([ string|array user_function [, int chunk_size [, bool erase]]])","Turn on Output Buffering (specifying an optional output handler)."],oci_bind_array_by_name:["bool oci_bind_array_by_name(resource stmt, string name, array &var, int max_table_length [, int max_item_length [, int type ]])","Bind a PHP array to an Oracle PL/SQL type by name"],oci_bind_by_name:["bool oci_bind_by_name(resource stmt, string name, mixed &var, [, int maxlength [, int type]])","Bind a PHP variable to an Oracle placeholder by name"],oci_cancel:["bool oci_cancel(resource stmt)","Cancel reading from a cursor"],oci_close:["bool oci_close(resource connection)","Disconnect from database"],oci_collection_append:["bool oci_collection_append(string value)","Append an object to the collection"],oci_collection_assign:["bool oci_collection_assign(object from)","Assign a collection from another existing collection"],oci_collection_element_assign:["bool oci_collection_element_assign(int index, string val)","Assign element val to collection at index ndx"],oci_collection_element_get:["string oci_collection_element_get(int ndx)","Retrieve the value at collection index ndx"],oci_collection_max:["int oci_collection_max()","Return the max value of a collection. For a varray this is the maximum length of the array"],oci_collection_size:["int oci_collection_size()","Return the size of a collection"],oci_collection_trim:["bool oci_collection_trim(int num)","Trim num elements from the end of a collection"],oci_commit:["bool oci_commit(resource connection)","Commit the current context"],oci_connect:["resource oci_connect(string user, string pass [, string db [, string charset [, int session_mode ]])","Connect to an Oracle database and log on. Returns a new session."],oci_define_by_name:["bool oci_define_by_name(resource stmt, string name, mixed &var [, int type])","Define a PHP variable to an Oracle column by name"],oci_error:["array oci_error([resource stmt|connection|global])","Return the last error of stmt|connection|global. If no error happened returns false."],oci_execute:["bool oci_execute(resource stmt [, int mode])","Execute a parsed statement"],oci_fetch:["bool oci_fetch(resource stmt)","Prepare a new row of data for reading"],oci_fetch_all:["int oci_fetch_all(resource stmt, array &output[, int skip[, int maxrows[, int flags]]])","Fetch all rows of result data into an array"],oci_fetch_array:["array oci_fetch_array( resource stmt [, int mode ])","Fetch a result row as an array"],oci_fetch_assoc:["array oci_fetch_assoc( resource stmt )","Fetch a result row as an associative array"],oci_fetch_object:["object oci_fetch_object( resource stmt )","Fetch a result row as an object"],oci_fetch_row:["array oci_fetch_row( resource stmt )","Fetch a result row as an enumerated array"],oci_field_is_null:["bool oci_field_is_null(resource stmt, int col)","Tell whether a column is NULL"],oci_field_name:["string oci_field_name(resource stmt, int col)","Tell the name of a column"],oci_field_precision:["int oci_field_precision(resource stmt, int col)","Tell the precision of a column"],oci_field_scale:["int oci_field_scale(resource stmt, int col)","Tell the scale of a column"],oci_field_size:["int oci_field_size(resource stmt, int col)","Tell the maximum data size of a column"],oci_field_type:["mixed oci_field_type(resource stmt, int col)","Tell the data type of a column"],oci_field_type_raw:["int oci_field_type_raw(resource stmt, int col)","Tell the raw oracle data type of a column"],oci_free_collection:["bool oci_free_collection()","Deletes collection object"],oci_free_descriptor:["bool oci_free_descriptor()","Deletes large object description"],oci_free_statement:["bool oci_free_statement(resource stmt)","Free all resources associated with a statement"],oci_internal_debug:["void oci_internal_debug(int onoff)","Toggle internal debugging output for the OCI extension"],oci_lob_append:["bool oci_lob_append( object lob )","Appends data from a LOB to another LOB"],oci_lob_close:["bool oci_lob_close()","Closes lob descriptor"],oci_lob_copy:["bool oci_lob_copy( object lob_to, object lob_from [, int length ] )","Copies data from a LOB to another LOB"],oci_lob_eof:["bool oci_lob_eof()","Checks if EOF is reached"],oci_lob_erase:["int oci_lob_erase( [ int offset [, int length ] ] )","Erases a specified portion of the internal LOB, starting at a specified offset"],oci_lob_export:["bool oci_lob_export([string filename [, int start [, int length]]])","Writes a large object into a file"],oci_lob_flush:["bool oci_lob_flush( [ int flag ] )","Flushes the LOB buffer"],oci_lob_import:["bool oci_lob_import( string filename )","Loads file into a LOB"],oci_lob_is_equal:["bool oci_lob_is_equal( object lob1, object lob2 )","Tests to see if two LOB/FILE locators are equal"],oci_lob_load:["string oci_lob_load()","Loads a large object"],oci_lob_read:["string oci_lob_read( int length )","Reads particular part of a large object"],oci_lob_rewind:["bool oci_lob_rewind()","Rewind pointer of a LOB"],oci_lob_save:["bool oci_lob_save( string data [, int offset ])","Saves a large object"],oci_lob_seek:["bool oci_lob_seek( int offset [, int whence ])","Moves the pointer of a LOB"],oci_lob_size:["int oci_lob_size()","Returns size of a large object"],oci_lob_tell:["int oci_lob_tell()","Tells LOB pointer position"],oci_lob_truncate:["bool oci_lob_truncate( [ int length ])","Truncates a LOB"],oci_lob_write:["int oci_lob_write( string string [, int length ])","Writes data to current position of a LOB"],oci_lob_write_temporary:["bool oci_lob_write_temporary(string var [, int lob_type])","Writes temporary blob"],oci_new_collection:["object oci_new_collection(resource connection, string tdo [, string schema])","Initialize a new collection"],oci_new_connect:["resource oci_new_connect(string user, string pass [, string db])","Connect to an Oracle database and log on. Returns a new session."],oci_new_cursor:["resource oci_new_cursor(resource connection)","Return a new cursor (Statement-Handle) - use this to bind ref-cursors!"],oci_new_descriptor:["object oci_new_descriptor(resource connection [, int type])","Initialize a new empty descriptor LOB/FILE (LOB is default)"],oci_num_fields:["int oci_num_fields(resource stmt)","Return the number of result columns in a statement"],oci_num_rows:["int oci_num_rows(resource stmt)","Return the row count of an OCI statement"],oci_parse:["resource oci_parse(resource connection, string query)","Parse a query and return a statement"],oci_password_change:["bool oci_password_change(resource connection, string username, string old_password, string new_password)","Changes the password of an account"],oci_pconnect:["resource oci_pconnect(string user, string pass [, string db [, string charset ]])","Connect to an Oracle database using a persistent connection and log on. Returns a new session."],oci_result:["string oci_result(resource stmt, mixed column)","Return a single column of result data"],oci_rollback:["bool oci_rollback(resource connection)","Rollback the current context"],oci_server_version:["string oci_server_version(resource connection)","Return a string containing server version information"],oci_set_action:["bool oci_set_action(resource connection, string value)","Sets the action attribute on the connection"],oci_set_client_identifier:["bool oci_set_client_identifier(resource connection, string value)","Sets the client identifier attribute on the connection"],oci_set_client_info:["bool oci_set_client_info(resource connection, string value)","Sets the client info attribute on the connection"],oci_set_edition:["bool oci_set_edition(string value)","Sets the edition attribute for all subsequent connections created"],oci_set_module_name:["bool oci_set_module_name(resource connection, string value)","Sets the module attribute on the connection"],oci_set_prefetch:["bool oci_set_prefetch(resource stmt, int prefetch_rows)","Sets the number of rows to be prefetched on execute to prefetch_rows for stmt"],oci_statement_type:["string oci_statement_type(resource stmt)","Return the query type of an OCI statement"],ocifetchinto:["int ocifetchinto(resource stmt, array &output [, int mode])","Fetch a row of result data into an array"],ocigetbufferinglob:["bool ocigetbufferinglob()","Returns current state of buffering for a LOB"],ocisetbufferinglob:["bool ocisetbufferinglob( bool flag )","Enables/disables buffering for a LOB"],octdec:["int octdec(string octal_number)","Returns the decimal equivalent of an octal string"],odbc_autocommit:["mixed odbc_autocommit(resource connection_id [, int OnOff])","Toggle autocommit mode or get status"],odbc_binmode:["bool odbc_binmode(int result_id, int mode)","Handle binary column data"],odbc_close:["void odbc_close(resource connection_id)","Close an ODBC connection"],odbc_close_all:["void odbc_close_all()","Close all ODBC connections"],odbc_columnprivileges:["resource odbc_columnprivileges(resource connection_id, string catalog, string schema, string table, string column)","Returns a result identifier that can be used to fetch a list of columns and associated privileges for the specified table"],odbc_columns:["resource odbc_columns(resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])","Returns a result identifier that can be used to fetch a list of column names in specified tables"],odbc_commit:["bool odbc_commit(resource connection_id)","Commit an ODBC transaction"],odbc_connect:["resource odbc_connect(string DSN, string user, string password [, int cursor_option])","Connect to a datasource"],odbc_cursor:["string odbc_cursor(resource result_id)","Get cursor name"],odbc_data_source:["array odbc_data_source(resource connection_id, int fetch_type)","Return information about the currently connected data source"],odbc_error:["string odbc_error([resource connection_id])","Get the last error code"],odbc_errormsg:["string odbc_errormsg([resource connection_id])","Get the last error message"],odbc_exec:["resource odbc_exec(resource connection_id, string query [, int flags])","Prepare and execute an SQL statement"],odbc_execute:["bool odbc_execute(resource result_id [, array parameters_array])","Execute a prepared statement"],odbc_fetch_array:["array odbc_fetch_array(int result [, int rownumber])","Fetch a result row as an associative array"],odbc_fetch_into:["int odbc_fetch_into(resource result_id, array &result_array, [, int rownumber])","Fetch one result row into an array"],odbc_fetch_object:["object odbc_fetch_object(int result [, int rownumber])","Fetch a result row as an object"],odbc_fetch_row:["bool odbc_fetch_row(resource result_id [, int row_number])","Fetch a row"],odbc_field_len:["int odbc_field_len(resource result_id, int field_number)","Get the length (precision) of a column"],odbc_field_name:["string odbc_field_name(resource result_id, int field_number)","Get a column name"],odbc_field_num:["int odbc_field_num(resource result_id, string field_name)","Return column number"],odbc_field_scale:["int odbc_field_scale(resource result_id, int field_number)","Get the scale of a column"],odbc_field_type:["string odbc_field_type(resource result_id, int field_number)","Get the datatype of a column"],odbc_foreignkeys:["resource odbc_foreignkeys(resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)","Returns a result identifier to either a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table"],odbc_free_result:["bool odbc_free_result(resource result_id)","Free resources associated with a result"],odbc_gettypeinfo:["resource odbc_gettypeinfo(resource connection_id [, int data_type])","Returns a result identifier containing information about data types supported by the data source"],odbc_longreadlen:["bool odbc_longreadlen(int result_id, int length)","Handle LONG columns"],odbc_next_result:["bool odbc_next_result(resource result_id)","Checks if multiple results are avaiable"],odbc_num_fields:["int odbc_num_fields(resource result_id)","Get number of columns in a result"],odbc_num_rows:["int odbc_num_rows(resource result_id)","Get number of rows in a result"],odbc_pconnect:["resource odbc_pconnect(string DSN, string user, string password [, int cursor_option])","Establish a persistent connection to a datasource"],odbc_prepare:["resource odbc_prepare(resource connection_id, string query)","Prepares a statement for execution"],odbc_primarykeys:["resource odbc_primarykeys(resource connection_id, string qualifier, string owner, string table)","Returns a result identifier listing the column names that comprise the primary key for a table"],odbc_procedurecolumns:["resource odbc_procedurecolumns(resource connection_id [, string qualifier, string owner, string proc, string column])","Returns a result identifier containing the list of input and output parameters, as well as the columns that make up the result set for the specified procedures"],odbc_procedures:["resource odbc_procedures(resource connection_id [, string qualifier, string owner, string name])","Returns a result identifier containg the list of procedure names in a datasource"],odbc_result:["mixed odbc_result(resource result_id, mixed field)","Get result data"],odbc_result_all:["int odbc_result_all(resource result_id [, string format])","Print result as HTML table"],odbc_rollback:["bool odbc_rollback(resource connection_id)","Rollback a transaction"],odbc_setoption:["bool odbc_setoption(resource conn_id|result_id, int which, int option, int value)","Sets connection or statement options"],odbc_specialcolumns:["resource odbc_specialcolumns(resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable)","Returns a result identifier containing either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction"],odbc_statistics:["resource odbc_statistics(resource connection_id, string qualifier, string owner, string name, int unique, int accuracy)","Returns a result identifier that contains statistics about a single table and the indexes associated with the table"],odbc_tableprivileges:["resource odbc_tableprivileges(resource connection_id, string qualifier, string owner, string name)","Returns a result identifier containing a list of tables and the privileges associated with each table"],odbc_tables:["resource odbc_tables(resource connection_id [, string qualifier [, string owner [, string name [, string table_types]]]])","Call the SQLTables function"],opendir:["mixed opendir(string path[, resource context])","Open a directory and return a dir_handle"],openlog:["bool openlog(string ident, int option, int facility)","Open connection to system logger"],openssl_csr_export:["bool openssl_csr_export(resource csr, string &out [, bool notext=true])","Exports a CSR to file or a var"],openssl_csr_export_to_file:["bool openssl_csr_export_to_file(resource csr, string outfilename [, bool notext=true])","Exports a CSR to file"],openssl_csr_get_public_key:["mixed openssl_csr_get_public_key(mixed csr)","Returns the subject of a CERT or FALSE on error"],openssl_csr_get_subject:["mixed openssl_csr_get_subject(mixed csr)","Returns the subject of a CERT or FALSE on error"],openssl_csr_new:["bool openssl_csr_new(array dn, resource &privkey [, array configargs [, array extraattribs]])","Generates a privkey and CSR"],openssl_csr_sign:["resource openssl_csr_sign(mixed csr, mixed x509, mixed priv_key, long days [, array config_args [, long serial]])","Signs a cert with another CERT"],openssl_decrypt:["string openssl_decrypt(string data, string method, string password [, bool raw_input=false])","Takes raw or base64 encoded string and dectupt it using given method and key"],openssl_dh_compute_key:["string openssl_dh_compute_key(string pub_key, resource dh_key)","Computes shared sicret for public value of remote DH key and local DH key"],openssl_digest:["string openssl_digest(string data, string method [, bool raw_output=false])","Computes digest hash value for given data using given method, returns raw or binhex encoded string"],openssl_encrypt:["string openssl_encrypt(string data, string method, string password [, bool raw_output=false])","Encrypts given data with given method and key, returns raw or base64 encoded string"],openssl_error_string:["mixed openssl_error_string()","Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages"],openssl_get_cipher_methods:["array openssl_get_cipher_methods([bool aliases = false])","Return array of available cipher methods"],openssl_get_md_methods:["array openssl_get_md_methods([bool aliases = false])","Return array of available digest methods"],openssl_open:["bool openssl_open(string data, &string opendata, string ekey, mixed privkey)","Opens data"],openssl_pkcs12_export:["bool openssl_pkcs12_export(mixed x509, string &out, mixed priv_key, string pass[, array args])","Creates and exports a PKCS12 to a var"],openssl_pkcs12_export_to_file:["bool openssl_pkcs12_export_to_file(mixed x509, string filename, mixed priv_key, string pass[, array args])","Creates and exports a PKCS to file"],openssl_pkcs12_read:["bool openssl_pkcs12_read(string PKCS12, array &certs, string pass)","Parses a PKCS12 to an array"],openssl_pkcs7_decrypt:["bool openssl_pkcs7_decrypt(string infilename, string outfilename, mixed recipcert [, mixed recipkey])","Decrypts the S/MIME message in the file name infilename and output the results to the file name outfilename. recipcert is a CERT for one of the recipients. recipkey specifies the private key matching recipcert, if recipcert does not include the key"],openssl_pkcs7_encrypt:["bool openssl_pkcs7_encrypt(string infile, string outfile, mixed recipcerts, array headers [, long flags [, long cipher]])","Encrypts the message in the file named infile with the certificates in recipcerts and output the result to the file named outfile"],openssl_pkcs7_sign:["bool openssl_pkcs7_sign(string infile, string outfile, mixed signcert, mixed signkey, array headers [, long flags [, string extracertsfilename]])","Signs the MIME message in the file named infile with signcert/signkey and output the result to file name outfile. headers lists plain text headers to exclude from the signed portion of the message, and should include to, from and subject as a minimum"],openssl_pkcs7_verify:["bool openssl_pkcs7_verify(string filename, long flags [, string signerscerts [, array cainfo [, string extracerts [, string content]]]])","Verifys that the data block is intact, the signer is who they say they are, and returns the CERTs of the signers"],openssl_pkey_export:["bool openssl_pkey_export(mixed key, &mixed out [, string passphrase [, array config_args]])","Gets an exportable representation of a key into a string or file"],openssl_pkey_export_to_file:["bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase, array config_args)","Gets an exportable representation of a key into a file"],openssl_pkey_free:["void openssl_pkey_free(int key)","Frees a key"],openssl_pkey_get_details:["resource openssl_pkey_get_details(resource key)","returns an array with the key details (bits, pkey, type)"],openssl_pkey_get_private:["int openssl_pkey_get_private(string key [, string passphrase])","Gets private keys"],openssl_pkey_get_public:["int openssl_pkey_get_public(mixed cert)","Gets public key from X.509 certificate"],openssl_pkey_new:["resource openssl_pkey_new([array configargs])","Generates a new private key"],openssl_private_decrypt:["bool openssl_private_decrypt(string data, string &decrypted, mixed key [, int padding])","Decrypts data with private key"],openssl_private_encrypt:["bool openssl_private_encrypt(string data, string &crypted, mixed key [, int padding])","Encrypts data with private key"],openssl_public_decrypt:["bool openssl_public_decrypt(string data, string &crypted, resource key [, int padding])","Decrypts data with public key"],openssl_public_encrypt:["bool openssl_public_encrypt(string data, string &crypted, mixed key [, int padding])","Encrypts data with public key"],openssl_random_pseudo_bytes:["string openssl_random_pseudo_bytes(integer length [, &bool returned_strong_result])","Returns a string of the length specified filled with random pseudo bytes"],openssl_seal:["int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys)","Seals data"],openssl_sign:["bool openssl_sign(string data, &string signature, mixed key[, mixed method])","Signs data"],openssl_verify:["int openssl_verify(string data, string signature, mixed key[, mixed method])","Verifys data"],openssl_x509_check_private_key:["bool openssl_x509_check_private_key(mixed cert, mixed key)","Checks if a private key corresponds to a CERT"],openssl_x509_checkpurpose:["int openssl_x509_checkpurpose(mixed x509cert, int purpose, array cainfo [, string untrustedfile])","Checks the CERT to see if it can be used for the purpose in purpose. cainfo holds information about trusted CAs"],openssl_x509_export:["bool openssl_x509_export(mixed x509, string &out [, bool notext = true])","Exports a CERT to file or a var"],openssl_x509_export_to_file:["bool openssl_x509_export_to_file(mixed x509, string outfilename [, bool notext = true])","Exports a CERT to file or a var"],openssl_x509_free:["void openssl_x509_free(resource x509)","Frees X.509 certificates"],openssl_x509_parse:["array openssl_x509_parse(mixed x509 [, bool shortnames=true])","Returns an array of the fields/values of the CERT"],openssl_x509_read:["resource openssl_x509_read(mixed cert)","Reads X.509 certificates"],ord:["int ord(string character)","Returns ASCII value of character"],output_add_rewrite_var:["bool output_add_rewrite_var(string name, string value)","Add URL rewriter values"],output_reset_rewrite_vars:["bool output_reset_rewrite_vars()","Reset(clear) URL rewriter values"],pack:["string pack(string format, mixed arg1 [, mixed arg2 [, mixed ...]])","Takes one or more arguments and packs them into a binary string according to the format argument"],parse_ini_file:["array parse_ini_file(string filename [, bool process_sections [, int scanner_mode]])","Parse configuration file"],parse_ini_string:["array parse_ini_string(string ini_string [, bool process_sections [, int scanner_mode]])","Parse configuration string"],parse_locale:["static array parse_locale($locale)","* parses a locale-id into an array the different parts of it"],parse_str:["void parse_str(string encoded_string [, array result])","Parses GET/POST/COOKIE data and sets global variables"],parse_url:["mixed parse_url(string url, [int url_component])","Parse a URL and return its components"],passthru:["void passthru(string command [, int &return_value])","Execute an external program and display raw output"],pathinfo:["array pathinfo(string path[, int options])","Returns information about a certain string"],pclose:["int pclose(resource fp)","Close a file pointer opened by popen()"],pcnlt_sigwaitinfo:["int pcnlt_sigwaitinfo(array set[, array &siginfo])","Synchronously wait for queued signals"],pcntl_alarm:["int pcntl_alarm(int seconds)","Set an alarm clock for delivery of a signal"],pcntl_exec:["bool pcntl_exec(string path [, array args [, array envs]])","Executes specified program in current process space as defined by exec(2)"],pcntl_fork:["int pcntl_fork()","Forks the currently running process following the same behavior as the UNIX fork() system call"],pcntl_getpriority:["int pcntl_getpriority([int pid [, int process_identifier]])","Get the priority of any process"],pcntl_setpriority:["bool pcntl_setpriority(int priority [, int pid [, int process_identifier]])","Change the priority of any process"],pcntl_signal:["bool pcntl_signal(int signo, callback handle [, bool restart_syscalls])","Assigns a system signal handler to a PHP function"],pcntl_signal_dispatch:["bool pcntl_signal_dispatch()","Dispatch signals to signal handlers"],pcntl_sigprocmask:["bool pcntl_sigprocmask(int how, array set[, array &oldset])","Examine and change blocked signals"],pcntl_sigtimedwait:["int pcntl_sigtimedwait(array set[, array &siginfo[, int seconds[, int nanoseconds]]])","Wait for queued signals"],pcntl_wait:["int pcntl_wait(int &status)","Waits on or returns the status of a forked child as defined by the waitpid() system call"],pcntl_waitpid:["int pcntl_waitpid(int pid, int &status, int options)","Waits on or returns the status of a forked child as defined by the waitpid() system call"],pcntl_wexitstatus:["int pcntl_wexitstatus(int status)","Returns the status code of a child's exit"],pcntl_wifexited:["bool pcntl_wifexited(int status)","Returns true if the child status code represents a successful exit"],pcntl_wifsignaled:["bool pcntl_wifsignaled(int status)","Returns true if the child status code represents a process that was terminated due to a signal"],pcntl_wifstopped:["bool pcntl_wifstopped(int status)","Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid)"],pcntl_wstopsig:["int pcntl_wstopsig(int status)","Returns the number of the signal that caused the process to stop who's status code is passed"],pcntl_wtermsig:["int pcntl_wtermsig(int status)","Returns the number of the signal that terminated the process who's status code is passed"],pdo_drivers:["array pdo_drivers()","Return array of available PDO drivers"],pfsockopen:["resource pfsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])","Open persistent Internet or Unix domain socket connection"],pg_affected_rows:["int pg_affected_rows(resource result)","Returns the number of affected tuples"],pg_cancel_query:["bool pg_cancel_query(resource connection)","Cancel request"],pg_client_encoding:["string pg_client_encoding([resource connection])","Get the current client encoding"],pg_close:["bool pg_close([resource connection])","Close a PostgreSQL connection"],pg_connect:["resource pg_connect(string connection_string[, int connect_type] | [string host, string port [, string options [, string tty,]]] string database)","Open a PostgreSQL connection"],pg_connection_busy:["bool pg_connection_busy(resource connection)","Get connection is busy or not"],pg_connection_reset:["bool pg_connection_reset(resource connection)","Reset connection (reconnect)"],pg_connection_status:["int pg_connection_status(resource connnection)","Get connection status"],pg_convert:["array pg_convert(resource db, string table, array values[, int options])","Check and convert values for PostgreSQL SQL statement"],pg_copy_from:["bool pg_copy_from(resource connection, string table_name , array rows [, string delimiter [, string null_as]])","Copy table from array"],pg_copy_to:["array pg_copy_to(resource connection, string table_name [, string delimiter [, string null_as]])","Copy table to array"],pg_dbname:["string pg_dbname([resource connection])","Get the database name"],pg_delete:["mixed pg_delete(resource db, string table, array ids[, int options])","Delete records has ids (id => value)"],pg_end_copy:["bool pg_end_copy([resource connection])","Sync with backend. Completes the Copy command"],pg_escape_bytea:["string pg_escape_bytea([resource connection,] string data)","Escape binary for bytea type"],pg_escape_string:["string pg_escape_string([resource connection,] string data)","Escape string for text/char type"],pg_execute:["resource pg_execute([resource connection,] string stmtname, array params)","Execute a prepared query"],pg_fetch_all:["array pg_fetch_all(resource result)","Fetch all rows into array"],pg_fetch_all_columns:["array pg_fetch_all_columns(resource result [, int column_number])","Fetch all rows into array"],pg_fetch_array:["array pg_fetch_array(resource result [, int row [, int result_type]])","Fetch a row as an array"],pg_fetch_assoc:["array pg_fetch_assoc(resource result [, int row])","Fetch a row as an assoc array"],pg_fetch_object:["object pg_fetch_object(resource result [, int row [, string class_name [, NULL|array ctor_params]]])","Fetch a row as an object"],pg_fetch_result:["mixed pg_fetch_result(resource result, [int row_number,] mixed field_name)","Returns values from a result identifier"],pg_fetch_row:["array pg_fetch_row(resource result [, int row [, int result_type]])","Get a row as an enumerated array"],pg_field_is_null:["int pg_field_is_null(resource result, [int row,] mixed field_name_or_number)","Test if a field is NULL"],pg_field_name:["string pg_field_name(resource result, int field_number)","Returns the name of the field"],pg_field_num:["int pg_field_num(resource result, string field_name)","Returns the field number of the named field"],pg_field_prtlen:["int pg_field_prtlen(resource result, [int row,] mixed field_name_or_number)","Returns the printed length"],pg_field_size:["int pg_field_size(resource result, int field_number)","Returns the internal size of the field"],pg_field_table:["mixed pg_field_table(resource result, int field_number[, bool oid_only])","Returns the name of the table field belongs to, or table's oid if oid_only is true"],pg_field_type:["string pg_field_type(resource result, int field_number)","Returns the type name for the given field"],pg_field_type_oid:["string pg_field_type_oid(resource result, int field_number)","Returns the type oid for the given field"],pg_free_result:["bool pg_free_result(resource result)","Free result memory"],pg_get_notify:["array pg_get_notify([resource connection[, result_type]])","Get asynchronous notification"],pg_get_pid:["int pg_get_pid([resource connection)","Get backend(server) pid"],pg_get_result:["resource pg_get_result(resource connection)","Get asynchronous query result"],pg_host:["string pg_host([resource connection])","Returns the host name associated with the connection"],pg_insert:["mixed pg_insert(resource db, string table, array values[, int options])","Insert values (filed => value) to table"],pg_last_error:["string pg_last_error([resource connection])","Get the error message string"],pg_last_notice:["string pg_last_notice(resource connection)","Returns the last notice set by the backend"],pg_last_oid:["string pg_last_oid(resource result)","Returns the last object identifier"],pg_lo_close:["bool pg_lo_close(resource large_object)","Close a large object"],pg_lo_create:["mixed pg_lo_create([resource connection],[mixed large_object_oid])","Create a large object"],pg_lo_export:["bool pg_lo_export([resource connection, ] int objoid, string filename)","Export large object direct to filesystem"],pg_lo_import:["int pg_lo_import([resource connection, ] string filename [, mixed oid])","Import large object direct from filesystem"],pg_lo_open:["resource pg_lo_open([resource connection,] int large_object_oid, string mode)","Open a large object and return fd"],pg_lo_read:["string pg_lo_read(resource large_object [, int len])","Read a large object"],pg_lo_read_all:["int pg_lo_read_all(resource large_object)","Read a large object and send straight to browser"],pg_lo_seek:["bool pg_lo_seek(resource large_object, int offset [, int whence])","Seeks position of large object"],pg_lo_tell:["int pg_lo_tell(resource large_object)","Returns current position of large object"],pg_lo_unlink:["bool pg_lo_unlink([resource connection,] string large_object_oid)","Delete a large object"],pg_lo_write:["int pg_lo_write(resource large_object, string buf [, int len])","Write a large object"],pg_meta_data:["array pg_meta_data(resource db, string table)","Get meta_data"],pg_num_fields:["int pg_num_fields(resource result)","Return the number of fields in the result"],pg_num_rows:["int pg_num_rows(resource result)","Return the number of rows in the result"],pg_options:["string pg_options([resource connection])","Get the options associated with the connection"],pg_parameter_status:["string|false pg_parameter_status([resource connection,] string param_name)","Returns the value of a server parameter"],pg_pconnect:["resource pg_pconnect(string connection_string | [string host, string port [, string options [, string tty,]]] string database)","Open a persistent PostgreSQL connection"],pg_ping:["bool pg_ping([resource connection])","Ping database. If connection is bad, try to reconnect."],pg_port:["int pg_port([resource connection])","Return the port number associated with the connection"],pg_prepare:["resource pg_prepare([resource connection,] string stmtname, string query)","Prepare a query for future execution"],pg_put_line:["bool pg_put_line([resource connection,] string query)","Send null-terminated string to backend server"],pg_query:["resource pg_query([resource connection,] string query)","Execute a query"],pg_query_params:["resource pg_query_params([resource connection,] string query, array params)","Execute a query"],pg_result_error:["string pg_result_error(resource result)","Get error message associated with result"],pg_result_error_field:["string pg_result_error_field(resource result, int fieldcode)","Get error message field associated with result"],pg_result_seek:["bool pg_result_seek(resource result, int offset)","Set internal row offset"],pg_result_status:["mixed pg_result_status(resource result[, long result_type])","Get status of query result"],pg_select:["mixed pg_select(resource db, string table, array ids[, int options])","Select records that has ids (id => value)"],pg_send_execute:["bool pg_send_execute(resource connection, string stmtname, array params)","Executes prevriously prepared stmtname asynchronously"],pg_send_prepare:["bool pg_send_prepare(resource connection, string stmtname, string query)","Asynchronously prepare a query for future execution"],pg_send_query:["bool pg_send_query(resource connection, string query)","Send asynchronous query"],pg_send_query_params:["bool pg_send_query_params(resource connection, string query, array params)","Send asynchronous parameterized query"],pg_set_client_encoding:["int pg_set_client_encoding([resource connection,] string encoding)","Set client encoding"],pg_set_error_verbosity:["int pg_set_error_verbosity([resource connection,] int verbosity)","Set error verbosity"],pg_trace:["bool pg_trace(string filename [, string mode [, resource connection]])","Enable tracing a PostgreSQL connection"],pg_transaction_status:["int pg_transaction_status(resource connnection)","Get transaction status"],pg_tty:["string pg_tty([resource connection])","Return the tty name associated with the connection"],pg_unescape_bytea:["string pg_unescape_bytea(string data)","Unescape binary for bytea type"],pg_untrace:["bool pg_untrace([resource connection])","Disable tracing of a PostgreSQL connection"],pg_update:["mixed pg_update(resource db, string table, array fields, array ids[, int options])","Update table using values (field => value) and ids (id => value)"],pg_version:["array pg_version([resource connection])","Returns an array with client, protocol and server version (when available)"],php_egg_logo_guid:["string php_egg_logo_guid()","Return the special ID used to request the PHP logo in phpinfo screens"],php_ini_loaded_file:["string php_ini_loaded_file()","Return the actual loaded ini filename"],php_ini_scanned_files:["string php_ini_scanned_files()","Return comma-separated string of .ini files parsed from the additional ini dir"],php_logo_guid:["string php_logo_guid()","Return the special ID used to request the PHP logo in phpinfo screens"],php_real_logo_guid:["string php_real_logo_guid()","Return the special ID used to request the PHP logo in phpinfo screens"],php_sapi_name:["string php_sapi_name()","Return the current SAPI module name"],php_snmpv3:["void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st)","* * Generic SNMPv3 object fetcher * From here is passed on the the common internal object fetcher. * * st=SNMP_CMD_GET snmp3_get() - query an agent and return a single value. * st=SNMP_CMD_GETNEXT snmp3_getnext() - query an agent and return the next single value. * st=SNMP_CMD_WALK snmp3_walk() - walk the mib and return a single dimensional array * containing the values. * st=SNMP_CMD_REALWALK snmp3_real_walk() - walk the mib and return an * array of oid,value pairs. * st=SNMP_CMD_SET snmp3_set() - query an agent and set a single value *"],php_strip_whitespace:["string php_strip_whitespace(string file_name)","Return source with stripped comments and whitespace"],php_uname:["string php_uname()","Return information about the system PHP was built on"],phpcredits:["void phpcredits([int flag])","Prints the list of people who've contributed to the PHP project"],phpinfo:["void phpinfo([int what])","Output a page of useful information about PHP and the current request"],phpversion:["string phpversion([string extension])","Return the current PHP version"],pi:["float pi()","Returns an approximation of pi"],png2wbmp:["bool png2wbmp(string f_org, string f_dest, int d_height, int d_width, int threshold)","Convert PNG image to WBMP image"],popen:["resource popen(string command, string mode)","Execute a command and open either a read or a write pipe to it"],posix_access:["bool posix_access(string file [, int mode])","Determine accessibility of a file (POSIX.1 5.6.3)"],posix_ctermid:["string posix_ctermid()","Generate terminal path name (POSIX.1, 4.7.1)"],posix_get_last_error:["int posix_get_last_error()","Retrieve the error number set by the last posix function which failed."],posix_getcwd:["string posix_getcwd()","Get working directory pathname (POSIX.1, 5.2.2)"],posix_getegid:["int posix_getegid()","Get the current effective group id (POSIX.1, 4.2.1)"],posix_geteuid:["int posix_geteuid()","Get the current effective user id (POSIX.1, 4.2.1)"],posix_getgid:["int posix_getgid()","Get the current group id (POSIX.1, 4.2.1)"],posix_getgrgid:["array posix_getgrgid(long gid)","Group database access (POSIX.1, 9.2.1)"],posix_getgrnam:["array posix_getgrnam(string groupname)","Group database access (POSIX.1, 9.2.1)"],posix_getgroups:["array posix_getgroups()","Get supplementary group id's (POSIX.1, 4.2.3)"],posix_getlogin:["string posix_getlogin()","Get user name (POSIX.1, 4.2.4)"],posix_getpgid:["int posix_getpgid()","Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)"],posix_getpgrp:["int posix_getpgrp()","Get current process group id (POSIX.1, 4.3.1)"],posix_getpid:["int posix_getpid()","Get the current process id (POSIX.1, 4.1.1)"],posix_getppid:["int posix_getppid()","Get the parent process id (POSIX.1, 4.1.1)"],posix_getpwnam:["array posix_getpwnam(string groupname)","User database access (POSIX.1, 9.2.2)"],posix_getpwuid:["array posix_getpwuid(long uid)","User database access (POSIX.1, 9.2.2)"],posix_getrlimit:["array posix_getrlimit()","Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)"],posix_getsid:["int posix_getsid()","Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)"],posix_getuid:["int posix_getuid()","Get the current user id (POSIX.1, 4.2.1)"],posix_initgroups:["bool posix_initgroups(string name, int base_group_id)","Calculate the group access list for the user specified in name."],posix_isatty:["bool posix_isatty(int fd)","Determine if filedesc is a tty (POSIX.1, 4.7.1)"],posix_kill:["bool posix_kill(int pid, int sig)","Send a signal to a process (POSIX.1, 3.3.2)"],posix_mkfifo:["bool posix_mkfifo(string pathname, int mode)","Make a FIFO special file (POSIX.1, 5.4.2)"],posix_mknod:["bool posix_mknod(string pathname, int mode [, int major [, int minor]])","Make a special or ordinary file (POSIX.1)"],posix_setegid:["bool posix_setegid(long uid)","Set effective group id"],posix_seteuid:["bool posix_seteuid(long uid)","Set effective user id"],posix_setgid:["bool posix_setgid(int uid)","Set group id (POSIX.1, 4.2.2)"],posix_setpgid:["bool posix_setpgid(int pid, int pgid)","Set process group id for job control (POSIX.1, 4.3.3)"],posix_setsid:["int posix_setsid()","Create session and set process group id (POSIX.1, 4.3.2)"],posix_setuid:["bool posix_setuid(long uid)","Set user id (POSIX.1, 4.2.2)"],posix_strerror:["string posix_strerror(int errno)","Retrieve the system error message associated with the given errno."],posix_times:["array posix_times()","Get process times (POSIX.1, 4.5.2)"],posix_ttyname:["string posix_ttyname(int fd)","Determine terminal device name (POSIX.1, 4.7.2)"],posix_uname:["array posix_uname()","Get system name (POSIX.1, 4.4.1)"],pow:["number pow(number base, number exponent)","Returns base raised to the power of exponent. Returns integer result when possible"],preg_filter:["mixed preg_filter(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])","Perform Perl-style regular expression replacement and only return matches."],preg_grep:["array preg_grep(string regex, array input [, int flags])","Searches array and returns entries which match regex"],preg_last_error:["int preg_last_error()","Returns the error code of the last regexp execution."],preg_match:["int preg_match(string pattern, string subject [, array &subpatterns [, int flags [, int offset]]])","Perform a Perl-style regular expression match"],preg_match_all:["int preg_match_all(string pattern, string subject, array &subpatterns [, int flags [, int offset]])","Perform a Perl-style global regular expression match"],preg_quote:["string preg_quote(string str [, string delim_char])","Quote regular expression characters plus an optional character"],preg_replace:["mixed preg_replace(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])","Perform Perl-style regular expression replacement."],preg_replace_callback:["mixed preg_replace_callback(mixed regex, mixed callback, mixed subject [, int limit [, int &count]])","Perform Perl-style regular expression replacement using replacement callback."],preg_split:["array preg_split(string pattern, string subject [, int limit [, int flags]])","Split string into an array using a perl-style regular expression as a delimiter"],prev:["mixed prev(array array_arg)","Move array argument's internal pointer to the previous element and return it"],print:["int print(string arg)","Output a string"],print_r:["mixed print_r(mixed var [, bool return])","Prints out or returns information about the specified variable"],printf:["int printf(string format [, mixed arg1 [, mixed ...]])","Output a formatted string"],proc_close:["int proc_close(resource process)","close a process opened by proc_open"],proc_get_status:["array proc_get_status(resource process)","get information about a process opened by proc_open"],proc_nice:["bool proc_nice(int priority)","Change the priority of the current process"],proc_open:["resource proc_open(string command, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]])","Run a process with more control over it's file descriptors"],proc_terminate:["bool proc_terminate(resource process [, long signal])","kill a process opened by proc_open"],property_exists:["bool property_exists(mixed object_or_class, string property_name)","Checks if the object or class has a property"],pspell_add_to_personal:["bool pspell_add_to_personal(int pspell, string word)","Adds a word to a personal list"],pspell_add_to_session:["bool pspell_add_to_session(int pspell, string word)","Adds a word to the current session"],pspell_check:["bool pspell_check(int pspell, string word)","Returns true if word is valid"],pspell_clear_session:["bool pspell_clear_session(int pspell)","Clears the current session"],pspell_config_create:["int pspell_config_create(string language [, string spelling [, string jargon [, string encoding]]])","Create a new config to be used later to create a manager"],pspell_config_data_dir:["bool pspell_config_data_dir(int conf, string directory)","location of language data files"],pspell_config_dict_dir:["bool pspell_config_dict_dir(int conf, string directory)","location of the main word list"],pspell_config_ignore:["bool pspell_config_ignore(int conf, int ignore)","Ignore words <= n chars"],pspell_config_mode:["bool pspell_config_mode(int conf, long mode)","Select mode for config (PSPELL_FAST, PSPELL_NORMAL or PSPELL_BAD_SPELLERS)"],pspell_config_personal:["bool pspell_config_personal(int conf, string personal)","Use a personal dictionary for this config"],pspell_config_repl:["bool pspell_config_repl(int conf, string repl)","Use a personal dictionary with replacement pairs for this config"],pspell_config_runtogether:["bool pspell_config_runtogether(int conf, bool runtogether)","Consider run-together words as valid components"],pspell_config_save_repl:["bool pspell_config_save_repl(int conf, bool save)","Save replacement pairs when personal list is saved for this config"],pspell_new:["int pspell_new(string language [, string spelling [, string jargon [, string encoding [, int mode]]]])","Load a dictionary"],pspell_new_config:["int pspell_new_config(int config)","Load a dictionary based on the given config"],pspell_new_personal:["int pspell_new_personal(string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]])","Load a dictionary with a personal wordlist"],pspell_save_wordlist:["bool pspell_save_wordlist(int pspell)","Saves the current (personal) wordlist"],pspell_store_replacement:["bool pspell_store_replacement(int pspell, string misspell, string correct)","Notify the dictionary of a user-selected replacement"],pspell_suggest:["array pspell_suggest(int pspell, string word)","Returns array of suggestions"],putenv:["bool putenv(string setting)","Set the value of an environment variable"],quoted_printable_decode:["string quoted_printable_decode(string str)","Convert a quoted-printable string to an 8 bit string"],quoted_printable_encode:["string quoted_printable_encode(string str)",""],quotemeta:["string quotemeta(string str)","Quotes meta characters"],rad2deg:["float rad2deg(float number)","Converts the radian number to the equivalent number in degrees"],rand:["int rand([int min, int max])","Returns a random number"],range:["array range(mixed low, mixed high[, int step])","Create an array containing the range of integers or characters from low to high (inclusive)"],rawurldecode:["string rawurldecode(string str)","Decodes URL-encodes string"],rawurlencode:["string rawurlencode(string str)","URL-encodes string"],readdir:["string readdir([resource dir_handle])","Read directory entry from dir_handle"],readfile:["int readfile(string filename [, bool use_include_path[, resource context]])","Output a file or a URL"],readgzfile:["int readgzfile(string filename [, int use_include_path])","Output a .gz-file"],readline:["string readline([string prompt])","Reads a line"],readline_add_history:["bool readline_add_history(string prompt)","Adds a line to the history"],readline_callback_handler_install:["void readline_callback_handler_install(string prompt, mixed callback)","Initializes the readline callback interface and terminal, prints the prompt and returns immediately"],readline_callback_handler_remove:["bool readline_callback_handler_remove()","Removes a previously installed callback handler and restores terminal settings"],readline_callback_read_char:["void readline_callback_read_char()","Informs the readline callback interface that a character is ready for input"],readline_clear_history:["bool readline_clear_history()","Clears the history"],readline_completion_function:["bool readline_completion_function(string funcname)","Readline completion function?"],readline_info:["mixed readline_info([string varname [, string newvalue]])","Gets/sets various internal readline variables."],readline_list_history:["array readline_list_history()","Lists the history"],readline_on_new_line:["void readline_on_new_line()","Inform readline that the cursor has moved to a new line"],readline_read_history:["bool readline_read_history([string filename])","Reads the history"],readline_redisplay:["void readline_redisplay()","Ask readline to redraw the display"],readline_write_history:["bool readline_write_history([string filename])","Writes the history"],readlink:["string readlink(string filename)","Return the target of a symbolic link"],realpath:["string realpath(string path)","Return the resolved path"],realpath_cache_get:["bool realpath_cache_get()","Get current size of realpath cache"],realpath_cache_size:["bool realpath_cache_size()","Get current size of realpath cache"],recode_file:["bool recode_file(string request, resource input, resource output)","Recode file input into file output according to request"],recode_string:["string recode_string(string request, string str)","Recode string str according to request string"],register_shutdown_function:["void register_shutdown_function(string function_name)","Register a user-level function to be called on request termination"],register_tick_function:["bool register_tick_function(string function_name [, mixed arg [, mixed ... ]])","Registers a tick callback function"],rename:["bool rename(string old_name, string new_name[, resource context])","Rename a file"],require:["bool require(string path)","Includes and evaluates the specified file, erroring if the file cannot be included"],require_once:["bool require_once(string path)","Includes and evaluates the specified file, erroring if the file cannot be included"],reset:["mixed reset(array array_arg)","Set array argument's internal pointer to the first element and return it"],restore_error_handler:["void restore_error_handler()","Restores the previously defined error handler function"],restore_exception_handler:["void restore_exception_handler()","Restores the previously defined exception handler function"],restore_include_path:["void restore_include_path()","Restore the value of the include_path configuration option"],rewind:["bool rewind(resource fp)","Rewind the position of a file pointer"],rewinddir:["void rewinddir([resource dir_handle])","Rewind dir_handle back to the start"],rmdir:["bool rmdir(string dirname[, resource context])","Remove a directory"],round:["float round(float number [, int precision [, int mode]])","Returns the number rounded to specified precision"],rsort:["bool rsort(array &array_arg [, int sort_flags])","Sort an array in reverse order"],rtrim:["string rtrim(string str [, string character_mask])","Removes trailing whitespace"],scandir:["array scandir(string dir [, int sorting_order [, resource context]])","List files & directories inside the specified path"],sem_acquire:["bool sem_acquire(resource id)","Acquires the semaphore with the given id, blocking if necessary"],sem_get:["resource sem_get(int key [, int max_acquire [, int perm [, int auto_release]])","Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously"],sem_release:["bool sem_release(resource id)","Releases the semaphore with the given id"],sem_remove:["bool sem_remove(resource id)","Removes semaphore from Unix systems"],serialize:["string serialize(mixed variable)","Returns a string representation of variable (which can later be unserialized)"],session_cache_expire:["int session_cache_expire([int new_cache_expire])","Return the current cache expire. If new_cache_expire is given, the current cache_expire is replaced with new_cache_expire"],session_cache_limiter:["string session_cache_limiter([string new_cache_limiter])","Return the current cache limiter. If new_cache_limited is given, the current cache_limiter is replaced with new_cache_limiter"],session_decode:["bool session_decode(string data)","Deserializes data and reinitializes the variables"],session_destroy:["bool session_destroy()","Destroy the current session and all data associated with it"],session_encode:["string session_encode()","Serializes the current setup and returns the serialized representation"],session_get_cookie_params:["array session_get_cookie_params()","Return the session cookie parameters"],session_id:["string session_id([string newid])","Return the current session id. If newid is given, the session id is replaced with newid"],session_is_registered:["bool session_is_registered(string varname)","Checks if a variable is registered in session"],session_module_name:["string session_module_name([string newname])","Return the current module name used for accessing session data. If newname is given, the module name is replaced with newname"],session_name:["string session_name([string newname])","Return the current session name. If newname is given, the session name is replaced with newname"],session_regenerate_id:["bool session_regenerate_id([bool delete_old_session])","Update the current session id with a newly generated one. If delete_old_session is set to true, remove the old session."],session_register:["bool session_register(mixed var_names [, mixed ...])","Adds varname(s) to the list of variables which are freezed at the session end"],session_save_path:["string session_save_path([string newname])","Return the current save path passed to module_name. If newname is given, the save path is replaced with newname"],session_set_cookie_params:["void session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])","Set session cookie parameters"],session_set_save_handler:["void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)","Sets user-level functions"],session_start:["bool session_start()","Begin session - reinitializes freezed variables, registers browsers etc"],session_unregister:["bool session_unregister(string varname)","Removes varname from the list of variables which are freezed at the session end"],session_unset:["void session_unset()","Unset all registered variables"],session_write_close:["void session_write_close()","Write session data and end session"],set_error_handler:["string set_error_handler(string error_handler [, int error_types])","Sets a user-defined error handler function. Returns the previously defined error handler, or false on error"],set_exception_handler:["string set_exception_handler(callable exception_handler)","Sets a user-defined exception handler function. Returns the previously defined exception handler, or false on error"],set_include_path:["string set_include_path(string new_include_path)","Sets the include_path configuration option"],set_magic_quotes_runtime:["bool set_magic_quotes_runtime(int new_setting)","Set the current active configuration setting of magic_quotes_runtime and return previous"],set_time_limit:["bool set_time_limit(int seconds)","Sets the maximum time a script can run"],setcookie:["bool setcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])","Send a cookie"],setlocale:["string setlocale(mixed category, string locale [, string ...])","Set locale information"],setrawcookie:["bool setrawcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])","Send a cookie with no url encoding of the value"],settype:["bool settype(mixed var, string type)","Set the type of the variable"],sha1:["string sha1(string str [, bool raw_output])","Calculate the sha1 hash of a string"],sha1_file:["string sha1_file(string filename [, bool raw_output])","Calculate the sha1 hash of given filename"],shell_exec:["string shell_exec(string cmd)","Execute command via shell and return complete output as string"],shm_attach:["int shm_attach(int key [, int memsize [, int perm]])","Creates or open a shared memory segment"],shm_detach:["bool shm_detach(resource shm_identifier)","Disconnects from shared memory segment"],shm_get_var:["mixed shm_get_var(resource id, int variable_key)","Returns a variable from shared memory"],shm_has_var:["bool shm_has_var(resource id, int variable_key)","Checks whether a specific entry exists"],shm_put_var:["bool shm_put_var(resource shm_identifier, int variable_key, mixed variable)","Inserts or updates a variable in shared memory"],shm_remove:["bool shm_remove(resource shm_identifier)","Removes shared memory from Unix systems"],shm_remove_var:["bool shm_remove_var(resource id, int variable_key)","Removes variable from shared memory"],shmop_close:["void shmop_close(int shmid)","closes a shared memory segment"],shmop_delete:["bool shmop_delete(int shmid)","mark segment for deletion"],shmop_open:["int shmop_open(int key, string flags, int mode, int size)","gets and attaches a shared memory segment"],shmop_read:["string shmop_read(int shmid, int start, int count)","reads from a shm segment"],shmop_size:["int shmop_size(int shmid)","returns the shm size"],shmop_write:["int shmop_write(int shmid, string data, int offset)","writes to a shared memory segment"],shuffle:["bool shuffle(array array_arg)","Randomly shuffle the contents of an array"],similar_text:["int similar_text(string str1, string str2 [, float percent])","Calculates the similarity between two strings"],simplexml_import_dom:["simplemxml_element simplexml_import_dom(domNode node [, string class_name])","Get a simplexml_element object from dom to allow for processing"],simplexml_load_file:["simplemxml_element simplexml_load_file(string filename [, string class_name [, int options [, string ns [, bool is_prefix]]]])","Load a filename and return a simplexml_element object to allow for processing"],simplexml_load_string:["simplemxml_element simplexml_load_string(string data [, string class_name [, int options [, string ns [, bool is_prefix]]]])","Load a string and return a simplexml_element object to allow for processing"],sin:["float sin(float number)","Returns the sine of the number in radians"],sinh:["float sinh(float number)","Returns the hyperbolic sine of the number, defined as (exp(number) - exp(-number))/2"],sleep:["void sleep(int seconds)","Delay for a given number of seconds"],smfi_addheader:["bool smfi_addheader(string headerf, string headerv)","Adds a header to the current message."],smfi_addrcpt:["bool smfi_addrcpt(string rcpt)","Add a recipient to the message envelope."],smfi_chgheader:["bool smfi_chgheader(string headerf, string headerv)","Changes a header's value for the current message."],smfi_delrcpt:["bool smfi_delrcpt(string rcpt)","Removes the named recipient from the current message's envelope."],smfi_getsymval:["string smfi_getsymval(string macro)","Returns the value of the given macro or NULL if the macro is not defined."],smfi_replacebody:["bool smfi_replacebody(string body)","Replaces the body of the current message. If called more than once, subsequent calls result in data being appended to the new body."],smfi_setflags:["void smfi_setflags(long flags)","Sets the flags describing the actions the filter may take."],smfi_setreply:["bool smfi_setreply(string rcode, string xcode, string message)","Directly set the SMTP error reply code for this connection. This code will be used on subsequent error replies resulting from actions taken by this filter."],smfi_settimeout:["void smfi_settimeout(long timeout)","Sets the number of seconds libmilter will wait for an MTA connection before timing out a socket."],snmp2_get:["string snmp2_get(string host, string community, string object_id [, int timeout [, int retries]])","Fetch a SNMP object"],snmp2_getnext:["string snmp2_getnext(string host, string community, string object_id [, int timeout [, int retries]])","Fetch a SNMP object"],snmp2_real_walk:["array snmp2_real_walk(string host, string community, string object_id [, int timeout [, int retries]])","Return all objects including their respective object id withing the specified one"],snmp2_set:["int snmp2_set(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])","Set the value of a SNMP object"],snmp2_walk:["array snmp2_walk(string host, string community, string object_id [, int timeout [, int retries]])","Return all objects under the specified object id"],snmp3_get:["int snmp3_get(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp3_getnext:["int snmp3_getnext(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp3_real_walk:["int snmp3_real_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp3_set:["int snmp3_set(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id, string type, mixed value [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp3_walk:["int snmp3_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp_get_quick_print:["bool snmp_get_quick_print()","Return the current status of quick_print"],snmp_get_valueretrieval:["int snmp_get_valueretrieval()","Return the method how the SNMP values will be returned"],snmp_read_mib:["int snmp_read_mib(string filename)","Reads and parses a MIB file into the active MIB tree."],snmp_set_enum_print:["void snmp_set_enum_print(int enum_print)","Return all values that are enums with their enum value instead of the raw integer"],snmp_set_oid_output_format:["void snmp_set_oid_output_format(int oid_format)","Set the OID output format."],snmp_set_quick_print:["void snmp_set_quick_print(int quick_print)","Return all objects including their respective object id withing the specified one"],snmp_set_valueretrieval:["void snmp_set_valueretrieval(int method)","Specify the method how the SNMP values will be returned"],snmpget:["string snmpget(string host, string community, string object_id [, int timeout [, int retries]])","Fetch a SNMP object"],snmpgetnext:["string snmpgetnext(string host, string community, string object_id [, int timeout [, int retries]])","Fetch a SNMP object"],snmprealwalk:["array snmprealwalk(string host, string community, string object_id [, int timeout [, int retries]])","Return all objects including their respective object id withing the specified one"],snmpset:["int snmpset(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])","Set the value of a SNMP object"],snmpwalk:["array snmpwalk(string host, string community, string object_id [, int timeout [, int retries]])","Return all objects under the specified object id"],socket_accept:["resource socket_accept(resource socket)","Accepts a connection on the listening socket fd"],socket_bind:["bool socket_bind(resource socket, string addr [, int port])","Binds an open socket to a listening port, port is only specified in AF_INET family."],socket_clear_error:["void socket_clear_error([resource socket])","Clears the error on the socket or the last error code."],socket_close:["void socket_close(resource socket)","Closes a file descriptor"],socket_connect:["bool socket_connect(resource socket, string addr [, int port])","Opens a connection to addr:port on the socket specified by socket"],socket_create:["resource socket_create(int domain, int type, int protocol)","Creates an endpoint for communication in the domain specified by domain, of type specified by type"],socket_create_listen:["resource socket_create_listen(int port[, int backlog])","Opens a socket on port to accept connections"],socket_create_pair:["bool socket_create_pair(int domain, int type, int protocol, array &fd)","Creates a pair of indistinguishable sockets and stores them in fds."],socket_get_option:["mixed socket_get_option(resource socket, int level, int optname)","Gets socket options for the socket"],socket_getpeername:["bool socket_getpeername(resource socket, string &addr[, int &port])","Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type."],socket_getsockname:["bool socket_getsockname(resource socket, string &addr[, int &port])","Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type."],socket_last_error:["int socket_last_error([resource socket])","Returns the last socket error (either the last used or the provided socket resource)"],socket_listen:["bool socket_listen(resource socket[, int backlog])","Sets the maximum number of connections allowed to be waited for on the socket specified by fd"],socket_read:["string socket_read(resource socket, int length [, int type])","Reads a maximum of length bytes from socket"],socket_recv:["int socket_recv(resource socket, string &buf, int len, int flags)","Receives data from a connected socket"],socket_recvfrom:["int socket_recvfrom(resource socket, string &buf, int len, int flags, string &name [, int &port])","Receives data from a socket, connected or not"],socket_select:["int socket_select(array &read_fds, array &write_fds, array &except_fds, int tv_sec[, int tv_usec])","Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec"],socket_send:["int socket_send(resource socket, string buf, int len, int flags)","Sends data to a connected socket"],socket_sendto:["int socket_sendto(resource socket, string buf, int len, int flags, string addr [, int port])","Sends a message to a socket, whether it is connected or not"],socket_set_block:["bool socket_set_block(resource socket)","Sets blocking mode on a socket resource"],socket_set_nonblock:["bool socket_set_nonblock(resource socket)","Sets nonblocking mode on a socket resource"],socket_set_option:["bool socket_set_option(resource socket, int level, int optname, int|array optval)","Sets socket options for the socket"],socket_shutdown:["bool socket_shutdown(resource socket[, int how])","Shuts down a socket for receiving, sending, or both."],socket_strerror:["string socket_strerror(int errno)","Returns a string describing an error"],socket_write:["int socket_write(resource socket, string buf[, int length])","Writes the buffer to the socket resource, length is optional"],solid_fetch_prev:["bool solid_fetch_prev(resource result_id)",""],sort:["bool sort(array &array_arg [, int sort_flags])","Sort an array"],soundex:["string soundex(string str)","Calculate the soundex key of a string"],spl_autoload:["void spl_autoload(string class_name [, string file_extensions])","Default implementation for __autoload()"],spl_autoload_call:["void spl_autoload_call(string class_name)","Try all registerd autoload function to load the requested class"],spl_autoload_extensions:["string spl_autoload_extensions([string file_extensions])","Register and return default file extensions for spl_autoload"],spl_autoload_functions:["false|array spl_autoload_functions()","Return all registered __autoload() functionns"],spl_autoload_register:['bool spl_autoload_register([mixed autoload_function = "spl_autoload" [, throw = true [, prepend]]])',"Register given function as __autoload() implementation"],spl_autoload_unregister:["bool spl_autoload_unregister(mixed autoload_function)","Unregister given function as __autoload() implementation"],spl_classes:["array spl_classes()","Return an array containing the names of all clsses and interfaces defined in SPL"],spl_object_hash:["string spl_object_hash(object obj)","Return hash id for given object"],split:["array split(string pattern, string string [, int limit])","Split string into array by regular expression"],spliti:["array spliti(string pattern, string string [, int limit])","Split string into array by regular expression case-insensitive"],sprintf:["string sprintf(string format [, mixed arg1 [, mixed ...]])","Return a formatted string"],sql_regcase:["string sql_regcase(string string)","Make regular expression for case insensitive match"],sqlite_array_query:["array sqlite_array_query(resource db, string query [ , int result_type [, bool decode_binary]])","Executes a query against a given database and returns an array of arrays."],sqlite_busy_timeout:["void sqlite_busy_timeout(resource db, int ms)","Set busy timeout duration. If ms <= 0, all busy handlers are disabled."],sqlite_changes:["int sqlite_changes(resource db)","Returns the number of rows that were changed by the most recent SQL statement."],sqlite_close:["void sqlite_close(resource db)","Closes an open sqlite database."],sqlite_column:["mixed sqlite_column(resource result, mixed index_or_name [, bool decode_binary])","Fetches a column from the current row of a result set."],sqlite_create_aggregate:["bool sqlite_create_aggregate(resource db, string funcname, mixed step_func, mixed finalize_func[, long num_args])","Registers an aggregate function for queries."],sqlite_create_function:["bool sqlite_create_function(resource db, string funcname, mixed callback[, long num_args])",'Registers a "regular" function for queries.'],sqlite_current:["array sqlite_current(resource result [, int result_type [, bool decode_binary]])","Fetches the current row from a result set as an array."],sqlite_error_string:["string sqlite_error_string(int error_code)","Returns the textual description of an error code."],sqlite_escape_string:["string sqlite_escape_string(string item)","Escapes a string for use as a query parameter."],sqlite_exec:["bool sqlite_exec(string query, resource db[, string &error_message])","Executes a result-less query against a given database"],sqlite_factory:["object sqlite_factory(string filename [, int mode [, string &error_message]])","Opens a SQLite database and creates an object for it. Will create the database if it does not exist."],sqlite_fetch_all:["array sqlite_fetch_all(resource result [, int result_type [, bool decode_binary]])","Fetches all rows from a result set as an array of arrays."],sqlite_fetch_array:["array sqlite_fetch_array(resource result [, int result_type [, bool decode_binary]])","Fetches the next row from a result set as an array."],sqlite_fetch_column_types:["resource sqlite_fetch_column_types(string table_name, resource db [, int result_type])","Return an array of column types from a particular table."],sqlite_fetch_object:["object sqlite_fetch_object(resource result [, string class_name [, NULL|array ctor_params [, bool decode_binary]]])","Fetches the next row from a result set as an object."],sqlite_fetch_single:["string sqlite_fetch_single(resource result [, bool decode_binary])","Fetches the first column of a result set as a string."],sqlite_field_name:["string sqlite_field_name(resource result, int field_index)","Returns the name of a particular field of a result set."],sqlite_has_prev:["bool sqlite_has_prev(resource result)","* Returns whether a previous row is available."],sqlite_key:["int sqlite_key(resource result)","Return the current row index of a buffered result."],sqlite_last_error:["int sqlite_last_error(resource db)","Returns the error code of the last error for a database."],sqlite_last_insert_rowid:["int sqlite_last_insert_rowid(resource db)","Returns the rowid of the most recently inserted row."],sqlite_libencoding:["string sqlite_libencoding()","Returns the encoding (iso8859 or UTF-8) of the linked SQLite library."],sqlite_libversion:["string sqlite_libversion()","Returns the version of the linked SQLite library."],sqlite_next:["bool sqlite_next(resource result)","Seek to the next row number of a result set."],sqlite_num_fields:["int sqlite_num_fields(resource result)","Returns the number of fields in a result set."],sqlite_num_rows:["int sqlite_num_rows(resource result)","Returns the number of rows in a buffered result set."],sqlite_open:["resource sqlite_open(string filename [, int mode [, string &error_message]])","Opens a SQLite database. Will create the database if it does not exist."],sqlite_popen:["resource sqlite_popen(string filename [, int mode [, string &error_message]])","Opens a persistent handle to a SQLite database. Will create the database if it does not exist."],sqlite_prev:["bool sqlite_prev(resource result)","* Seek to the previous row number of a result set."],sqlite_query:["resource sqlite_query(string query, resource db [, int result_type [, string &error_message]])","Executes a query against a given database and returns a result handle."],sqlite_rewind:["bool sqlite_rewind(resource result)","Seek to the first row number of a buffered result set."],sqlite_seek:["bool sqlite_seek(resource result, int row)","Seek to a particular row number of a buffered result set."],sqlite_single_query:["array sqlite_single_query(resource db, string query [, bool first_row_only [, bool decode_binary]])","Executes a query and returns either an array for one single column or the value of the first row."],sqlite_udf_decode_binary:["string sqlite_udf_decode_binary(string data)","Decode binary encoding on a string parameter passed to an UDF."],sqlite_udf_encode_binary:["string sqlite_udf_encode_binary(string data)","Apply binary encoding (if required) to a string to return from an UDF."],sqlite_unbuffered_query:["resource sqlite_unbuffered_query(string query, resource db [ , int result_type [, string &error_message]])","Executes a query that does not prefetch and buffer all data."],sqlite_valid:["bool sqlite_valid(resource result)","Returns whether more rows are available."],sqrt:["float sqrt(float number)","Returns the square root of the number"],srand:["void srand([int seed])","Seeds random number generator"],sscanf:["mixed sscanf(string str, string format [, string ...])","Implements an ANSI C compatible sscanf"],stat:["array stat(string filename)","Give information about a file"],str_getcsv:["array str_getcsv(string input[, string delimiter[, string enclosure[, string escape]]])","Parse a CSV string into an array"],str_ireplace:["mixed str_ireplace(mixed search, mixed replace, mixed subject [, int &replace_count])","Replaces all occurrences of search in haystack with replace / case-insensitive"],str_pad:["string str_pad(string input, int pad_length [, string pad_string [, int pad_type]])","Returns input string padded on the left or right to specified length with pad_string"],str_repeat:["string str_repeat(string input, int mult)","Returns the input string repeat mult times"],str_replace:["mixed str_replace(mixed search, mixed replace, mixed subject [, int &replace_count])","Replaces all occurrences of search in haystack with replace"],str_rot13:["string str_rot13(string str)","Perform the rot13 transform on a string"],str_shuffle:["void str_shuffle(string str)","Shuffles string. One permutation of all possible is created"],str_split:["array str_split(string str [, int split_length])","Convert a string to an array. If split_length is specified, break the string down into chunks each split_length characters long."],str_word_count:["mixed str_word_count(string str, [int format [, string charlist]])",'Counts the number of words inside a string. If format of 1 is specified, then the function will return an array containing all the words found inside the string. If format of 2 is specified, then the function will return an associated array where the position of the word is the key and the word itself is the value. For the purpose of this function, \'word\' is defined as a locale dependent string containing alphabetic characters, which also may contain, but not start with "\'" and "-" characters.'],strcasecmp:["int strcasecmp(string str1, string str2)","Binary safe case-insensitive string comparison"],strchr:["string strchr(string haystack, string needle)","An alias for strstr"],strcmp:["int strcmp(string str1, string str2)","Binary safe string comparison"],strcoll:["int strcoll(string str1, string str2)","Compares two strings using the current locale"],strcspn:["int strcspn(string str, string mask [, start [, len]])","Finds length of initial segment consisting entirely of characters not found in mask. If start or/and length is provide works like strcspn(substr($s,$start,$len),$bad_chars)"],stream_bucket_append:["void stream_bucket_append(resource brigade, resource bucket)","Append bucket to brigade"],stream_bucket_make_writeable:["object stream_bucket_make_writeable(resource brigade)","Return a bucket object from the brigade for operating on"],stream_bucket_new:["resource stream_bucket_new(resource stream, string buffer)","Create a new bucket for use on the current stream"],stream_bucket_prepend:["void stream_bucket_prepend(resource brigade, resource bucket)","Prepend bucket to brigade"],stream_context_create:["resource stream_context_create([array options[, array params]])","Create a file context and optionally set parameters"],stream_context_get_default:["resource stream_context_get_default([array options])","Get a handle on the default file/stream context and optionally set parameters"],stream_context_get_options:["array stream_context_get_options(resource context|resource stream)","Retrieve options for a stream/wrapper/context"],stream_context_get_params:["array stream_context_get_params(resource context|resource stream)","Get parameters of a file context"],stream_context_set_default:["resource stream_context_set_default(array options)","Set default file/stream context, returns the context as a resource"],stream_context_set_option:["bool stream_context_set_option(resource context|resource stream, string wrappername, string optionname, mixed value)","Set an option for a wrapper"],stream_context_set_params:["bool stream_context_set_params(resource context|resource stream, array options)","Set parameters for a file context"],stream_copy_to_stream:["long stream_copy_to_stream(resource source, resource dest [, long maxlen [, long pos]])","Reads up to maxlen bytes from source stream and writes them to dest stream."],stream_filter_append:["resource stream_filter_append(resource stream, string filtername[, int read_write[, string filterparams]])","Append a filter to a stream"],stream_filter_prepend:["resource stream_filter_prepend(resource stream, string filtername[, int read_write[, string filterparams]])","Prepend a filter to a stream"],stream_filter_register:["bool stream_filter_register(string filtername, string classname)","Registers a custom filter handler class"],stream_filter_remove:["bool stream_filter_remove(resource stream_filter)","Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource"],stream_get_contents:["string stream_get_contents(resource source [, long maxlen [, long offset]])","Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string."],stream_get_filters:["array stream_get_filters()","Returns a list of registered filters"],stream_get_line:["string stream_get_line(resource stream, int maxlen [, string ending])","Read up to maxlen bytes from a stream or until the ending string is found"],stream_get_meta_data:["array stream_get_meta_data(resource fp)","Retrieves header/meta data from streams/file pointers"],stream_get_transports:["array stream_get_transports()","Retrieves list of registered socket transports"],stream_get_wrappers:["array stream_get_wrappers()","Retrieves list of registered stream wrappers"],stream_is_local:["bool stream_is_local(resource stream|string url)",""],stream_resolve_include_path:["string stream_resolve_include_path(string filename)","Determine what file will be opened by calls to fopen() with a relative path"],stream_select:["int stream_select(array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec])","Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec"],stream_set_blocking:["bool stream_set_blocking(resource socket, int mode)","Set blocking/non-blocking mode on a socket or stream"],stream_set_timeout:["bool stream_set_timeout(resource stream, int seconds [, int microseconds])","Set timeout on stream read to seconds + microseonds"],stream_set_write_buffer:["int stream_set_write_buffer(resource fp, int buffer)","Set file write buffer"],stream_socket_accept:["resource stream_socket_accept(resource serverstream, [ double timeout [, string &peername ]])","Accept a client connection from a server socket"],stream_socket_client:["resource stream_socket_client(string remoteaddress [, long &errcode [, string &errstring [, double timeout [, long flags [, resource context]]]]])","Open a client connection to a remote address"],stream_socket_enable_crypto:["int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind [, resource sessionstream]])","Enable or disable a specific kind of crypto on the stream"],stream_socket_get_name:["string stream_socket_get_name(resource stream, bool want_peer)","Returns either the locally bound or remote name for a socket stream"],stream_socket_pair:["array stream_socket_pair(int domain, int type, int protocol)","Creates a pair of connected, indistinguishable socket streams"],stream_socket_recvfrom:["string stream_socket_recvfrom(resource stream, long amount [, long flags [, string &remote_addr]])","Receives data from a socket stream"],stream_socket_sendto:["long stream_socket_sendto(resouce stream, string data [, long flags [, string target_addr]])","Send data to a socket stream. If target_addr is specified it must be in dotted quad (or [ipv6]) format"],stream_socket_server:["resource stream_socket_server(string localaddress [, long &errcode [, string &errstring [, long flags [, resource context]]]])","Create a server socket bound to localaddress"],stream_socket_shutdown:["int stream_socket_shutdown(resource stream, int how)","causes all or part of a full-duplex connection on the socket associated with stream to be shut down. If how is SHUT_RD, further receptions will be disallowed. If how is SHUT_WR, further transmissions will be disallowed. If how is SHUT_RDWR, further receptions and transmissions will be disallowed."],stream_supports_lock:["bool stream_supports_lock(resource stream)","Tells whether the stream supports locking through flock()."],stream_wrapper_register:["bool stream_wrapper_register(string protocol, string classname[, integer flags])","Registers a custom URL protocol handler class"],stream_wrapper_restore:["bool stream_wrapper_restore(string protocol)","Restore the original protocol handler, overriding if necessary"],stream_wrapper_unregister:["bool stream_wrapper_unregister(string protocol)","Unregister a wrapper for the life of the current request."],strftime:["string strftime(string format [, int timestamp])","Format a local time/date according to locale settings"],strip_tags:["string strip_tags(string str [, string allowable_tags])","Strips HTML and PHP tags from a string"],stripcslashes:["string stripcslashes(string str)","Strips backslashes from a string. Uses C-style conventions"],stripos:["int stripos(string haystack, string needle [, int offset])","Finds position of first occurrence of a string within another, case insensitive"],stripslashes:["string stripslashes(string str)","Strips backslashes from a string"],stristr:["string stristr(string haystack, string needle[, bool part])","Finds first occurrence of a string within another, case insensitive"],strlen:["int strlen(string str)","Get string length"],strnatcasecmp:["int strnatcasecmp(string s1, string s2)","Returns the result of case-insensitive string comparison using 'natural' algorithm"],strnatcmp:["int strnatcmp(string s1, string s2)","Returns the result of string comparison using 'natural' algorithm"],strncasecmp:["int strncasecmp(string str1, string str2, int len)","Binary safe string comparison"],strncmp:["int strncmp(string str1, string str2, int len)","Binary safe string comparison"],strpbrk:["array strpbrk(string haystack, string char_list)","Search a string for any of a set of characters"],strpos:["int strpos(string haystack, string needle [, int offset])","Finds position of first occurrence of a string within another"],strptime:["string strptime(string timestamp, string format)","Parse a time/date generated with strftime()"],strrchr:["string strrchr(string haystack, string needle)","Finds the last occurrence of a character in a string within another"],strrev:["string strrev(string str)","Reverse a string"],strripos:["int strripos(string haystack, string needle [, int offset])","Finds position of last occurrence of a string within another string"],strrpos:["int strrpos(string haystack, string needle [, int offset])","Finds position of last occurrence of a string within another string"],strspn:["int strspn(string str, string mask [, start [, len]])","Finds length of initial segment consisting entirely of characters found in mask. If start or/and length is provided works like strspn(substr($s,$start,$len),$good_chars)"],strstr:["string strstr(string haystack, string needle[, bool part])","Finds first occurrence of a string within another"],strtok:["string strtok([string str,] string token)","Tokenize a string"],strtolower:["string strtolower(string str)","Makes a string lowercase"],strtotime:["int strtotime(string time [, int now ])","Convert string representation of date and time to a timestamp"],strtoupper:["string strtoupper(string str)","Makes a string uppercase"],strtr:["string strtr(string str, string from[, string to])","Translates characters in str using given translation tables"],strval:["string strval(mixed var)","Get the string value of a variable"],substr:["string substr(string str, int start [, int length])","Returns part of a string"],substr_compare:["int substr_compare(string main_str, string str, int offset [, int length [, bool case_sensitivity]])","Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters"],substr_count:["int substr_count(string haystack, string needle [, int offset [, int length]])","Returns the number of times a substring occurs in the string"],substr_replace:["mixed substr_replace(mixed str, mixed repl, mixed start [, mixed length])","Replaces part of a string with another string"],sybase_affected_rows:["int sybase_affected_rows([resource link_id])","Get number of affected rows in last query"],sybase_close:["bool sybase_close([resource link_id])","Close Sybase connection"],sybase_connect:["int sybase_connect([string host [, string user [, string password [, string charset [, string appname [, bool new]]]]]])","Open Sybase server connection"],sybase_data_seek:["bool sybase_data_seek(resource result, int offset)","Move internal row pointer"],sybase_deadlock_retry_count:["void sybase_deadlock_retry_count(int retry_count)","Sets deadlock retry count"],sybase_fetch_array:["array sybase_fetch_array(resource result)","Fetch row as array"],sybase_fetch_assoc:["array sybase_fetch_assoc(resource result)","Fetch row as array without numberic indices"],sybase_fetch_field:["object sybase_fetch_field(resource result [, int offset])","Get field information"],sybase_fetch_object:["object sybase_fetch_object(resource result [, mixed object])","Fetch row as object"],sybase_fetch_row:["array sybase_fetch_row(resource result)","Get row as enumerated array"],sybase_field_seek:["bool sybase_field_seek(resource result, int offset)","Set field offset"],sybase_free_result:["bool sybase_free_result(resource result)","Free result memory"],sybase_get_last_message:["string sybase_get_last_message()","Returns the last message from server (over min_message_severity)"],sybase_min_client_severity:["void sybase_min_client_severity(int severity)","Sets minimum client severity"],sybase_min_server_severity:["void sybase_min_server_severity(int severity)","Sets minimum server severity"],sybase_num_fields:["int sybase_num_fields(resource result)","Get number of fields in result"],sybase_num_rows:["int sybase_num_rows(resource result)","Get number of rows in result"],sybase_pconnect:["int sybase_pconnect([string host [, string user [, string password [, string charset [, string appname]]]]])","Open persistent Sybase connection"],sybase_query:["int sybase_query(string query [, resource link_id])","Send Sybase query"],sybase_result:["string sybase_result(resource result, int row, mixed field)","Get result data"],sybase_select_db:["bool sybase_select_db(string database [, resource link_id])","Select Sybase database"],sybase_set_message_handler:["bool sybase_set_message_handler(mixed error_func [, resource connection])","Set the error handler, to be called when a server message is raised. If error_func is NULL the handler will be deleted"],sybase_unbuffered_query:["int sybase_unbuffered_query(string query [, resource link_id])","Send Sybase query"],symlink:["int symlink(string target, string link)","Create a symbolic link"],sys_get_temp_dir:["string sys_get_temp_dir()","Returns directory path used for temporary files"],sys_getloadavg:["array sys_getloadavg()",""],syslog:["bool syslog(int priority, string message)","Generate a system log message"],system:["int system(string command [, int &return_value])","Execute an external program and display output"],tan:["float tan(float number)","Returns the tangent of the number in radians"],tanh:["float tanh(float number)","Returns the hyperbolic tangent of the number, defined as sinh(number)/cosh(number)"],tempnam:["string tempnam(string dir, string prefix)","Create a unique filename in a directory"],textdomain:["string textdomain(string domain)",'Set the textdomain to "domain". Returns the current domain'],tidy_access_count:["int tidy_access_count()","Returns the Number of Tidy accessibility warnings encountered for specified document."],tidy_clean_repair:["bool tidy_clean_repair()","Execute configured cleanup and repair operations on parsed markup"],tidy_config_count:["int tidy_config_count()","Returns the Number of Tidy configuration errors encountered for specified document."],tidy_diagnose:["bool tidy_diagnose()","Run configured diagnostics on parsed and repaired markup."],tidy_error_count:["int tidy_error_count()","Returns the Number of Tidy errors encountered for specified document."],tidy_get_body:["TidyNode tidy_get_body(resource tidy)","Returns a TidyNode Object starting from the tag of the tidy parse tree"],tidy_get_config:["array tidy_get_config()","Get current Tidy configuarion"],tidy_get_error_buffer:["string tidy_get_error_buffer([bool detailed])","Return warnings and errors which occured parsing the specified document"],tidy_get_head:["TidyNode tidy_get_head()","Returns a TidyNode Object starting from the tag of the tidy parse tree"],tidy_get_html:["TidyNode tidy_get_html()","Returns a TidyNode Object starting from the tag of the tidy parse tree"],tidy_get_html_ver:["int tidy_get_html_ver()","Get the Detected HTML version for the specified document."],tidy_get_opt_doc:["string tidy_get_opt_doc(tidy resource, string optname)","Returns the documentation for the given option name"],tidy_get_output:["string tidy_get_output()","Return a string representing the parsed tidy markup"],tidy_get_release:["string tidy_get_release()","Get release date (version) for Tidy library"],tidy_get_root:["TidyNode tidy_get_root()","Returns a TidyNode Object representing the root of the tidy parse tree"],tidy_get_status:["int tidy_get_status()","Get status of specfied document."],tidy_getopt:["mixed tidy_getopt(string option)","Returns the value of the specified configuration option for the tidy document."],tidy_is_xhtml:["bool tidy_is_xhtml()","Indicates if the document is a XHTML document."],tidy_is_xml:["bool tidy_is_xml()","Indicates if the document is a generic (non HTML/XHTML) XML document."],tidy_parse_file:["bool tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]])","Parse markup in file or URI"],tidy_parse_string:["bool tidy_parse_string(string input [, mixed config_options [, string encoding]])","Parse a document stored in a string"],tidy_repair_file:["bool tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]])","Repair a file using an optionally provided configuration file"],tidy_repair_string:["bool tidy_repair_string(string data [, mixed config_file [, string encoding]])","Repair a string using an optionally provided configuration file"],tidy_warning_count:["int tidy_warning_count()","Returns the Number of Tidy warnings encountered for specified document."],time:["int time()","Return current UNIX timestamp"],time_nanosleep:["mixed time_nanosleep(long seconds, long nanoseconds)","Delay for a number of seconds and nano seconds"],time_sleep_until:["mixed time_sleep_until(float timestamp)","Make the script sleep until the specified time"],timezone_abbreviations_list:["array timezone_abbreviations_list()","Returns associative array containing dst, offset and the timezone name"],timezone_identifiers_list:["array timezone_identifiers_list([long what[, string country]])","Returns numerically index array with all timezone identifiers."],timezone_location_get:["array timezone_location_get()","Returns location information for a timezone, including country code, latitude/longitude and comments"],timezone_name_from_abbr:["string timezone_name_from_abbr(string abbr[, long gmtOffset[, long isdst]])","Returns the timezone name from abbrevation"],timezone_name_get:["string timezone_name_get(DateTimeZone object)","Returns the name of the timezone."],timezone_offset_get:["long timezone_offset_get(DateTimeZone object, DateTime object)","Returns the timezone offset."],timezone_open:["DateTimeZone timezone_open(string timezone)","Returns new DateTimeZone object"],timezone_transitions_get:["array timezone_transitions_get(DateTimeZone object [, long timestamp_begin [, long timestamp_end ]])","Returns numerically indexed array containing associative array for all transitions in the specified range for the timezone."],timezone_version_get:["array timezone_version_get()","Returns the Olson database version number."],tmpfile:["resource tmpfile()","Create a temporary file that will be deleted automatically after use"],token_get_all:["array token_get_all(string source)",""],token_name:["string token_name(int type)",""],touch:["bool touch(string filename [, int time [, int atime]])","Set modification time of file"],trigger_error:["void trigger_error(string messsage [, int error_type])","Generates a user-level error/warning/notice message"],trim:["string trim(string str [, string character_mask])","Strips whitespace from the beginning and end of a string"],uasort:["bool uasort(array array_arg, string cmp_function)","Sort an array with a user-defined comparison function and maintain index association"],ucfirst:["string ucfirst(string str)","Make a string's first character lowercase"],ucwords:["string ucwords(string str)","Uppercase the first character of every word in a string"],uksort:["bool uksort(array array_arg, string cmp_function)","Sort an array by keys using a user-defined comparison function"],umask:["int umask([int mask])","Return or change the umask"],uniqid:["string uniqid([string prefix [, bool more_entropy]])","Generates a unique ID"],unixtojd:["int unixtojd([int timestamp])","Convert UNIX timestamp to Julian Day"],unlink:["bool unlink(string filename[, context context])","Delete a file"],unpack:["array unpack(string format, string input)","Unpack binary string into named array elements according to format argument"],unregister_tick_function:["void unregister_tick_function(string function_name)","Unregisters a tick callback function"],unserialize:["mixed unserialize(string variable_representation)","Takes a string representation of variable and recreates it"],unset:["void unset(mixed var [, mixed var])","Unset a given variable"],urldecode:["string urldecode(string str)","Decodes URL-encoded string"],urlencode:["string urlencode(string str)","URL-encodes string"],usleep:["void usleep(int micro_seconds)","Delay for a given number of micro seconds"],usort:["bool usort(array array_arg, string cmp_function)","Sort an array by values using a user-defined comparison function"],utf8_decode:["string utf8_decode(string data)","Converts a UTF-8 encoded string to ISO-8859-1"],utf8_encode:["string utf8_encode(string data)","Encodes an ISO-8859-1 string to UTF-8"],var_dump:["void var_dump(mixed var)","Dumps a string representation of variable to output"],var_export:["string var_export(mixed var [, bool return])","Outputs or returns a string representation of a variable"],variant_abs:["mixed variant_abs(mixed left)","Returns the absolute value of a variant"],variant_add:["mixed variant_add(mixed left, mixed right)",'"Adds" two variant values together and returns the result'],variant_and:["mixed variant_and(mixed left, mixed right)","performs a bitwise AND operation between two variants and returns the result"],variant_cast:["object variant_cast(object variant, int type)","Convert a variant into a new variant object of another type"],variant_cat:["mixed variant_cat(mixed left, mixed right)","concatenates two variant values together and returns the result"],variant_cmp:["int variant_cmp(mixed left, mixed right [, int lcid [, int flags]])","Compares two variants"],variant_date_from_timestamp:["object variant_date_from_timestamp(int timestamp)","Returns a variant date representation of a unix timestamp"],variant_date_to_timestamp:["int variant_date_to_timestamp(object variant)","Converts a variant date/time value to unix timestamp"],variant_div:["mixed variant_div(mixed left, mixed right)","Returns the result from dividing two variants"],variant_eqv:["mixed variant_eqv(mixed left, mixed right)","Performs a bitwise equivalence on two variants"],variant_fix:["mixed variant_fix(mixed left)","Returns the integer part ? of a variant"],variant_get_type:["int variant_get_type(object variant)","Returns the VT_XXX type code for a variant"],variant_idiv:["mixed variant_idiv(mixed left, mixed right)","Converts variants to integers and then returns the result from dividing them"],variant_imp:["mixed variant_imp(mixed left, mixed right)","Performs a bitwise implication on two variants"],variant_int:["mixed variant_int(mixed left)","Returns the integer portion of a variant"],variant_mod:["mixed variant_mod(mixed left, mixed right)","Divides two variants and returns only the remainder"],variant_mul:["mixed variant_mul(mixed left, mixed right)","multiplies the values of the two variants and returns the result"],variant_neg:["mixed variant_neg(mixed left)","Performs logical negation on a variant"],variant_not:["mixed variant_not(mixed left)","Performs bitwise not negation on a variant"],variant_or:["mixed variant_or(mixed left, mixed right)","Performs a logical disjunction on two variants"],variant_pow:["mixed variant_pow(mixed left, mixed right)","Returns the result of performing the power function with two variants"],variant_round:["mixed variant_round(mixed left, int decimals)","Rounds a variant to the specified number of decimal places"],variant_set:["void variant_set(object variant, mixed value)","Assigns a new value for a variant object"],variant_set_type:["void variant_set_type(object variant, int type)",'Convert a variant into another type. Variant is modified "in-place"'],variant_sub:["mixed variant_sub(mixed left, mixed right)","subtracts the value of the right variant from the left variant value and returns the result"],variant_xor:["mixed variant_xor(mixed left, mixed right)","Performs a logical exclusion on two variants"],version_compare:["int version_compare(string ver1, string ver2 [, string oper])",'Compares two "PHP-standardized" version number strings'],vfprintf:["int vfprintf(resource stream, string format, array args)","Output a formatted string into a stream"],virtual:["bool virtual(string filename)","Perform an Apache sub-request"],vprintf:["int vprintf(string format, array args)","Output a formatted string"],vsprintf:["string vsprintf(string format, array args)","Return a formatted string"],wddx_add_vars:["int wddx_add_vars(resource packet_id, mixed var_names [, mixed ...])","Serializes given variables and adds them to packet given by packet_id"],wddx_deserialize:["mixed wddx_deserialize(mixed packet)","Deserializes given packet and returns a PHP value"],wddx_packet_end:["string wddx_packet_end(resource packet_id)","Ends specified WDDX packet and returns the string containing the packet"],wddx_packet_start:["resource wddx_packet_start([string comment])","Starts a WDDX packet with optional comment and returns the packet id"],wddx_serialize_value:["string wddx_serialize_value(mixed var [, string comment])","Creates a new packet and serializes the given value"],wddx_serialize_vars:["string wddx_serialize_vars(mixed var_name [, mixed ...])","Creates a new packet and serializes given variables into a struct"],wordwrap:["string wordwrap(string str [, int width [, string break [, bool cut]]])","Wraps buffer to selected number of characters using string break char"],xml_error_string:["string xml_error_string(int code)","Get XML parser error string"],xml_get_current_byte_index:["int xml_get_current_byte_index(resource parser)","Get current byte index for an XML parser"],xml_get_current_column_number:["int xml_get_current_column_number(resource parser)","Get current column number for an XML parser"],xml_get_current_line_number:["int xml_get_current_line_number(resource parser)","Get current line number for an XML parser"],xml_get_error_code:["int xml_get_error_code(resource parser)","Get XML parser error code"],xml_parse:["int xml_parse(resource parser, string data [, int isFinal])","Start parsing an XML document"],xml_parse_into_struct:["int xml_parse_into_struct(resource parser, string data, array &values [, array &index ])","Parsing a XML document"],xml_parser_create:["resource xml_parser_create([string encoding])","Create an XML parser"],xml_parser_create_ns:["resource xml_parser_create_ns([string encoding [, string sep]])","Create an XML parser"],xml_parser_free:["int xml_parser_free(resource parser)","Free an XML parser"],xml_parser_get_option:["int xml_parser_get_option(resource parser, int option)","Get options from an XML parser"],xml_parser_set_option:["int xml_parser_set_option(resource parser, int option, mixed value)","Set options in an XML parser"],xml_set_character_data_handler:["int xml_set_character_data_handler(resource parser, string hdl)","Set up character data handler"],xml_set_default_handler:["int xml_set_default_handler(resource parser, string hdl)","Set up default handler"],xml_set_element_handler:["int xml_set_element_handler(resource parser, string shdl, string ehdl)","Set up start and end element handlers"],xml_set_end_namespace_decl_handler:["int xml_set_end_namespace_decl_handler(resource parser, string hdl)","Set up character data handler"],xml_set_external_entity_ref_handler:["int xml_set_external_entity_ref_handler(resource parser, string hdl)","Set up external entity reference handler"],xml_set_notation_decl_handler:["int xml_set_notation_decl_handler(resource parser, string hdl)","Set up notation declaration handler"],xml_set_object:["int xml_set_object(resource parser, object &obj)","Set up object which should be used for callbacks"],xml_set_processing_instruction_handler:["int xml_set_processing_instruction_handler(resource parser, string hdl)","Set up processing instruction (PI) handler"],xml_set_start_namespace_decl_handler:["int xml_set_start_namespace_decl_handler(resource parser, string hdl)","Set up character data handler"],xml_set_unparsed_entity_decl_handler:["int xml_set_unparsed_entity_decl_handler(resource parser, string hdl)","Set up unparsed entity declaration handler"],xmlrpc_decode:["array xmlrpc_decode(string xml [, string encoding])","Decodes XML into native PHP types"],xmlrpc_decode_request:["array xmlrpc_decode_request(string xml, string& method [, string encoding])","Decodes XML into native PHP types"],xmlrpc_encode:["string xmlrpc_encode(mixed value)","Generates XML for a PHP value"],xmlrpc_encode_request:["string xmlrpc_encode_request(string method, mixed params [, array output_options])","Generates XML for a method request"],xmlrpc_get_type:["string xmlrpc_get_type(mixed value)","Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime strings"],xmlrpc_is_fault:["bool xmlrpc_is_fault(array)","Determines if an array value represents an XMLRPC fault."],xmlrpc_parse_method_descriptions:["array xmlrpc_parse_method_descriptions(string xml)","Decodes XML into a list of method descriptions"],xmlrpc_server_add_introspection_data:["int xmlrpc_server_add_introspection_data(resource server, array desc)","Adds introspection documentation"],xmlrpc_server_call_method:["mixed xmlrpc_server_call_method(resource server, string xml, mixed user_data [, array output_options])","Parses XML requests and call methods"],xmlrpc_server_create:["resource xmlrpc_server_create()","Creates an xmlrpc server"],xmlrpc_server_destroy:["int xmlrpc_server_destroy(resource server)","Destroys server resources"],xmlrpc_server_register_introspection_callback:["bool xmlrpc_server_register_introspection_callback(resource server, string function)","Register a PHP function to generate documentation"],xmlrpc_server_register_method:["bool xmlrpc_server_register_method(resource server, string method_name, string function)","Register a PHP function to handle method matching method_name"],xmlrpc_set_type:["bool xmlrpc_set_type(string value, string type)","Sets xmlrpc type, base64 or datetime, for a PHP string value"],xmlwriter_end_attribute:["bool xmlwriter_end_attribute(resource xmlwriter)","End attribute - returns FALSE on error"],xmlwriter_end_cdata:["bool xmlwriter_end_cdata(resource xmlwriter)","End current CDATA - returns FALSE on error"],xmlwriter_end_comment:["bool xmlwriter_end_comment(resource xmlwriter)","Create end comment - returns FALSE on error"],xmlwriter_end_document:["bool xmlwriter_end_document(resource xmlwriter)","End current document - returns FALSE on error"],xmlwriter_end_dtd:["bool xmlwriter_end_dtd(resource xmlwriter)","End current DTD - returns FALSE on error"],xmlwriter_end_dtd_attlist:["bool xmlwriter_end_dtd_attlist(resource xmlwriter)","End current DTD AttList - returns FALSE on error"],xmlwriter_end_dtd_element:["bool xmlwriter_end_dtd_element(resource xmlwriter)","End current DTD element - returns FALSE on error"],xmlwriter_end_dtd_entity:["bool xmlwriter_end_dtd_entity(resource xmlwriter)","End current DTD Entity - returns FALSE on error"],xmlwriter_end_element:["bool xmlwriter_end_element(resource xmlwriter)","End current element - returns FALSE on error"],xmlwriter_end_pi:["bool xmlwriter_end_pi(resource xmlwriter)","End current PI - returns FALSE on error"],xmlwriter_flush:["mixed xmlwriter_flush(resource xmlwriter [,bool empty])","Output current buffer"],xmlwriter_full_end_element:["bool xmlwriter_full_end_element(resource xmlwriter)","End current element - returns FALSE on error"],xmlwriter_open_memory:["resource xmlwriter_open_memory()","Create new xmlwriter using memory for string output"],xmlwriter_open_uri:["resource xmlwriter_open_uri(resource xmlwriter, string source)","Create new xmlwriter using source uri for output"],xmlwriter_output_memory:["string xmlwriter_output_memory(resource xmlwriter [,bool flush])","Output current buffer as string"],xmlwriter_set_indent:["bool xmlwriter_set_indent(resource xmlwriter, bool indent)","Toggle indentation on/off - returns FALSE on error"],xmlwriter_set_indent_string:["bool xmlwriter_set_indent_string(resource xmlwriter, string indentString)","Set string used for indenting - returns FALSE on error"],xmlwriter_start_attribute:["bool xmlwriter_start_attribute(resource xmlwriter, string name)","Create start attribute - returns FALSE on error"],xmlwriter_start_attribute_ns:["bool xmlwriter_start_attribute_ns(resource xmlwriter, string prefix, string name, string uri)","Create start namespaced attribute - returns FALSE on error"],xmlwriter_start_cdata:["bool xmlwriter_start_cdata(resource xmlwriter)","Create start CDATA tag - returns FALSE on error"],xmlwriter_start_comment:["bool xmlwriter_start_comment(resource xmlwriter)","Create start comment - returns FALSE on error"],xmlwriter_start_document:["bool xmlwriter_start_document(resource xmlwriter, string version, string encoding, string standalone)","Create document tag - returns FALSE on error"],xmlwriter_start_dtd:["bool xmlwriter_start_dtd(resource xmlwriter, string name, string pubid, string sysid)","Create start DTD tag - returns FALSE on error"],xmlwriter_start_dtd_attlist:["bool xmlwriter_start_dtd_attlist(resource xmlwriter, string name)","Create start DTD AttList - returns FALSE on error"],xmlwriter_start_dtd_element:["bool xmlwriter_start_dtd_element(resource xmlwriter, string name)","Create start DTD element - returns FALSE on error"],xmlwriter_start_dtd_entity:["bool xmlwriter_start_dtd_entity(resource xmlwriter, string name, bool isparam)","Create start DTD Entity - returns FALSE on error"],xmlwriter_start_element:["bool xmlwriter_start_element(resource xmlwriter, string name)","Create start element tag - returns FALSE on error"],xmlwriter_start_element_ns:["bool xmlwriter_start_element_ns(resource xmlwriter, string prefix, string name, string uri)","Create start namespaced element tag - returns FALSE on error"],xmlwriter_start_pi:["bool xmlwriter_start_pi(resource xmlwriter, string target)","Create start PI tag - returns FALSE on error"],xmlwriter_text:["bool xmlwriter_text(resource xmlwriter, string content)","Write text - returns FALSE on error"],xmlwriter_write_attribute:["bool xmlwriter_write_attribute(resource xmlwriter, string name, string content)","Write full attribute - returns FALSE on error"],xmlwriter_write_attribute_ns:["bool xmlwriter_write_attribute_ns(resource xmlwriter, string prefix, string name, string uri, string content)","Write full namespaced attribute - returns FALSE on error"],xmlwriter_write_cdata:["bool xmlwriter_write_cdata(resource xmlwriter, string content)","Write full CDATA tag - returns FALSE on error"],xmlwriter_write_comment:["bool xmlwriter_write_comment(resource xmlwriter, string content)","Write full comment tag - returns FALSE on error"],xmlwriter_write_dtd:["bool xmlwriter_write_dtd(resource xmlwriter, string name, string pubid, string sysid, string subset)","Write full DTD tag - returns FALSE on error"],xmlwriter_write_dtd_attlist:["bool xmlwriter_write_dtd_attlist(resource xmlwriter, string name, string content)","Write full DTD AttList tag - returns FALSE on error"],xmlwriter_write_dtd_element:["bool xmlwriter_write_dtd_element(resource xmlwriter, string name, string content)","Write full DTD element tag - returns FALSE on error"],xmlwriter_write_dtd_entity:["bool xmlwriter_write_dtd_entity(resource xmlwriter, string name, string content [, int pe [, string pubid [, string sysid [, string ndataid]]]])","Write full DTD Entity tag - returns FALSE on error"],xmlwriter_write_element:["bool xmlwriter_write_element(resource xmlwriter, string name[, string content])","Write full element tag - returns FALSE on error"],xmlwriter_write_element_ns:["bool xmlwriter_write_element_ns(resource xmlwriter, string prefix, string name, string uri[, string content])","Write full namespaced element tag - returns FALSE on error"],xmlwriter_write_pi:["bool xmlwriter_write_pi(resource xmlwriter, string target, string content)","Write full PI tag - returns FALSE on error"],xmlwriter_write_raw:["bool xmlwriter_write_raw(resource xmlwriter, string content)","Write text - returns FALSE on error"],xsl_xsltprocessor_get_parameter:["string xsl_xsltprocessor_get_parameter(string namespace, string name)",""],xsl_xsltprocessor_has_exslt_support:["bool xsl_xsltprocessor_has_exslt_support()",""],xsl_xsltprocessor_import_stylesheet:["void xsl_xsltprocessor_import_stylesheet(domdocument doc)",""],xsl_xsltprocessor_register_php_functions:["void xsl_xsltprocessor_register_php_functions([mixed $restrict])",""],xsl_xsltprocessor_remove_parameter:["bool xsl_xsltprocessor_remove_parameter(string namespace, string name)",""],xsl_xsltprocessor_set_parameter:["bool xsl_xsltprocessor_set_parameter(string namespace, mixed name [, string value])",""],xsl_xsltprocessor_set_profiling:["bool xsl_xsltprocessor_set_profiling(string filename)",""],xsl_xsltprocessor_transform_to_doc:["domdocument xsl_xsltprocessor_transform_to_doc(domnode doc)",""],xsl_xsltprocessor_transform_to_uri:["int xsl_xsltprocessor_transform_to_uri(domdocument doc, string uri)",""],xsl_xsltprocessor_transform_to_xml:["string xsl_xsltprocessor_transform_to_xml(domdocument doc)",""],zend_logo_guid:["string zend_logo_guid()","Return the special ID used to request the Zend logo in phpinfo screens"],zend_version:["string zend_version()","Get the version of the Zend Engine"],zip_close:["void zip_close(resource zip)","Close a Zip archive"],zip_entry_close:["void zip_entry_close(resource zip_ent)","Close a zip entry"],zip_entry_compressedsize:["int zip_entry_compressedsize(resource zip_entry)","Return the compressed size of a ZZip entry"],zip_entry_compressionmethod:["string zip_entry_compressionmethod(resource zip_entry)","Return a string containing the compression method used on a particular entry"],zip_entry_filesize:["int zip_entry_filesize(resource zip_entry)","Return the actual filesize of a ZZip entry"],zip_entry_name:["string zip_entry_name(resource zip_entry)","Return the name given a ZZip entry"],zip_entry_open:["bool zip_entry_open(resource zip_dp, resource zip_entry [, string mode])","Open a Zip File, pointed by the resource entry"],zip_entry_read:["mixed zip_entry_read(resource zip_entry [, int len])","Read from an open directory entry"],zip_open:["resource zip_open(string filename)","Create new zip using source uri for output"],zip_read:["resource zip_read(resource zip)","Returns the next file in the archive"],zlib_get_coding_type:["string zlib_get_coding_type()","Returns the coding type used for output compression"],array_column:["array_column(array $array, int|string|null $column_key, int|string|null $index_key = null): array","Return the values from a single column in the input array"],boolval:["boolval(mixed $value): bool","Get the boolean value of a variable"],bzclose:["bzclose(resource $bz): bool","Close a bzip2 file"],bzflush:["bzflush(resource $bz): bool","Do nothing"],bzwrite:["bzwrite(resource $bz, string $data, ?int $length = null): int|false","Binary safe bzip2 file write"],checkdnsrr:["checkdnsrr(string $hostname, string $type = "MX"): bool","Check DNS records corresponding to a given Internet host name or IP address"],chop:["chop()","Alias of rtrim()"],class_uses:["class_uses(object|string $object_or_class, bool $autoload = true): array|false",""],curl_escape:["curl_escape(CurlHandle $handle, string $string): string|false","URL encodes the given string"],curl_file_create:["curl_file_create()","Create a CURLFile object"],curl_multi_errno:["curl_multi_errno(CurlMultiHandle $multi_handle): int","Return the last multi curl error number"],curl_multi_setopt:["curl_multi_setopt(CurlMultiHandle $multi_handle, int $option, mixed $value): bool","Set an option for the cURL multi handle"],curl_multi_strerror:["curl_multi_strerror(int $error_code): ?string","Return string describing error code"],curl_pause:["curl_pause(CurlHandle $handle, int $flags): int","Pause and unpause a connection"],curl_reset:["curl_reset(CurlHandle $handle): void","Reset all options of a libcurl session handle"],curl_share_close:["curl_share_close(CurlShareHandle $share_handle): void","Close a cURL share handle"],curl_share_errno:["curl_share_errno(CurlShareHandle $share_handle): int","Return the last share curl error number"],curl_share_init:["curl_share_init(): CurlShareHandle","Initialize a cURL share handle"],curl_share_setopt:["curl_share_setopt(CurlShareHandle $share_handle, int $option, mixed $value): bool","Set an option for a cURL share handle"],curl_share_strerror:["curl_share_strerror(int $error_code): ?string","Return string describing the given error code"],curl_strerror:["curl_strerror(int $error_code): ?string","Return string describing the given error code"],curl_unescape:["curl_unescape(CurlHandle $handle, string $string): string|false","Decodes the given URL encoded string"],date_create_immutable_from_format:["date_create_immutable_from_format()","Alias of DateTimeImmutable::createFromFormat()"],date_create_immutable:["date_create_immutable()","Alias of DateTimeImmutable::__construct()"],deflate_add:["deflate_add(DeflateContext $context, string $data, int $flush_mode = ZLIB_SYNC_FLUSH): string|false","Incrementally deflate data"],deflate_init:["deflate_init(int $encoding, array $options = []): DeflateContext|false","Initialize an incremental deflate context"],"delete":["delete()","See unlink()"],diskfreespace:["diskfreespace()","Alias of disk_free_space()"],doubleval:["doubleval()","Alias of floatval()"],enchant_dict_add:["enchant_dict_add(EnchantDictionary $dictionary, string $word): void","Add a word to personal word list"],enchant_dict_is_added:["enchant_dict_is_added(EnchantDictionary $dictionary, string $word): bool","Whether or not 'word' exists in this spelling-session"],error_clear_last:["error_clear_last(): void","Clear the most recent error"],eval:["eval(string $code): mixed","Evaluate a string as PHP code"],expect_expectl:["expect_expectl(resource $expect, array $cases, array &$match = ?): int",""],expect_popen:["expect_popen(string $command): resource",""],fdiv:["fdiv(float $num1, float $num2): float","Divides two numbers, according to IEEE 754"],filter_id:["filter_id(string $name): int|false","Returns the filter ID belonging to a named filter"],filter_list:["filter_list(): array","Returns a list of all supported filters"],forward_static_call_array:["forward_static_call_array(callable $callback, array $args): mixed","Call a static method and pass the arguments as array"],fputs:["fputs()","Alias of fwrite()"],ftp_append:["ftp_append(FTP\\Connection $ftp, string $remote_filename, string $local_filename, int $mode = FTP_BINARY): bool","Append the contents of a file to another file on the FTP server"],ftp_mlsd:["ftp_mlsd(FTP\\Connection $ftp, string $directory): array|false","Returns a list of files in the given directory"],ftp_quit:["ftp_quit()","Alias of ftp_close()"],gc_mem_caches:["gc_mem_caches(): int",""],gc_status:["gc_status(): array","Gets information about the garbage collector"],get_debug_type:["get_debug_type(mixed $value): string","Gets the type name of a variable in a way that is suitable for debugging"],get_declared_traits:["get_declared_traits(): array","Returns an array of all declared traits"],get_required_files:["get_required_files()","Alias of get_included_files()"],get_resource_id:["get_resource_id(resource $resource): int",""],get_resources:["get_resources(?string $type = null): array","Returns active resources"],getimagesizefromstring:["getimagesizefromstring(string $string, array &$image_info = null): array|false","Get the size of an image from a string"],getmxrr:["getmxrr(string $hostname, array &$hosts, array &$weights = null): bool","Get MX records corresponding to a given Internet host name"],gmp_binomial:["gmp_binomial(GMP|int|string $n, int $k): GMP","Calculates binomial coefficient"],gmp_div:["gmp_div()","Alias of gmp_div_q()"],gmp_export:["gmp_export(GMP|int|string $num, int $word_size = 1, int $flags = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN): string","Export to a binary string"],gmp_import:["gmp_import(string $data, int $word_size = 1, int $flags = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN): GMP","Import from a binary string"],gmp_kronecker:["gmp_kronecker(GMP|int|string $num1, GMP|int|string $num2): int","Kronecker symbol"],gmp_lcm:["gmp_lcm(GMP|int|string $num1, GMP|int|string $num2): GMP","Calculate LCM"],gmp_perfect_power:["gmp_perfect_power(GMP|int|string $num): bool","Perfect power check"],gmp_random_bits:["gmp_random_bits(int $bits): GMP","Random number"],gmp_random_range:["gmp_random_range(GMP|int|string $min, GMP|int|string $max): GMP","Random number"],gmp_random_seed:["gmp_random_seed(GMP|int|string $seed): void","Sets the RNG seed"],gmp_root:["gmp_root(GMP|int|string $num, int $nth): GMP","Take the integer part of nth root"],gmp_rootrem:["gmp_rootrem(GMP|int|string $num, int $nth): array","Take the integer part and remainder of nth root"],gzclose:["gzclose(resource $stream): bool","Close an open gz-file pointer"],gzdecode:["gzdecode(string $data, int $max_length = 0): string|false","Decodes a gzip compressed string"],gzeof:["gzeof(resource $stream): bool","Test for EOF on a gz-file pointer"],gzgetc:["gzgetc(resource $stream): string|false","Get character from gz-file pointer"],gzgets:["gzgets(resource $stream, ?int $length = null): string|false","Get line from file pointer"],gzgetss:["gzgetss(resource $zp, int $length, string $allowable_tags = ?): string",""],gzpassthru:["gzpassthru(resource $stream): int",""],gzputs:["gzputs()","Alias of gzwrite()"],gzread:["gzread(resource $stream, int $length): string|false","Binary-safe gz-file read"],gzrewind:["gzrewind(resource $stream): bool","Rewind the position of a gz-file pointer"],gzseek:["gzseek(resource $stream, int $offset, int $whence = SEEK_SET): int","Seek on a gz-file pointer"],gztell:["gztell(resource $stream): int|false","Tell gz-file pointer read/write position"],gzwrite:["gzwrite(resource $stream, string $data, ?int $length = null): int|false","Binary-safe gz-file write"],halt_compiler:["__halt_compiler(): void",""],hash_equals:["hash_equals(string $known_string, string $user_string): bool","Timing attack safe string comparison"],hash_hkdf:['hash_hkdf(string $algo, string $key, int $length = 0, string $info = "", string $salt = ""): string',"Generate a HKDF key derivation of a supplied key input"],hash_hmac_algos:["hash_hmac_algos(): array","Return a list of registered hashing algorithms suitable for hash_hmac"],hash_pbkdf2:["hash_pbkdf2(string $algo, string $password, string $salt, int $iterations, int $length = 0, bool $binary = false): string","Generate a PBKDF2 key derivation of a supplied password"],header_register_callback:["header_register_callback(callable $callback): bool","Call a header function"],hex2bin:["hex2bin(string $string): string|false","Decodes a hexadecimally encoded binary string"],hrtime:["hrtime(bool $as_number = false): array|int|float|false","Get the system's high resolution time"],http_response_code:["http_response_code(int $response_code = 0): int|bool","Get or Set the HTTP response code"],imageaffine:["imageaffine(GdImage $image, array $affine, ?array $clip = null): GdImage|false","Return an image containing the affine transformed src image, using an optional clipping area"],imageaffinematrixconcat:["imageaffinematrixconcat(array $matrix1, array $matrix2): array|false","Concatenate two affine transformation matrices"],imageaffinematrixget:["imageaffinematrixget(int $type, array|float $options): array|false","Get an affine transformation matrix"],imagebmp:["imagebmp(GdImage $image, resource|string|null $file = null, bool $compressed = true): bool","Output a BMP image to browser or file"],imagecreatefrombmp:["imagecreatefrombmp(string $filename): GdImage|false","Create a new image from file or URL"],imagecreatefromwebp:["imagecreatefromwebp(string $filename): GdImage|false","Create a new image from file or URL"],imagecrop:["imagecrop(GdImage $image, array $rectangle): GdImage|false","Crop an image to the given rectangle"],imagecropauto:["imagecropauto(GdImage $image, int $mode = IMG_CROP_DEFAULT, float $threshold = 0.5, int $color = -1): GdImage|false","Crop an image automatically using one of the available modes"],imageflip:["imageflip(GdImage $image, int $mode): bool","Flips an image using a given mode"],imagegetclip:["imagegetclip(GdImage $image): array","Get the clipping rectangle"],imagegetinterpolation:["imagegetinterpolation(GdImage $image): int","Get the interpolation method"],imageopenpolygon:["imageopenpolygon(GdImage $image, array $points, int $color): bool","Draws an open polygon"],imagepalettetotruecolor:["imagepalettetotruecolor(GdImage $image): bool","Converts a palette based image to true color"],imageresolution:["imageresolution(GdImage $image, ?int $resolution_x = null, ?int $resolution_y = null): array|bool","Get or set the resolution of the image"],imagescale:["imagescale(GdImage $image, int $width, int $height = -1, int $mode = IMG_BILINEAR_FIXED): GdImage|false","Scale an image using the given new width and height"],imagesetclip:["imagesetclip(GdImage $image, int $x1, int $y1, int $x2, int $y2): bool","Set the clipping rectangle"],imagesetinterpolation:["imagesetinterpolation(GdImage $image, int $method = IMG_BILINEAR_FIXED): bool","Set the interpolation method"],imagewebp:["imagewebp(GdImage $image, resource|string|null $file = null, int $quality = -1): bool","Output a WebP image to browser or file"],imap_create:["","Alias of imap_createmailbox()"],imap_fetchmime:["imap_fetchmime(IMAP\\Connection $imap, int $message_num, string $section, int $flags = 0): string|false","Fetch MIME headers for a particular section of the message"],imap_fetchtext:["imap_fetchtext()","Alias of imap_body()"],imap_header:["imap_header()","Alias of imap_headerinfo()"],imap_listmailbox:["imap_listmailbox()","Alias of imap_list()"],imap_listsubscribed:["imap_listsubscribed()","Alias of imap_lsub()"],imap_rename:["imap_rename()","Alias of imap_renamemailbox()"],imap_scan:["imap_scan()","Alias of imap_listscan()"],imap_scanmailbox:["imap_scanmailbox()","Alias of imap_listscan()"],ini_alter:["ini_alter()","Alias of ini_set()"],intdiv:["intdiv(int $num1, int $num2): int","Integer division"],is_double:["is_double()","Alias of is_float()"],is_int:["is_int(mixed $value): bool","Find whether the type of a variable is integer"],is_integer:["is_integer()","Alias of is_int()"],is_iterable:["is_iterable(mixed $value): bool",""],is_real:["is_real()","Alias of is_float()"],is_soap_fault:["is_soap_fault(mixed $object): bool","Checks if a SOAP call has failed"],is_tainted:["is_tainted(string $string): bool","Checks whether a string is tainted"],is_writeable:["is_writeable()","Alias of is_writable()"],json_last_error_msg:["json_last_error_msg(): string","Returns the error string of the last json_encode() or json_decode() call"],key_exists:["key_exists()","Alias of array_key_exists()"],lchown:["lchown(string $filename, string|int $user): bool","Changes user ownership of symlink"],libxml_set_external_entity_loader:["libxml_set_external_entity_loader(?callable $resolver_function): bool","Changes the default external entity loader"],mb_chr:["mb_chr(int $codepoint, ?string $encoding = null): string|false","Return character by Unicode code point value"],mb_ereg_replace_callback:["mb_ereg_replace_callback(string $pattern, callable $callback, string $string, ?string $options = null): string|false|null",""],mb_ord:["mb_ord(string $string, ?string $encoding = null): int|false","Get Unicode code point of character"],mb_scrub:["mb_scrub(string $string, ?string $encoding = null): string","Description"],mb_str_split:["mb_str_split(string $string, int $length = 1, ?string $encoding = null): array","Given a multibyte string, return an array of its characters"],memcache_debug:["memcache_debug(bool $on_off): bool","Turn debug output on/off"],mysql_db_name:["mysql_db_name(resource $result, int $row, mixed $field = NULL): string","Retrieves database name from the call to mysql_list_dbs()"],mysql_tablename:["mysql_tablename(resource $result, int $i): string|false","Get table name of field"],mysql_xdevapi_expression:["mysql_xdevapi\\expression(string $expression): object","Bind prepared statement variables as parameters"],mysql_xdevapi_getsession:["mysql_xdevapi\\getSession(string $uri): mysql_xdevapi\\Session","Connect to a MySQL server"],mysqli_escape_string:["mysqli_escape_string()","Alias of mysqli_real_escape_string()"],mysqli_execute:["mysqli_execute()","Alias for mysqli_stmt_execute()"],mysqli_get_links_stats:["mysqli_get_links_stats(): array","Return information about open and cached links"],mysqli_set_opt:["mysqli_set_opt()","Alias of mysqli_options()"],ob_tidyhandler:["ob_tidyhandler(string $input, int $mode = ?): string","ob_start callback function to repair the buffer"],odbc_do:["odbc_do()","Alias of odbc_exec()"],odbc_field_precision:["odbc_field_precision()","Alias of odbc_field_len()"],opcache_compile_file:["opcache_compile_file(string $filename): bool","Compiles and caches a PHP script without executing it"],opcache_get_configuration:["opcache_get_configuration(): array|false","Get configuration information about the cache"],opcache_get_status:["opcache_get_status(bool $include_scripts = true): array|false","Get status information about the cache"],opcache_invalidate:["opcache_invalidate(string $filename, bool $force = false): bool","Invalidates a cached script"],opcache_is_script_cached:["opcache_is_script_cached(string $filename): bool","Tells whether a script is cached in OPCache"],opcache_reset:["opcache_reset(): bool","Resets the contents of the opcode cache"],password_algos:["password_algos(): array","Get available password hashing algorithm IDs"],password_get_info:["password_get_info(string $hash): array","Returns information about the given hash"],password_hash:["password_hash(string $password, string|int|null $algo, array $options = []): string","Creates a password hash"],password_needs_rehash:["password_needs_rehash(string $hash, string|int|null $algo, array $options = []): bool","Checks if the given hash matches the given options"],password_verify:["password_verify(string $password, string $hash): bool","Verifies that a password matches a hash"],pcntl_async_signals:["pcntl_async_signals(?bool $enable = null): bool","Enable/disable asynchronous signal handling or return the old setting"],pcntl_errno:["pcntl_errno()","Alias of pcntl_get_last_error()"],pcntl_get_last_error:["pcntl_get_last_error(): int","Retrieve the error number set by the last pcntl function which failed"],pcntl_signal_get_handler:["pcntl_signal_get_handler(int $signal): callable|int","Get the current handler for specified signal"],pcntl_sigwaitinfo:["pcntl_sigwaitinfo(array $signals, array &$info = []): int|false","Waits for signals"],pcntl_strerror:["pcntl_strerror(int $error_code): string","Retrieve the system error message associated with the given errno"],pg_connect_poll:["pg_connect_poll(PgSql\\Connection $connection): int",""],pg_consume_input:["pg_consume_input(PgSql\\Connection $connection): bool","Reads input on the connection"],pg_escape_identifier:["pg_escape_identifier(PgSql\\Connection $connection = ?, string $data): string",""],pg_escape_literal:["pg_escape_literal(PgSql\\Connection $connection = ?, string $data): string",""],pg_flush:["pg_flush(PgSql\\Connection $connection): int|bool","Flush outbound query data on the connection"],pg_lo_truncate:["pg_lo_truncate(PgSql\\Lob $lob, int $size): bool",""],pg_socket:["pg_socket(PgSql\\Connection $connection): resource|false",""],pos:["pos()","Alias of current()"],posix_errno:["posix_errno()","Alias of posix_get_last_error()"],posix_setrlimit:["posix_setrlimit(int $resource, int $soft_limit, int $hard_limit): bool","Set system resource limits"],preg_last_error_msg:["preg_last_error_msg(): string","Returns the error message of the last PCRE regex execution"],preg_replace_callback_array:["preg_replace_callback_array(array $pattern, string|array $subject, int $limit = -1, int &$count = null, int $flags = 0): string|array|null","Perform a regular expression search and replace using callbacks"],ps_translate:["ps_translate(resource $psdoc, float $x, float $y): bool","Sets translation"],random_bytes:["random_bytes(int $length): string","Generates cryptographically secure pseudo-random bytes"],random_int:["random_int(int $min, int $max): int","Generates cryptographically secure pseudo-random integers"],read_exif_data:["read_exif_data()","Alias of exif_read_data()"],recode:["recode()","Alias of recode_string()"],session_abort:["session_abort(): bool","Discard session array changes and finish session"],session_commit:["session_commit()","Alias of session_write_close()"],session_create_id:['session_create_id(string $prefix = ""): string|false',"Create new session id"],session_gc:["session_gc(): int|false","Perform session data garbage collection"],session_register_shutdown:["session_register_shutdown(): void","Session shutdown function"],session_reset:["session_reset(): bool","Re-initialize session array with original values"],session_status:["session_status(): int","Returns the current session status"],set_file_buffer:["set_file_buffer()","Alias of stream_set_write_buffer()"],show_source:["show_source()","Alias of highlight_file()"],sizeof:["sizeof()","Alias of count()"],snmp_set_oid_numeric_print:["snmp_set_oid_numeric_print(int $format): bool",""],snmpwalkoid:["snmpwalkoid(string $hostname, string $community, array|string $object_id, int $timeout = -1, int $retries = -1): array|false",""],socket_addrinfo_bind:["socket_addrinfo_bind(AddressInfo $address): Socket|false","Create and bind to a socket from a given addrinfo"],socket_addrinfo_connect:["socket_addrinfo_connect(AddressInfo $address): Socket|false","Create and connect to a socket from a given addrinfo"],socket_addrinfo_explain:["socket_addrinfo_explain(AddressInfo $address): array","Get information about addrinfo"],socket_addrinfo_lookup:["socket_addrinfo_lookup(string $host, ?string $service = null, array $hints = []): array|false","Get array with contents of getaddrinfo about the given hostname"],socket_cmsg_space:["socket_cmsg_space(int $level, int $type, int $num = 0): ?int","Calculate message buffer size"],socket_export_stream:["socket_export_stream(Socket $socket): resource|false","Export a socket into a stream that encapsulates a socket"],socket_get_status:["socket_get_status()","Alias of stream_get_meta_data()"],socket_getopt:["socket_getopt()","Alias of socket_get_option()"],socket_import_stream:["socket_import_stream(resource $stream): Socket|false","Import a stream"],socket_recvmsg:["socket_recvmsg(Socket $socket, array &$message, int $flags = 0): int|false","Read a message"],socket_sendmsg:["socket_sendmsg(Socket $socket, array $message, int $flags = 0): int|false","Send a message"],socket_set_blocking:["socket_set_blocking()","Alias of stream_set_blocking()"],socket_set_timeout:["socket_set_timeout()","Alias of stream_set_timeout()"],socket_setopt:["socket_setopt()","Alias of socket_set_option()"],socket_wsaprotocol_info_export:["socket_wsaprotocol_info_export(Socket $socket, int $process_id): string|false","Exports the WSAPROTOCOL_INFO Structure"],socket_wsaprotocol_info_import:["socket_wsaprotocol_info_import(string $info_id): Socket|false","Imports a Socket from another Process"],socket_wsaprotocol_info_release:["socket_wsaprotocol_info_release(string $info_id): bool","Releases an exported WSAPROTOCOL_INFO Structure"],spl_object_id:["spl_object_id(object $object): int",""],sqlsrv_begin_transaction:["sqlsrv_begin_transaction(resource $conn): bool","Begins a database transaction"],sqlsrv_cancel:["sqlsrv_cancel(resource $stmt): bool","Cancels a statement"],sqlsrv_client_info:["sqlsrv_client_info(resource $conn): array","Returns information about the client and specified connection"],sqlsrv_close:["sqlsrv_close(resource $conn): bool","Closes an open connection and releases resourses associated with the connection"],sqlsrv_commit:["sqlsrv_commit(resource $conn): bool","Commits a transaction that was begun with sqlsrv_begin_transaction()"],sqlsrv_configure:["sqlsrv_configure(string $setting, mixed $value): bool","Changes the driver error handling and logging configurations"],sqlsrv_connect:["sqlsrv_connect(string $serverName, array $connectionInfo = ?): resource","Opens a connection to a Microsoft SQL Server database"],sqlsrv_errors:["sqlsrv_errors(int $errorsOrWarnings = ?): mixed","Returns error and warning information about the last SQLSRV operation performed"],sqlsrv_execute:["sqlsrv_execute(resource $stmt): bool","Executes a statement prepared with sqlsrv_prepare()"],sqlsrv_fetch_array:["sqlsrv_fetch_array(resource $stmt, int $fetchType = ?, int $row = ?, int $offset = ?): array","Returns a row as an array"],sqlsrv_fetch_object:["sqlsrv_fetch_object(resource $stmt, string $className = ?, array $ctorParams = ?, int $row = ?, int $offset = ?): mixed","Retrieves the next row of data in a result set as an object"],sqlsrv_fetch:["sqlsrv_fetch(resource $stmt, int $row = ?, int $offset = ?): mixed","Makes the next row in a result set available for reading"],sqlsrv_field_metadata:["sqlsrv_field_metadata(resource $stmt): mixed",""],sqlsrv_free_stmt:["sqlsrv_free_stmt(resource $stmt): bool","Frees all resources for the specified statement"],sqlsrv_get_config:["sqlsrv_get_config(string $setting): mixed","Returns the value of the specified configuration setting"],sqlsrv_get_field:["sqlsrv_get_field(resource $stmt, int $fieldIndex, int $getAsType = ?): mixed","Gets field data from the currently selected row"],sqlsrv_has_rows:["sqlsrv_has_rows(resource $stmt): bool","Indicates whether the specified statement has rows"],sqlsrv_next_result:["sqlsrv_next_result(resource $stmt): mixed","Makes the next result of the specified statement active"],sqlsrv_num_fields:["sqlsrv_num_fields(resource $stmt): mixed","Retrieves the number of fields (columns) on a statement"],sqlsrv_num_rows:["sqlsrv_num_rows(resource $stmt): mixed","Retrieves the number of rows in a result set"],sqlsrv_prepare:["sqlsrv_prepare(resource $conn, string $sql, array $params = ?, array $options = ?): mixed","Prepares a query for execution"],sqlsrv_query:["sqlsrv_query(resource $conn, string $sql, array $params = ?, array $options = ?): mixed","Prepares and executes a query"],sqlsrv_rollback:["sqlsrv_rollback(resource $conn): bool",""],sqlsrv_rows_affected:["sqlsrv_rows_affected(resource $stmt): int|false",""],sqlsrv_send_stream_data:["sqlsrv_send_stream_data(resource $stmt): bool","Sends data from parameter streams to the server"],sqlsrv_server_info:["sqlsrv_server_info(resource $conn): array","Returns information about the server"],str_contains:["str_contains(string $haystack, string $needle): bool","Determine if a string contains a given substring"],str_ends_with:["str_ends_with(string $haystack, string $needle): bool","Checks if a string ends with a given substring"],str_starts_with:["str_starts_with(string $haystack, string $needle): bool","Checks if a string starts with a given substring"],stream_isatty:["stream_isatty(resource $stream): bool","Check if a stream is a TTY"],stream_notification_callback:["stream_notification_callback(int $notification_code, int $severity, string $message, int $message_code, int $bytes_transferred, int $bytes_max): void","A callback function for the notification context parameter"],stream_register_wrapper:["stream_register_wrapper()","Alias of stream_wrapper_register()"],stream_set_chunk_size:["stream_set_chunk_size(resource $stream, int $size): int","Set the stream chunk size"],stream_set_read_buffer:["stream_set_read_buffer(resource $stream, int $size): int","Set read file buffering on the given stream"],tcpwrap_check:["tcpwrap_check(string $daemon, string $address, string $user = ?, bool $nodns = false): bool","Performs a tcpwrap check"],trait_exists:["trait_exists(string $trait, bool $autoload = true): bool","Checks if the trait exists"],use_soap_error_handler:["use_soap_error_handler(bool $enable = true): bool","Set whether to use the SOAP error handler"],user_error:["user_error()","Alias of trigger_error()"],yaml_emit_file:["yaml_emit_file(string $filename, mixed $data, int $encoding = YAML_ANY_ENCODING, int $linebreak = YAML_ANY_BREAK, array $callbacks = null): bool","Send the YAML representation of a value to a file"],yaml_emit:["yaml_emit(mixed $data, int $encoding = YAML_ANY_ENCODING, int $linebreak = YAML_ANY_BREAK, array $callbacks = null): string","Returns the YAML representation of a value"],yaml_parse_file:["yaml_parse_file(string $filename, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed","Parse a YAML stream from a file"],yaml_parse_url:["yaml_parse_url(string $url, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed","Parse a Yaml stream from a URL"],yaml_parse:["yaml_parse(string $input, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed","Parse a YAML stream"],zlib_decode:["zlib_decode(string $data, int $max_length = 0): string|false","Uncompress any raw/gzip/zlib encoded data"],zlib_encode:["zlib_encode(string $data, int $encoding, int $level = -1): string|false","Compress data with the specified encoding"]},i={$_COOKIE:{type:"array"},$_ENV:{type:"array"},$_FILES:{type:"array"},$_GET:{type:"array"},$_POST:{type:"array"},$_REQUEST:{type:"array"},$_SERVER:{type:"array",value:{DOCUMENT_ROOT:1,GATEWAY_INTERFACE:1,HTTP_ACCEPT:1,HTTP_ACCEPT_CHARSET:1,HTTP_ACCEPT_ENCODING:1,HTTP_ACCEPT_LANGUAGE:1,HTTP_CONNECTION:1,HTTP_HOST:1,HTTP_REFERER:1,HTTP_USER_AGENT:1,PATH_TRANSLATED:1,PHP_SELF:1,QUERY_STRING:1,REMOTE_ADDR:1,REMOTE_PORT:1,REQUEST_METHOD:1,REQUEST_URI:1,SCRIPT_FILENAME:1,SCRIPT_NAME:1,SERVER_ADMIN:1,SERVER_NAME:1,SERVER_PORT:1,SERVER_PROTOCOL:1,SERVER_SIGNATURE:1,SERVER_SOFTWARE:1,argv:1,argc:1}},$_SESSION:{type:"array"},$GLOBALS:{type:"array"},$argv:{type:"array"},$argc:{type:"int"}},o=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(i.type==="support.php_tag"&&i.value==="0){var o=t.getTokenAt(n.row,i.start);if(o.type==="support.php_tag")return this.getTagCompletions(e,t,n,r)}return this.getFunctionCompletions(e,t,n,r)}if(s(i,"variable"))return this.getVariableCompletions(e,t,n,r);var u=t.getLine(n.row).substr(0,n.column);return i.type==="string"&&/(\$[\w]*)\[["']([^'"]*)$/i.test(u)?this.getArrayKeyCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return[{caption:"php",value:"php",meta:"php tag",score:1e6},{caption:"=",value:"=",meta:"php tag",score:1e6}]},this.getFunctionCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+"($0)",meta:"php function",score:1e6,docHTML:r[e][1]}})},this.getVariableCompletions=function(e,t,n,r){var s=Object.keys(i);return s.map(function(e){return{caption:e,value:e,meta:"php variable",score:1e6}})},this.getArrayKeyCompletions=function(e,t,n,r){var s=t.getLine(n.row).substr(0,n.column),o=s.match(/(\$[\w]*)\[["']([^'"]*)$/i)[1];if(!i[o])return[];var u=[];return i[o].type==="array"&&i[o].value&&(u=Object.keys(i[o].value)),u.map(function(e){return{caption:e,value:e,meta:"php array key",score:1e6}})}}).call(o.prototype),t.PhpCompletions=o}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/php",["require","exports","module","ace/lib/oop","ace/mode/folding/cstyle","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./cstyle").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.indentKeywords={"if":1,"while":1,"for":1,foreach:1,"switch":1,"else":0,elseif:0,endif:-1,endwhile:-1,endfor:-1,endforeach:-1,endswitch:-1},this.foldingStartMarkerPhp=/(?:\s|^)(if|else|elseif|while|for|foreach|switch).*\:/i,this.foldingStopMarkerPhp=/(?:\s|^)(endif|endwhile|endfor|endforeach|endswitch)\;/i,this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarkerPhp.exec(r);if(i)return this.phpBlock(e,n,i.index+2);var i=this.foldingStopMarkerPhp.exec(r);return i?this.phpBlock(e,n,i.index+2):this.getFoldWidgetRangeBase(e,t,n)},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarkerPhp.test(r),s=this.foldingStopMarkerPhp.test(r);if(i&&!s){var o=this.foldingStartMarkerPhp.exec(r),u=o&&o[1].toLowerCase();if(u){var a=e.getTokenAt(n,o.index+2).type;if(a=="keyword")return"start"}}if(s&&t==="markbeginend"){var o=this.foldingStopMarkerPhp.exec(r),u=o&&o[1].toLowerCase();if(u){var a=e.getTokenAt(n,o.index+2).type;if(a=="keyword")return"end"}}return this.getFoldWidgetBase(e,t,n)},this.phpBlock=function(e,t,n,r){var i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!="keyword")return;var a=u.value,f=[a],l=this.indentKeywords[a];if(a==="else"||a==="elseif")l=1;if(!l)return;var c=l===-1?i.getCurrentTokenColumn():e.getLine(t).length,h=t;i.step=l===-1?i.stepBackward:i.stepForward;while(u=i.step()){if(u.type!=="keyword")continue;var p=l*this.indentKeywords[u.value];if(p>0)f.unshift(u.value);else if(p<=0){f.shift();if(!f.length)break;p===0&&f.unshift(u.value)}}if(!u)return null;if(r)return i.getCurrentTokenRange();var t=i.getCurrentTokenRow();return l===-1?new s(t,e.getLine(t).length,h,c):new s(h,c,t,i.getCurrentTokenColumn())}}.call(u.prototype)}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/php",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/php_highlight_rules","ace/mode/php_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/php_completions","ace/mode/folding/php","ace/unicode","ace/mode/folding/mixed","ace/mode/folding/html","ace/mode/folding/cstyle","ace/mode/html","ace/mode/javascript","ace/mode/css"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./php_highlight_rules").PhpHighlightRules,o=e("./php_highlight_rules").PhpLangHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../worker/worker_client").WorkerClient,f=e("./php_completions").PhpCompletions,l=e("./folding/php").FoldMode,c=e("../unicode"),h=e("./folding/mixed").FoldMode,p=e("./folding/html").FoldMode,d=e("./folding/cstyle").FoldMode,v=e("./html").Mode,m=e("./javascript").Mode,g=e("./css").Mode,y=function(e){this.HighlightRules=o,this.$outdent=new u,this.$behaviour=this.$defaultBehaviour,this.$completer=new f,this.foldingRules=new h(new p,{"js-":new d,"css-":new d,"php-":new l})};r.inherits(y,i),function(){this.tokenRe=new RegExp("^["+c.wordChars+"_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+c.wordChars+"_]|\\s])+","g"),this.lineCommentStart=["//","#"],this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[:]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o!="doc-start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.$id="ace/mode/php-inline"}.call(y.prototype);var b=function(e){if(e&&e.inline){var t=new y;return t.createWorker=this.createWorker,t.inlinePhp=!0,t}v.call(this),this.HighlightRules=s,this.createModeDelegates({"js-":m,"css-":g,"php-":y}),this.foldingRules=new h(new p,{"js-":new d,"css-":new d,"php-":new l})};r.inherits(b,v),function(){this.createWorker=function(e){var t=new a(["ace"],"ace/mode/php_worker","PhpWorker");return t.attachToDocument(e.getDocument()),this.inlinePhp&&t.call("setOptions",[{inline:!0}]),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/php",this.snippetFileId="ace/snippets/php"}.call(b.prototype),t.Mode=b}); (function() { - window.require(["ace/mode/php"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-php_laravel_blade.js b/www/js/ace/mode-php_laravel_blade.js deleted file mode 100644 index 26fb7e654..000000000 --- a/www/js/ace/mode-php_laravel_blade.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/php_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=e("./html_highlight_rules").HtmlHighlightRules,a=function(){var e=s,t=i.arrayToMap("abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_column|array_combine|array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|class_parents|class_uses|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|get_declared_interfaces|get_declared_traits|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|m_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|m_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|m_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|m_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_affected_rows|mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_cache_stats|mysqli_change_user|mysqli_character_set_name|mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_dump_debug_info|mysqli_embedded_server_end|mysqli_embedded_server_start|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|mysqli_execute|mysqli_fetch|mysqli_fetch_all|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|mysqli_free_result|mysqli_get_charset|mysqli_get_client_info|mysqli_get_client_stats|mysqli_get_client_version|mysqli_get_connection_stats|mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_get_warnings|mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_link_construct|mysqli_master_query|mysqli_more_results|mysqli_multi_query|mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_poll|mysqli_prepare|mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_reap_async_query|mysqli_refresh|mysqli_report|mysqli_result|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|mysqli_send_query|mysqli_set_charset|mysqli_set_local_infile_default|mysqli_set_local_infile_handler|mysqli_set_opt|mysqli_slave_query|mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt|mysqli_stmt_affected_rows|mysqli_stmt_attr_get|mysqli_stmt_attr_set|mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_field_count|mysqli_stmt_free_result|mysqli_stmt_get_result|mysqli_stmt_get_warnings|mysqli_stmt_init|mysqli_stmt_insert_id|mysqli_stmt_next_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|mysqli_stmt_reset|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning|mysqli_warning_count|mysqlnd_ms_get_stats|mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|trait_exists|transliterator|traversable|trigger_error|trim|uasort|ucfirst|ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type|array_is_list|fdatasync|fdiv|fsync|get_debug_type|get_resource_id|json_validate|mb_str_pad|mysqli_execute_query|preg_last_error_msg|stream_context_set_options|str_contains|str_ends_with|str_starts_with".split("|")),n=i.arrayToMap("abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|final|finally|for|foreach|function|global|goto|if|implements|instanceof|insteadof|interface|namespace|new|or|private|protected|public|static|switch|throw|trait|try|use|var|while|xor|yield".split("|")),r=i.arrayToMap("__halt_compiler|die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset".split("|")),o=i.arrayToMap("true|TRUE|false|FALSE|null|NULL|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__|__TRAIT__".split("|")),u=i.arrayToMap("$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|$http_response_header|$argc|$argv".split("|")),a=i.arrayToMap("key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregisterset_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|sql_regcase".split("|")),f=i.arrayToMap("cfunction|old_function".split("|")),l=i.arrayToMap([]);this.$rules={start:[{token:"comment",regex:/(?:#|\/\/)(?:[^?]|\?[^>])*/},e.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)"},{token:"string",regex:'"',next:"qqstring"},{token:"string",regex:"'",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language",regex:"\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|VERSION))|__COMPILER_HALT_OFFSET__)\\b"},{token:["keyword","text","support.class"],regex:"\\b(new)(\\s+)(\\w+)"},{token:["support.class","keyword.operator"],regex:"\\b(\\w+)(::)"},{token:"constant.language",regex:"\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b"},{token:function(e){return n.hasOwnProperty(e)?"keyword":o.hasOwnProperty(e)?"constant.language":u.hasOwnProperty(e)?"variable.language":l.hasOwnProperty(e)?"invalid.illegal":t.hasOwnProperty(e)?"support.function":e=="debugger"?"invalid.deprecated":e.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/)?"variable":"identifier"},regex:/[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/},{onMatch:function(e,t,n){e=e.substr(3);if(e[0]=="'"||e[0]=='"')e=e.slice(1,-1);return n.unshift(this.next,e),"markup.list"},regex:/<<<(?:\w+|'\w+'|"\w+")$/,next:"heredoc"},{token:"keyword.operator",regex:"::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|\\.=|=|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"punctuation.operator",regex:/[,;]/},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],heredoc:[{onMatch:function(e,t,n){return n[1]!=e?(this.next="","string"):(n.shift(),n.shift(),this.next=this.nextState,"markup.list")},regex:"^\\w+(?=;?$)",nextState:"start"},{token:"string",regex:".*"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqstring:[{token:"constant.language.escape",regex:'\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})'},{token:"variable",regex:/\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/},{token:"variable",regex:/\$\{[^"\}]+\}?/},{token:"string",regex:'"',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string",regex:"'",next:"start"},{defaultToken:"string"}]},this.embedRules(s,"doc-",[s.getEndRule("start")])};r.inherits(a,o);var f=function(){u.call(this);var e=[{token:"support.php_tag",regex:"<\\?(?:php|=)?",push:"php-start"}],t=[{token:"support.php_tag",regex:"\\?>",next:"pop"}];for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],e);this.embedRules(a,"php-",t,["start"]),this.normalizeRules()};r.inherits(f,u),t.PhpHighlightRules=f,t.PhpLangHighlightRules=a}),define("ace/mode/php_laravel_blade_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/php_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./php_highlight_rules").PhpHighlightRules,s=function(){i.call(this);var e={start:[{include:"bladeComments"},{include:"directives"},{include:"parenthesis"}],comments:[{include:"bladeComments"},{token:"punctuation.definition.comment.blade",regex:"(\\/\\/(.)*)|(\\#(.)*)"},{token:"punctuation.definition.comment.begin.php",regex:"(?:\\/\\*)",push:[{token:"punctuation.definition.comment.end.php",regex:"(?:\\*\\/)",next:"pop"},{defaultToken:"comment.block.blade"}]}],bladeComments:[{token:"punctuation.definition.comment.begin.blade",regex:"(?:\\{\\{\\-\\-)",push:[{token:"punctuation.definition.comment.end.blade",regex:"(?:\\-\\-\\}\\})",next:"pop"},{defaultToken:"comment.block.blade"}]}],parenthesis:[{token:"parenthesis.begin.blade",regex:"\\(",push:[{token:"parenthesis.end.blade",regex:"\\)",next:"pop"},{include:"strings"},{include:"variables"},{include:"lang"},{include:"parenthesis"},{include:"comments"},{defaultToken:"source.blade"}]}],directives:[{token:["directive.declaration.blade","keyword.directives.blade"],regex:"(@)(endunless|endisset|endempty|endauth|endguest|endcomponent|endslot|endalert|endverbatim|endsection|show|php|endphp|endpush|endprepend|endenv|endforelse|isset|empty|component|slot|alert|json|verbatim|section|auth|guest|hasSection|forelse|includeIf|includeWhen|includeFirst|each|push|stack|prepend|inject|env|elseenv|unless|yield|extends|parent|include|acfrepeater|block|can|cannot|choice|debug|elsecan|elsecannot|embed|hipchat|lang|layout|macro|macrodef|minify|partial|render|servers|set|slack|story|task|unset|wpposts|acfend|after|append|breakpoint|endafter|endcan|endcannot|endembed|endmacro|endmarkdown|endminify|endpartial|endsetup|endstory|endtask|endunless|markdown|overwrite|setup|stop|wpempty|wpend|wpquery)"},{token:["directive.declaration.blade","keyword.control.blade"],regex:"(@)(if|else|elseif|endif|foreach|endforeach|switch|case|break|default|endswitch|for|endfor|while|endwhile|continue)"},{token:["directive.ignore.blade","injections.begin.blade"],regex:"(@?)(\\{\\{)",push:[{token:"injections.end.blade",regex:"\\}\\}",next:"pop"},{include:"strings"},{include:"variables"},{include:"comments"},{defaultToken:"source.blade"}]},{token:"injections.unescaped.begin.blade",regex:"\\{\\!\\!",push:[{token:"injections.unescaped.end.blade",regex:"\\!\\!\\}",next:"pop"},{include:"strings"},{include:"variables"},{defaultToken:"source.blade"}]}],lang:[{token:"keyword.operator.blade",regex:"(?:!=|!|<=|>=|<|>|===|==|=|\\+\\+|\\;|\\,|%|&&|\\|\\|)|\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod|as)\\b"},{token:"constant.language.blade",regex:"\\b(?:TRUE|FALSE|true|false)\\b"}],strings:[{token:"punctuation.definition.string.begin.blade",regex:'"',push:[{token:"punctuation.definition.string.end.blade",regex:'"',next:"pop"},{token:"string.character.escape.blade",regex:"\\\\."},{defaultToken:"string.quoted.single.blade"}]},{token:"punctuation.definition.string.begin.blade",regex:"'",push:[{token:"punctuation.definition.string.end.blade",regex:"'",next:"pop"},{token:"string.character.escape.blade",regex:"\\\\."},{defaultToken:"string.quoted.double.blade"}]}],variables:[{token:"variable.blade",regex:"\\$([a-zA-Z_][a-zA-Z0-9_]*)\\b"},{token:["keyword.operator.blade","constant.other.property.blade"],regex:"(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b"},{token:["keyword.operator.blade","meta.function-call.object.blade","punctuation.definition.variable.blade","variable.blade","punctuation.definition.variable.blade"],regex:"(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\()(.*?)(\\))"}]},t=e.start;for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],t);Object.keys(e).forEach(function(t){this.$rules[t]||(this.$rules[t]=e[t])},this),this.normalizeRules()};r.inherits(s,i),t.PHPLaravelBladeHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/php_completions",["require","exports","module"],function(e,t,n){"use strict";function s(e,t){return e.type.lastIndexOf(t)>-1}var r={abs:["int abs(int number)","Return the absolute value of the number"],acos:["float acos(float number)","Return the arc cosine of the number in radians"],acosh:["float acosh(float number)","Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number"],addGlob:["bool addGlob(string pattern[,int flags [, array options]])","Add files matching the glob pattern. See php's glob for the pattern syntax."],addPattern:["bool addPattern(string pattern[, string path [, array options]])","Add files matching the pcre pattern. See php's pcre for the pattern syntax."],addcslashes:["string addcslashes(string str, string charlist)","Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except '\\n', '\\r', '\\t' etc...)"],addslashes:["string addslashes(string str)","Escapes single quote, double quotes and backslash characters in a string with backslashes"],apache_child_terminate:["bool apache_child_terminate()","Terminate apache process after this request"],apache_get_modules:["array apache_get_modules()","Get a list of loaded Apache modules"],apache_get_version:["string apache_get_version()","Fetch Apache version"],apache_getenv:["bool apache_getenv(string variable [, bool walk_to_top])","Get an Apache subprocess_env variable"],apache_lookup_uri:["object apache_lookup_uri(string URI)","Perform a partial request of the given URI to obtain information about it"],apache_note:["string apache_note(string note_name [, string note_value])","Get and set Apache request notes"],apache_request_auth_name:["string apache_request_auth_name()",""],apache_request_auth_type:["string apache_request_auth_type()",""],apache_request_discard_request_body:["long apache_request_discard_request_body()",""],apache_request_err_headers_out:["array apache_request_err_headers_out([{string name|array list} [, string value [, bool replace = false]]])","* fetch all headers that go out in case of an error or a subrequest"],apache_request_headers:["array apache_request_headers()","Fetch all HTTP request headers"],apache_request_headers_in:["array apache_request_headers_in()","* fetch all incoming request headers"],apache_request_headers_out:["array apache_request_headers_out([{string name|array list} [, string value [, bool replace = false]]])","* fetch all outgoing request headers"],apache_request_is_initial_req:["bool apache_request_is_initial_req()",""],apache_request_log_error:["bool apache_request_log_error(string message, [long facility])",""],apache_request_meets_conditions:["long apache_request_meets_conditions()",""],apache_request_remote_host:["int apache_request_remote_host([int type])",""],apache_request_run:["long apache_request_run()","This is a wrapper for ap_sub_run_req and ap_destory_sub_req. It takes sub_request, runs it, destroys it, and returns it's status."],apache_request_satisfies:["long apache_request_satisfies()",""],apache_request_server_port:["int apache_request_server_port()",""],apache_request_set_etag:["void apache_request_set_etag()",""],apache_request_set_last_modified:["void apache_request_set_last_modified()",""],apache_request_some_auth_required:["bool apache_request_some_auth_required()",""],apache_request_sub_req_lookup_file:["object apache_request_sub_req_lookup_file(string file)","Returns sub-request for the specified file. You would need to run it yourself with run()."],apache_request_sub_req_lookup_uri:["object apache_request_sub_req_lookup_uri(string uri)","Returns sub-request for the specified uri. You would need to run it yourself with run()"],apache_request_sub_req_method_uri:["object apache_request_sub_req_method_uri(string method, string uri)","Returns sub-request for the specified file. You would need to run it yourself with run()."],apache_request_update_mtime:["long apache_request_update_mtime([int dependency_mtime])",""],apache_reset_timeout:["bool apache_reset_timeout()","Reset the Apache write timer"],apache_response_headers:["array apache_response_headers()","Fetch all HTTP response headers"],apache_setenv:["bool apache_setenv(string variable, string value [, bool walk_to_top])","Set an Apache subprocess_env variable"],array_change_key_case:["array array_change_key_case(array input [, int case=CASE_LOWER])","Retuns an array with all string keys lowercased [or uppercased]"],array_chunk:["array array_chunk(array input, int size [, bool preserve_keys])","Split array into chunks"],array_combine:["array array_combine(array keys, array values)","Creates an array by using the elements of the first parameter as keys and the elements of the second as the corresponding values"],array_count_values:["array array_count_values(array input)","Return the value as key and the frequency of that value in input as value"],array_diff:["array array_diff(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have values which are not present in any of the others arguments."],array_diff_assoc:["array array_diff_assoc(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal"],array_diff_key:["array array_diff_key(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have keys which are not present in any of the others arguments. This function is like array_diff() but works on the keys instead of the values. The associativity is preserved."],array_diff_uassoc:["array array_diff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func)","Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Elements are compared by user supplied function."],array_diff_ukey:["array array_diff_ukey(array arr1, array arr2 [, array ...], callback key_comp_func)","Returns the entries of arr1 that have keys which are not present in any of the others arguments. User supplied function is used for comparing the keys. This function is like array_udiff() but works on the keys instead of the values. The associativity is preserved."],array_fill:["array array_fill(int start_key, int num, mixed val)","Create an array containing num elements starting with index start_key each initialized to val"],array_fill_keys:["array array_fill_keys(array keys, mixed val)","Create an array using the elements of the first parameter as keys each initialized to val"],array_filter:["array array_filter(array input [, mixed callback])","Filters elements from the array via the callback."],array_flip:["array array_flip(array input)","Return array with key <-> value flipped"],array_intersect:["array array_intersect(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have values which are present in all the other arguments"],array_intersect_assoc:["array array_intersect_assoc(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check"],array_intersect_key:["array array_intersect_key(array arr1, array arr2 [, array ...])","Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). Equivalent of array_intersect_assoc() but does not do compare of the data."],array_intersect_uassoc:["array array_intersect_uassoc(array arr1, array arr2 [, array ...], callback key_compare_func)","Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check and they are compared by using an user-supplied callback."],array_intersect_ukey:["array array_intersect_ukey(array arr1, array arr2 [, array ...], callback key_compare_func)","Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). The comparison of the keys is performed by a user supplied function. Equivalent of array_intersect_uassoc() but does not do compare of the data."],array_key_exists:["bool array_key_exists(mixed key, array search)","Checks if the given key or index exists in the array"],array_keys:["array array_keys(array input [, mixed search_value[, bool strict]])","Return just the keys from the input array, optionally only for the specified search_value"],array_key_first:["mixed array_key_first(array arr)","Returns the first key of arr if the array is not empty; NULL otherwise"],array_key_last:["mixed array_key_last(array arr)","Returns the last key of arr if the array is not empty; NULL otherwise"],array_map:["array array_map(mixed callback, array input1 [, array input2 ,...])","Applies the callback to the elements in given arrays."],array_merge:["array array_merge(array arr1, array arr2 [, array ...])","Merges elements from passed arrays into one array"],array_merge_recursive:["array array_merge_recursive(array arr1, array arr2 [, array ...])","Recursively merges elements from passed arrays into one array"],array_multisort:["bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...])","Sort multiple arrays at once similar to how ORDER BY clause works in SQL"],array_pad:["array array_pad(array input, int pad_size, mixed pad_value)","Returns a copy of input array padded with pad_value to size pad_size"],array_pop:["mixed array_pop(array stack)","Pops an element off the end of the array"],array_product:["mixed array_product(array input)","Returns the product of the array entries"],array_push:["int array_push(array stack, mixed var [, mixed ...])","Pushes elements onto the end of the array"],array_rand:["mixed array_rand(array input [, int num_req])","Return key/keys for random entry/entries in the array"],array_reduce:["mixed array_reduce(array input, mixed callback [, mixed initial])","Iteratively reduce the array to a single value via the callback."],array_replace:["array array_replace(array arr1, array arr2 [, array ...])","Replaces elements from passed arrays into one array"],array_replace_recursive:["array array_replace_recursive(array arr1, array arr2 [, array ...])","Recursively replaces elements from passed arrays into one array"],array_reverse:["array array_reverse(array input [, bool preserve keys])","Return input as a new array with the order of the entries reversed"],array_search:["mixed array_search(mixed needle, array haystack [, bool strict])","Searches the array for a given value and returns the corresponding key if successful"],array_shift:["mixed array_shift(array stack)","Pops an element off the beginning of the array"],array_slice:["array array_slice(array input, int offset [, int length [, bool preserve_keys]])","Returns elements specified by offset and length"],array_splice:["array array_splice(array input, int offset [, int length [, array replacement]])","Removes the elements designated by offset and length and replace them with supplied array"],array_sum:["mixed array_sum(array input)","Returns the sum of the array entries"],array_udiff:["array array_udiff(array arr1, array arr2 [, array ...], callback data_comp_func)","Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function."],array_udiff_assoc:["array array_udiff_assoc(array arr1, array arr2 [, array ...], callback key_comp_func)","Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys are compared by user supplied function."],array_udiff_uassoc:["array array_udiff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func, callback key_comp_func)","Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys and elements are compared by user supplied functions."],array_uintersect:["array array_uintersect(array arr1, array arr2 [, array ...], callback data_compare_func)","Returns the entries of arr1 that have values which are present in all the other arguments. Data is compared by using an user-supplied callback."],array_uintersect_assoc:["array array_uintersect_assoc(array arr1, array arr2 [, array ...], callback data_compare_func)","Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Data is compared by using an user-supplied callback."],array_uintersect_uassoc:["array array_uintersect_uassoc(array arr1, array arr2 [, array ...], callback data_compare_func, callback key_compare_func)","Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Both data and keys are compared by using user-supplied callbacks."],array_unique:["array array_unique(array input [, int sort_flags])","Removes duplicate values from array"],array_unshift:["int array_unshift(array stack, mixed var [, mixed ...])","Pushes elements onto the beginning of the array"],array_values:["array array_values(array input)","Return just the values from the input array"],array_walk:["bool array_walk(array input, string funcname [, mixed userdata])","Apply a user function to every member of an array"],array_walk_recursive:["bool array_walk_recursive(array input, string funcname [, mixed userdata])","Apply a user function recursively to every member of an array"],arsort:["bool arsort(array &array_arg [, int sort_flags])","Sort an array in reverse order and maintain index association"],asin:["float asin(float number)","Returns the arc sine of the number in radians"],asinh:["float asinh(float number)","Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number"],asort:["bool asort(array &array_arg [, int sort_flags])","Sort an array and maintain index association"],assert:["int assert(string|bool assertion)","Checks if assertion is false"],assert_options:["mixed assert_options(int what [, mixed value])","Set/get the various assert flags"],atan:["float atan(float number)","Returns the arc tangent of the number in radians"],atan2:["float atan2(float y, float x)","Returns the arc tangent of y/x, with the resulting quadrant determined by the signs of y and x"],atanh:["float atanh(float number)","Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number"],attachIterator:["void attachIterator(Iterator iterator[, mixed info])","Attach a new iterator"],base64_decode:["string base64_decode(string str[, bool strict])","Decodes string using MIME base64 algorithm"],base64_encode:["string base64_encode(string str)","Encodes string using MIME base64 algorithm"],base_convert:["string base_convert(string number, int frombase, int tobase)","Converts a number in a string from any base <= 36 to any base <= 36"],basename:["string basename(string path [, string suffix])","Returns the filename component of the path"],bcadd:["string bcadd(string left_operand, string right_operand [, int scale])","Returns the sum of two arbitrary precision numbers"],bccomp:["int bccomp(string left_operand, string right_operand [, int scale])","Compares two arbitrary precision numbers"],bcdiv:["string bcdiv(string left_operand, string right_operand [, int scale])","Returns the quotient of two arbitrary precision numbers (division)"],bcmod:["string bcmod(string left_operand, string right_operand)","Returns the modulus of the two arbitrary precision operands"],bcmul:["string bcmul(string left_operand, string right_operand [, int scale])","Returns the multiplication of two arbitrary precision numbers"],bcpow:["string bcpow(string x, string y [, int scale])","Returns the value of an arbitrary precision number raised to the power of another"],bcpowmod:["string bcpowmod(string x, string y, string mod [, int scale])","Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous"],bcscale:["bool bcscale(int scale)","Sets default scale parameter for all bc math functions"],bcsqrt:["string bcsqrt(string operand [, int scale])","Returns the square root of an arbitray precision number"],bcsub:["string bcsub(string left_operand, string right_operand [, int scale])","Returns the difference between two arbitrary precision numbers"],bin2hex:["string bin2hex(string data)","Converts the binary representation of data to hex"],bind_textdomain_codeset:["string bind_textdomain_codeset (string domain, string codeset)","Specify the character encoding in which the messages from the DOMAIN message catalog will be returned."],bindec:["int bindec(string binary_number)","Returns the decimal equivalent of the binary number"],bindtextdomain:["string bindtextdomain(string domain_name, string dir)","Bind to the text domain domain_name, looking for translations in dir. Returns the current domain"],birdstep_autocommit:["bool birdstep_autocommit(int index)",""],birdstep_close:["bool birdstep_close(int id)",""],birdstep_commit:["bool birdstep_commit(int index)",""],birdstep_connect:["int birdstep_connect(string server, string user, string pass)",""],birdstep_exec:["int birdstep_exec(int index, string exec_str)",""],birdstep_fetch:["bool birdstep_fetch(int index)",""],birdstep_fieldname:["string birdstep_fieldname(int index, int col)",""],birdstep_fieldnum:["int birdstep_fieldnum(int index)",""],birdstep_freeresult:["bool birdstep_freeresult(int index)",""],birdstep_off_autocommit:["bool birdstep_off_autocommit(int index)",""],birdstep_result:["mixed birdstep_result(int index, mixed col)",""],birdstep_rollback:["bool birdstep_rollback(int index)",""],bzcompress:["string bzcompress(string source [, int blocksize100k [, int workfactor]])","Compresses a string into BZip2 encoded data"],bzdecompress:["string bzdecompress(string source [, int small])","Decompresses BZip2 compressed data"],bzerrno:["int bzerrno(resource bz)","Returns the error number"],bzerror:["array bzerror(resource bz)","Returns the error number and error string in an associative array"],bzerrstr:["string bzerrstr(resource bz)","Returns the error string"],bzopen:["resource bzopen(string|int file|fp, string mode)","Opens a new BZip2 stream"],bzread:["string bzread(resource bz[, int length])","Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified"],cal_days_in_month:["int cal_days_in_month(int calendar, int month, int year)","Returns the number of days in a month for a given year and calendar"],cal_from_jd:["array cal_from_jd(int jd, int calendar)","Converts from Julian Day Count to a supported calendar and return extended information"],cal_info:["array cal_info([int calendar])","Returns information about a particular calendar"],cal_to_jd:["int cal_to_jd(int calendar, int month, int day, int year)","Converts from a supported calendar to Julian Day Count"],call_user_func:["mixed call_user_func(mixed function_name [, mixed parmeter] [, mixed ...])","Call a user function which is the first parameter"],call_user_func_array:["mixed call_user_func_array(string function_name, array parameters)","Call a user function which is the first parameter with the arguments contained in array"],call_user_method:["mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...])","Call a user method on a specific object or class"],call_user_method_array:["mixed call_user_method_array(string method_name, mixed object, array params)","Call a user method on a specific object or class using a parameter array"],ceil:["float ceil(float number)","Returns the next highest integer value of the number"],chdir:["bool chdir(string directory)","Change the current directory"],checkdate:["bool checkdate(int month, int day, int year)","Returns true(1) if it is a valid date in gregorian calendar"],chgrp:["bool chgrp(string filename, mixed group)","Change file group"],chmod:["bool chmod(string filename, int mode)","Change file mode"],chown:["bool chown(string filename, mixed user)","Change file owner"],chr:["string chr(int ascii)","Converts ASCII code to a character"],chroot:["bool chroot(string directory)","Change root directory"],chunk_split:["string chunk_split(string str [, int chunklen [, string ending]])","Returns split line"],class_alias:["bool class_alias(string user_class_name , string alias_name [, bool autoload])","Creates an alias for user defined class"],class_exists:["bool class_exists(string classname [, bool autoload])","Checks if the class exists"],class_implements:["array class_implements(mixed what [, bool autoload ])","Return all classes and interfaces implemented by SPL"],class_parents:["array class_parents(object instance [, bool autoload = true])","Return an array containing the names of all parent classes"],clearstatcache:["void clearstatcache([bool clear_realpath_cache[, string filename]])","Clear file stat cache"],closedir:["void closedir([resource dir_handle])","Close directory connection identified by the dir_handle"],closelog:["bool closelog()","Close connection to system logger"],collator_asort:["bool collator_asort( Collator $coll, array(string) $arr )","* Sort array using specified collator, maintaining index association."],collator_compare:["int collator_compare( Collator $coll, string $str1, string $str2 )","* Compare two strings."],collator_create:["Collator collator_create( string $locale )","* Create collator."],collator_get_attribute:["int collator_get_attribute( Collator $coll, int $attr )","* Get collation attribute value."],collator_get_error_code:["int collator_get_error_code( Collator $coll )","* Get collator's last error code."],collator_get_error_message:["string collator_get_error_message( Collator $coll )","* Get text description for collator's last error code."],collator_get_locale:["string collator_get_locale( Collator $coll, int $type )","* Gets the locale name of the collator."],collator_get_sort_key:["bool collator_get_sort_key( Collator $coll, string $str )","* Get a sort key for a string from a Collator. }}}"],collator_get_strength:["int collator_get_strength(Collator coll)","* Returns the current collation strength."],collator_set_attribute:["bool collator_set_attribute( Collator $coll, int $attr, int $val )","* Set collation attribute."],collator_set_strength:["bool collator_set_strength(Collator coll, int strength)","* Set the collation strength."],collator_sort:["bool collator_sort( Collator $coll, array(string) $arr [, int $sort_flags] )","* Sort array using specified collator."],collator_sort_with_sort_keys:["bool collator_sort_with_sort_keys( Collator $coll, array(string) $arr )","* Equivalent to standard PHP sort using Collator. * Uses ICU ucol_getSortKey for performance."],com_create_guid:["string com_create_guid()","Generate a globally unique identifier (GUID)"],com_event_sink:["bool com_event_sink(object comobject, object sinkobject [, mixed sinkinterface])","Connect events from a COM object to a PHP object"],com_get_active_object:["object com_get_active_object(string progid [, int code_page ])","Returns a handle to an already running instance of a COM object"],com_load_typelib:["bool com_load_typelib(string typelib_name [, int case_insensitive])","Loads a Typelibrary and registers its constants"],com_message_pump:["bool com_message_pump([int timeoutms])","Process COM messages, sleeping for up to timeoutms milliseconds"],com_print_typeinfo:["bool com_print_typeinfo(object comobject | string typelib, string dispinterface, bool wantsink)","Print out a PHP class definition for a dispatchable interface"],compact:["array compact(mixed var_names [, mixed ...])","Creates a hash containing variables and their values"],compose_locale:["static string compose_locale($array)","* Creates a locale by combining the parts of locale-ID passed * }}}"],confirm_extname_compiled:["string confirm_extname_compiled(string arg)","Return a string to confirm that the module is compiled in"],connection_aborted:["int connection_aborted()","Returns true if client disconnected"],connection_status:["int connection_status()","Returns the connection status bitfield"],constant:["mixed constant(string const_name)","Given the name of a constant this function will return the constant's associated value"],convert_cyr_string:["string convert_cyr_string(string str, string from, string to)","Convert from one Cyrillic character set to another"],convert_uudecode:["string convert_uudecode(string data)","decode a uuencoded string"],convert_uuencode:["string convert_uuencode(string data)","uuencode a string"],copy:["bool copy(string source_file, string destination_file [, resource context])","Copy a file"],cos:["float cos(float number)","Returns the cosine of the number in radians"],cosh:["float cosh(float number)","Returns the hyperbolic cosine of the number, defined as (exp(number) + exp(-number))/2"],count:["int count(mixed var [, int mode])","Count the number of elements in a variable (usually an array)"],count_chars:["mixed count_chars(string input [, int mode])","Returns info about what characters are used in input"],crc32:["string crc32(string str)","Calculate the crc32 polynomial of a string"],create_function:["string create_function(string args, string code)","Creates an anonymous function, and returns its name"],crypt:["string crypt(string str [, string salt])","Hash a string"],ctype_alnum:["bool ctype_alnum(mixed c)","Checks for alphanumeric character(s)"],ctype_alpha:["bool ctype_alpha(mixed c)","Checks for alphabetic character(s)"],ctype_cntrl:["bool ctype_cntrl(mixed c)","Checks for control character(s)"],ctype_digit:["bool ctype_digit(mixed c)","Checks for numeric character(s)"],ctype_graph:["bool ctype_graph(mixed c)","Checks for any printable character(s) except space"],ctype_lower:["bool ctype_lower(mixed c)","Checks for lowercase character(s)"],ctype_print:["bool ctype_print(mixed c)","Checks for printable character(s)"],ctype_punct:["bool ctype_punct(mixed c)","Checks for any printable character which is not whitespace or an alphanumeric character"],ctype_space:["bool ctype_space(mixed c)","Checks for whitespace character(s)"],ctype_upper:["bool ctype_upper(mixed c)","Checks for uppercase character(s)"],ctype_xdigit:["bool ctype_xdigit(mixed c)","Checks for character(s) representing a hexadecimal digit"],curl_close:["void curl_close(resource ch)","Close a cURL session"],curl_copy_handle:["resource curl_copy_handle(resource ch)","Copy a cURL handle along with all of it's preferences"],curl_errno:["int curl_errno(resource ch)","Return an integer containing the last error number"],curl_error:["string curl_error(resource ch)","Return a string contain the last error for the current session"],curl_exec:["bool curl_exec(resource ch)","Perform a cURL session"],curl_getinfo:["mixed curl_getinfo(resource ch [, int option])","Get information regarding a specific transfer"],curl_init:["resource curl_init([string url])","Initialize a cURL session"],curl_multi_add_handle:["int curl_multi_add_handle(resource mh, resource ch)","Add a normal cURL handle to a cURL multi handle"],curl_multi_close:["void curl_multi_close(resource mh)","Close a set of cURL handles"],curl_multi_exec:["int curl_multi_exec(resource mh, int &still_running)","Run the sub-connections of the current cURL handle"],curl_multi_getcontent:["string curl_multi_getcontent(resource ch)","Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set"],curl_multi_info_read:["array curl_multi_info_read(resource mh [, long msgs_in_queue])","Get information about the current transfers"],curl_multi_init:["resource curl_multi_init()","Returns a new cURL multi handle"],curl_multi_remove_handle:["int curl_multi_remove_handle(resource mh, resource ch)","Remove a multi handle from a set of cURL handles"],curl_multi_select:["int curl_multi_select(resource mh[, double timeout])",'Get all the sockets associated with the cURL extension, which can then be "selected"'],curl_setopt:["bool curl_setopt(resource ch, int option, mixed value)","Set an option for a cURL transfer"],curl_setopt_array:["bool curl_setopt_array(resource ch, array options)","Set an array of option for a cURL transfer"],curl_version:["array curl_version([int version])","Return cURL version information."],current:["mixed current(array array_arg)","Return the element currently pointed to by the internal array pointer"],date:["string date(string format [, long timestamp])","Format a local date/time"],date_add:["DateTime date_add(DateTime object, DateInterval interval)","Adds an interval to the current date in object."],date_create:["DateTime date_create([string time[, DateTimeZone object]])","Returns new DateTime object"],date_create_from_format:["DateTime date_create_from_format(string format, string time[, DateTimeZone object])","Returns new DateTime object formatted according to the specified format"],date_date_set:["DateTime date_date_set(DateTime object, long year, long month, long day)","Sets the date."],date_default_timezone_get:["string date_default_timezone_get()","Gets the default timezone used by all date/time functions in a script"],date_default_timezone_set:["bool date_default_timezone_set(string timezone_identifier)","Sets the default timezone used by all date/time functions in a script"],date_diff:["DateInterval date_diff(DateTime object [, bool absolute])","Returns the difference between two DateTime objects."],date_format:["string date_format(DateTime object, string format)","Returns date formatted according to given format"],date_get_last_errors:["array date_get_last_errors()","Returns the warnings and errors found while parsing a date/time string."],date_interval_create_from_date_string:["DateInterval date_interval_create_from_date_string(string time)","Uses the normal date parsers and sets up a DateInterval from the relative parts of the parsed string"],date_interval_format:["string date_interval_format(DateInterval object, string format)","Formats the interval."],date_isodate_set:["DateTime date_isodate_set(DateTime object, long year, long week[, long day])","Sets the ISO date."],date_modify:["DateTime date_modify(DateTime object, string modify)","Alters the timestamp."],date_offset_get:["long date_offset_get(DateTime object)","Returns the DST offset."],date_parse:["array date_parse(string date)","Returns associative array with detailed info about given date"],date_parse_from_format:["array date_parse_from_format(string format, string date)","Returns associative array with detailed info about given date"],date_sub:["DateTime date_sub(DateTime object, DateInterval interval)","Subtracts an interval to the current date in object."],date_sun_info:["array date_sun_info(long time, float latitude, float longitude)","Returns an array with information about sun set/rise and twilight begin/end"],date_sunrise:["mixed date_sunrise(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])","Returns time of sunrise for a given day and location"],date_sunset:["mixed date_sunset(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])","Returns time of sunset for a given day and location"],date_time_set:["DateTime date_time_set(DateTime object, long hour, long minute[, long second])","Sets the time."],date_timestamp_get:["long date_timestamp_get(DateTime object)","Gets the Unix timestamp."],date_timestamp_set:["DateTime date_timestamp_set(DateTime object, long unixTimestamp)","Sets the date and time based on an Unix timestamp."],date_timezone_get:["DateTimeZone date_timezone_get(DateTime object)","Return new DateTimeZone object relative to give DateTime"],date_timezone_set:["DateTime date_timezone_set(DateTime object, DateTimeZone object)","Sets the timezone for the DateTime object."],datefmt_create:["IntlDateFormatter datefmt_create(string $locale, long date_type, long time_type[, string $timezone_str, long $calendar, string $pattern] )","* Create formatter."],datefmt_format:["string datefmt_format( [mixed]int $args or array $args )","* Format the time value as a string. }}}"],datefmt_get_calendar:["string datefmt_get_calendar( IntlDateFormatter $mf )","* Get formatter calendar."],datefmt_get_datetype:["string datefmt_get_datetype( IntlDateFormatter $mf )","* Get formatter datetype."],datefmt_get_error_code:["int datefmt_get_error_code( IntlDateFormatter $nf )","* Get formatter's last error code."],datefmt_get_error_message:["string datefmt_get_error_message( IntlDateFormatter $coll )","* Get text description for formatter's last error code."],datefmt_get_locale:["string datefmt_get_locale(IntlDateFormatter $mf)","* Get formatter locale."],datefmt_get_pattern:["string datefmt_get_pattern( IntlDateFormatter $mf )","* Get formatter pattern."],datefmt_get_timetype:["string datefmt_get_timetype( IntlDateFormatter $mf )","* Get formatter timetype."],datefmt_get_timezone_id:["string datefmt_get_timezone_id( IntlDateFormatter $mf )","* Get formatter timezone_id."],datefmt_isLenient:["string datefmt_isLenient(IntlDateFormatter $mf)","* Get formatter locale."],datefmt_localtime:["integer datefmt_localtime( IntlDateFormatter $fmt, string $text_to_parse[, int $parse_pos ])","* Parse the string $value to a localtime array }}}"],datefmt_parse:["integer datefmt_parse( IntlDateFormatter $fmt, string $text_to_parse [, int $parse_pos] )","* Parse the string $value starting at parse_pos to a Unix timestamp -int }}}"],datefmt_setLenient:["string datefmt_setLenient(IntlDateFormatter $mf)","* Set formatter lenient."],datefmt_set_calendar:["bool datefmt_set_calendar( IntlDateFormatter $mf, int $calendar )","* Set formatter calendar."],datefmt_set_pattern:["bool datefmt_set_pattern( IntlDateFormatter $mf, string $pattern )","* Set formatter pattern."],datefmt_set_timezone_id:["bool datefmt_set_timezone_id( IntlDateFormatter $mf,$timezone_id)","* Set formatter timezone_id."],dba_close:["void dba_close(resource handle)","Closes database"],dba_delete:["bool dba_delete(string key, resource handle)","Deletes the entry associated with key If inifile: remove all other key lines"],dba_exists:["bool dba_exists(string key, resource handle)","Checks, if the specified key exists"],dba_fetch:["string dba_fetch(string key, [int skip ,] resource handle)","Fetches the data associated with key"],dba_firstkey:["string dba_firstkey(resource handle)","Resets the internal key pointer and returns the first key"],dba_handlers:["array dba_handlers([bool full_info])","List configured database handlers"],dba_insert:["bool dba_insert(string key, string value, resource handle)","If not inifile: Insert value as key, return false, if key exists already If inifile: Add vakue as key (next instance of key)"],dba_key_split:["array|false dba_key_split(string key)","Splits an inifile key into an array of the form array(0=>group,1=>value_name) but returns false if input is false or null"],dba_list:["array dba_list()","List opened databases"],dba_nextkey:["string dba_nextkey(resource handle)","Returns the next key"],dba_open:["resource dba_open(string path, string mode [, string handlername, string ...])","Opens path using the specified handler in mode"],dba_optimize:["bool dba_optimize(resource handle)","Optimizes (e.g. clean up, vacuum) database"],dba_popen:["resource dba_popen(string path, string mode [, string handlername, string ...])","Opens path using the specified handler in mode persistently"],dba_replace:["bool dba_replace(string key, string value, resource handle)","Inserts value as key, replaces key, if key exists already If inifile: remove all other key lines"],dba_sync:["bool dba_sync(resource handle)","Synchronizes database"],dcgettext:["string dcgettext(string domain_name, string msgid, long category)","Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist"],dcngettext:["string dcngettext(string domain, string msgid1, string msgid2, int n, int category)","Plural version of dcgettext()"],debug_backtrace:["array debug_backtrace([bool provide_object])","Return backtrace as array"],debug_print_backtrace:["void debug_print_backtrace()","Prints a PHP backtrace"],debug_zval_dump:["void debug_zval_dump(mixed var)","Dumps a string representation of an internal Zend value to output"],decbin:["string decbin(int decimal_number)","Returns a string containing a binary representation of the number"],dechex:["string dechex(int decimal_number)","Returns a string containing a hexadecimal representation of the given number"],decoct:["string decoct(int decimal_number)","Returns a string containing an octal representation of the given number"],define:["bool define(string constant_name, mixed value, bool case_insensitive=false)","Define a new constant"],define_syslog_variables:["void define_syslog_variables()","Initializes all syslog-related variables"],defined:["bool defined(string constant_name)","Check whether a constant exists"],deg2rad:["float deg2rad(float number)","Converts the number in degrees to the radian equivalent"],dgettext:["string dgettext(string domain_name, string msgid)","Return the translation of msgid for domain_name, or msgid unaltered if a translation does not exist"],die:["void die([mixed status])","Output a message and terminate the current script"],dir:["object dir(string directory[, resource context])","Directory class with properties, handle and class and methods read, rewind and close"],dirname:["string dirname(string path)","Returns the directory name component of the path"],disk_free_space:["float disk_free_space(string path)","Get free disk space for filesystem that path is on"],disk_total_space:["float disk_total_space(string path)","Get total disk space for filesystem that path is on"],display_disabled_function:["void display_disabled_function()","Dummy function which displays an error when a disabled function is called."],dl:["int dl(string extension_filename)","Load a PHP extension at runtime"],dngettext:["string dngettext(string domain, string msgid1, string msgid2, int count)","Plural version of dgettext()"],dns_check_record:["bool dns_check_record(string host [, string type])","Check DNS records corresponding to a given Internet host name or IP address"],dns_get_mx:["bool dns_get_mx(string hostname, array mxhosts [, array weight])","Get MX records corresponding to a given Internet host name"],dns_get_record:["array|false dns_get_record(string hostname [, int type[, array authns, array addtl]])","Get any Resource Record corresponding to a given Internet host name"],dom_attr_is_id:["bool dom_attr_is_id()","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-isId Since: DOM Level 3"],dom_characterdata_append_data:["void dom_characterdata_append_data(string arg)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-32791A2F Since:"],dom_characterdata_delete_data:["void dom_characterdata_delete_data(int offset, int count)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7C603781 Since:"],dom_characterdata_insert_data:["void dom_characterdata_insert_data(int offset, string arg)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3EDB695F Since:"],dom_characterdata_replace_data:["void dom_characterdata_replace_data(int offset, int count, string arg)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-E5CBA7FB Since:"],dom_characterdata_substring_data:["string dom_characterdata_substring_data(int offset, int count)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6531BCCF Since:"],dom_document_adopt_node:["DOMNode dom_document_adopt_node(DOMNode source)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-adoptNode Since: DOM Level 3"],dom_document_create_attribute:["DOMAttr dom_document_create_attribute(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1084891198 Since:"],dom_document_create_attribute_ns:["DOMAttr dom_document_create_attribute_ns(string namespaceURI, string qualifiedName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrAttrNS Since: DOM Level 2"],dom_document_create_cdatasection:["DOMCdataSection dom_document_create_cdatasection(string data)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D26C0AF8 Since:"],dom_document_create_comment:["DOMComment dom_document_create_comment(string data)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1334481328 Since:"],dom_document_create_document_fragment:["DOMDocumentFragment dom_document_create_document_fragment()","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-35CB04B5 Since:"],dom_document_create_element:["DOMElement dom_document_create_element(string tagName [, string value])","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-2141741547 Since:"],dom_document_create_element_ns:["DOMElement dom_document_create_element_ns(string namespaceURI, string qualifiedName [,string value])","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrElNS Since: DOM Level 2"],dom_document_create_entity_reference:["DOMEntityReference dom_document_create_entity_reference(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-392B75AE Since:"],dom_document_create_processing_instruction:["DOMProcessingInstruction dom_document_create_processing_instruction(string target, string data)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-135944439 Since:"],dom_document_create_text_node:["DOMText dom_document_create_text_node(string data)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1975348127 Since:"],dom_document_get_element_by_id:["DOMElement dom_document_get_element_by_id(string elementId)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBId Since: DOM Level 2"],dom_document_get_elements_by_tag_name:["DOMNodeList dom_document_get_elements_by_tag_name(string tagname)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C9094 Since:"],dom_document_get_elements_by_tag_name_ns:["DOMNodeList dom_document_get_elements_by_tag_name_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBTNNS Since: DOM Level 2"],dom_document_import_node:["DOMNode dom_document_import_node(DOMNode importedNode, bool deep)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Core-Document-importNode Since: DOM Level 2"],dom_document_load:["DOMNode dom_document_load(string source [, int options])","URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-load Since: DOM Level 3"],dom_document_load_html:["DOMNode dom_document_load_html(string source)","Since: DOM extended"],dom_document_load_html_file:["DOMNode dom_document_load_html_file(string source)","Since: DOM extended"],dom_document_loadxml:["DOMNode dom_document_loadxml(string source [, int options])","URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-loadXML Since: DOM Level 3"],dom_document_normalize_document:["void dom_document_normalize_document()","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-normalizeDocument Since: DOM Level 3"],dom_document_relaxNG_validate_file:["bool dom_document_relaxNG_validate_file(string filename); */","PHP_FUNCTION(dom_document_relaxNG_validate_file) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_relaxNG_validate_file"],dom_document_relaxNG_validate_xml:["bool dom_document_relaxNG_validate_xml(string source); */","PHP_FUNCTION(dom_document_relaxNG_validate_xml) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_relaxNG_validate_xml"],dom_document_rename_node:["DOMNode dom_document_rename_node(node n, string namespaceURI, string qualifiedName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNode Since: DOM Level 3"],dom_document_save:["int dom_document_save(string file)","Convenience method to save to file"],dom_document_save_html:["string dom_document_save_html()","Convenience method to output as html"],dom_document_save_html_file:["int dom_document_save_html_file(string file)","Convenience method to save to file as html"],dom_document_savexml:["string dom_document_savexml([node n])","URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXML Since: DOM Level 3"],dom_document_schema_validate:["bool dom_document_schema_validate(string source); */","PHP_FUNCTION(dom_document_schema_validate_xml) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_schema_validate"],dom_document_schema_validate_file:["bool dom_document_schema_validate_file(string filename); */","PHP_FUNCTION(dom_document_schema_validate_file) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_schema_validate_file"],dom_document_validate:["bool dom_document_validate()","Since: DOM extended"],dom_document_xinclude:["int dom_document_xinclude([int options])","Substitutues xincludes in a DomDocument"],dom_domconfiguration_can_set_parameter:["bool dom_domconfiguration_can_set_parameter(string name, domuserdata value)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameter Since:"],dom_domconfiguration_get_parameter:["domdomuserdata dom_domconfiguration_get_parameter(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameter Since:"],dom_domconfiguration_set_parameter:["dom_void dom_domconfiguration_set_parameter(string name, domuserdata value)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-property Since:"],dom_domerrorhandler_handle_error:["dom_bool dom_domerrorhandler_handle_error(domerror error)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleError Since:"],dom_domimplementation_create_document:["DOMDocument dom_domimplementation_create_document(string namespaceURI, string qualifiedName, DOMDocumentType doctype)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocument Since: DOM Level 2"],dom_domimplementation_create_document_type:["DOMDocumentType dom_domimplementation_create_document_type(string qualifiedName, string publicId, string systemId)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocType Since: DOM Level 2"],dom_domimplementation_get_feature:["DOMNode dom_domimplementation_get_feature(string feature, string version)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeature Since: DOM Level 3"],dom_domimplementation_has_feature:["bool dom_domimplementation_has_feature(string feature, string version)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7 Since:"],dom_domimplementationlist_item:["domdomimplementation dom_domimplementationlist_item(int index)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-item Since:"],dom_domimplementationsource_get_domimplementation:["domdomimplementation dom_domimplementationsource_get_domimplementation(string features)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpl Since:"],dom_domimplementationsource_get_domimplementations:["domimplementationlist dom_domimplementationsource_get_domimplementations(string features)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpls Since:"],dom_domstringlist_item:["domstring dom_domstringlist_item(int index)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-item Since:"],dom_element_get_attribute:["string dom_element_get_attribute(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9 Since:"],dom_element_get_attribute_node:["DOMAttr dom_element_get_attribute_node(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8 Since:"],dom_element_get_attribute_node_ns:["DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNS Since: DOM Level 2"],dom_element_get_attribute_ns:["string dom_element_get_attribute_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNS Since: DOM Level 2"],dom_element_get_elements_by_tag_name:["DOMNodeList dom_element_get_elements_by_tag_name(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918D Since:"],dom_element_get_elements_by_tag_name_ns:["DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942 Since: DOM Level 2"],dom_element_has_attribute:["bool dom_element_has_attribute(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttr Since: DOM Level 2"],dom_element_has_attribute_ns:["bool dom_element_has_attribute_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNS Since: DOM Level 2"],dom_element_remove_attribute:["void dom_element_remove_attribute(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9 Since:"],dom_element_remove_attribute_node:["DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198 Since:"],dom_element_remove_attribute_ns:["void dom_element_remove_attribute_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNS Since: DOM Level 2"],dom_element_set_attribute:["void dom_element_set_attribute(string name, string value)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082 Since:"],dom_element_set_attribute_node:["DOMAttr dom_element_set_attribute_node(DOMAttr newAttr)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154 Since:"],dom_element_set_attribute_node_ns:["DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNS Since: DOM Level 2"],dom_element_set_attribute_ns:["void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNS Since: DOM Level 2"],dom_element_set_id_attribute:["void dom_element_set_id_attribute(string name, bool isId)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttr Since: DOM Level 3"],dom_element_set_id_attribute_node:["void dom_element_set_id_attribute_node(attr idAttr, bool isId)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNode Since: DOM Level 3"],dom_element_set_id_attribute_ns:["void dom_element_set_id_attribute_ns(string namespaceURI, string localName, bool isId)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNS Since: DOM Level 3"],dom_import_simplexml:["somNode dom_import_simplexml(sxeobject node)","Get a simplexml_element object from dom to allow for processing"],dom_namednodemap_get_named_item:["DOMNode dom_namednodemap_get_named_item(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549 Since:"],dom_namednodemap_get_named_item_ns:["DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNS Since: DOM Level 2"],dom_namednodemap_item:["DOMNode dom_namednodemap_item(int index)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9 Since:"],dom_namednodemap_remove_named_item:["DOMNode dom_namednodemap_remove_named_item(string name)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193 Since:"],dom_namednodemap_remove_named_item_ns:["DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNS Since: DOM Level 2"],dom_namednodemap_set_named_item:["DOMNode dom_namednodemap_set_named_item(DOMNode arg)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788 Since:"],dom_namednodemap_set_named_item_ns:["DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNS Since: DOM Level 2"],dom_namelist_get_name:["string dom_namelist_get_name(int index)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getName Since:"],dom_namelist_get_namespace_uri:["string dom_namelist_get_namespace_uri(int index)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURI Since:"],dom_node_append_child:["DomNode dom_node_append_child(DomNode newChild)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107 Since:"],dom_node_clone_node:["DomNode dom_node_clone_node(bool deep)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4 Since:"],dom_node_compare_document_position:["short dom_node_compare_document_position(DomNode other)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPosition Since: DOM Level 3"],dom_node_get_feature:["DomNode dom_node_get_feature(string feature, string version)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeature Since: DOM Level 3"],dom_node_get_user_data:["mixed dom_node_get_user_data(string key)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserData Since: DOM Level 3"],dom_node_has_attributes:["bool dom_node_has_attributes()","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrs Since: DOM Level 2"],dom_node_has_child_nodes:["bool dom_node_has_child_nodes()","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187 Since:"],dom_node_insert_before:["domnode dom_node_insert_before(DomNode newChild, DomNode refChild)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727 Since:"],dom_node_is_default_namespace:["bool dom_node_is_default_namespace(string namespaceURI)","URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespace Since: DOM Level 3"],dom_node_is_equal_node:["bool dom_node_is_equal_node(DomNode arg)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNode Since: DOM Level 3"],dom_node_is_same_node:["bool dom_node_is_same_node(DomNode other)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNode Since: DOM Level 3"],dom_node_is_supported:["bool dom_node_is_supported(string feature, string version)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supports Since: DOM Level 2"],dom_node_lookup_namespace_uri:["string dom_node_lookup_namespace_uri(string prefix)","URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI Since: DOM Level 3"],dom_node_lookup_prefix:["string dom_node_lookup_prefix(string namespaceURI)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefix Since: DOM Level 3"],dom_node_normalize:["void dom_node_normalize()","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalize Since:"],dom_node_remove_child:["DomNode dom_node_remove_child(DomNode oldChild)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066 Since:"],dom_node_replace_child:["DomNode dom_node_replace_child(DomNode newChild, DomNode oldChild)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307 Since:"],dom_node_set_user_data:["mixed dom_node_set_user_data(string key, mixed data, userdatahandler handler)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserData Since: DOM Level 3"],dom_nodelist_item:["DOMNode dom_nodelist_item(int index)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136 Since:"],dom_string_extend_find_offset16:["int dom_string_extend_find_offset16(int offset32)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16 Since:"],dom_string_extend_find_offset32:["int dom_string_extend_find_offset32(int offset16)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32 Since:"],dom_text_is_whitespace_in_element_content:["bool dom_text_is_whitespace_in_element_content()","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContent Since: DOM Level 3"],dom_text_replace_whole_text:["DOMText dom_text_replace_whole_text(string content)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeText Since: DOM Level 3"],dom_text_split_text:["DOMText dom_text_split_text(int offset)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1D Since:"],dom_userdatahandler_handle:["dom_void dom_userdatahandler_handle(short operation, string key, domobject data, node src, node dst)","URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEvent Since:"],dom_xpath_evaluate:["mixed dom_xpath_evaluate(string expr [,DOMNode context])",""],dom_xpath_query:["DOMNodeList dom_xpath_query(string expr [,DOMNode context])",""],dom_xpath_register_ns:["bool dom_xpath_register_ns(string prefix, string uri)",""],dom_xpath_register_php_functions:["void dom_xpath_register_php_functions()",""],each:["array each(array arr)","Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element"],easter_date:["int easter_date([int year])","Return the timestamp of midnight on Easter of a given year (defaults to current year)"],easter_days:["int easter_days([int year, [int method]])","Return the number of days after March 21 that Easter falls on for a given year (defaults to current year)"],echo:["void echo(string arg1 [, string ...])","Output one or more strings"],empty:["bool empty(mixed var)","Determine whether a variable is empty"],enchant_broker_describe:["array enchant_broker_describe(resource broker)","Enumerates the Enchant providers and tells you some rudimentary information about them. The same info is provided through phpinfo()"],enchant_broker_dict_exists:["bool enchant_broker_dict_exists(resource broker, string tag)","Whether a dictionary exists or not. Using non-empty tag"],enchant_broker_free:["bool enchant_broker_free(resource broker)","Destroys the broker object and its dictionnaries"],enchant_broker_free_dict:["resource enchant_broker_free_dict(resource dict)","Free the dictionary resource"],enchant_broker_get_dict_path:["string enchant_broker_get_dict_path(resource broker, int dict_type)","Get the directory path for a given backend, works with ispell and myspell"],enchant_broker_get_error:["string enchant_broker_get_error(resource broker)","Returns the last error of the broker"],enchant_broker_init:["resource enchant_broker_init()","create a new broker object capable of requesting"],enchant_broker_list_dicts:["string enchant_broker_list_dicts(resource broker)","Lists the dictionaries available for the given broker"],enchant_broker_request_dict:["resource enchant_broker_request_dict(resource broker, string tag)",'create a new dictionary using tag, the non-empty language tag you wish to request a dictionary for ("en_US", "de_DE", ...)'],enchant_broker_request_pwl_dict:["resource enchant_broker_request_pwl_dict(resource broker, string filename)","creates a dictionary using a PWL file. A PWL file is personal word file one word per line. It must exist before the call."],enchant_broker_set_dict_path:["bool enchant_broker_set_dict_path(resource broker, int dict_type, string value)","Set the directory path for a given backend, works with ispell and myspell"],enchant_broker_set_ordering:["bool enchant_broker_set_ordering(resource broker, string tag, string ordering)","Declares a preference of dictionaries to use for the language described/referred to by 'tag'. The ordering is a comma delimited list of provider names. As a special exception, the \"*\" tag can be used as a language tag to declare a default ordering for any language that does not explictly declare an ordering."],enchant_dict_add_to_personal:["void enchant_dict_add_to_personal(resource dict, string word)","add 'word' to personal word list"],enchant_dict_add_to_session:["void enchant_dict_add_to_session(resource dict, string word)","add 'word' to this spell-checking session"],enchant_dict_check:["bool enchant_dict_check(resource dict, string word)","If the word is correctly spelled return true, otherwise return false"],enchant_dict_describe:["array enchant_dict_describe(resource dict)","Describes an individual dictionary 'dict'"],enchant_dict_get_error:["string enchant_dict_get_error(resource dict)","Returns the last error of the current spelling-session"],enchant_dict_is_in_session:["bool enchant_dict_is_in_session(resource dict, string word)","whether or not 'word' exists in this spelling-session"],enchant_dict_quick_check:["bool enchant_dict_quick_check(resource dict, string word [, array &suggestions])","If the word is correctly spelled return true, otherwise return false, if suggestions variable is provided, fill it with spelling alternatives."],enchant_dict_store_replacement:["void enchant_dict_store_replacement(resource dict, string mis, string cor)","add a correction for 'mis' using 'cor'. Notes that you replaced @mis with @cor, so it's possibly more likely that future occurrences of @mis will be replaced with @cor. So it might bump @cor up in the suggestion list."],enchant_dict_suggest:["array enchant_dict_suggest(resource dict, string word)","Will return a list of values if any of those pre-conditions are not met."],end:["mixed end(array array_arg)","Advances array argument's internal pointer to the last element and return it"],ereg:["int ereg(string pattern, string string [, array registers])","Regular expression match"],ereg_replace:["string ereg_replace(string pattern, string replacement, string string)","Replace regular expression"],eregi:["int eregi(string pattern, string string [, array registers])","Case-insensitive regular expression match"],eregi_replace:["string eregi_replace(string pattern, string replacement, string string)","Case insensitive replace regular expression"],error_get_last:["array error_get_last()","Get the last occurred error as associative array. Returns NULL if there hasn't been an error yet."],error_log:["bool error_log(string message [, int message_type [, string destination [, string extra_headers]]])","Send an error message somewhere"],error_reporting:["int error_reporting([int new_error_level])","Return the current error_reporting level, and if an argument was passed - change to the new level"],escapeshellarg:["string escapeshellarg(string arg)","Quote and escape an argument for use in a shell command"],escapeshellcmd:["string escapeshellcmd(string command)","Escape shell metacharacters"],exec:["string exec(string command [, array &output [, int &return_value]])","Execute an external program"],exif_imagetype:["int exif_imagetype(string imagefile)","Get the type of an image"],exif_read_data:["array exif_read_data(string filename [, sections_needed [, sub_arrays[, read_thumbnail]]])","Reads header data from the JPEG/TIFF image filename and optionally reads the internal thumbnails"],exif_tagname:["string exif_tagname(index)","Get headername for index or false if not defined"],exif_thumbnail:["string exif_thumbnail(string filename [, &width, &height [, &imagetype]])","Reads the embedded thumbnail"],exit:["void exit([mixed status])","Output a message and terminate the current script"],exp:["float exp(float number)","Returns e raised to the power of the number"],explode:["array explode(string separator, string str [, int limit])","Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned."],expm1:["float expm1(float number)","Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero"],extension_loaded:["bool extension_loaded(string extension_name)","Returns true if the named extension is loaded"],extract:["int extract(array var_array [, int extract_type [, string prefix]])","Imports variables into symbol table from an array"],ezmlm_hash:["int ezmlm_hash(string addr)","Calculate EZMLM list hash value."],fclose:["bool fclose(resource fp)","Close an open file pointer"],feof:["bool feof(resource fp)","Test for end-of-file on a file pointer"],fflush:["bool fflush(resource fp)","Flushes output"],fgetc:["string fgetc(resource fp)","Get a character from file pointer"],fgetcsv:["array fgetcsv(resource fp [,int length [, string delimiter [, string enclosure [, string escape]]]])","Get line from file pointer and parse for CSV fields"],fgets:["string fgets(resource fp[, int length])","Get a line from file pointer"],fgetss:["string fgetss(resource fp [, int length [, string allowable_tags]])","Get a line from file pointer and strip HTML tags"],file:["array file(string filename [, int flags[, resource context]])","Read entire file into an array"],file_exists:["bool file_exists(string filename)","Returns true if filename exists"],file_get_contents:["string file_get_contents(string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]])","Read the entire file into a string"],file_put_contents:["int file_put_contents(string file, mixed data [, int flags [, resource context]])","Write/Create a file with contents data and return the number of bytes written"],fileatime:["int fileatime(string filename)","Get last access time of file"],filectime:["int filectime(string filename)","Get inode modification time of file"],filegroup:["int filegroup(string filename)","Get file group"],fileinode:["int fileinode(string filename)","Get file inode"],filemtime:["int filemtime(string filename)","Get last modification time of file"],fileowner:["int fileowner(string filename)","Get file owner"],fileperms:["int fileperms(string filename)","Get file permissions"],filesize:["int filesize(string filename)","Get file size"],filetype:["string filetype(string filename)","Get file type"],filter_has_var:["mixed filter_has_var(constant type, string variable_name)","* Returns true if the variable with the name 'name' exists in source."],filter_input:["mixed filter_input(constant type, string variable_name [, long filter [, mixed options]])","* Returns the filtered variable 'name'* from source `type`."],filter_input_array:["mixed filter_input_array(constant type, [, mixed options]])","* Returns an array with all arguments defined in 'definition'."],filter_var:["mixed filter_var(mixed variable [, long filter [, mixed options]])","* Returns the filtered version of the vriable."],filter_var_array:["mixed filter_var_array(array data, [, mixed options]])","* Returns an array with all arguments defined in 'definition'."],finfo_buffer:["string finfo_buffer(resource finfo, char *string [, int options [, resource context]])","Return infromation about a string buffer."],finfo_close:["resource finfo_close(resource finfo)","Close fileinfo resource."],finfo_file:["string finfo_file(resource finfo, char *file_name [, int options [, resource context]])","Return information about a file."],finfo_open:["resource finfo_open([int options [, string arg]])","Create a new fileinfo resource."],finfo_set_flags:["bool finfo_set_flags(resource finfo, int options)","Set libmagic configuration options."],floatval:["float floatval(mixed var)","Get the float value of a variable"],flock:["bool flock(resource fp, int operation [, int &wouldblock])","Portable file locking"],floor:["float floor(float number)","Returns the next lowest integer value from the number"],flush:["void flush()","Flush the output buffer"],fmod:["float fmod(float x, float y)","Returns the remainder of dividing x by y as a float"],fnmatch:["bool fnmatch(string pattern, string filename [, int flags])","Match filename against pattern"],fopen:["resource fopen(string filename, string mode [, bool use_include_path [, resource context]])","Open a file or a URL and return a file pointer"],forward_static_call:["mixed forward_static_call(mixed function_name [, mixed parmeter] [, mixed ...])","Call a user function which is the first parameter"],fpassthru:["int fpassthru(resource fp)","Output all remaining data from a file pointer"],fprintf:["int fprintf(resource stream, string format [, mixed arg1 [, mixed ...]])","Output a formatted string into a stream"],fputcsv:["int fputcsv(resource fp, array fields [, string delimiter [, string enclosure]])","Format line as CSV and write to file pointer"],fread:["string fread(resource fp, int length)","Binary-safe file read"],frenchtojd:["int frenchtojd(int month, int day, int year)","Converts a french republic calendar date to julian day count"],fscanf:["mixed fscanf(resource stream, string format [, string ...])","Implements a mostly ANSI compatible fscanf()"],fseek:["int fseek(resource fp, int offset [, int whence])","Seek on a file pointer"],fsockopen:["resource fsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])","Open Internet or Unix domain socket connection"],fstat:["array fstat(resource fp)","Stat() on a filehandle"],ftell:["int ftell(resource fp)","Get file pointer's read/write position"],ftok:["int ftok(string pathname, string proj)","Convert a pathname and a project identifier to a System V IPC key"],ftp_alloc:["bool ftp_alloc(resource stream, int size[, &response])","Attempt to allocate space on the remote FTP server"],ftp_cdup:["bool ftp_cdup(resource stream)","Changes to the parent directory"],ftp_chdir:["bool ftp_chdir(resource stream, string directory)","Changes directories"],ftp_chmod:["int ftp_chmod(resource stream, int mode, string filename)","Sets permissions on a file"],ftp_close:["bool ftp_close(resource stream)","Closes the FTP stream"],ftp_connect:["resource ftp_connect(string host [, int port [, int timeout]])","Opens a FTP stream"],ftp_delete:["bool ftp_delete(resource stream, string file)","Deletes a file"],ftp_exec:["bool ftp_exec(resource stream, string command)","Requests execution of a program on the FTP server"],ftp_fget:["bool ftp_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])","Retrieves a file from the FTP server and writes it to an open file"],ftp_fput:["bool ftp_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])","Stores a file from an open file to the FTP server"],ftp_get:["bool ftp_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])","Retrieves a file from the FTP server and writes it to a local file"],ftp_get_option:["mixed ftp_get_option(resource stream, int option)","Gets an FTP option"],ftp_login:["bool ftp_login(resource stream, string username, string password)","Logs into the FTP server"],ftp_mdtm:["int ftp_mdtm(resource stream, string filename)","Returns the last modification time of the file, or -1 on error"],ftp_mkdir:["string ftp_mkdir(resource stream, string directory)","Creates a directory and returns the absolute path for the new directory or false on error"],ftp_nb_continue:["int ftp_nb_continue(resource stream)","Continues retrieving/sending a file nbronously"],ftp_nb_fget:["int ftp_nb_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])","Retrieves a file from the FTP server asynchronly and writes it to an open file"],ftp_nb_fput:["int ftp_nb_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])","Stores a file from an open file to the FTP server nbronly"],ftp_nb_get:["int ftp_nb_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])","Retrieves a file from the FTP server nbhronly and writes it to a local file"],ftp_nb_put:["int ftp_nb_put(resource stream, string remote_file, string local_file, int mode[, int startpos])","Stores a file on the FTP server"],ftp_nlist:["array ftp_nlist(resource stream, string directory)","Returns an array of filenames in the given directory"],ftp_pasv:["bool ftp_pasv(resource stream, bool pasv)","Turns passive mode on or off"],ftp_put:["bool ftp_put(resource stream, string remote_file, string local_file, int mode[, int startpos])","Stores a file on the FTP server"],ftp_pwd:["string ftp_pwd(resource stream)","Returns the present working directory"],ftp_raw:["array ftp_raw(resource stream, string command)","Sends a literal command to the FTP server"],ftp_rawlist:["array ftp_rawlist(resource stream, string directory [, bool recursive])","Returns a detailed listing of a directory as an array of output lines"],ftp_rename:["bool ftp_rename(resource stream, string src, string dest)","Renames the given file to a new path"],ftp_rmdir:["bool ftp_rmdir(resource stream, string directory)","Removes a directory"],ftp_set_option:["bool ftp_set_option(resource stream, int option, mixed value)","Sets an FTP option"],ftp_site:["bool ftp_site(resource stream, string cmd)","Sends a SITE command to the server"],ftp_size:["int ftp_size(resource stream, string filename)","Returns the size of the file, or -1 on error"],ftp_ssl_connect:["resource ftp_ssl_connect(string host [, int port [, int timeout]])","Opens a FTP-SSL stream"],ftp_systype:["string ftp_systype(resource stream)","Returns the system type identifier"],ftruncate:["bool ftruncate(resource fp, int size)","Truncate file to 'size' length"],func_get_arg:["mixed func_get_arg(int arg_num)","Get the $arg_num'th argument that was passed to the function"],func_get_args:["array func_get_args()","Get an array of the arguments that were passed to the function"],func_num_args:["int func_num_args()","Get the number of arguments that were passed to the function"],"function ":["",""],"foreach ":["",""],function_exists:["bool function_exists(string function_name)","Checks if the function exists"],fwrite:["int fwrite(resource fp, string str [, int length])","Binary-safe file write"],gc_collect_cycles:["int gc_collect_cycles()","Forces collection of any existing garbage cycles. Returns number of freed zvals"],gc_disable:["void gc_disable()","Deactivates the circular reference collector"],gc_enable:["void gc_enable()","Activates the circular reference collector"],gc_enabled:["void gc_enabled()","Returns status of the circular reference collector"],gd_info:["array gd_info()",""],getKeywords:["static array getKeywords(string $locale) {","* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array * }}}"],get_browser:["mixed get_browser([string browser_name [, bool return_array]])","Get information about the capabilities of a browser. If browser_name is omitted or null, HTTP_USER_AGENT is used. Returns an object by default; if return_array is true, returns an array."],get_called_class:["string get_called_class()",'Retrieves the "Late Static Binding" class name'],get_cfg_var:["mixed get_cfg_var(string option_name)","Get the value of a PHP configuration option"],get_class:["string get_class([object object])","Retrieves the class name"],get_class_methods:["array get_class_methods(mixed class)","Returns an array of method names for class or class instance."],get_class_vars:["array get_class_vars(string class_name)","Returns an array of default properties of the class."],get_current_user:["string get_current_user()","Get the name of the owner of the current PHP script"],get_declared_classes:["array get_declared_classes()","Returns an array of all declared classes."],get_declared_interfaces:["array get_declared_interfaces()","Returns an array of all declared interfaces."],get_defined_constants:["array get_defined_constants([bool categorize])","Return an array containing the names and values of all defined constants"],get_defined_functions:["array get_defined_functions()","Returns an array of all defined functions"],get_defined_vars:["array get_defined_vars()","Returns an associative array of names and values of all currently defined variable names (variables in the current scope)"],get_display_language:["static string get_display_language($locale[, $in_locale = null])","* gets the language for the $locale in $in_locale or default_locale"],get_display_name:["static string get_display_name($locale[, $in_locale = null])","* gets the name for the $locale in $in_locale or default_locale"],get_display_region:["static string get_display_region($locale, $in_locale = null)","* gets the region for the $locale in $in_locale or default_locale"],get_display_script:["static string get_display_script($locale, $in_locale = null)","* gets the script for the $locale in $in_locale or default_locale"],get_extension_funcs:["array get_extension_funcs(string extension_name)","Returns an array with the names of functions belonging to the named extension"],get_headers:["array get_headers(string url[, int format])","fetches all the headers sent by the server in response to a HTTP request"],get_html_translation_table:["array get_html_translation_table([int table [, int quote_style]])","Returns the internal translation table used by htmlspecialchars and htmlentities"],get_include_path:["string get_include_path()","Get the current include_path configuration option"],get_included_files:["array get_included_files()","Returns an array with the file names that were include_once()'d"],get_loaded_extensions:["array get_loaded_extensions([bool zend_extensions])","Return an array containing names of loaded extensions"],get_magic_quotes_gpc:["int get_magic_quotes_gpc()","Get the current active configuration setting of magic_quotes_gpc"],get_magic_quotes_runtime:["int get_magic_quotes_runtime()","Get the current active configuration setting of magic_quotes_runtime"],get_meta_tags:["array get_meta_tags(string filename [, bool use_include_path])","Extracts all meta tag content attributes from a file and returns an array"],get_object_vars:["array get_object_vars(object obj)","Returns an array of object properties"],get_parent_class:["string get_parent_class([mixed object])","Retrieves the parent class name for object or class or current scope."],get_resource_type:["string get_resource_type(resource res)","Get the resource type name for a given resource"],getallheaders:["array getallheaders()",""],getcwd:["mixed getcwd()","Gets the current directory"],getdate:["array getdate([int timestamp])","Get date/time information"],getenv:["string getenv(string varname)","Get the value of an environment variable"],gethostbyaddr:["string gethostbyaddr(string ip_address)","Get the Internet host name corresponding to a given IP address"],gethostbyname:["string gethostbyname(string hostname)","Get the IP address corresponding to a given Internet host name"],gethostbynamel:["array gethostbynamel(string hostname)","Return a list of IP addresses that a given hostname resolves to."],gethostname:["string gethostname()","Get the host name of the current machine"],getimagesize:["array getimagesize(string imagefile [, array info])","Get the size of an image as 4-element array"],getlastmod:["int getlastmod()","Get time of last page modification"],getmygid:["int getmygid()","Get PHP script owner's GID"],getmyinode:["int getmyinode()","Get the inode of the current script being parsed"],getmypid:["int getmypid()","Get current process ID"],getmyuid:["int getmyuid()","Get PHP script owner's UID"],getopt:["array getopt(string options [, array longopts])","Get options from the command line argument list"],getprotobyname:["int getprotobyname(string name)","Returns protocol number associated with name as per /etc/protocols"],getprotobynumber:["string getprotobynumber(int proto)","Returns protocol name associated with protocol number proto"],getrandmax:["int getrandmax()","Returns the maximum value a random number can have"],getrusage:["array getrusage([int who])","Returns an array of usage statistics"],getservbyname:["int getservbyname(string service, string protocol)",'Returns port associated with service. Protocol must be "tcp" or "udp"'],getservbyport:["string getservbyport(int port, string protocol)",'Returns service name associated with port. Protocol must be "tcp" or "udp"'],gettext:["string gettext(string msgid)","Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist"],gettimeofday:["array gettimeofday([bool get_as_float])","Returns the current time as array"],gettype:["string gettype(mixed var)","Returns the type of the variable"],glob:["array glob(string pattern [, int flags])","Find pathnames matching a pattern"],gmdate:["string gmdate(string format [, long timestamp])","Format a GMT date/time"],gmmktime:["int gmmktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])","Get UNIX timestamp for a GMT date"],gmp_abs:["resource gmp_abs(resource a)","Calculates absolute value"],gmp_add:["resource gmp_add(resource a, resource b)","Add a and b"],gmp_and:["resource gmp_and(resource a, resource b)","Calculates logical AND of a and b"],gmp_clrbit:["void gmp_clrbit(resource &a, int index)","Clears bit in a"],gmp_cmp:["int gmp_cmp(resource a, resource b)","Compares two numbers"],gmp_com:["resource gmp_com(resource a)","Calculates one's complement of a"],gmp_div_q:["resource gmp_div_q(resource a, resource b [, int round])","Divide a by b, returns quotient only"],gmp_div_qr:["array gmp_div_qr(resource a, resource b [, int round])","Divide a by b, returns quotient and reminder"],gmp_div_r:["resource gmp_div_r(resource a, resource b [, int round])","Divide a by b, returns reminder only"],gmp_divexact:["resource gmp_divexact(resource a, resource b)","Divide a by b using exact division algorithm"],gmp_fact:["resource gmp_fact(int a)","Calculates factorial function"],gmp_gcd:["resource gmp_gcd(resource a, resource b)","Computes greatest common denominator (gcd) of a and b"],gmp_gcdext:["array gmp_gcdext(resource a, resource b)","Computes G, S, and T, such that AS + BT = G = `gcd' (A, B)"],gmp_hamdist:["int gmp_hamdist(resource a, resource b)","Calculates hamming distance between a and b"],gmp_init:["resource gmp_init(mixed number [, int base])","Initializes GMP number"],gmp_intval:["int gmp_intval(resource gmpnumber)","Gets signed long value of GMP number"],gmp_invert:["resource gmp_invert(resource a, resource b)","Computes the inverse of a modulo b"],gmp_jacobi:["int gmp_jacobi(resource a, resource b)","Computes Jacobi symbol"],gmp_legendre:["int gmp_legendre(resource a, resource b)","Computes Legendre symbol"],gmp_mod:["resource gmp_mod(resource a, resource b)","Computes a modulo b"],gmp_mul:["resource gmp_mul(resource a, resource b)","Multiply a and b"],gmp_neg:["resource gmp_neg(resource a)","Negates a number"],gmp_nextprime:["resource gmp_nextprime(resource a)","Finds next prime of a"],gmp_or:["resource gmp_or(resource a, resource b)","Calculates logical OR of a and b"],gmp_perfect_square:["bool gmp_perfect_square(resource a)","Checks if a is an exact square"],gmp_popcount:["int gmp_popcount(resource a)","Calculates the population count of a"],gmp_pow:["resource gmp_pow(resource base, int exp)","Raise base to power exp"],gmp_powm:["resource gmp_powm(resource base, resource exp, resource mod)","Raise base to power exp and take result modulo mod"],gmp_prob_prime:["int gmp_prob_prime(resource a[, int reps])",'Checks if a is "probably prime"'],gmp_random:["resource gmp_random([int limiter])","Gets random number"],gmp_scan0:["int gmp_scan0(resource a, int start)","Finds first zero bit"],gmp_scan1:["int gmp_scan1(resource a, int start)","Finds first non-zero bit"],gmp_setbit:["void gmp_setbit(resource &a, int index[, bool set_clear])","Sets or clear bit in a"],gmp_sign:["int gmp_sign(resource a)","Gets the sign of the number"],gmp_sqrt:["resource gmp_sqrt(resource a)","Takes integer part of square root of a"],gmp_sqrtrem:["array gmp_sqrtrem(resource a)","Square root with remainder"],gmp_strval:["string gmp_strval(resource gmpnumber [, int base])","Gets string representation of GMP number"],gmp_sub:["resource gmp_sub(resource a, resource b)","Subtract b from a"],gmp_testbit:["bool gmp_testbit(resource a, int index)","Tests if bit is set in a"],gmp_xor:["resource gmp_xor(resource a, resource b)","Calculates logical exclusive OR of a and b"],gmstrftime:["string gmstrftime(string format [, int timestamp])","Format a GMT/UCT time/date according to locale settings"],grapheme_extract:["string grapheme_extract(string str, int size[, int extract_type[, int start[, int next]]])","Function to extract a sequence of default grapheme clusters"],grapheme_stripos:["int grapheme_stripos(string haystack, string needle [, int offset ])","Find position of first occurrence of a string within another, ignoring case differences"],grapheme_stristr:["string grapheme_stristr(string haystack, string needle[, bool part])","Finds first occurrence of a string within another"],grapheme_strlen:["int grapheme_strlen(string str)","Get number of graphemes in a string"],grapheme_strpos:["int grapheme_strpos(string haystack, string needle [, int offset ])","Find position of first occurrence of a string within another"],grapheme_strripos:["int grapheme_strripos(string haystack, string needle [, int offset])","Find position of last occurrence of a string within another, ignoring case"],grapheme_strrpos:["int grapheme_strrpos(string haystack, string needle [, int offset])","Find position of last occurrence of a string within another"],grapheme_strstr:["string grapheme_strstr(string haystack, string needle[, bool part])","Finds first occurrence of a string within another"],grapheme_substr:["string grapheme_substr(string str, int start [, int length])","Returns part of a string"],gregoriantojd:["int gregoriantojd(int month, int day, int year)","Converts a gregorian calendar date to julian day count"],gzcompress:["string gzcompress(string data [, int level])","Gzip-compress a string"],gzdeflate:["string gzdeflate(string data [, int level])","Gzip-compress a string"],gzencode:["string gzencode(string data [, int level [, int encoding_mode]])","GZ encode a string"],gzfile:["array gzfile(string filename [, int use_include_path])","Read und uncompress entire .gz-file into an array"],gzinflate:["string gzinflate(string data [, int length])","Unzip a gzip-compressed string"],gzopen:["resource gzopen(string filename, string mode [, int use_include_path])","Open a .gz-file and return a .gz-file pointer"],gzuncompress:["string gzuncompress(string data [, int length])","Unzip a gzip-compressed string"],hash:["string hash(string algo, string data[, bool raw_output = false])","Generate a hash of a given input string Returns lowercase hexits by default"],hash_algos:["array hash_algos()","Return a list of registered hashing algorithms"],hash_copy:["resource hash_copy(resource context)","Copy hash resource"],hash_file:["string hash_file(string algo, string filename[, bool raw_output = false])","Generate a hash of a given file Returns lowercase hexits by default"],hash_final:["string hash_final(resource context[, bool raw_output=false])","Output resulting digest"],hash_hmac:["string hash_hmac(string algo, string data, string key[, bool raw_output = false])","Generate a hash of a given input string with a key using HMAC Returns lowercase hexits by default"],hash_hmac_file:["string hash_hmac_file(string algo, string filename, string key[, bool raw_output = false])","Generate a hash of a given file with a key using HMAC Returns lowercase hexits by default"],hash_init:["resource hash_init(string algo[, int options, string key])","Initialize a hashing context"],hash_update:["bool hash_update(resource context, string data)","Pump data into the hashing algorithm"],hash_update_file:["bool hash_update_file(resource context, string filename[, resource context])","Pump data into the hashing algorithm from a file"],hash_update_stream:["int hash_update_stream(resource context, resource handle[, integer length])","Pump data into the hashing algorithm from an open stream"],header:["void header(string header [, bool replace, [int http_response_code]])","Sends a raw HTTP header"],header_remove:["void header_remove([string name])","Removes an HTTP header previously set using header()"],headers_list:["array headers_list()","Return list of headers to be sent / already sent"],headers_sent:["bool headers_sent([string &$file [, int &$line]])","Returns true if headers have already been sent, false otherwise"],hebrev:["string hebrev(string str [, int max_chars_per_line])","Converts logical Hebrew text to visual text"],hebrevc:["string hebrevc(string str [, int max_chars_per_line])","Converts logical Hebrew text to visual text with newline conversion"],hexdec:["int hexdec(string hexadecimal_number)","Returns the decimal equivalent of the hexadecimal number"],highlight_file:["bool highlight_file(string file_name [, bool return] )","Syntax highlight a source file"],highlight_string:["bool highlight_string(string string [, bool return] )","Syntax highlight a string or optionally return it"],html_entity_decode:["string html_entity_decode(string string [, int quote_style][, string charset])","Convert all HTML entities to their applicable characters"],htmlentities:["string htmlentities(string string [, int quote_style[, string charset[, bool double_encode]]])","Convert all applicable characters to HTML entities"],htmlspecialchars:["string htmlspecialchars(string string [, int quote_style[, string charset[, bool double_encode]]])","Convert special characters to HTML entities"],htmlspecialchars_decode:["string htmlspecialchars_decode(string string [, int quote_style])","Convert special HTML entities back to characters"],http_build_query:["string http_build_query(mixed formdata [, string prefix [, string arg_separator]])","Generates a form-encoded query string from an associative array or object."],hypot:["float hypot(float num1, float num2)","Returns sqrt(num1*num1 + num2*num2)"],ibase_add_user:["bool ibase_add_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])","Add a user to security database"],ibase_affected_rows:["int ibase_affected_rows( [ resource link_identifier ] )","Returns the number of rows affected by the previous INSERT, UPDATE or DELETE statement"],ibase_backup:["mixed ibase_backup(resource service_handle, string source_db, string dest_file [, int options [, bool verbose]])","Initiates a backup task in the service manager and returns immediately"],ibase_blob_add:["bool ibase_blob_add(resource blob_handle, string data)","Add data into created blob"],ibase_blob_cancel:["bool ibase_blob_cancel(resource blob_handle)","Cancel creating blob"],ibase_blob_close:["string ibase_blob_close(resource blob_handle)","Close blob"],ibase_blob_create:["resource ibase_blob_create([resource link_identifier])","Create blob for adding data"],ibase_blob_echo:["bool ibase_blob_echo([ resource link_identifier, ] string blob_id)","Output blob contents to browser"],ibase_blob_get:["string ibase_blob_get(resource blob_handle, int len)","Get len bytes data from open blob"],ibase_blob_import:["string ibase_blob_import([ resource link_identifier, ] resource file)","Create blob, copy file in it, and close it"],ibase_blob_info:["array ibase_blob_info([ resource link_identifier, ] string blob_id)","Return blob length and other useful info"],ibase_blob_open:["resource ibase_blob_open([ resource link_identifier, ] string blob_id)","Open blob for retrieving data parts"],ibase_close:["bool ibase_close([resource link_identifier])","Close an InterBase connection"],ibase_commit:["bool ibase_commit( resource link_identifier )","Commit transaction"],ibase_commit_ret:["bool ibase_commit_ret( resource link_identifier )","Commit transaction and retain the transaction context"],ibase_connect:["resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])","Open a connection to an InterBase database"],ibase_db_info:["string ibase_db_info(resource service_handle, string db, int action [, int argument])","Request statistics about a database"],ibase_delete_user:["bool ibase_delete_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])","Delete a user from security database"],ibase_drop_db:["bool ibase_drop_db([resource link_identifier])","Drop an InterBase database"],ibase_errcode:["int ibase_errcode()","Return error code"],ibase_errmsg:["string ibase_errmsg()","Return error message"],ibase_execute:["mixed ibase_execute(resource query [, mixed bind_arg [, mixed bind_arg [, ...]]])","Execute a previously prepared query"],ibase_fetch_assoc:["array ibase_fetch_assoc(resource result [, int fetch_flags])","Fetch a row from the results of a query"],ibase_fetch_object:["object ibase_fetch_object(resource result [, int fetch_flags])","Fetch a object from the results of a query"],ibase_fetch_row:["array ibase_fetch_row(resource result [, int fetch_flags])","Fetch a row from the results of a query"],ibase_field_info:["array ibase_field_info(resource query_result, int field_number)","Get information about a field"],ibase_free_event_handler:["bool ibase_free_event_handler(resource event)","Frees the event handler set by ibase_set_event_handler()"],ibase_free_query:["bool ibase_free_query(resource query)","Free memory used by a query"],ibase_free_result:["bool ibase_free_result(resource result)","Free the memory used by a result"],ibase_gen_id:["int ibase_gen_id(string generator [, int increment [, resource link_identifier ]])","Increments the named generator and returns its new value"],ibase_maintain_db:["bool ibase_maintain_db(resource service_handle, string db, int action [, int argument])","Execute a maintenance command on the database server"],ibase_modify_user:["bool ibase_modify_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])","Modify a user in security database"],ibase_name_result:["bool ibase_name_result(resource result, string name)","Assign a name to a result for use with ... WHERE CURRENT OF statements"],ibase_num_fields:["int ibase_num_fields(resource query_result)","Get the number of fields in result"],ibase_num_params:["int ibase_num_params(resource query)","Get the number of params in a prepared query"],ibase_num_rows:["int ibase_num_rows( resource result_identifier )","Return the number of rows that are available in a result"],ibase_param_info:["array ibase_param_info(resource query, int field_number)","Get information about a parameter"],ibase_pconnect:["resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])","Open a persistent connection to an InterBase database"],ibase_prepare:["resource ibase_prepare(resource link_identifier[, string query [, resource trans_identifier ]])","Prepare a query for later execution"],ibase_query:["mixed ibase_query([resource link_identifier, [ resource link_identifier, ]] string query [, mixed bind_arg [, mixed bind_arg [, ...]]])","Execute a query"],ibase_restore:["mixed ibase_restore(resource service_handle, string source_file, string dest_db [, int options [, bool verbose]])","Initiates a restore task in the service manager and returns immediately"],ibase_rollback:["bool ibase_rollback( resource link_identifier )","Rollback transaction"],ibase_rollback_ret:["bool ibase_rollback_ret( resource link_identifier )","Rollback transaction and retain the transaction context"],ibase_server_info:["string ibase_server_info(resource service_handle, int action)","Request information about a database server"],ibase_service_attach:["resource ibase_service_attach(string host, string dba_username, string dba_password)","Connect to the service manager"],ibase_service_detach:["bool ibase_service_detach(resource service_handle)","Disconnect from the service manager"],ibase_set_event_handler:["resource ibase_set_event_handler([resource link_identifier,] callback handler, string event [, string event [, ...]])","Register the callback for handling each of the named events"],ibase_trans:["resource ibase_trans([int trans_args [, resource link_identifier [, ... ], int trans_args [, resource link_identifier [, ... ]] [, ...]]])","Start a transaction over one or several databases"],ibase_wait_event:["string ibase_wait_event([resource link_identifier,] string event [, string event [, ...]])","Waits for any one of the passed Interbase events to be posted by the database, and returns its name"],iconv:["string iconv(string in_charset, string out_charset, string str)","Returns str converted to the out_charset character set"],iconv_get_encoding:["mixed iconv_get_encoding([string type])","Get internal encoding and output encoding for ob_iconv_handler()"],iconv_mime_decode:["string iconv_mime_decode(string encoded_string [, int mode, string charset])","Decodes a mime header field"],iconv_mime_decode_headers:["array iconv_mime_decode_headers(string headers [, int mode, string charset])","Decodes multiple mime header fields"],iconv_mime_encode:["string iconv_mime_encode(string field_name, string field_value [, array preference])","Composes a mime header field with field_name and field_value in a specified scheme"],iconv_set_encoding:["bool iconv_set_encoding(string type, string charset)","Sets internal encoding and output encoding for ob_iconv_handler()"],iconv_strlen:["int iconv_strlen(string str [, string charset])","Returns the character count of str"],iconv_strpos:["int iconv_strpos(string haystack, string needle [, int offset [, string charset]])","Finds position of first occurrence of needle within part of haystack beginning with offset"],iconv_strrpos:["int iconv_strrpos(string haystack, string needle [, string charset])","Finds position of last occurrence of needle within part of haystack beginning with offset"],iconv_substr:["string iconv_substr(string str, int offset, [int length, string charset])","Returns specified part of a string"],idate:["int idate(string format [, int timestamp])","Format a local time/date as integer"],idn_to_ascii:["int idn_to_ascii(string domain[, int options])","Converts an Unicode domain to ASCII representation, as defined in the IDNA RFC"],idn_to_utf8:["int idn_to_utf8(string domain[, int options])","Converts an ASCII representation of the domain to Unicode (UTF-8), as defined in the IDNA RFC"],ignore_user_abort:["int ignore_user_abort([string value])","Set whether we want to ignore a user abort event or not"],image2wbmp:["bool image2wbmp(resource im [, string filename [, int threshold]])","Output WBMP image to browser or file"],image_type_to_extension:["string image_type_to_extension(int imagetype [, bool include_dot])","Get file extension for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype"],image_type_to_mime_type:["string image_type_to_mime_type(int imagetype)","Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype"],imagealphablending:["bool imagealphablending(resource im, bool on)","Turn alpha blending mode on or off for the given image"],imageantialias:["bool imageantialias(resource im, bool on)","Should antialiased functions used or not"],imagearc:["bool imagearc(resource im, int cx, int cy, int w, int h, int s, int e, int col)","Draw a partial ellipse"],imagechar:["bool imagechar(resource im, int font, int x, int y, string c, int col)","Draw a character"],imagecharup:["bool imagecharup(resource im, int font, int x, int y, string c, int col)","Draw a character rotated 90 degrees counter-clockwise"],imagecolorallocate:["int imagecolorallocate(resource im, int red, int green, int blue)","Allocate a color for an image"],imagecolorallocatealpha:["int imagecolorallocatealpha(resource im, int red, int green, int blue, int alpha)","Allocate a color with an alpha level. Works for true color and palette based images"],imagecolorat:["int imagecolorat(resource im, int x, int y)","Get the index of the color of a pixel"],imagecolorclosest:["int imagecolorclosest(resource im, int red, int green, int blue)","Get the index of the closest color to the specified color"],imagecolorclosestalpha:["int imagecolorclosestalpha(resource im, int red, int green, int blue, int alpha)","Find the closest matching colour with alpha transparency"],imagecolorclosesthwb:["int imagecolorclosesthwb(resource im, int red, int green, int blue)","Get the index of the color which has the hue, white and blackness nearest to the given color"],imagecolordeallocate:["bool imagecolordeallocate(resource im, int index)","De-allocate a color for an image"],imagecolorexact:["int imagecolorexact(resource im, int red, int green, int blue)","Get the index of the specified color"],imagecolorexactalpha:["int imagecolorexactalpha(resource im, int red, int green, int blue, int alpha)","Find exact match for colour with transparency"],imagecolormatch:["bool imagecolormatch(resource im1, resource im2)","Makes the colors of the palette version of an image more closely match the true color version"],imagecolorresolve:["int imagecolorresolve(resource im, int red, int green, int blue)","Get the index of the specified color or its closest possible alternative"],imagecolorresolvealpha:["int imagecolorresolvealpha(resource im, int red, int green, int blue, int alpha)","Resolve/Allocate a colour with an alpha level. Works for true colour and palette based images"],imagecolorset:["void imagecolorset(resource im, int col, int red, int green, int blue)","Set the color for the specified palette index"],imagecolorsforindex:["array imagecolorsforindex(resource im, int col)","Get the colors for an index"],imagecolorstotal:["int imagecolorstotal(resource im)","Find out the number of colors in an image's palette"],imagecolortransparent:["int imagecolortransparent(resource im [, int col])","Define a color as transparent"],imageconvolution:["resource imageconvolution(resource src_im, array matrix3x3, double div, double offset)","Apply a 3x3 convolution matrix, using coefficient div and offset"],imagecopy:["bool imagecopy(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)","Copy part of an image"],imagecopymerge:["bool imagecopymerge(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)","Merge one part of an image with another"],imagecopymergegray:["bool imagecopymergegray(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)","Merge one part of an image with another"],imagecopyresampled:["bool imagecopyresampled(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)","Copy and resize part of an image using resampling to help ensure clarity"],imagecopyresized:["bool imagecopyresized(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)","Copy and resize part of an image"],imagecreate:["resource imagecreate(int x_size, int y_size)","Create a new image"],imagecreatefromgd:["resource imagecreatefromgd(string filename)","Create a new image from GD file or URL"],imagecreatefromgd2:["resource imagecreatefromgd2(string filename)","Create a new image from GD2 file or URL"],imagecreatefromgd2part:["resource imagecreatefromgd2part(string filename, int srcX, int srcY, int width, int height)","Create a new image from a given part of GD2 file or URL"],imagecreatefromgif:["resource imagecreatefromgif(string filename)","Create a new image from GIF file or URL"],imagecreatefromjpeg:["resource imagecreatefromjpeg(string filename)","Create a new image from JPEG file or URL"],imagecreatefrompng:["resource imagecreatefrompng(string filename)","Create a new image from PNG file or URL"],imagecreatefromstring:["resource imagecreatefromstring(string image)","Create a new image from the image stream in the string"],imagecreatefromwbmp:["resource imagecreatefromwbmp(string filename)","Create a new image from WBMP file or URL"],imagecreatefromxbm:["resource imagecreatefromxbm(string filename)","Create a new image from XBM file or URL"],imagecreatefromxpm:["resource imagecreatefromxpm(string filename)","Create a new image from XPM file or URL"],imagecreatetruecolor:["resource imagecreatetruecolor(int x_size, int y_size)","Create a new true color image"],imagedashedline:["bool imagedashedline(resource im, int x1, int y1, int x2, int y2, int col)","Draw a dashed line"],imagedestroy:["bool imagedestroy(resource im)","Destroy an image"],imageellipse:["bool imageellipse(resource im, int cx, int cy, int w, int h, int color)","Draw an ellipse"],imagefill:["bool imagefill(resource im, int x, int y, int col)","Flood fill"],imagefilledarc:["bool imagefilledarc(resource im, int cx, int cy, int w, int h, int s, int e, int col, int style)","Draw a filled partial ellipse"],imagefilledellipse:["bool imagefilledellipse(resource im, int cx, int cy, int w, int h, int color)","Draw an ellipse"],imagefilledpolygon:["bool imagefilledpolygon(resource im, array point, int num_points, int col)","Draw a filled polygon"],imagefilledrectangle:["bool imagefilledrectangle(resource im, int x1, int y1, int x2, int y2, int col)","Draw a filled rectangle"],imagefilltoborder:["bool imagefilltoborder(resource im, int x, int y, int border, int col)","Flood fill to specific color"],imagefilter:["bool imagefilter(resource src_im, int filtertype, [args] )","Applies Filter an image using a custom angle"],imagefontheight:["int imagefontheight(int font)","Get font height"],imagefontwidth:["int imagefontwidth(int font)","Get font width"],imageftbbox:["array imageftbbox(float size, float angle, string font_file, string text [, array extrainfo])","Give the bounding box of a text using fonts via freetype2"],imagefttext:["array imagefttext(resource im, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo])","Write text to the image using fonts via freetype2"],imagegammacorrect:["bool imagegammacorrect(resource im, float inputgamma, float outputgamma)","Apply a gamma correction to a GD image"],imagegd:["bool imagegd(resource im [, string filename])","Output GD image to browser or file"],imagegd2:["bool imagegd2(resource im [, string filename, [, int chunk_size, [, int type]]])","Output GD2 image to browser or file"],imagegif:["bool imagegif(resource im [, string filename])","Output GIF image to browser or file"],imagegrabscreen:["resource imagegrabscreen()","Grab a screenshot"],imagegrabwindow:["resource imagegrabwindow(int window_handle [, int client_area])","Grab a window or its client area using a windows handle (HWND property in COM instance)"],imageinterlace:["int imageinterlace(resource im [, int interlace])","Enable or disable interlace"],imageistruecolor:["bool imageistruecolor(resource im)","return true if the image uses truecolor"],imagejpeg:["bool imagejpeg(resource im [, string filename [, int quality]])","Output JPEG image to browser or file"],imagelayereffect:["bool imagelayereffect(resource im, int effect)","Set the alpha blending flag to use the bundled libgd layering effects"],imageline:["bool imageline(resource im, int x1, int y1, int x2, int y2, int col)","Draw a line"],imageloadfont:["int imageloadfont(string filename)","Load a new font"],imagepalettecopy:["void imagepalettecopy(resource dst, resource src)","Copy the palette from the src image onto the dst image"],imagepng:["bool imagepng(resource im [, string filename])","Output PNG image to browser or file"],imagepolygon:["bool imagepolygon(resource im, array point, int num_points, int col)","Draw a polygon"],imagepsbbox:["array imagepsbbox(string text, resource font, int size [, int space, int tightness, float angle])","Return the bounding box needed by a string if rasterized"],imagepscopyfont:["int imagepscopyfont(int font_index)","Make a copy of a font for purposes like extending or reenconding"],imagepsencodefont:["bool imagepsencodefont(resource font_index, string filename)","To change a fonts character encoding vector"],imagepsextendfont:["bool imagepsextendfont(resource font_index, float extend)","Extend or or condense if (extend < 1) a font"],imagepsfreefont:["bool imagepsfreefont(resource font_index)","Free memory used by a font"],imagepsloadfont:["resource imagepsloadfont(string pathname)","Load a new font from specified file"],imagepsslantfont:["bool imagepsslantfont(resource font_index, float slant)","Slant a font"],imagepstext:["array imagepstext(resource image, string text, resource font, int size, int foreground, int background, int xcoord, int ycoord [, int space [, int tightness [, float angle [, int antialias])","Rasterize a string over an image"],imagerectangle:["bool imagerectangle(resource im, int x1, int y1, int x2, int y2, int col)","Draw a rectangle"],imagerotate:["resource imagerotate(resource src_im, float angle, int bgdcolor [, int ignoretransparent])","Rotate an image using a custom angle"],imagesavealpha:["bool imagesavealpha(resource im, bool on)","Include alpha channel to a saved image"],imagesetbrush:["bool imagesetbrush(resource image, resource brush)",'Set the brush image to $brush when filling $image with the "IMG_COLOR_BRUSHED" color'],imagesetpixel:["bool imagesetpixel(resource im, int x, int y, int col)","Set a single pixel"],imagesetstyle:["bool imagesetstyle(resource im, array styles)","Set the line drawing styles for use with imageline and IMG_COLOR_STYLED."],imagesetthickness:["bool imagesetthickness(resource im, int thickness)","Set line thickness for drawing lines, ellipses, rectangles, polygons etc."],imagesettile:["bool imagesettile(resource image, resource tile)",'Set the tile image to $tile when filling $image with the "IMG_COLOR_TILED" color'],imagestring:["bool imagestring(resource im, int font, int x, int y, string str, int col)","Draw a string horizontally"],imagestringup:["bool imagestringup(resource im, int font, int x, int y, string str, int col)","Draw a string vertically - rotated 90 degrees counter-clockwise"],imagesx:["int imagesx(resource im)","Get image width"],imagesy:["int imagesy(resource im)","Get image height"],imagetruecolortopalette:["void imagetruecolortopalette(resource im, bool ditherFlag, int colorsWanted)","Convert a true colour image to a palette based image with a number of colours, optionally using dithering."],imagettfbbox:["array imagettfbbox(float size, float angle, string font_file, string text)","Give the bounding box of a text using TrueType fonts"],imagettftext:["array imagettftext(resource im, float size, float angle, int x, int y, int col, string font_file, string text)","Write text to the image using a TrueType font"],imagetypes:["int imagetypes()","Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM"],imagewbmp:["bool imagewbmp(resource im [, string filename, [, int foreground]])","Output WBMP image to browser or file"],imagexbm:["int imagexbm(int im, string filename [, int foreground])","Output XBM image to browser or file"],imap_8bit:["string imap_8bit(string text)","Convert an 8-bit string to a quoted-printable string"],imap_alerts:["array imap_alerts()","Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called."],imap_append:["bool imap_append(resource stream_id, string folder, string message [, string options [, string internal_date]])","Append a new message to a specified mailbox"],imap_base64:["string imap_base64(string text)","Decode BASE64 encoded text"],imap_binary:["string imap_binary(string text)","Convert an 8bit string to a base64 string"],imap_body:["string imap_body(resource stream_id, int msg_no [, int options])","Read the message body"],imap_bodystruct:["object imap_bodystruct(resource stream_id, int msg_no, string section)","Read the structure of a specified body section of a specific message"],imap_check:["object imap_check(resource stream_id)","Get mailbox properties"],imap_clearflag_full:["bool imap_clearflag_full(resource stream_id, string sequence, string flag [, int options])","Clears flags on messages"],imap_close:["bool imap_close(resource stream_id [, int options])","Close an IMAP stream"],imap_createmailbox:["bool imap_createmailbox(resource stream_id, string mailbox)","Create a new mailbox"],imap_delete:["bool imap_delete(resource stream_id, int msg_no [, int options])","Mark a message for deletion"],imap_deletemailbox:["bool imap_deletemailbox(resource stream_id, string mailbox)","Delete a mailbox"],imap_errors:["array imap_errors()","Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called."],imap_expunge:["bool imap_expunge(resource stream_id)","Permanently delete all messages marked for deletion"],imap_fetch_overview:["array imap_fetch_overview(resource stream_id, string sequence [, int options])","Read an overview of the information in the headers of the given message sequence"],imap_fetchbody:["string imap_fetchbody(resource stream_id, int msg_no, string section [, int options])","Get a specific body section"],imap_fetchheader:["string imap_fetchheader(resource stream_id, int msg_no [, int options])","Get the full unfiltered header for a message"],imap_fetchstructure:["object imap_fetchstructure(resource stream_id, int msg_no [, int options])","Read the full structure of a message"],imap_gc:["bool imap_gc(resource stream_id, int flags)","This function garbage collects (purges) the cache of entries of a specific type."],imap_get_quota:["array imap_get_quota(resource stream_id, string qroot)","Returns the quota set to the mailbox account qroot"],imap_get_quotaroot:["array imap_get_quotaroot(resource stream_id, string mbox)","Returns the quota set to the mailbox account mbox"],imap_getacl:["array imap_getacl(resource stream_id, string mailbox)","Gets the ACL for a given mailbox"],imap_getmailboxes:["array imap_getmailboxes(resource stream_id, string ref, string pattern)","Reads the list of mailboxes and returns a full array of objects containing name, attributes, and delimiter"],imap_getsubscribed:["array imap_getsubscribed(resource stream_id, string ref, string pattern)","Return a list of subscribed mailboxes, in the same format as imap_getmailboxes()"],imap_headerinfo:["object imap_headerinfo(resource stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])","Read the headers of the message"],imap_headers:["array imap_headers(resource stream_id)","Returns headers for all messages in a mailbox"],imap_last_error:["string imap_last_error()","Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call."],imap_list:["array imap_list(resource stream_id, string ref, string pattern)","Read the list of mailboxes"],imap_listscan:["array imap_listscan(resource stream_id, string ref, string pattern, string content)","Read list of mailboxes containing a certain string"],imap_lsub:["array imap_lsub(resource stream_id, string ref, string pattern)","Return a list of subscribed mailboxes"],imap_mail:["bool imap_mail(string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]])","Send an email message"],imap_mail_compose:["string imap_mail_compose(array envelope, array body)","Create a MIME message based on given envelope and body sections"],imap_mail_copy:["bool imap_mail_copy(resource stream_id, string msglist, string mailbox [, int options])","Copy specified message to a mailbox"],imap_mail_move:["bool imap_mail_move(resource stream_id, string sequence, string mailbox [, int options])","Move specified message to a mailbox"],imap_mailboxmsginfo:["object imap_mailboxmsginfo(resource stream_id)","Returns info about the current mailbox"],imap_mime_header_decode:["array imap_mime_header_decode(string str)","Decode mime header element in accordance with RFC 2047 and return array of objects containing 'charset' encoding and decoded 'text'"],imap_msgno:["int imap_msgno(resource stream_id, int unique_msg_id)","Get the sequence number associated with a UID"],imap_mutf7_to_utf8:["string imap_mutf7_to_utf8(string in)","Decode a modified UTF-7 string to UTF-8"],imap_num_msg:["int imap_num_msg(resource stream_id)","Gives the number of messages in the current mailbox"],imap_num_recent:["int imap_num_recent(resource stream_id)","Gives the number of recent messages in current mailbox"],imap_open:["resource imap_open(string mailbox, string user, string password [, int options [, int n_retries]])","Open an IMAP stream to a mailbox"],imap_ping:["bool imap_ping(resource stream_id)","Check if the IMAP stream is still active"],imap_qprint:["string imap_qprint(string text)","Convert a quoted-printable string to an 8-bit string"],imap_renamemailbox:["bool imap_renamemailbox(resource stream_id, string old_name, string new_name)","Rename a mailbox"],imap_reopen:["bool imap_reopen(resource stream_id, string mailbox [, int options [, int n_retries]])","Reopen an IMAP stream to a new mailbox"],imap_rfc822_parse_adrlist:["array imap_rfc822_parse_adrlist(string address_string, string default_host)","Parses an address string"],imap_rfc822_parse_headers:["object imap_rfc822_parse_headers(string headers [, string default_host])","Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo()"],imap_rfc822_write_address:["string imap_rfc822_write_address(string mailbox, string host, string personal)","Returns a properly formatted email address given the mailbox, host, and personal info"],imap_savebody:['bool imap_savebody(resource stream_id, string|resource file, int msg_no[, string section = ""[, int options = 0]])',"Save a specific body section to a file"],imap_search:["array imap_search(resource stream_id, string criteria [, int options [, string charset]])","Return a list of messages matching the given criteria"],imap_set_quota:["bool imap_set_quota(resource stream_id, string qroot, int mailbox_size)","Will set the quota for qroot mailbox"],imap_setacl:["bool imap_setacl(resource stream_id, string mailbox, string id, string rights)","Sets the ACL for a given mailbox"],imap_setflag_full:["bool imap_setflag_full(resource stream_id, string sequence, string flag [, int options])","Sets flags on messages"],imap_sort:["array imap_sort(resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset]]])","Sort an array of message headers, optionally including only messages that meet specified criteria."],imap_status:["object imap_status(resource stream_id, string mailbox, int options)","Get status info from a mailbox"],imap_subscribe:["bool imap_subscribe(resource stream_id, string mailbox)","Subscribe to a mailbox"],imap_thread:["array imap_thread(resource stream_id [, int options])","Return threaded by REFERENCES tree"],imap_timeout:["mixed imap_timeout(int timeout_type [, int timeout])","Set or fetch imap timeout"],imap_uid:["int imap_uid(resource stream_id, int msg_no)","Get the unique message id associated with a standard sequential message number"],imap_undelete:["bool imap_undelete(resource stream_id, int msg_no [, int flags])","Remove the delete flag from a message"],imap_unsubscribe:["bool imap_unsubscribe(resource stream_id, string mailbox)","Unsubscribe from a mailbox"],imap_utf7_decode:["string imap_utf7_decode(string buf)","Decode a modified UTF-7 string"],imap_utf7_encode:["string imap_utf7_encode(string buf)","Encode a string in modified UTF-7"],imap_utf8:["string imap_utf8(string mime_encoded_text)","Convert a mime-encoded text to UTF-8"],imap_utf8_to_mutf7:["string imap_utf8_to_mutf7(string in)","Encode a UTF-8 string to modified UTF-7"],implode:["string implode([string glue,] array pieces)","Joins array elements placing glue string between items and return one string"],import_request_variables:["bool import_request_variables(string types [, string prefix])","Import GET/POST/Cookie variables into the global scope"],in_array:["bool in_array(mixed needle, array haystack [, bool strict])","Checks if the given value exists in the array"],include:["bool include(string path)","Includes and evaluates the specified file"],include_once:["bool include_once(string path)","Includes and evaluates the specified file"],inet_ntop:["string inet_ntop(string in_addr)","Converts a packed inet address to a human readable IP address string"],inet_pton:["string inet_pton(string ip_address)","Converts a human readable IP address to a packed binary string"],ini_get:["string ini_get(string varname)","Get a configuration option"],ini_get_all:["array ini_get_all([string extension[, bool details = true]])","Get all configuration options"],ini_restore:["void ini_restore(string varname)","Restore the value of a configuration option specified by varname"],ini_set:["string ini_set(string varname, string newvalue)","Set a configuration option, returns false on error and the old value of the configuration option on success"],interface_exists:["bool interface_exists(string classname [, bool autoload])","Checks if the class exists"],intl_error_name:["string intl_error_name()","* Return a string for a given error code. * The string will be the same as the name of the error code constant."],intl_get_error_code:["int intl_get_error_code()","* Get code of the last occured error."],intl_get_error_message:["string intl_get_error_message()","* Get text description of the last occured error."],intl_is_failure:["bool intl_is_failure()","* Check whether the given error code indicates a failure. * Returns true if it does, and false if the code * indicates success or a warning."],intval:["int intval(mixed var [, int base])","Get the integer value of a variable using the optional base for the conversion"],ip2long:["int ip2long(string ip_address)","Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address"],iptcembed:["array iptcembed(string iptcdata, string jpeg_file_name [, int spool])","Embed binary IPTC data into a JPEG image."],iptcparse:["array iptcparse(string iptcdata)","Parse binary IPTC-data into associative array"],is_a:["bool is_a(object object, string class_name)","Returns true if the object is of this class or has this class as one of its parents"],is_array:["bool is_array(mixed var)","Returns true if variable is an array"],is_bool:["bool is_bool(mixed var)","Returns true if variable is a boolean"],is_callable:["bool is_callable(mixed var [, bool syntax_only [, string callable_name]])","Returns true if var is callable."],is_countable:["bool is_countable(mixed var)","Returns true if var is countable, false otherwise"],is_dir:["bool is_dir(string filename)","Returns true if file is directory"],is_executable:["bool is_executable(string filename)","Returns true if file is executable"],is_file:["bool is_file(string filename)","Returns true if file is a regular file"],is_finite:["bool is_finite(float val)","Returns whether argument is finite"],is_float:["bool is_float(mixed var)","Returns true if variable is float point"],is_infinite:["bool is_infinite(float val)","Returns whether argument is infinite"],is_link:["bool is_link(string filename)","Returns true if file is symbolic link"],is_long:["bool is_long(mixed var)","Returns true if variable is a long (integer)"],is_nan:["bool is_nan(float val)","Returns whether argument is not a number"],is_null:["bool is_null(mixed var)","Returns true if variable is null"],is_numeric:["bool is_numeric(mixed value)","Returns true if value is a number or a numeric string"],is_object:["bool is_object(mixed var)","Returns true if variable is an object"],is_readable:["bool is_readable(string filename)","Returns true if file can be read"],is_resource:["bool is_resource(mixed var)","Returns true if variable is a resource"],is_scalar:["bool is_scalar(mixed value)","Returns true if value is a scalar"],is_string:["bool is_string(mixed var)","Returns true if variable is a string"],is_subclass_of:["bool is_subclass_of(object object, string class_name)","Returns true if the object has this class as one of its parents"],is_uploaded_file:["bool is_uploaded_file(string path)","Check if file was created by rfc1867 upload"],is_writable:["bool is_writable(string filename)","Returns true if file can be written"],isset:["bool isset(mixed var [, mixed var])","Determine whether a variable is set"],iterator_apply:["int iterator_apply(Traversable iterator, callable function [, array args = null)","Calls a function for every element in an iterator"],iterator_count:["int iterator_count(Traversable iterator)","Count the elements in an iterator"],iterator_to_array:["array iterator_to_array(Traversable iterator [, bool use_keys = true])","Copy the iterator into an array"],jddayofweek:["mixed jddayofweek(int juliandaycount [, int mode])","Returns name or number of day of week from julian day count"],jdmonthname:["string jdmonthname(int juliandaycount, int mode)","Returns name of month for julian day count"],jdtofrench:["string jdtofrench(int juliandaycount)","Converts a julian day count to a french republic calendar date"],jdtogregorian:["string jdtogregorian(int juliandaycount)","Converts a julian day count to a gregorian calendar date"],jdtojewish:["string jdtojewish(int juliandaycount [, bool hebrew [, int fl]])","Converts a julian day count to a jewish calendar date"],jdtojulian:["string jdtojulian(int juliandaycount)","Convert a julian day count to a julian calendar date"],jdtounix:["int jdtounix(int jday)","Convert Julian Day to UNIX timestamp"],jewishtojd:["int jewishtojd(int month, int day, int year)","Converts a jewish calendar date to a julian day count"],join:["string join([string glue,] array pieces)","Returns a string containing a string representation of all the arrayelements in the same order, with the glue string between each element"],jpeg2wbmp:["bool jpeg2wbmp(string f_org, string f_dest, int d_height, int d_width, int threshold)","Convert JPEG image to WBMP image"],json_decode:["mixed json_decode(string json [, bool assoc [, long depth]])","Decodes the JSON representation into a PHP value"],json_encode:["string json_encode(mixed data [, int options])","Returns the JSON representation of a value"],json_last_error:["int json_last_error()","Returns the error code of the last json_decode()."],juliantojd:["int juliantojd(int month, int day, int year)","Converts a julian calendar date to julian day count"],key:["mixed key(array array_arg)","Return the key of the element currently pointed to by the internal array pointer"],krsort:["bool krsort(array &array_arg [, int sort_flags])","Sort an array by key value in reverse order"],ksort:["bool ksort(array &array_arg [, int sort_flags])","Sort an array by key"],lcfirst:["string lcfirst(string str)","Make a string's first character lowercase"],lcg_value:["float lcg_value()","Returns a value from the combined linear congruential generator"],lchgrp:["bool lchgrp(string filename, mixed group)","Change symlink group"],ldap_8859_to_t61:["string ldap_8859_to_t61(string value)","Translate 8859 characters to t61 characters"],ldap_add:["bool ldap_add(resource link, string dn, array entry)","Add entries to LDAP directory"],ldap_bind:["bool ldap_bind(resource link [, string dn [, string password]])","Bind to LDAP directory"],ldap_compare:["bool ldap_compare(resource link, string dn, string attr, string value)","Determine if an entry has a specific value for one of its attributes"],ldap_connect:["resource ldap_connect([string host [, int port [, string wallet [, string wallet_passwd [, int authmode]]]]])","Connect to an LDAP server"],ldap_count_entries:["int ldap_count_entries(resource link, resource result)","Count the number of entries in a search result"],ldap_delete:["bool ldap_delete(resource link, string dn)","Delete an entry from a directory"],ldap_dn2ufn:["string ldap_dn2ufn(string dn)","Convert DN to User Friendly Naming format"],ldap_err2str:["string ldap_err2str(int errno)","Convert error number to error string"],ldap_errno:["int ldap_errno(resource link)","Get the current ldap error number"],ldap_error:["string ldap_error(resource link)","Get the current ldap error string"],ldap_explode_dn:["array ldap_explode_dn(string dn, int with_attrib)","Splits DN into its component parts"],ldap_first_attribute:["string ldap_first_attribute(resource link, resource result_entry)","Return first attribute"],ldap_first_entry:["resource ldap_first_entry(resource link, resource result)","Return first result id"],ldap_first_reference:["resource ldap_first_reference(resource link, resource result)","Return first reference"],ldap_free_result:["bool ldap_free_result(resource result)","Free result memory"],ldap_get_attributes:["array ldap_get_attributes(resource link, resource result_entry)","Get attributes from a search result entry"],ldap_get_dn:["string ldap_get_dn(resource link, resource result_entry)","Get the DN of a result entry"],ldap_get_entries:["array ldap_get_entries(resource link, resource result)","Get all result entries"],ldap_get_option:["bool ldap_get_option(resource link, int option, mixed retval)","Get the current value of various session-wide parameters"],ldap_get_values_len:["array ldap_get_values_len(resource link, resource result_entry, string attribute)","Get all values with lengths from a result entry"],ldap_list:["resource ldap_list(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])","Single-level search"],ldap_mod_add:["bool ldap_mod_add(resource link, string dn, array entry)","Add attribute values to current"],ldap_mod_del:["bool ldap_mod_del(resource link, string dn, array entry)","Delete attribute values"],ldap_mod_replace:["bool ldap_mod_replace(resource link, string dn, array entry)","Replace attribute values with new ones"],ldap_next_attribute:["string ldap_next_attribute(resource link, resource result_entry)","Get the next attribute in result"],ldap_next_entry:["resource ldap_next_entry(resource link, resource result_entry)","Get next result entry"],ldap_next_reference:["resource ldap_next_reference(resource link, resource reference_entry)","Get next reference"],ldap_parse_reference:["bool ldap_parse_reference(resource link, resource reference_entry, array referrals)","Extract information from reference entry"],ldap_parse_result:["bool ldap_parse_result(resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals)","Extract information from result"],ldap_read:["resource ldap_read(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])","Read an entry"],ldap_rename:["bool ldap_rename(resource link, string dn, string newrdn, string newparent, bool deleteoldrdn)","Modify the name of an entry"],ldap_sasl_bind:["bool ldap_sasl_bind(resource link [, string binddn [, string password [, string sasl_mech [, string sasl_realm [, string sasl_authc_id [, string sasl_authz_id [, string props]]]]]]])","Bind to LDAP directory using SASL"],ldap_search:["resource ldap_search(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])","Search LDAP tree under base_dn"],ldap_set_option:["bool ldap_set_option(resource link, int option, mixed newval)","Set the value of various session-wide parameters"],ldap_set_rebind_proc:["bool ldap_set_rebind_proc(resource link, string callback)","Set a callback function to do re-binds on referral chasing."],ldap_sort:["bool ldap_sort(resource link, resource result, string sortfilter)","Sort LDAP result entries"],ldap_start_tls:["bool ldap_start_tls(resource link)","Start TLS"],ldap_t61_to_8859:["string ldap_t61_to_8859(string value)","Translate t61 characters to 8859 characters"],ldap_unbind:["bool ldap_unbind(resource link)","Unbind from LDAP directory"],leak:["void leak(int num_bytes=3)","Cause an intentional memory leak, for testing/debugging purposes"],levenshtein:["int levenshtein(string str1, string str2[, int cost_ins, int cost_rep, int cost_del])","Calculate Levenshtein distance between two strings"],libxml_clear_errors:["void libxml_clear_errors()","Clear last error from libxml"],libxml_disable_entity_loader:["bool libxml_disable_entity_loader([bool disable])","Disable/Enable ability to load external entities"],libxml_get_errors:["object libxml_get_errors()","Retrieve array of errors"],libxml_get_last_error:["object libxml_get_last_error()","Retrieve last error from libxml"],libxml_set_streams_context:["void libxml_set_streams_context(resource streams_context)","Set the streams context for the next libxml document load or write"],libxml_use_internal_errors:["bool libxml_use_internal_errors([bool use_errors])","Disable libxml errors and allow user to fetch error information as needed"],link:["int link(string target, string link)","Create a hard link"],linkinfo:["int linkinfo(string filename)","Returns the st_dev field of the UNIX C stat structure describing the link"],litespeed_request_headers:["array litespeed_request_headers()","Fetch all HTTP request headers"],litespeed_response_headers:["array litespeed_response_headers()","Fetch all HTTP response headers"],locale_accept_from_http:["string locale_accept_from_http(string $http_accept)",null],locale_canonicalize:["static string locale_canonicalize(Locale $loc, string $locale)","* @param string $locale The locale string to canonicalize"],locale_filter_matches:["bool locale_filter_matches(string $langtag, string $locale[, bool $canonicalize])","* Checks if a $langtag filter matches with $locale according to RFC 4647's basic filtering algorithm"],locale_get_all_variants:["static array locale_get_all_variants($locale)","* gets an array containing the list of variants, or null"],locale_get_default:["static string locale_get_default( )","Get default locale"],locale_get_keywords:["static array locale_get_keywords(string $locale) {","* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array"],locale_get_primary_language:["static string locale_get_primary_language($locale)","* gets the primary language for the $locale"],locale_get_region:["static string locale_get_region($locale)","* gets the region for the $locale"],locale_get_script:["static string locale_get_script($locale)","* gets the script for the $locale"],locale_lookup:["string locale_lookup(array $langtag, string $locale[, bool $canonicalize[, string $default = null]])","* Searchs the items in $langtag for the best match to the language * range"],locale_set_default:["static string locale_set_default( string $locale )","Set default locale"],localeconv:["array localeconv()","Returns numeric formatting information based on the current locale"],localtime:["array localtime([int timestamp [, bool associative_array]])","Returns the results of the C system call localtime as an associative array if the associative_array argument is set to 1 other wise it is a regular array"],log:["float log(float number, [float base])","Returns the natural logarithm of the number, or the base log if base is specified"],log10:["float log10(float number)","Returns the base-10 logarithm of the number"],log1p:["float log1p(float number)","Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero"],long2ip:["string long2ip(int proper_address)","Converts an (IPv4) Internet network address into a string in Internet standard dotted format"],lstat:["array lstat(string filename)","Give information about a file or symbolic link"],ltrim:["string ltrim(string str [, string character_mask])","Strips whitespace from the beginning of a string"],mail:["int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])","Send an email message"],max:["mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])","Return the highest value in an array or a series of arguments"],mb_check_encoding:["bool mb_check_encoding([string var[, string encoding]])","Check if the string is valid for the specified encoding"],mb_convert_case:["string mb_convert_case(string sourcestring, int mode [, string encoding])","Returns a case-folded version of sourcestring"],mb_convert_encoding:["string mb_convert_encoding(string str, string to-encoding [, mixed from-encoding])","Returns converted string in desired encoding"],mb_convert_kana:["string mb_convert_kana(string str [, string option] [, string encoding])","Conversion between full-width character and half-width character (Japanese)"],mb_convert_variables:["string mb_convert_variables(string to-encoding, mixed from-encoding, mixed vars [, ...])","Converts the string resource in variables to desired encoding"],mb_decode_mimeheader:["string mb_decode_mimeheader(string string)",'Decodes the MIME "encoded-word" in the string'],mb_decode_numericentity:["string mb_decode_numericentity(string string, array convmap [, string encoding])","Converts HTML numeric entities to character code"],mb_detect_encoding:["string mb_detect_encoding(string str [, mixed encoding_list [, bool strict]])","Encodings of the given string is returned (as a string)"],mb_detect_order:["bool|array mb_detect_order([mixed encoding-list])","Sets the current detect_order or Return the current detect_order as a array"],mb_encode_mimeheader:["string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]])",'Converts the string to MIME "encoded-word" in the format of =?charset?(B|Q)?encoded_string?='],mb_encode_numericentity:["string mb_encode_numericentity(string string, array convmap [, string encoding])","Converts specified characters to HTML numeric entities"],mb_encoding_aliases:["array mb_encoding_aliases(string encoding)","Returns an array of the aliases of a given encoding name"],mb_ereg:["int mb_ereg(string pattern, string string [, array registers])","Regular expression match for multibyte string"],mb_ereg_match:["bool mb_ereg_match(string pattern, string string [,string option])","Regular expression match for multibyte string"],mb_ereg_replace:["string mb_ereg_replace(string pattern, string replacement, string string [, string option])","Replace regular expression for multibyte string"],mb_ereg_search:["bool mb_ereg_search([string pattern[, string option]])","Regular expression search for multibyte string"],mb_ereg_search_getpos:["int mb_ereg_search_getpos()","Get search start position"],mb_ereg_search_getregs:["array mb_ereg_search_getregs()","Get matched substring of the last time"],mb_ereg_search_init:["bool mb_ereg_search_init(string string [, string pattern[, string option]])","Initialize string and regular expression for search."],mb_ereg_search_pos:["array mb_ereg_search_pos([string pattern[, string option]])","Regular expression search for multibyte string"],mb_ereg_search_regs:["array mb_ereg_search_regs([string pattern[, string option]])","Regular expression search for multibyte string"],mb_ereg_search_setpos:["bool mb_ereg_search_setpos(int position)","Set search start position"],mb_eregi:["int mb_eregi(string pattern, string string [, array registers])","Case-insensitive regular expression match for multibyte string"],mb_eregi_replace:["string mb_eregi_replace(string pattern, string replacement, string string)","Case insensitive replace regular expression for multibyte string"],mb_get_info:["mixed mb_get_info([string type])","Returns the current settings of mbstring"],mb_http_input:["mixed mb_http_input([string type])","Returns the input encoding"],mb_http_output:["string mb_http_output([string encoding])","Sets the current output_encoding or returns the current output_encoding as a string"],mb_internal_encoding:["string mb_internal_encoding([string encoding])","Sets the current internal encoding or Returns the current internal encoding as a string"],mb_language:["string mb_language([string language])","Sets the current language or Returns the current language as a string"],mb_list_encodings:["mixed mb_list_encodings()","Returns an array of all supported entity encodings"],mb_output_handler:["string mb_output_handler(string contents, int status)","Returns string in output buffer converted to the http_output encoding"],mb_parse_str:["bool mb_parse_str(string encoded_string [, array result])","Parses GET/POST/COOKIE data and sets global variables"],mb_preferred_mime_name:["string mb_preferred_mime_name(string encoding)","Return the preferred MIME name (charset) as a string"],mb_regex_encoding:["string mb_regex_encoding([string encoding])","Returns the current encoding for regex as a string."],mb_regex_set_options:["string mb_regex_set_options([string options])","Set or get the default options for mbregex functions"],mb_send_mail:["int mb_send_mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])","* Sends an email message with MIME scheme"],mb_split:["array mb_split(string pattern, string string [, int limit])","split multibyte string into array by regular expression"],mb_strcut:["string mb_strcut(string str, int start [, int length [, string encoding]])","Returns part of a string"],mb_strimwidth:["string mb_strimwidth(string str, int start, int width [, string trimmarker [, string encoding]])","Trim the string in terminal width"],mb_stripos:["int mb_stripos(string haystack, string needle [, int offset [, string encoding]])","Finds position of first occurrence of a string within another, case insensitive"],mb_stristr:["string mb_stristr(string haystack, string needle[, bool part[, string encoding]])","Finds first occurrence of a string within another, case insensitive"],mb_strlen:["int mb_strlen(string str [, string encoding])","Get character numbers of a string"],mb_strpos:["int mb_strpos(string haystack, string needle [, int offset [, string encoding]])","Find position of first occurrence of a string within another"],mb_strrchr:["string mb_strrchr(string haystack, string needle[, bool part[, string encoding]])","Finds the last occurrence of a character in a string within another"],mb_strrichr:["string mb_strrichr(string haystack, string needle[, bool part[, string encoding]])","Finds the last occurrence of a character in a string within another, case insensitive"],mb_strripos:["int mb_strripos(string haystack, string needle [, int offset [, string encoding]])","Finds position of last occurrence of a string within another, case insensitive"],mb_strrpos:["int mb_strrpos(string haystack, string needle [, int offset [, string encoding]])","Find position of last occurrence of a string within another"],mb_strstr:["string mb_strstr(string haystack, string needle[, bool part[, string encoding]])","Finds first occurrence of a string within another"],mb_strtolower:["string mb_strtolower(string sourcestring [, string encoding])","* Returns a lowercased version of sourcestring"],mb_strtoupper:["string mb_strtoupper(string sourcestring [, string encoding])","* Returns a uppercased version of sourcestring"],mb_strwidth:["int mb_strwidth(string str [, string encoding])","Gets terminal width of a string"],mb_substitute_character:["mixed mb_substitute_character([mixed substchar])","Sets the current substitute_character or returns the current substitute_character"],mb_substr:["string mb_substr(string str, int start [, int length [, string encoding]])","Returns part of a string"],mb_substr_count:["int mb_substr_count(string haystack, string needle [, string encoding])","Count the number of substring occurrences"],mcrypt_cbc:["string mcrypt_cbc(int cipher, string key, string data, int mode, string iv)","CBC crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_cfb:["string mcrypt_cfb(int cipher, string key, string data, int mode, string iv)","CFB crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_create_iv:["string mcrypt_create_iv(int size, int source)","Create an initialization vector (IV)"],mcrypt_decrypt:["string mcrypt_decrypt(string cipher, string key, string data, string mode, string iv)","OFB crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_ecb:["string mcrypt_ecb(int cipher, string key, string data, int mode, string iv)","ECB crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_enc_get_algorithms_name:["string mcrypt_enc_get_algorithms_name(resource td)","Returns the name of the algorithm specified by the descriptor td"],mcrypt_enc_get_block_size:["int mcrypt_enc_get_block_size(resource td)","Returns the block size of the cipher specified by the descriptor td"],mcrypt_enc_get_iv_size:["int mcrypt_enc_get_iv_size(resource td)","Returns the size of the IV in bytes of the algorithm specified by the descriptor td"],mcrypt_enc_get_key_size:["int mcrypt_enc_get_key_size(resource td)","Returns the maximum supported key size in bytes of the algorithm specified by the descriptor td"],mcrypt_enc_get_modes_name:["string mcrypt_enc_get_modes_name(resource td)","Returns the name of the mode specified by the descriptor td"],mcrypt_enc_get_supported_key_sizes:["array mcrypt_enc_get_supported_key_sizes(resource td)","This function decrypts the crypttext"],mcrypt_enc_is_block_algorithm:["bool mcrypt_enc_is_block_algorithm(resource td)","Returns TRUE if the alrogithm is a block algorithms"],mcrypt_enc_is_block_algorithm_mode:["bool mcrypt_enc_is_block_algorithm_mode(resource td)","Returns TRUE if the mode is for use with block algorithms"],mcrypt_enc_is_block_mode:["bool mcrypt_enc_is_block_mode(resource td)","Returns TRUE if the mode outputs blocks"],mcrypt_enc_self_test:["int mcrypt_enc_self_test(resource td)","This function runs the self test on the algorithm specified by the descriptor td"],mcrypt_encrypt:["string mcrypt_encrypt(string cipher, string key, string data, string mode, string iv)","OFB crypt/decrypt data using key key with cipher cipher starting with iv"],mcrypt_generic:["string mcrypt_generic(resource td, string data)","This function encrypts the plaintext"],mcrypt_generic_deinit:["bool mcrypt_generic_deinit(resource td)","This function terminates encrypt specified by the descriptor td"],mcrypt_generic_init:["int mcrypt_generic_init(resource td, string key, string iv)","This function initializes all buffers for the specific module"],mcrypt_get_block_size:["int mcrypt_get_block_size(string cipher, string module)","Get the key size of cipher"],mcrypt_get_cipher_name:["string mcrypt_get_cipher_name(string cipher)","Get the key size of cipher"],mcrypt_get_iv_size:["int mcrypt_get_iv_size(string cipher, string module)","Get the IV size of cipher (Usually the same as the blocksize)"],mcrypt_get_key_size:["int mcrypt_get_key_size(string cipher, string module)","Get the key size of cipher"],mcrypt_list_algorithms:["array mcrypt_list_algorithms([string lib_dir])",'List all algorithms in "module_dir"'],mcrypt_list_modes:["array mcrypt_list_modes([string lib_dir])",'List all modes "module_dir"'],mcrypt_module_close:["bool mcrypt_module_close(resource td)","Free the descriptor td"],mcrypt_module_get_algo_block_size:["int mcrypt_module_get_algo_block_size(string algorithm [, string lib_dir])","Returns the block size of the algorithm"],mcrypt_module_get_algo_key_size:["int mcrypt_module_get_algo_key_size(string algorithm [, string lib_dir])","Returns the maximum supported key size of the algorithm"],mcrypt_module_get_supported_key_sizes:["array mcrypt_module_get_supported_key_sizes(string algorithm [, string lib_dir])","This function decrypts the crypttext"],mcrypt_module_is_block_algorithm:["bool mcrypt_module_is_block_algorithm(string algorithm [, string lib_dir])","Returns TRUE if the algorithm is a block algorithm"],mcrypt_module_is_block_algorithm_mode:["bool mcrypt_module_is_block_algorithm_mode(string mode [, string lib_dir])","Returns TRUE if the mode is for use with block algorithms"],mcrypt_module_is_block_mode:["bool mcrypt_module_is_block_mode(string mode [, string lib_dir])","Returns TRUE if the mode outputs blocks of bytes"],mcrypt_module_open:["resource mcrypt_module_open(string cipher, string cipher_directory, string mode, string mode_directory)","Opens the module of the algorithm and the mode to be used"],mcrypt_module_self_test:["bool mcrypt_module_self_test(string algorithm [, string lib_dir])",'Does a self test of the module "module"'],mcrypt_ofb:["string mcrypt_ofb(int cipher, string key, string data, int mode, string iv)","OFB crypt/decrypt data using key key with cipher cipher starting with iv"],md5:["string md5(string str, [ bool raw_output])","Calculate the md5 hash of a string"],md5_file:["string md5_file(string filename [, bool raw_output])","Calculate the md5 hash of given filename"],mdecrypt_generic:["string mdecrypt_generic(resource td, string data)","This function decrypts the plaintext"],memory_get_peak_usage:["int memory_get_peak_usage([real_usage])","Returns the peak allocated by PHP memory"],memory_get_usage:["int memory_get_usage([real_usage])","Returns the allocated by PHP memory"],metaphone:["string metaphone(string text[, int phones])","Break english phrases down into their phonemes"],method_exists:["bool method_exists(object object, string method)","Checks if the class method exists"],mhash:["string mhash(int hash, string data [, string key])","Hash data with hash"],mhash_count:["int mhash_count()","Gets the number of available hashes"],mhash_get_block_size:["int mhash_get_block_size(int hash)","Gets the block size of hash"],mhash_get_hash_name:["string mhash_get_hash_name(int hash)","Gets the name of hash"],mhash_keygen_s2k:["string mhash_keygen_s2k(int hash, string input_password, string salt, int bytes)","Generates a key using hash functions"],microtime:["mixed microtime([bool get_as_float])","Returns either a string or a float containing the current time in seconds and microseconds"],mime_content_type:["string mime_content_type(string filename|resource stream)","Return content-type for file"],min:["mixed min(mixed arg1 [, mixed arg2 [, mixed ...]])","Return the lowest value in an array or a series of arguments"],mkdir:["bool mkdir(string pathname [, int mode [, bool recursive [, resource context]]])","Create a directory"],mktime:["int mktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])","Get UNIX timestamp for a date"],money_format:["string money_format(string format , float value)","Convert monetary value(s) to string"],move_uploaded_file:["bool move_uploaded_file(string path, string new_path)","Move a file if and only if it was created by an upload"],msg_get_queue:["resource msg_get_queue(int key [, int perms])","Attach to a message queue"],msg_queue_exists:["bool msg_queue_exists(int key)","Check whether a message queue exists"],msg_receive:["mixed msg_receive(resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]])","Send a message of type msgtype (must be > 0) to a message queue"],msg_remove_queue:["bool msg_remove_queue(resource queue)","Destroy the queue"],msg_send:["bool msg_send(resource queue, int msgtype, mixed message [, bool serialize=true [, bool blocking=true [, int errorcode]]])","Send a message of type msgtype (must be > 0) to a message queue"],msg_set_queue:["bool msg_set_queue(resource queue, array data)","Set information for a message queue"],msg_stat_queue:["array msg_stat_queue(resource queue)","Returns information about a message queue"],msgfmt_create:["MessageFormatter msgfmt_create( string $locale, string $pattern )","* Create formatter."],msgfmt_format:["mixed msgfmt_format( MessageFormatter $nf, array $args )","* Format a message."],msgfmt_format_message:["mixed msgfmt_format_message( string $locale, string $pattern, array $args )","* Format a message."],msgfmt_get_error_code:["int msgfmt_get_error_code( MessageFormatter $nf )","* Get formatter's last error code."],msgfmt_get_error_message:["string msgfmt_get_error_message( MessageFormatter $coll )","* Get text description for formatter's last error code."],msgfmt_get_locale:["string msgfmt_get_locale(MessageFormatter $mf)","* Get formatter locale."],msgfmt_get_pattern:["string msgfmt_get_pattern( MessageFormatter $mf )","* Get formatter pattern."],msgfmt_parse:["array msgfmt_parse( MessageFormatter $nf, string $source )","* Parse a message."],msgfmt_set_pattern:["bool msgfmt_set_pattern( MessageFormatter $mf, string $pattern )","* Set formatter pattern."],mssql_bind:["bool mssql_bind(resource stmt, string param_name, mixed var, int type [, bool is_output [, bool is_null [, int maxlen]]])","Adds a parameter to a stored procedure or a remote stored procedure"],mssql_close:["bool mssql_close([resource conn_id])","Closes a connection to a MS-SQL server"],mssql_connect:["int mssql_connect([string servername [, string username [, string password [, bool new_link]]]])","Establishes a connection to a MS-SQL server"],mssql_data_seek:["bool mssql_data_seek(resource result_id, int offset)","Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number"],mssql_execute:["mixed mssql_execute(resource stmt [, bool skip_results = false])","Executes a stored procedure on a MS-SQL server database"],mssql_fetch_array:["array mssql_fetch_array(resource result_id [, int result_type])","Returns an associative array of the current row in the result set specified by result_id"],mssql_fetch_assoc:["array mssql_fetch_assoc(resource result_id)","Returns an associative array of the current row in the result set specified by result_id"],mssql_fetch_batch:["int mssql_fetch_batch(resource result_index)","Returns the next batch of records"],mssql_fetch_field:["object mssql_fetch_field(resource result_id [, int offset])","Gets information about certain fields in a query result"],mssql_fetch_object:["object mssql_fetch_object(resource result_id)","Returns a pseudo-object of the current row in the result set specified by result_id"],mssql_fetch_row:["array mssql_fetch_row(resource result_id)","Returns an array of the current row in the result set specified by result_id"],mssql_field_length:["int mssql_field_length(resource result_id [, int offset])","Get the length of a MS-SQL field"],mssql_field_name:["string mssql_field_name(resource result_id [, int offset])","Returns the name of the field given by offset in the result set given by result_id"],mssql_field_seek:["bool mssql_field_seek(resource result_id, int offset)","Seeks to the specified field offset"],mssql_field_type:["string mssql_field_type(resource result_id [, int offset])","Returns the type of a field"],mssql_free_result:["bool mssql_free_result(resource result_index)","Free a MS-SQL result index"],mssql_free_statement:["bool mssql_free_statement(resource result_index)","Free a MS-SQL statement index"],mssql_get_last_message:["string mssql_get_last_message()","Gets the last message from the MS-SQL server"],mssql_guid_string:["string mssql_guid_string(string binary [,bool short_format])","Converts a 16 byte binary GUID to a string"],mssql_init:["int mssql_init(string sp_name [, resource conn_id])","Initializes a stored procedure or a remote stored procedure"],mssql_min_error_severity:["void mssql_min_error_severity(int severity)","Sets the lower error severity"],mssql_min_message_severity:["void mssql_min_message_severity(int severity)","Sets the lower message severity"],mssql_next_result:["bool mssql_next_result(resource result_id)","Move the internal result pointer to the next result"],mssql_num_fields:["int mssql_num_fields(resource mssql_result_index)","Returns the number of fields fetched in from the result id specified"],mssql_num_rows:["int mssql_num_rows(resource mssql_result_index)","Returns the number of rows fetched in from the result id specified"],mssql_pconnect:["int mssql_pconnect([string servername [, string username [, string password [, bool new_link]]]])","Establishes a persistent connection to a MS-SQL server"],mssql_query:["resource mssql_query(string query [, resource conn_id [, int batch_size]])","Perform an SQL query on a MS-SQL server database"],mssql_result:["string mssql_result(resource result_id, int row, mixed field)","Returns the contents of one cell from a MS-SQL result set"],mssql_rows_affected:["int mssql_rows_affected(resource conn_id)","Returns the number of records affected by the query"],mssql_select_db:["bool mssql_select_db(string database_name [, resource conn_id])","Select a MS-SQL database"],mt_getrandmax:["int mt_getrandmax()","Returns the maximum value a random number from Mersenne Twister can have"],mt_rand:["int mt_rand([int min, int max])","Returns a random number from Mersenne Twister"],mt_srand:["void mt_srand([int seed])","Seeds Mersenne Twister random number generator"],mysql_affected_rows:["int mysql_affected_rows([int link_identifier])","Gets number of affected rows in previous MySQL operation"],mysql_client_encoding:["string mysql_client_encoding([int link_identifier])","Returns the default character set for the current connection"],mysql_close:["bool mysql_close([int link_identifier])","Close a MySQL connection"],mysql_connect:["resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]])","Opens a connection to a MySQL Server"],mysql_create_db:["bool mysql_create_db(string database_name [, int link_identifier])","Create a MySQL database"],mysql_data_seek:["bool mysql_data_seek(resource result, int row_number)","Move internal result pointer"],mysql_db_query:["resource mysql_db_query(string database_name, string query [, int link_identifier])","Sends an SQL query to MySQL"],mysql_drop_db:["bool mysql_drop_db(string database_name [, int link_identifier])","Drops (delete) a MySQL database"],mysql_errno:["int mysql_errno([int link_identifier])","Returns the number of the error message from previous MySQL operation"],mysql_error:["string mysql_error([int link_identifier])","Returns the text of the error message from previous MySQL operation"],mysql_escape_string:["string mysql_escape_string(string to_be_escaped)","Escape string for mysql query"],mysql_fetch_array:["array mysql_fetch_array(resource result [, int result_type])","Fetch a result row as an array (associative, numeric or both)"],mysql_fetch_assoc:["array mysql_fetch_assoc(resource result)","Fetch a result row as an associative array"],mysql_fetch_field:["object mysql_fetch_field(resource result [, int field_offset])","Gets column information from a result and return as an object"],mysql_fetch_lengths:["array mysql_fetch_lengths(resource result)","Gets max data size of each column in a result"],mysql_fetch_object:["object mysql_fetch_object(resource result [, string class_name [, NULL|array ctor_params]])","Fetch a result row as an object"],mysql_fetch_row:["array mysql_fetch_row(resource result)","Gets a result row as an enumerated array"],mysql_field_flags:["string mysql_field_flags(resource result, int field_offset)","Gets the flags associated with the specified field in a result"],mysql_field_len:["int mysql_field_len(resource result, int field_offset)","Returns the length of the specified field"],mysql_field_name:["string mysql_field_name(resource result, int field_index)","Gets the name of the specified field in a result"],mysql_field_seek:["bool mysql_field_seek(resource result, int field_offset)","Sets result pointer to a specific field offset"],mysql_field_table:["string mysql_field_table(resource result, int field_offset)","Gets name of the table the specified field is in"],mysql_field_type:["string mysql_field_type(resource result, int field_offset)","Gets the type of the specified field in a result"],mysql_free_result:["bool mysql_free_result(resource result)","Free result memory"],mysql_get_client_info:["string mysql_get_client_info()","Returns a string that represents the client library version"],mysql_get_host_info:["string mysql_get_host_info([int link_identifier])","Returns a string describing the type of connection in use, including the server host name"],mysql_get_proto_info:["int mysql_get_proto_info([int link_identifier])","Returns the protocol version used by current connection"],mysql_get_server_info:["string mysql_get_server_info([int link_identifier])","Returns a string that represents the server version number"],mysql_info:["string mysql_info([int link_identifier])","Returns a string containing information about the most recent query"],mysql_insert_id:["int mysql_insert_id([int link_identifier])","Gets the ID generated from the previous INSERT operation"],mysql_list_dbs:["resource mysql_list_dbs([int link_identifier])","List databases available on a MySQL server"],mysql_list_fields:["resource mysql_list_fields(string database_name, string table_name [, int link_identifier])","List MySQL result fields"],mysql_list_processes:["resource mysql_list_processes([int link_identifier])","Returns a result set describing the current server threads"],mysql_list_tables:["resource mysql_list_tables(string database_name [, int link_identifier])","List tables in a MySQL database"],mysql_num_fields:["int mysql_num_fields(resource result)","Gets number of fields in a result"],mysql_num_rows:["int mysql_num_rows(resource result)","Gets number of rows in a result"],mysql_pconnect:["resource mysql_pconnect([string hostname[:port][:/path/to/socket] [, string username [, string password [, int flags]]]])","Opens a persistent connection to a MySQL Server"],mysql_ping:["bool mysql_ping([int link_identifier])","Ping a server connection. If no connection then reconnect."],mysql_query:["resource mysql_query(string query [, int link_identifier])","Sends an SQL query to MySQL"],mysql_real_escape_string:["string mysql_real_escape_string(string to_be_escaped [, int link_identifier])","Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection"],mysql_result:["mixed mysql_result(resource result, int row [, mixed field])","Gets result data"],mysql_select_db:["bool mysql_select_db(string database_name [, int link_identifier])","Selects a MySQL database"],mysql_set_charset:["bool mysql_set_charset(string csname [, int link_identifier])","sets client character set"],mysql_stat:["string mysql_stat([int link_identifier])","Returns a string containing status information"],mysql_thread_id:["int mysql_thread_id([int link_identifier])","Returns the thread id of current connection"],mysql_unbuffered_query:["resource mysql_unbuffered_query(string query [, int link_identifier])","Sends an SQL query to MySQL, without fetching and buffering the result rows"],mysqli_affected_rows:["mixed mysqli_affected_rows(object link)","Get number of affected rows in previous MySQL operation"],mysqli_autocommit:["bool mysqli_autocommit(object link, bool mode)","Turn auto commit on or of"],mysqli_cache_stats:["array mysqli_cache_stats()","Returns statistics about the zval cache"],mysqli_change_user:["bool mysqli_change_user(object link, string user, string password, string database)","Change logged-in user of the active connection"],mysqli_character_set_name:["string mysqli_character_set_name(object link)","Returns the name of the character set used for this connection"],mysqli_close:["bool mysqli_close(object link)","Close connection"],mysqli_commit:["bool mysqli_commit(object link)","Commit outstanding actions and close transaction"],mysqli_connect:["object mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]])","Open a connection to a mysql server"],mysqli_connect_errno:["int mysqli_connect_errno()","Returns the numerical value of the error message from last connect command"],mysqli_connect_error:["string mysqli_connect_error()","Returns the text of the error message from previous MySQL operation"],mysqli_data_seek:["bool mysqli_data_seek(object result, int offset)","Move internal result pointer"],mysqli_debug:["void mysqli_debug(string debug)",""],mysqli_dump_debug_info:["bool mysqli_dump_debug_info(object link)",""],mysqli_embedded_server_end:["void mysqli_embedded_server_end()",""],mysqli_embedded_server_start:["bool mysqli_embedded_server_start(bool start, array arguments, array groups)","initialize and start embedded server"],mysqli_errno:["int mysqli_errno(object link)","Returns the numerical value of the error message from previous MySQL operation"],mysqli_error:["string mysqli_error(object link)","Returns the text of the error message from previous MySQL operation"],mysqli_fetch_all:["mixed mysqli_fetch_all(object result [,int resulttype])","Fetches all result rows as an associative array, a numeric array, or both"],mysqli_fetch_array:["mixed mysqli_fetch_array(object result [,int resulttype])","Fetch a result row as an associative array, a numeric array, or both"],mysqli_fetch_assoc:["mixed mysqli_fetch_assoc(object result)","Fetch a result row as an associative array"],mysqli_fetch_field:["mixed mysqli_fetch_field(object result)","Get column information from a result and return as an object"],mysqli_fetch_field_direct:["mixed mysqli_fetch_field_direct(object result, int offset)","Fetch meta-data for a single field"],mysqli_fetch_fields:["mixed mysqli_fetch_fields(object result)","Return array of objects containing field meta-data"],mysqli_fetch_lengths:["mixed mysqli_fetch_lengths(object result)","Get the length of each output in a result"],mysqli_fetch_object:["mixed mysqli_fetch_object(object result [, string class_name [, NULL|array ctor_params]])","Fetch a result row as an object"],mysqli_fetch_row:["array mysqli_fetch_row(object result)","Get a result row as an enumerated array"],mysqli_field_count:["int mysqli_field_count(object link)","Fetch the number of fields returned by the last query for the given link"],mysqli_field_seek:["int mysqli_field_seek(object result, int fieldnr)","Set result pointer to a specified field offset"],mysqli_field_tell:["int mysqli_field_tell(object result)","Get current field offset of result pointer"],mysqli_free_result:["void mysqli_free_result(object result)","Free query result memory for the given result handle"],mysqli_get_charset:["object mysqli_get_charset(object link)","returns a character set object"],mysqli_get_client_info:["string mysqli_get_client_info()","Get MySQL client info"],mysqli_get_client_stats:["array mysqli_get_client_stats()","Returns statistics about the zval cache"],mysqli_get_client_version:["int mysqli_get_client_version()","Get MySQL client info"],mysqli_get_connection_stats:["array mysqli_get_connection_stats()","Returns statistics about the zval cache"],mysqli_get_host_info:["string mysqli_get_host_info(object link)","Get MySQL host info"],mysqli_get_proto_info:["int mysqli_get_proto_info(object link)","Get MySQL protocol information"],mysqli_get_server_info:["string mysqli_get_server_info(object link)","Get MySQL server info"],mysqli_get_server_version:["int mysqli_get_server_version(object link)","Return the MySQL version for the server referenced by the given link"],mysqli_get_warnings:["object mysqli_get_warnings(object link)",""],mysqli_info:["string mysqli_info(object link)","Get information about the most recent query"],mysqli_init:["resource mysqli_init()","Initialize mysqli and return a resource for use with mysql_real_connect"],mysqli_insert_id:["mixed mysqli_insert_id(object link)","Get the ID generated from the previous INSERT operation"],mysqli_kill:["bool mysqli_kill(object link, int processid)","Kill a mysql process on the server"],mysqli_link_construct:["object mysqli_link_construct()",""],mysqli_more_results:["bool mysqli_more_results(object link)","check if there any more query results from a multi query"],mysqli_multi_query:["bool mysqli_multi_query(object link, string query)","allows to execute multiple queries"],mysqli_next_result:["bool mysqli_next_result(object link)","read next result from multi_query"],mysqli_num_fields:["int mysqli_num_fields(object result)","Get number of fields in result"],mysqli_num_rows:["mixed mysqli_num_rows(object result)","Get number of rows in result"],mysqli_options:["bool mysqli_options(object link, int flags, mixed values)","Set options"],mysqli_ping:["bool mysqli_ping(object link)","Ping a server connection or reconnect if there is no connection"],mysqli_poll:["int mysqli_poll(array read, array write, array error, long sec [, long usec])","Poll connections"],mysqli_prepare:["mixed mysqli_prepare(object link, string query)","Prepare a SQL statement for execution"],mysqli_query:["mixed mysqli_query(object link, string query [,int resultmode])",""],mysqli_real_connect:["bool mysqli_real_connect(object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]])","Open a connection to a mysql server"],mysqli_real_escape_string:["string mysqli_real_escape_string(object link, string escapestr)","Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection"],mysqli_real_query:["bool mysqli_real_query(object link, string query)","Binary-safe version of mysql_query()"],mysqli_reap_async_query:["int mysqli_reap_async_query(object link)","Poll connections"],mysqli_refresh:["bool mysqli_refresh(object link, long options)","Flush tables or caches, or reset replication server information"],mysqli_report:["bool mysqli_report(int flags)","sets report level"],mysqli_rollback:["bool mysqli_rollback(object link)","Undo actions from current transaction"],mysqli_select_db:["bool mysqli_select_db(object link, string dbname)","Select a MySQL database"],mysqli_set_charset:["bool mysqli_set_charset(object link, string csname)","sets client character set"],mysqli_set_local_infile_default:["void mysqli_set_local_infile_default(object link)","unsets user defined handler for load local infile command"],mysqli_set_local_infile_handler:["bool mysqli_set_local_infile_handler(object link, callback read_func)","Set callback functions for LOAD DATA LOCAL INFILE"],mysqli_sqlstate:["string mysqli_sqlstate(object link)","Returns the SQLSTATE error from previous MySQL operation"],mysqli_ssl_set:["bool mysqli_ssl_set(object link ,string key ,string cert ,string ca ,string capath ,string cipher])",""],mysqli_stat:["mixed mysqli_stat(object link)","Get current system status"],mysqli_stmt_affected_rows:["mixed mysqli_stmt_affected_rows(object stmt)","Return the number of rows affected in the last query for the given link"],mysqli_stmt_attr_get:["int mysqli_stmt_attr_get(object stmt, long attr)",""],mysqli_stmt_attr_set:["int mysqli_stmt_attr_set(object stmt, long attr, long mode)",""],mysqli_stmt_bind_param:["bool mysqli_stmt_bind_param(object stmt, string types, mixed variable [,mixed,....])","Bind variables to a prepared statement as parameters"],mysqli_stmt_bind_result:["bool mysqli_stmt_bind_result(object stmt, mixed var, [,mixed, ...])","Bind variables to a prepared statement for result storage"],mysqli_stmt_close:["bool mysqli_stmt_close(object stmt)","Close statement"],mysqli_stmt_data_seek:["void mysqli_stmt_data_seek(object stmt, int offset)","Move internal result pointer"],mysqli_stmt_errno:["int mysqli_stmt_errno(object stmt)",""],mysqli_stmt_error:["string mysqli_stmt_error(object stmt)",""],mysqli_stmt_execute:["bool mysqli_stmt_execute(object stmt)","Execute a prepared statement"],mysqli_stmt_fetch:["mixed mysqli_stmt_fetch(object stmt)","Fetch results from a prepared statement into the bound variables"],mysqli_stmt_field_count:["int mysqli_stmt_field_count(object stmt) {","Return the number of result columns for the given statement"],mysqli_stmt_free_result:["void mysqli_stmt_free_result(object stmt)","Free stored result memory for the given statement handle"],mysqli_stmt_get_result:["object mysqli_stmt_get_result(object link)","Buffer result set on client"],mysqli_stmt_get_warnings:["object mysqli_stmt_get_warnings(object link)",""],mysqli_stmt_init:["mixed mysqli_stmt_init(object link)","Initialize statement object"],mysqli_stmt_insert_id:["mixed mysqli_stmt_insert_id(object stmt)","Get the ID generated from the previous INSERT operation"],mysqli_stmt_next_result:["bool mysqli_stmt_next_result(object link)","read next result from multi_query"],mysqli_stmt_num_rows:["mixed mysqli_stmt_num_rows(object stmt)","Return the number of rows in statements result set"],mysqli_stmt_param_count:["int mysqli_stmt_param_count(object stmt)","Return the number of parameter for the given statement"],mysqli_stmt_prepare:["bool mysqli_stmt_prepare(object stmt, string query)","prepare server side statement with query"],mysqli_stmt_reset:["bool mysqli_stmt_reset(object stmt)","reset a prepared statement"],mysqli_stmt_result_metadata:["mixed mysqli_stmt_result_metadata(object stmt)","return result set from statement"],mysqli_stmt_send_long_data:["bool mysqli_stmt_send_long_data(object stmt, int param_nr, string data)",""],mysqli_stmt_sqlstate:["string mysqli_stmt_sqlstate(object stmt)",""],mysqli_stmt_store_result:["bool mysqli_stmt_store_result(stmt)",""],mysqli_store_result:["object mysqli_store_result(object link)","Buffer result set on client"],mysqli_thread_id:["int mysqli_thread_id(object link)","Return the current thread ID"],mysqli_thread_safe:["bool mysqli_thread_safe()","Return whether thread safety is given or not"],mysqli_use_result:["mixed mysqli_use_result(object link)","Directly retrieve query results - do not buffer results on client side"],mysqli_warning_count:["int mysqli_warning_count(object link)","Return number of warnings from the last query for the given link"],natcasesort:["void natcasesort(array &array_arg)","Sort an array using case-insensitive natural sort"],natsort:["void natsort(array &array_arg)","Sort an array using natural sort"],next:["mixed next(array array_arg)","Move array argument's internal pointer to the next element and return it"],ngettext:["string ngettext(string MSGID1, string MSGID2, int N)","Plural version of gettext()"],nl2br:["string nl2br(string str [, bool is_xhtml])","Converts newlines to HTML line breaks"],nl_langinfo:["string nl_langinfo(int item)","Query language and locale information"],normalizer_is_normalize:["bool normalizer_is_normalize( string $input [, string $form = FORM_C] )","* Test if a string is in a given normalization form."],normalizer_normalize:["string normalizer_normalize( string $input [, string $form = FORM_C] )","* Normalize a string."],nsapi_request_headers:["array nsapi_request_headers()","Get all headers from the request"],nsapi_response_headers:["array nsapi_response_headers()","Get all headers from the response"],nsapi_virtual:["bool nsapi_virtual(string uri)","Perform an NSAPI sub-request"],number_format:["string number_format(float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]])","Formats a number with grouped thousands"],numfmt_create:["NumberFormatter numfmt_create( string $locale, int style[, string $pattern ] )","* Create number formatter."],numfmt_format:["mixed numfmt_format( NumberFormatter $nf, mixed $num[, int type] )","* Format a number."],numfmt_format_currency:["mixed numfmt_format_currency( NumberFormatter $nf, double $num, string $currency )","* Format a number as currency."],numfmt_get_attribute:["mixed numfmt_get_attribute( NumberFormatter $nf, int $attr )","* Get formatter attribute value."],numfmt_get_error_code:["int numfmt_get_error_code( NumberFormatter $nf )","* Get formatter's last error code."],numfmt_get_error_message:["string numfmt_get_error_message( NumberFormatter $nf )","* Get text description for formatter's last error code."],numfmt_get_locale:["string numfmt_get_locale( NumberFormatter $nf[, int type] )","* Get formatter locale."],numfmt_get_pattern:["string numfmt_get_pattern( NumberFormatter $nf )","* Get formatter pattern."],numfmt_get_symbol:["string numfmt_get_symbol( NumberFormatter $nf, int $attr )","* Get formatter symbol value."],numfmt_get_text_attribute:["string numfmt_get_text_attribute( NumberFormatter $nf, int $attr )","* Get formatter attribute value."],numfmt_parse:["mixed numfmt_parse( NumberFormatter $nf, string $str[, int $type, int &$position ])","* Parse a number."],numfmt_parse_currency:["double numfmt_parse_currency( NumberFormatter $nf, string $str, string $¤cy[, int $&position] )","* Parse a number as currency."],numfmt_parse_message:["array numfmt_parse_message( string $locale, string $pattern, string $source )","* Parse a message."],numfmt_set_attribute:["bool numfmt_set_attribute( NumberFormatter $nf, int $attr, mixed $value )","* Get formatter attribute value."],numfmt_set_pattern:["bool numfmt_set_pattern( NumberFormatter $nf, string $pattern )","* Set formatter pattern."],numfmt_set_symbol:["bool numfmt_set_symbol( NumberFormatter $nf, int $attr, string $symbol )","* Set formatter symbol value."],numfmt_set_text_attribute:["bool numfmt_set_text_attribute( NumberFormatter $nf, int $attr, string $value )","* Get formatter attribute value."],ob_clean:["bool ob_clean()","Clean (delete) the current output buffer"],ob_end_clean:["bool ob_end_clean()","Clean the output buffer, and delete current output buffer"],ob_end_flush:["bool ob_end_flush()","Flush (send) the output buffer, and delete current output buffer"],ob_flush:["bool ob_flush()","Flush (send) contents of the output buffer. The last buffer content is sent to next buffer"],ob_get_clean:["bool ob_get_clean()","Get current buffer contents and delete current output buffer"],ob_get_contents:["string ob_get_contents()","Return the contents of the output buffer"],ob_get_flush:["bool ob_get_flush()","Get current buffer contents, flush (send) the output buffer, and delete current output buffer"],ob_get_length:["int ob_get_length()","Return the length of the output buffer"],ob_get_level:["int ob_get_level()","Return the nesting level of the output buffer"],ob_get_status:["false|array ob_get_status([bool full_status])","Return the status of the active or all output buffers"],ob_gzhandler:["string ob_gzhandler(string str, int mode)","Encode str based on accept-encoding setting - designed to be called from ob_start()"],ob_iconv_handler:["string ob_iconv_handler(string contents, int status)","Returns str in output buffer converted to the iconv.output_encoding character set"],ob_implicit_flush:["void ob_implicit_flush([int flag])","Turn implicit flush on/off and is equivalent to calling flush() after every output call"],ob_list_handlers:["false|array ob_list_handlers()","* List all output_buffers in an array"],ob_start:["bool ob_start([ string|array user_function [, int chunk_size [, bool erase]]])","Turn on Output Buffering (specifying an optional output handler)."],oci_bind_array_by_name:["bool oci_bind_array_by_name(resource stmt, string name, array &var, int max_table_length [, int max_item_length [, int type ]])","Bind a PHP array to an Oracle PL/SQL type by name"],oci_bind_by_name:["bool oci_bind_by_name(resource stmt, string name, mixed &var, [, int maxlength [, int type]])","Bind a PHP variable to an Oracle placeholder by name"],oci_cancel:["bool oci_cancel(resource stmt)","Cancel reading from a cursor"],oci_close:["bool oci_close(resource connection)","Disconnect from database"],oci_collection_append:["bool oci_collection_append(string value)","Append an object to the collection"],oci_collection_assign:["bool oci_collection_assign(object from)","Assign a collection from another existing collection"],oci_collection_element_assign:["bool oci_collection_element_assign(int index, string val)","Assign element val to collection at index ndx"],oci_collection_element_get:["string oci_collection_element_get(int ndx)","Retrieve the value at collection index ndx"],oci_collection_max:["int oci_collection_max()","Return the max value of a collection. For a varray this is the maximum length of the array"],oci_collection_size:["int oci_collection_size()","Return the size of a collection"],oci_collection_trim:["bool oci_collection_trim(int num)","Trim num elements from the end of a collection"],oci_commit:["bool oci_commit(resource connection)","Commit the current context"],oci_connect:["resource oci_connect(string user, string pass [, string db [, string charset [, int session_mode ]])","Connect to an Oracle database and log on. Returns a new session."],oci_define_by_name:["bool oci_define_by_name(resource stmt, string name, mixed &var [, int type])","Define a PHP variable to an Oracle column by name"],oci_error:["array oci_error([resource stmt|connection|global])","Return the last error of stmt|connection|global. If no error happened returns false."],oci_execute:["bool oci_execute(resource stmt [, int mode])","Execute a parsed statement"],oci_fetch:["bool oci_fetch(resource stmt)","Prepare a new row of data for reading"],oci_fetch_all:["int oci_fetch_all(resource stmt, array &output[, int skip[, int maxrows[, int flags]]])","Fetch all rows of result data into an array"],oci_fetch_array:["array oci_fetch_array( resource stmt [, int mode ])","Fetch a result row as an array"],oci_fetch_assoc:["array oci_fetch_assoc( resource stmt )","Fetch a result row as an associative array"],oci_fetch_object:["object oci_fetch_object( resource stmt )","Fetch a result row as an object"],oci_fetch_row:["array oci_fetch_row( resource stmt )","Fetch a result row as an enumerated array"],oci_field_is_null:["bool oci_field_is_null(resource stmt, int col)","Tell whether a column is NULL"],oci_field_name:["string oci_field_name(resource stmt, int col)","Tell the name of a column"],oci_field_precision:["int oci_field_precision(resource stmt, int col)","Tell the precision of a column"],oci_field_scale:["int oci_field_scale(resource stmt, int col)","Tell the scale of a column"],oci_field_size:["int oci_field_size(resource stmt, int col)","Tell the maximum data size of a column"],oci_field_type:["mixed oci_field_type(resource stmt, int col)","Tell the data type of a column"],oci_field_type_raw:["int oci_field_type_raw(resource stmt, int col)","Tell the raw oracle data type of a column"],oci_free_collection:["bool oci_free_collection()","Deletes collection object"],oci_free_descriptor:["bool oci_free_descriptor()","Deletes large object description"],oci_free_statement:["bool oci_free_statement(resource stmt)","Free all resources associated with a statement"],oci_internal_debug:["void oci_internal_debug(int onoff)","Toggle internal debugging output for the OCI extension"],oci_lob_append:["bool oci_lob_append( object lob )","Appends data from a LOB to another LOB"],oci_lob_close:["bool oci_lob_close()","Closes lob descriptor"],oci_lob_copy:["bool oci_lob_copy( object lob_to, object lob_from [, int length ] )","Copies data from a LOB to another LOB"],oci_lob_eof:["bool oci_lob_eof()","Checks if EOF is reached"],oci_lob_erase:["int oci_lob_erase( [ int offset [, int length ] ] )","Erases a specified portion of the internal LOB, starting at a specified offset"],oci_lob_export:["bool oci_lob_export([string filename [, int start [, int length]]])","Writes a large object into a file"],oci_lob_flush:["bool oci_lob_flush( [ int flag ] )","Flushes the LOB buffer"],oci_lob_import:["bool oci_lob_import( string filename )","Loads file into a LOB"],oci_lob_is_equal:["bool oci_lob_is_equal( object lob1, object lob2 )","Tests to see if two LOB/FILE locators are equal"],oci_lob_load:["string oci_lob_load()","Loads a large object"],oci_lob_read:["string oci_lob_read( int length )","Reads particular part of a large object"],oci_lob_rewind:["bool oci_lob_rewind()","Rewind pointer of a LOB"],oci_lob_save:["bool oci_lob_save( string data [, int offset ])","Saves a large object"],oci_lob_seek:["bool oci_lob_seek( int offset [, int whence ])","Moves the pointer of a LOB"],oci_lob_size:["int oci_lob_size()","Returns size of a large object"],oci_lob_tell:["int oci_lob_tell()","Tells LOB pointer position"],oci_lob_truncate:["bool oci_lob_truncate( [ int length ])","Truncates a LOB"],oci_lob_write:["int oci_lob_write( string string [, int length ])","Writes data to current position of a LOB"],oci_lob_write_temporary:["bool oci_lob_write_temporary(string var [, int lob_type])","Writes temporary blob"],oci_new_collection:["object oci_new_collection(resource connection, string tdo [, string schema])","Initialize a new collection"],oci_new_connect:["resource oci_new_connect(string user, string pass [, string db])","Connect to an Oracle database and log on. Returns a new session."],oci_new_cursor:["resource oci_new_cursor(resource connection)","Return a new cursor (Statement-Handle) - use this to bind ref-cursors!"],oci_new_descriptor:["object oci_new_descriptor(resource connection [, int type])","Initialize a new empty descriptor LOB/FILE (LOB is default)"],oci_num_fields:["int oci_num_fields(resource stmt)","Return the number of result columns in a statement"],oci_num_rows:["int oci_num_rows(resource stmt)","Return the row count of an OCI statement"],oci_parse:["resource oci_parse(resource connection, string query)","Parse a query and return a statement"],oci_password_change:["bool oci_password_change(resource connection, string username, string old_password, string new_password)","Changes the password of an account"],oci_pconnect:["resource oci_pconnect(string user, string pass [, string db [, string charset ]])","Connect to an Oracle database using a persistent connection and log on. Returns a new session."],oci_result:["string oci_result(resource stmt, mixed column)","Return a single column of result data"],oci_rollback:["bool oci_rollback(resource connection)","Rollback the current context"],oci_server_version:["string oci_server_version(resource connection)","Return a string containing server version information"],oci_set_action:["bool oci_set_action(resource connection, string value)","Sets the action attribute on the connection"],oci_set_client_identifier:["bool oci_set_client_identifier(resource connection, string value)","Sets the client identifier attribute on the connection"],oci_set_client_info:["bool oci_set_client_info(resource connection, string value)","Sets the client info attribute on the connection"],oci_set_edition:["bool oci_set_edition(string value)","Sets the edition attribute for all subsequent connections created"],oci_set_module_name:["bool oci_set_module_name(resource connection, string value)","Sets the module attribute on the connection"],oci_set_prefetch:["bool oci_set_prefetch(resource stmt, int prefetch_rows)","Sets the number of rows to be prefetched on execute to prefetch_rows for stmt"],oci_statement_type:["string oci_statement_type(resource stmt)","Return the query type of an OCI statement"],ocifetchinto:["int ocifetchinto(resource stmt, array &output [, int mode])","Fetch a row of result data into an array"],ocigetbufferinglob:["bool ocigetbufferinglob()","Returns current state of buffering for a LOB"],ocisetbufferinglob:["bool ocisetbufferinglob( bool flag )","Enables/disables buffering for a LOB"],octdec:["int octdec(string octal_number)","Returns the decimal equivalent of an octal string"],odbc_autocommit:["mixed odbc_autocommit(resource connection_id [, int OnOff])","Toggle autocommit mode or get status"],odbc_binmode:["bool odbc_binmode(int result_id, int mode)","Handle binary column data"],odbc_close:["void odbc_close(resource connection_id)","Close an ODBC connection"],odbc_close_all:["void odbc_close_all()","Close all ODBC connections"],odbc_columnprivileges:["resource odbc_columnprivileges(resource connection_id, string catalog, string schema, string table, string column)","Returns a result identifier that can be used to fetch a list of columns and associated privileges for the specified table"],odbc_columns:["resource odbc_columns(resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])","Returns a result identifier that can be used to fetch a list of column names in specified tables"],odbc_commit:["bool odbc_commit(resource connection_id)","Commit an ODBC transaction"],odbc_connect:["resource odbc_connect(string DSN, string user, string password [, int cursor_option])","Connect to a datasource"],odbc_cursor:["string odbc_cursor(resource result_id)","Get cursor name"],odbc_data_source:["array odbc_data_source(resource connection_id, int fetch_type)","Return information about the currently connected data source"],odbc_error:["string odbc_error([resource connection_id])","Get the last error code"],odbc_errormsg:["string odbc_errormsg([resource connection_id])","Get the last error message"],odbc_exec:["resource odbc_exec(resource connection_id, string query [, int flags])","Prepare and execute an SQL statement"],odbc_execute:["bool odbc_execute(resource result_id [, array parameters_array])","Execute a prepared statement"],odbc_fetch_array:["array odbc_fetch_array(int result [, int rownumber])","Fetch a result row as an associative array"],odbc_fetch_into:["int odbc_fetch_into(resource result_id, array &result_array, [, int rownumber])","Fetch one result row into an array"],odbc_fetch_object:["object odbc_fetch_object(int result [, int rownumber])","Fetch a result row as an object"],odbc_fetch_row:["bool odbc_fetch_row(resource result_id [, int row_number])","Fetch a row"],odbc_field_len:["int odbc_field_len(resource result_id, int field_number)","Get the length (precision) of a column"],odbc_field_name:["string odbc_field_name(resource result_id, int field_number)","Get a column name"],odbc_field_num:["int odbc_field_num(resource result_id, string field_name)","Return column number"],odbc_field_scale:["int odbc_field_scale(resource result_id, int field_number)","Get the scale of a column"],odbc_field_type:["string odbc_field_type(resource result_id, int field_number)","Get the datatype of a column"],odbc_foreignkeys:["resource odbc_foreignkeys(resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)","Returns a result identifier to either a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table"],odbc_free_result:["bool odbc_free_result(resource result_id)","Free resources associated with a result"],odbc_gettypeinfo:["resource odbc_gettypeinfo(resource connection_id [, int data_type])","Returns a result identifier containing information about data types supported by the data source"],odbc_longreadlen:["bool odbc_longreadlen(int result_id, int length)","Handle LONG columns"],odbc_next_result:["bool odbc_next_result(resource result_id)","Checks if multiple results are avaiable"],odbc_num_fields:["int odbc_num_fields(resource result_id)","Get number of columns in a result"],odbc_num_rows:["int odbc_num_rows(resource result_id)","Get number of rows in a result"],odbc_pconnect:["resource odbc_pconnect(string DSN, string user, string password [, int cursor_option])","Establish a persistent connection to a datasource"],odbc_prepare:["resource odbc_prepare(resource connection_id, string query)","Prepares a statement for execution"],odbc_primarykeys:["resource odbc_primarykeys(resource connection_id, string qualifier, string owner, string table)","Returns a result identifier listing the column names that comprise the primary key for a table"],odbc_procedurecolumns:["resource odbc_procedurecolumns(resource connection_id [, string qualifier, string owner, string proc, string column])","Returns a result identifier containing the list of input and output parameters, as well as the columns that make up the result set for the specified procedures"],odbc_procedures:["resource odbc_procedures(resource connection_id [, string qualifier, string owner, string name])","Returns a result identifier containg the list of procedure names in a datasource"],odbc_result:["mixed odbc_result(resource result_id, mixed field)","Get result data"],odbc_result_all:["int odbc_result_all(resource result_id [, string format])","Print result as HTML table"],odbc_rollback:["bool odbc_rollback(resource connection_id)","Rollback a transaction"],odbc_setoption:["bool odbc_setoption(resource conn_id|result_id, int which, int option, int value)","Sets connection or statement options"],odbc_specialcolumns:["resource odbc_specialcolumns(resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable)","Returns a result identifier containing either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction"],odbc_statistics:["resource odbc_statistics(resource connection_id, string qualifier, string owner, string name, int unique, int accuracy)","Returns a result identifier that contains statistics about a single table and the indexes associated with the table"],odbc_tableprivileges:["resource odbc_tableprivileges(resource connection_id, string qualifier, string owner, string name)","Returns a result identifier containing a list of tables and the privileges associated with each table"],odbc_tables:["resource odbc_tables(resource connection_id [, string qualifier [, string owner [, string name [, string table_types]]]])","Call the SQLTables function"],opendir:["mixed opendir(string path[, resource context])","Open a directory and return a dir_handle"],openlog:["bool openlog(string ident, int option, int facility)","Open connection to system logger"],openssl_csr_export:["bool openssl_csr_export(resource csr, string &out [, bool notext=true])","Exports a CSR to file or a var"],openssl_csr_export_to_file:["bool openssl_csr_export_to_file(resource csr, string outfilename [, bool notext=true])","Exports a CSR to file"],openssl_csr_get_public_key:["mixed openssl_csr_get_public_key(mixed csr)","Returns the subject of a CERT or FALSE on error"],openssl_csr_get_subject:["mixed openssl_csr_get_subject(mixed csr)","Returns the subject of a CERT or FALSE on error"],openssl_csr_new:["bool openssl_csr_new(array dn, resource &privkey [, array configargs [, array extraattribs]])","Generates a privkey and CSR"],openssl_csr_sign:["resource openssl_csr_sign(mixed csr, mixed x509, mixed priv_key, long days [, array config_args [, long serial]])","Signs a cert with another CERT"],openssl_decrypt:["string openssl_decrypt(string data, string method, string password [, bool raw_input=false])","Takes raw or base64 encoded string and dectupt it using given method and key"],openssl_dh_compute_key:["string openssl_dh_compute_key(string pub_key, resource dh_key)","Computes shared sicret for public value of remote DH key and local DH key"],openssl_digest:["string openssl_digest(string data, string method [, bool raw_output=false])","Computes digest hash value for given data using given method, returns raw or binhex encoded string"],openssl_encrypt:["string openssl_encrypt(string data, string method, string password [, bool raw_output=false])","Encrypts given data with given method and key, returns raw or base64 encoded string"],openssl_error_string:["mixed openssl_error_string()","Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages"],openssl_get_cipher_methods:["array openssl_get_cipher_methods([bool aliases = false])","Return array of available cipher methods"],openssl_get_md_methods:["array openssl_get_md_methods([bool aliases = false])","Return array of available digest methods"],openssl_open:["bool openssl_open(string data, &string opendata, string ekey, mixed privkey)","Opens data"],openssl_pkcs12_export:["bool openssl_pkcs12_export(mixed x509, string &out, mixed priv_key, string pass[, array args])","Creates and exports a PKCS12 to a var"],openssl_pkcs12_export_to_file:["bool openssl_pkcs12_export_to_file(mixed x509, string filename, mixed priv_key, string pass[, array args])","Creates and exports a PKCS to file"],openssl_pkcs12_read:["bool openssl_pkcs12_read(string PKCS12, array &certs, string pass)","Parses a PKCS12 to an array"],openssl_pkcs7_decrypt:["bool openssl_pkcs7_decrypt(string infilename, string outfilename, mixed recipcert [, mixed recipkey])","Decrypts the S/MIME message in the file name infilename and output the results to the file name outfilename. recipcert is a CERT for one of the recipients. recipkey specifies the private key matching recipcert, if recipcert does not include the key"],openssl_pkcs7_encrypt:["bool openssl_pkcs7_encrypt(string infile, string outfile, mixed recipcerts, array headers [, long flags [, long cipher]])","Encrypts the message in the file named infile with the certificates in recipcerts and output the result to the file named outfile"],openssl_pkcs7_sign:["bool openssl_pkcs7_sign(string infile, string outfile, mixed signcert, mixed signkey, array headers [, long flags [, string extracertsfilename]])","Signs the MIME message in the file named infile with signcert/signkey and output the result to file name outfile. headers lists plain text headers to exclude from the signed portion of the message, and should include to, from and subject as a minimum"],openssl_pkcs7_verify:["bool openssl_pkcs7_verify(string filename, long flags [, string signerscerts [, array cainfo [, string extracerts [, string content]]]])","Verifys that the data block is intact, the signer is who they say they are, and returns the CERTs of the signers"],openssl_pkey_export:["bool openssl_pkey_export(mixed key, &mixed out [, string passphrase [, array config_args]])","Gets an exportable representation of a key into a string or file"],openssl_pkey_export_to_file:["bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase, array config_args)","Gets an exportable representation of a key into a file"],openssl_pkey_free:["void openssl_pkey_free(int key)","Frees a key"],openssl_pkey_get_details:["resource openssl_pkey_get_details(resource key)","returns an array with the key details (bits, pkey, type)"],openssl_pkey_get_private:["int openssl_pkey_get_private(string key [, string passphrase])","Gets private keys"],openssl_pkey_get_public:["int openssl_pkey_get_public(mixed cert)","Gets public key from X.509 certificate"],openssl_pkey_new:["resource openssl_pkey_new([array configargs])","Generates a new private key"],openssl_private_decrypt:["bool openssl_private_decrypt(string data, string &decrypted, mixed key [, int padding])","Decrypts data with private key"],openssl_private_encrypt:["bool openssl_private_encrypt(string data, string &crypted, mixed key [, int padding])","Encrypts data with private key"],openssl_public_decrypt:["bool openssl_public_decrypt(string data, string &crypted, resource key [, int padding])","Decrypts data with public key"],openssl_public_encrypt:["bool openssl_public_encrypt(string data, string &crypted, mixed key [, int padding])","Encrypts data with public key"],openssl_random_pseudo_bytes:["string openssl_random_pseudo_bytes(integer length [, &bool returned_strong_result])","Returns a string of the length specified filled with random pseudo bytes"],openssl_seal:["int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys)","Seals data"],openssl_sign:["bool openssl_sign(string data, &string signature, mixed key[, mixed method])","Signs data"],openssl_verify:["int openssl_verify(string data, string signature, mixed key[, mixed method])","Verifys data"],openssl_x509_check_private_key:["bool openssl_x509_check_private_key(mixed cert, mixed key)","Checks if a private key corresponds to a CERT"],openssl_x509_checkpurpose:["int openssl_x509_checkpurpose(mixed x509cert, int purpose, array cainfo [, string untrustedfile])","Checks the CERT to see if it can be used for the purpose in purpose. cainfo holds information about trusted CAs"],openssl_x509_export:["bool openssl_x509_export(mixed x509, string &out [, bool notext = true])","Exports a CERT to file or a var"],openssl_x509_export_to_file:["bool openssl_x509_export_to_file(mixed x509, string outfilename [, bool notext = true])","Exports a CERT to file or a var"],openssl_x509_free:["void openssl_x509_free(resource x509)","Frees X.509 certificates"],openssl_x509_parse:["array openssl_x509_parse(mixed x509 [, bool shortnames=true])","Returns an array of the fields/values of the CERT"],openssl_x509_read:["resource openssl_x509_read(mixed cert)","Reads X.509 certificates"],ord:["int ord(string character)","Returns ASCII value of character"],output_add_rewrite_var:["bool output_add_rewrite_var(string name, string value)","Add URL rewriter values"],output_reset_rewrite_vars:["bool output_reset_rewrite_vars()","Reset(clear) URL rewriter values"],pack:["string pack(string format, mixed arg1 [, mixed arg2 [, mixed ...]])","Takes one or more arguments and packs them into a binary string according to the format argument"],parse_ini_file:["array parse_ini_file(string filename [, bool process_sections [, int scanner_mode]])","Parse configuration file"],parse_ini_string:["array parse_ini_string(string ini_string [, bool process_sections [, int scanner_mode]])","Parse configuration string"],parse_locale:["static array parse_locale($locale)","* parses a locale-id into an array the different parts of it"],parse_str:["void parse_str(string encoded_string [, array result])","Parses GET/POST/COOKIE data and sets global variables"],parse_url:["mixed parse_url(string url, [int url_component])","Parse a URL and return its components"],passthru:["void passthru(string command [, int &return_value])","Execute an external program and display raw output"],pathinfo:["array pathinfo(string path[, int options])","Returns information about a certain string"],pclose:["int pclose(resource fp)","Close a file pointer opened by popen()"],pcnlt_sigwaitinfo:["int pcnlt_sigwaitinfo(array set[, array &siginfo])","Synchronously wait for queued signals"],pcntl_alarm:["int pcntl_alarm(int seconds)","Set an alarm clock for delivery of a signal"],pcntl_exec:["bool pcntl_exec(string path [, array args [, array envs]])","Executes specified program in current process space as defined by exec(2)"],pcntl_fork:["int pcntl_fork()","Forks the currently running process following the same behavior as the UNIX fork() system call"],pcntl_getpriority:["int pcntl_getpriority([int pid [, int process_identifier]])","Get the priority of any process"],pcntl_setpriority:["bool pcntl_setpriority(int priority [, int pid [, int process_identifier]])","Change the priority of any process"],pcntl_signal:["bool pcntl_signal(int signo, callback handle [, bool restart_syscalls])","Assigns a system signal handler to a PHP function"],pcntl_signal_dispatch:["bool pcntl_signal_dispatch()","Dispatch signals to signal handlers"],pcntl_sigprocmask:["bool pcntl_sigprocmask(int how, array set[, array &oldset])","Examine and change blocked signals"],pcntl_sigtimedwait:["int pcntl_sigtimedwait(array set[, array &siginfo[, int seconds[, int nanoseconds]]])","Wait for queued signals"],pcntl_wait:["int pcntl_wait(int &status)","Waits on or returns the status of a forked child as defined by the waitpid() system call"],pcntl_waitpid:["int pcntl_waitpid(int pid, int &status, int options)","Waits on or returns the status of a forked child as defined by the waitpid() system call"],pcntl_wexitstatus:["int pcntl_wexitstatus(int status)","Returns the status code of a child's exit"],pcntl_wifexited:["bool pcntl_wifexited(int status)","Returns true if the child status code represents a successful exit"],pcntl_wifsignaled:["bool pcntl_wifsignaled(int status)","Returns true if the child status code represents a process that was terminated due to a signal"],pcntl_wifstopped:["bool pcntl_wifstopped(int status)","Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid)"],pcntl_wstopsig:["int pcntl_wstopsig(int status)","Returns the number of the signal that caused the process to stop who's status code is passed"],pcntl_wtermsig:["int pcntl_wtermsig(int status)","Returns the number of the signal that terminated the process who's status code is passed"],pdo_drivers:["array pdo_drivers()","Return array of available PDO drivers"],pfsockopen:["resource pfsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])","Open persistent Internet or Unix domain socket connection"],pg_affected_rows:["int pg_affected_rows(resource result)","Returns the number of affected tuples"],pg_cancel_query:["bool pg_cancel_query(resource connection)","Cancel request"],pg_client_encoding:["string pg_client_encoding([resource connection])","Get the current client encoding"],pg_close:["bool pg_close([resource connection])","Close a PostgreSQL connection"],pg_connect:["resource pg_connect(string connection_string[, int connect_type] | [string host, string port [, string options [, string tty,]]] string database)","Open a PostgreSQL connection"],pg_connection_busy:["bool pg_connection_busy(resource connection)","Get connection is busy or not"],pg_connection_reset:["bool pg_connection_reset(resource connection)","Reset connection (reconnect)"],pg_connection_status:["int pg_connection_status(resource connnection)","Get connection status"],pg_convert:["array pg_convert(resource db, string table, array values[, int options])","Check and convert values for PostgreSQL SQL statement"],pg_copy_from:["bool pg_copy_from(resource connection, string table_name , array rows [, string delimiter [, string null_as]])","Copy table from array"],pg_copy_to:["array pg_copy_to(resource connection, string table_name [, string delimiter [, string null_as]])","Copy table to array"],pg_dbname:["string pg_dbname([resource connection])","Get the database name"],pg_delete:["mixed pg_delete(resource db, string table, array ids[, int options])","Delete records has ids (id => value)"],pg_end_copy:["bool pg_end_copy([resource connection])","Sync with backend. Completes the Copy command"],pg_escape_bytea:["string pg_escape_bytea([resource connection,] string data)","Escape binary for bytea type"],pg_escape_string:["string pg_escape_string([resource connection,] string data)","Escape string for text/char type"],pg_execute:["resource pg_execute([resource connection,] string stmtname, array params)","Execute a prepared query"],pg_fetch_all:["array pg_fetch_all(resource result)","Fetch all rows into array"],pg_fetch_all_columns:["array pg_fetch_all_columns(resource result [, int column_number])","Fetch all rows into array"],pg_fetch_array:["array pg_fetch_array(resource result [, int row [, int result_type]])","Fetch a row as an array"],pg_fetch_assoc:["array pg_fetch_assoc(resource result [, int row])","Fetch a row as an assoc array"],pg_fetch_object:["object pg_fetch_object(resource result [, int row [, string class_name [, NULL|array ctor_params]]])","Fetch a row as an object"],pg_fetch_result:["mixed pg_fetch_result(resource result, [int row_number,] mixed field_name)","Returns values from a result identifier"],pg_fetch_row:["array pg_fetch_row(resource result [, int row [, int result_type]])","Get a row as an enumerated array"],pg_field_is_null:["int pg_field_is_null(resource result, [int row,] mixed field_name_or_number)","Test if a field is NULL"],pg_field_name:["string pg_field_name(resource result, int field_number)","Returns the name of the field"],pg_field_num:["int pg_field_num(resource result, string field_name)","Returns the field number of the named field"],pg_field_prtlen:["int pg_field_prtlen(resource result, [int row,] mixed field_name_or_number)","Returns the printed length"],pg_field_size:["int pg_field_size(resource result, int field_number)","Returns the internal size of the field"],pg_field_table:["mixed pg_field_table(resource result, int field_number[, bool oid_only])","Returns the name of the table field belongs to, or table's oid if oid_only is true"],pg_field_type:["string pg_field_type(resource result, int field_number)","Returns the type name for the given field"],pg_field_type_oid:["string pg_field_type_oid(resource result, int field_number)","Returns the type oid for the given field"],pg_free_result:["bool pg_free_result(resource result)","Free result memory"],pg_get_notify:["array pg_get_notify([resource connection[, result_type]])","Get asynchronous notification"],pg_get_pid:["int pg_get_pid([resource connection)","Get backend(server) pid"],pg_get_result:["resource pg_get_result(resource connection)","Get asynchronous query result"],pg_host:["string pg_host([resource connection])","Returns the host name associated with the connection"],pg_insert:["mixed pg_insert(resource db, string table, array values[, int options])","Insert values (filed => value) to table"],pg_last_error:["string pg_last_error([resource connection])","Get the error message string"],pg_last_notice:["string pg_last_notice(resource connection)","Returns the last notice set by the backend"],pg_last_oid:["string pg_last_oid(resource result)","Returns the last object identifier"],pg_lo_close:["bool pg_lo_close(resource large_object)","Close a large object"],pg_lo_create:["mixed pg_lo_create([resource connection],[mixed large_object_oid])","Create a large object"],pg_lo_export:["bool pg_lo_export([resource connection, ] int objoid, string filename)","Export large object direct to filesystem"],pg_lo_import:["int pg_lo_import([resource connection, ] string filename [, mixed oid])","Import large object direct from filesystem"],pg_lo_open:["resource pg_lo_open([resource connection,] int large_object_oid, string mode)","Open a large object and return fd"],pg_lo_read:["string pg_lo_read(resource large_object [, int len])","Read a large object"],pg_lo_read_all:["int pg_lo_read_all(resource large_object)","Read a large object and send straight to browser"],pg_lo_seek:["bool pg_lo_seek(resource large_object, int offset [, int whence])","Seeks position of large object"],pg_lo_tell:["int pg_lo_tell(resource large_object)","Returns current position of large object"],pg_lo_unlink:["bool pg_lo_unlink([resource connection,] string large_object_oid)","Delete a large object"],pg_lo_write:["int pg_lo_write(resource large_object, string buf [, int len])","Write a large object"],pg_meta_data:["array pg_meta_data(resource db, string table)","Get meta_data"],pg_num_fields:["int pg_num_fields(resource result)","Return the number of fields in the result"],pg_num_rows:["int pg_num_rows(resource result)","Return the number of rows in the result"],pg_options:["string pg_options([resource connection])","Get the options associated with the connection"],pg_parameter_status:["string|false pg_parameter_status([resource connection,] string param_name)","Returns the value of a server parameter"],pg_pconnect:["resource pg_pconnect(string connection_string | [string host, string port [, string options [, string tty,]]] string database)","Open a persistent PostgreSQL connection"],pg_ping:["bool pg_ping([resource connection])","Ping database. If connection is bad, try to reconnect."],pg_port:["int pg_port([resource connection])","Return the port number associated with the connection"],pg_prepare:["resource pg_prepare([resource connection,] string stmtname, string query)","Prepare a query for future execution"],pg_put_line:["bool pg_put_line([resource connection,] string query)","Send null-terminated string to backend server"],pg_query:["resource pg_query([resource connection,] string query)","Execute a query"],pg_query_params:["resource pg_query_params([resource connection,] string query, array params)","Execute a query"],pg_result_error:["string pg_result_error(resource result)","Get error message associated with result"],pg_result_error_field:["string pg_result_error_field(resource result, int fieldcode)","Get error message field associated with result"],pg_result_seek:["bool pg_result_seek(resource result, int offset)","Set internal row offset"],pg_result_status:["mixed pg_result_status(resource result[, long result_type])","Get status of query result"],pg_select:["mixed pg_select(resource db, string table, array ids[, int options])","Select records that has ids (id => value)"],pg_send_execute:["bool pg_send_execute(resource connection, string stmtname, array params)","Executes prevriously prepared stmtname asynchronously"],pg_send_prepare:["bool pg_send_prepare(resource connection, string stmtname, string query)","Asynchronously prepare a query for future execution"],pg_send_query:["bool pg_send_query(resource connection, string query)","Send asynchronous query"],pg_send_query_params:["bool pg_send_query_params(resource connection, string query, array params)","Send asynchronous parameterized query"],pg_set_client_encoding:["int pg_set_client_encoding([resource connection,] string encoding)","Set client encoding"],pg_set_error_verbosity:["int pg_set_error_verbosity([resource connection,] int verbosity)","Set error verbosity"],pg_trace:["bool pg_trace(string filename [, string mode [, resource connection]])","Enable tracing a PostgreSQL connection"],pg_transaction_status:["int pg_transaction_status(resource connnection)","Get transaction status"],pg_tty:["string pg_tty([resource connection])","Return the tty name associated with the connection"],pg_unescape_bytea:["string pg_unescape_bytea(string data)","Unescape binary for bytea type"],pg_untrace:["bool pg_untrace([resource connection])","Disable tracing of a PostgreSQL connection"],pg_update:["mixed pg_update(resource db, string table, array fields, array ids[, int options])","Update table using values (field => value) and ids (id => value)"],pg_version:["array pg_version([resource connection])","Returns an array with client, protocol and server version (when available)"],php_egg_logo_guid:["string php_egg_logo_guid()","Return the special ID used to request the PHP logo in phpinfo screens"],php_ini_loaded_file:["string php_ini_loaded_file()","Return the actual loaded ini filename"],php_ini_scanned_files:["string php_ini_scanned_files()","Return comma-separated string of .ini files parsed from the additional ini dir"],php_logo_guid:["string php_logo_guid()","Return the special ID used to request the PHP logo in phpinfo screens"],php_real_logo_guid:["string php_real_logo_guid()","Return the special ID used to request the PHP logo in phpinfo screens"],php_sapi_name:["string php_sapi_name()","Return the current SAPI module name"],php_snmpv3:["void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st)","* * Generic SNMPv3 object fetcher * From here is passed on the the common internal object fetcher. * * st=SNMP_CMD_GET snmp3_get() - query an agent and return a single value. * st=SNMP_CMD_GETNEXT snmp3_getnext() - query an agent and return the next single value. * st=SNMP_CMD_WALK snmp3_walk() - walk the mib and return a single dimensional array * containing the values. * st=SNMP_CMD_REALWALK snmp3_real_walk() - walk the mib and return an * array of oid,value pairs. * st=SNMP_CMD_SET snmp3_set() - query an agent and set a single value *"],php_strip_whitespace:["string php_strip_whitespace(string file_name)","Return source with stripped comments and whitespace"],php_uname:["string php_uname()","Return information about the system PHP was built on"],phpcredits:["void phpcredits([int flag])","Prints the list of people who've contributed to the PHP project"],phpinfo:["void phpinfo([int what])","Output a page of useful information about PHP and the current request"],phpversion:["string phpversion([string extension])","Return the current PHP version"],pi:["float pi()","Returns an approximation of pi"],png2wbmp:["bool png2wbmp(string f_org, string f_dest, int d_height, int d_width, int threshold)","Convert PNG image to WBMP image"],popen:["resource popen(string command, string mode)","Execute a command and open either a read or a write pipe to it"],posix_access:["bool posix_access(string file [, int mode])","Determine accessibility of a file (POSIX.1 5.6.3)"],posix_ctermid:["string posix_ctermid()","Generate terminal path name (POSIX.1, 4.7.1)"],posix_get_last_error:["int posix_get_last_error()","Retrieve the error number set by the last posix function which failed."],posix_getcwd:["string posix_getcwd()","Get working directory pathname (POSIX.1, 5.2.2)"],posix_getegid:["int posix_getegid()","Get the current effective group id (POSIX.1, 4.2.1)"],posix_geteuid:["int posix_geteuid()","Get the current effective user id (POSIX.1, 4.2.1)"],posix_getgid:["int posix_getgid()","Get the current group id (POSIX.1, 4.2.1)"],posix_getgrgid:["array posix_getgrgid(long gid)","Group database access (POSIX.1, 9.2.1)"],posix_getgrnam:["array posix_getgrnam(string groupname)","Group database access (POSIX.1, 9.2.1)"],posix_getgroups:["array posix_getgroups()","Get supplementary group id's (POSIX.1, 4.2.3)"],posix_getlogin:["string posix_getlogin()","Get user name (POSIX.1, 4.2.4)"],posix_getpgid:["int posix_getpgid()","Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)"],posix_getpgrp:["int posix_getpgrp()","Get current process group id (POSIX.1, 4.3.1)"],posix_getpid:["int posix_getpid()","Get the current process id (POSIX.1, 4.1.1)"],posix_getppid:["int posix_getppid()","Get the parent process id (POSIX.1, 4.1.1)"],posix_getpwnam:["array posix_getpwnam(string groupname)","User database access (POSIX.1, 9.2.2)"],posix_getpwuid:["array posix_getpwuid(long uid)","User database access (POSIX.1, 9.2.2)"],posix_getrlimit:["array posix_getrlimit()","Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)"],posix_getsid:["int posix_getsid()","Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)"],posix_getuid:["int posix_getuid()","Get the current user id (POSIX.1, 4.2.1)"],posix_initgroups:["bool posix_initgroups(string name, int base_group_id)","Calculate the group access list for the user specified in name."],posix_isatty:["bool posix_isatty(int fd)","Determine if filedesc is a tty (POSIX.1, 4.7.1)"],posix_kill:["bool posix_kill(int pid, int sig)","Send a signal to a process (POSIX.1, 3.3.2)"],posix_mkfifo:["bool posix_mkfifo(string pathname, int mode)","Make a FIFO special file (POSIX.1, 5.4.2)"],posix_mknod:["bool posix_mknod(string pathname, int mode [, int major [, int minor]])","Make a special or ordinary file (POSIX.1)"],posix_setegid:["bool posix_setegid(long uid)","Set effective group id"],posix_seteuid:["bool posix_seteuid(long uid)","Set effective user id"],posix_setgid:["bool posix_setgid(int uid)","Set group id (POSIX.1, 4.2.2)"],posix_setpgid:["bool posix_setpgid(int pid, int pgid)","Set process group id for job control (POSIX.1, 4.3.3)"],posix_setsid:["int posix_setsid()","Create session and set process group id (POSIX.1, 4.3.2)"],posix_setuid:["bool posix_setuid(long uid)","Set user id (POSIX.1, 4.2.2)"],posix_strerror:["string posix_strerror(int errno)","Retrieve the system error message associated with the given errno."],posix_times:["array posix_times()","Get process times (POSIX.1, 4.5.2)"],posix_ttyname:["string posix_ttyname(int fd)","Determine terminal device name (POSIX.1, 4.7.2)"],posix_uname:["array posix_uname()","Get system name (POSIX.1, 4.4.1)"],pow:["number pow(number base, number exponent)","Returns base raised to the power of exponent. Returns integer result when possible"],preg_filter:["mixed preg_filter(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])","Perform Perl-style regular expression replacement and only return matches."],preg_grep:["array preg_grep(string regex, array input [, int flags])","Searches array and returns entries which match regex"],preg_last_error:["int preg_last_error()","Returns the error code of the last regexp execution."],preg_match:["int preg_match(string pattern, string subject [, array &subpatterns [, int flags [, int offset]]])","Perform a Perl-style regular expression match"],preg_match_all:["int preg_match_all(string pattern, string subject, array &subpatterns [, int flags [, int offset]])","Perform a Perl-style global regular expression match"],preg_quote:["string preg_quote(string str [, string delim_char])","Quote regular expression characters plus an optional character"],preg_replace:["mixed preg_replace(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])","Perform Perl-style regular expression replacement."],preg_replace_callback:["mixed preg_replace_callback(mixed regex, mixed callback, mixed subject [, int limit [, int &count]])","Perform Perl-style regular expression replacement using replacement callback."],preg_split:["array preg_split(string pattern, string subject [, int limit [, int flags]])","Split string into an array using a perl-style regular expression as a delimiter"],prev:["mixed prev(array array_arg)","Move array argument's internal pointer to the previous element and return it"],print:["int print(string arg)","Output a string"],print_r:["mixed print_r(mixed var [, bool return])","Prints out or returns information about the specified variable"],printf:["int printf(string format [, mixed arg1 [, mixed ...]])","Output a formatted string"],proc_close:["int proc_close(resource process)","close a process opened by proc_open"],proc_get_status:["array proc_get_status(resource process)","get information about a process opened by proc_open"],proc_nice:["bool proc_nice(int priority)","Change the priority of the current process"],proc_open:["resource proc_open(string command, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]])","Run a process with more control over it's file descriptors"],proc_terminate:["bool proc_terminate(resource process [, long signal])","kill a process opened by proc_open"],property_exists:["bool property_exists(mixed object_or_class, string property_name)","Checks if the object or class has a property"],pspell_add_to_personal:["bool pspell_add_to_personal(int pspell, string word)","Adds a word to a personal list"],pspell_add_to_session:["bool pspell_add_to_session(int pspell, string word)","Adds a word to the current session"],pspell_check:["bool pspell_check(int pspell, string word)","Returns true if word is valid"],pspell_clear_session:["bool pspell_clear_session(int pspell)","Clears the current session"],pspell_config_create:["int pspell_config_create(string language [, string spelling [, string jargon [, string encoding]]])","Create a new config to be used later to create a manager"],pspell_config_data_dir:["bool pspell_config_data_dir(int conf, string directory)","location of language data files"],pspell_config_dict_dir:["bool pspell_config_dict_dir(int conf, string directory)","location of the main word list"],pspell_config_ignore:["bool pspell_config_ignore(int conf, int ignore)","Ignore words <= n chars"],pspell_config_mode:["bool pspell_config_mode(int conf, long mode)","Select mode for config (PSPELL_FAST, PSPELL_NORMAL or PSPELL_BAD_SPELLERS)"],pspell_config_personal:["bool pspell_config_personal(int conf, string personal)","Use a personal dictionary for this config"],pspell_config_repl:["bool pspell_config_repl(int conf, string repl)","Use a personal dictionary with replacement pairs for this config"],pspell_config_runtogether:["bool pspell_config_runtogether(int conf, bool runtogether)","Consider run-together words as valid components"],pspell_config_save_repl:["bool pspell_config_save_repl(int conf, bool save)","Save replacement pairs when personal list is saved for this config"],pspell_new:["int pspell_new(string language [, string spelling [, string jargon [, string encoding [, int mode]]]])","Load a dictionary"],pspell_new_config:["int pspell_new_config(int config)","Load a dictionary based on the given config"],pspell_new_personal:["int pspell_new_personal(string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]])","Load a dictionary with a personal wordlist"],pspell_save_wordlist:["bool pspell_save_wordlist(int pspell)","Saves the current (personal) wordlist"],pspell_store_replacement:["bool pspell_store_replacement(int pspell, string misspell, string correct)","Notify the dictionary of a user-selected replacement"],pspell_suggest:["array pspell_suggest(int pspell, string word)","Returns array of suggestions"],putenv:["bool putenv(string setting)","Set the value of an environment variable"],quoted_printable_decode:["string quoted_printable_decode(string str)","Convert a quoted-printable string to an 8 bit string"],quoted_printable_encode:["string quoted_printable_encode(string str)",""],quotemeta:["string quotemeta(string str)","Quotes meta characters"],rad2deg:["float rad2deg(float number)","Converts the radian number to the equivalent number in degrees"],rand:["int rand([int min, int max])","Returns a random number"],range:["array range(mixed low, mixed high[, int step])","Create an array containing the range of integers or characters from low to high (inclusive)"],rawurldecode:["string rawurldecode(string str)","Decodes URL-encodes string"],rawurlencode:["string rawurlencode(string str)","URL-encodes string"],readdir:["string readdir([resource dir_handle])","Read directory entry from dir_handle"],readfile:["int readfile(string filename [, bool use_include_path[, resource context]])","Output a file or a URL"],readgzfile:["int readgzfile(string filename [, int use_include_path])","Output a .gz-file"],readline:["string readline([string prompt])","Reads a line"],readline_add_history:["bool readline_add_history(string prompt)","Adds a line to the history"],readline_callback_handler_install:["void readline_callback_handler_install(string prompt, mixed callback)","Initializes the readline callback interface and terminal, prints the prompt and returns immediately"],readline_callback_handler_remove:["bool readline_callback_handler_remove()","Removes a previously installed callback handler and restores terminal settings"],readline_callback_read_char:["void readline_callback_read_char()","Informs the readline callback interface that a character is ready for input"],readline_clear_history:["bool readline_clear_history()","Clears the history"],readline_completion_function:["bool readline_completion_function(string funcname)","Readline completion function?"],readline_info:["mixed readline_info([string varname [, string newvalue]])","Gets/sets various internal readline variables."],readline_list_history:["array readline_list_history()","Lists the history"],readline_on_new_line:["void readline_on_new_line()","Inform readline that the cursor has moved to a new line"],readline_read_history:["bool readline_read_history([string filename])","Reads the history"],readline_redisplay:["void readline_redisplay()","Ask readline to redraw the display"],readline_write_history:["bool readline_write_history([string filename])","Writes the history"],readlink:["string readlink(string filename)","Return the target of a symbolic link"],realpath:["string realpath(string path)","Return the resolved path"],realpath_cache_get:["bool realpath_cache_get()","Get current size of realpath cache"],realpath_cache_size:["bool realpath_cache_size()","Get current size of realpath cache"],recode_file:["bool recode_file(string request, resource input, resource output)","Recode file input into file output according to request"],recode_string:["string recode_string(string request, string str)","Recode string str according to request string"],register_shutdown_function:["void register_shutdown_function(string function_name)","Register a user-level function to be called on request termination"],register_tick_function:["bool register_tick_function(string function_name [, mixed arg [, mixed ... ]])","Registers a tick callback function"],rename:["bool rename(string old_name, string new_name[, resource context])","Rename a file"],require:["bool require(string path)","Includes and evaluates the specified file, erroring if the file cannot be included"],require_once:["bool require_once(string path)","Includes and evaluates the specified file, erroring if the file cannot be included"],reset:["mixed reset(array array_arg)","Set array argument's internal pointer to the first element and return it"],restore_error_handler:["void restore_error_handler()","Restores the previously defined error handler function"],restore_exception_handler:["void restore_exception_handler()","Restores the previously defined exception handler function"],restore_include_path:["void restore_include_path()","Restore the value of the include_path configuration option"],rewind:["bool rewind(resource fp)","Rewind the position of a file pointer"],rewinddir:["void rewinddir([resource dir_handle])","Rewind dir_handle back to the start"],rmdir:["bool rmdir(string dirname[, resource context])","Remove a directory"],round:["float round(float number [, int precision [, int mode]])","Returns the number rounded to specified precision"],rsort:["bool rsort(array &array_arg [, int sort_flags])","Sort an array in reverse order"],rtrim:["string rtrim(string str [, string character_mask])","Removes trailing whitespace"],scandir:["array scandir(string dir [, int sorting_order [, resource context]])","List files & directories inside the specified path"],sem_acquire:["bool sem_acquire(resource id)","Acquires the semaphore with the given id, blocking if necessary"],sem_get:["resource sem_get(int key [, int max_acquire [, int perm [, int auto_release]])","Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously"],sem_release:["bool sem_release(resource id)","Releases the semaphore with the given id"],sem_remove:["bool sem_remove(resource id)","Removes semaphore from Unix systems"],serialize:["string serialize(mixed variable)","Returns a string representation of variable (which can later be unserialized)"],session_cache_expire:["int session_cache_expire([int new_cache_expire])","Return the current cache expire. If new_cache_expire is given, the current cache_expire is replaced with new_cache_expire"],session_cache_limiter:["string session_cache_limiter([string new_cache_limiter])","Return the current cache limiter. If new_cache_limited is given, the current cache_limiter is replaced with new_cache_limiter"],session_decode:["bool session_decode(string data)","Deserializes data and reinitializes the variables"],session_destroy:["bool session_destroy()","Destroy the current session and all data associated with it"],session_encode:["string session_encode()","Serializes the current setup and returns the serialized representation"],session_get_cookie_params:["array session_get_cookie_params()","Return the session cookie parameters"],session_id:["string session_id([string newid])","Return the current session id. If newid is given, the session id is replaced with newid"],session_is_registered:["bool session_is_registered(string varname)","Checks if a variable is registered in session"],session_module_name:["string session_module_name([string newname])","Return the current module name used for accessing session data. If newname is given, the module name is replaced with newname"],session_name:["string session_name([string newname])","Return the current session name. If newname is given, the session name is replaced with newname"],session_regenerate_id:["bool session_regenerate_id([bool delete_old_session])","Update the current session id with a newly generated one. If delete_old_session is set to true, remove the old session."],session_register:["bool session_register(mixed var_names [, mixed ...])","Adds varname(s) to the list of variables which are freezed at the session end"],session_save_path:["string session_save_path([string newname])","Return the current save path passed to module_name. If newname is given, the save path is replaced with newname"],session_set_cookie_params:["void session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])","Set session cookie parameters"],session_set_save_handler:["void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)","Sets user-level functions"],session_start:["bool session_start()","Begin session - reinitializes freezed variables, registers browsers etc"],session_unregister:["bool session_unregister(string varname)","Removes varname from the list of variables which are freezed at the session end"],session_unset:["void session_unset()","Unset all registered variables"],session_write_close:["void session_write_close()","Write session data and end session"],set_error_handler:["string set_error_handler(string error_handler [, int error_types])","Sets a user-defined error handler function. Returns the previously defined error handler, or false on error"],set_exception_handler:["string set_exception_handler(callable exception_handler)","Sets a user-defined exception handler function. Returns the previously defined exception handler, or false on error"],set_include_path:["string set_include_path(string new_include_path)","Sets the include_path configuration option"],set_magic_quotes_runtime:["bool set_magic_quotes_runtime(int new_setting)","Set the current active configuration setting of magic_quotes_runtime and return previous"],set_time_limit:["bool set_time_limit(int seconds)","Sets the maximum time a script can run"],setcookie:["bool setcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])","Send a cookie"],setlocale:["string setlocale(mixed category, string locale [, string ...])","Set locale information"],setrawcookie:["bool setrawcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])","Send a cookie with no url encoding of the value"],settype:["bool settype(mixed var, string type)","Set the type of the variable"],sha1:["string sha1(string str [, bool raw_output])","Calculate the sha1 hash of a string"],sha1_file:["string sha1_file(string filename [, bool raw_output])","Calculate the sha1 hash of given filename"],shell_exec:["string shell_exec(string cmd)","Execute command via shell and return complete output as string"],shm_attach:["int shm_attach(int key [, int memsize [, int perm]])","Creates or open a shared memory segment"],shm_detach:["bool shm_detach(resource shm_identifier)","Disconnects from shared memory segment"],shm_get_var:["mixed shm_get_var(resource id, int variable_key)","Returns a variable from shared memory"],shm_has_var:["bool shm_has_var(resource id, int variable_key)","Checks whether a specific entry exists"],shm_put_var:["bool shm_put_var(resource shm_identifier, int variable_key, mixed variable)","Inserts or updates a variable in shared memory"],shm_remove:["bool shm_remove(resource shm_identifier)","Removes shared memory from Unix systems"],shm_remove_var:["bool shm_remove_var(resource id, int variable_key)","Removes variable from shared memory"],shmop_close:["void shmop_close(int shmid)","closes a shared memory segment"],shmop_delete:["bool shmop_delete(int shmid)","mark segment for deletion"],shmop_open:["int shmop_open(int key, string flags, int mode, int size)","gets and attaches a shared memory segment"],shmop_read:["string shmop_read(int shmid, int start, int count)","reads from a shm segment"],shmop_size:["int shmop_size(int shmid)","returns the shm size"],shmop_write:["int shmop_write(int shmid, string data, int offset)","writes to a shared memory segment"],shuffle:["bool shuffle(array array_arg)","Randomly shuffle the contents of an array"],similar_text:["int similar_text(string str1, string str2 [, float percent])","Calculates the similarity between two strings"],simplexml_import_dom:["simplemxml_element simplexml_import_dom(domNode node [, string class_name])","Get a simplexml_element object from dom to allow for processing"],simplexml_load_file:["simplemxml_element simplexml_load_file(string filename [, string class_name [, int options [, string ns [, bool is_prefix]]]])","Load a filename and return a simplexml_element object to allow for processing"],simplexml_load_string:["simplemxml_element simplexml_load_string(string data [, string class_name [, int options [, string ns [, bool is_prefix]]]])","Load a string and return a simplexml_element object to allow for processing"],sin:["float sin(float number)","Returns the sine of the number in radians"],sinh:["float sinh(float number)","Returns the hyperbolic sine of the number, defined as (exp(number) - exp(-number))/2"],sleep:["void sleep(int seconds)","Delay for a given number of seconds"],smfi_addheader:["bool smfi_addheader(string headerf, string headerv)","Adds a header to the current message."],smfi_addrcpt:["bool smfi_addrcpt(string rcpt)","Add a recipient to the message envelope."],smfi_chgheader:["bool smfi_chgheader(string headerf, string headerv)","Changes a header's value for the current message."],smfi_delrcpt:["bool smfi_delrcpt(string rcpt)","Removes the named recipient from the current message's envelope."],smfi_getsymval:["string smfi_getsymval(string macro)","Returns the value of the given macro or NULL if the macro is not defined."],smfi_replacebody:["bool smfi_replacebody(string body)","Replaces the body of the current message. If called more than once, subsequent calls result in data being appended to the new body."],smfi_setflags:["void smfi_setflags(long flags)","Sets the flags describing the actions the filter may take."],smfi_setreply:["bool smfi_setreply(string rcode, string xcode, string message)","Directly set the SMTP error reply code for this connection. This code will be used on subsequent error replies resulting from actions taken by this filter."],smfi_settimeout:["void smfi_settimeout(long timeout)","Sets the number of seconds libmilter will wait for an MTA connection before timing out a socket."],snmp2_get:["string snmp2_get(string host, string community, string object_id [, int timeout [, int retries]])","Fetch a SNMP object"],snmp2_getnext:["string snmp2_getnext(string host, string community, string object_id [, int timeout [, int retries]])","Fetch a SNMP object"],snmp2_real_walk:["array snmp2_real_walk(string host, string community, string object_id [, int timeout [, int retries]])","Return all objects including their respective object id withing the specified one"],snmp2_set:["int snmp2_set(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])","Set the value of a SNMP object"],snmp2_walk:["array snmp2_walk(string host, string community, string object_id [, int timeout [, int retries]])","Return all objects under the specified object id"],snmp3_get:["int snmp3_get(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp3_getnext:["int snmp3_getnext(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp3_real_walk:["int snmp3_real_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp3_set:["int snmp3_set(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id, string type, mixed value [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp3_walk:["int snmp3_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])","Fetch the value of a SNMP object"],snmp_get_quick_print:["bool snmp_get_quick_print()","Return the current status of quick_print"],snmp_get_valueretrieval:["int snmp_get_valueretrieval()","Return the method how the SNMP values will be returned"],snmp_read_mib:["int snmp_read_mib(string filename)","Reads and parses a MIB file into the active MIB tree."],snmp_set_enum_print:["void snmp_set_enum_print(int enum_print)","Return all values that are enums with their enum value instead of the raw integer"],snmp_set_oid_output_format:["void snmp_set_oid_output_format(int oid_format)","Set the OID output format."],snmp_set_quick_print:["void snmp_set_quick_print(int quick_print)","Return all objects including their respective object id withing the specified one"],snmp_set_valueretrieval:["void snmp_set_valueretrieval(int method)","Specify the method how the SNMP values will be returned"],snmpget:["string snmpget(string host, string community, string object_id [, int timeout [, int retries]])","Fetch a SNMP object"],snmpgetnext:["string snmpgetnext(string host, string community, string object_id [, int timeout [, int retries]])","Fetch a SNMP object"],snmprealwalk:["array snmprealwalk(string host, string community, string object_id [, int timeout [, int retries]])","Return all objects including their respective object id withing the specified one"],snmpset:["int snmpset(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])","Set the value of a SNMP object"],snmpwalk:["array snmpwalk(string host, string community, string object_id [, int timeout [, int retries]])","Return all objects under the specified object id"],socket_accept:["resource socket_accept(resource socket)","Accepts a connection on the listening socket fd"],socket_bind:["bool socket_bind(resource socket, string addr [, int port])","Binds an open socket to a listening port, port is only specified in AF_INET family."],socket_clear_error:["void socket_clear_error([resource socket])","Clears the error on the socket or the last error code."],socket_close:["void socket_close(resource socket)","Closes a file descriptor"],socket_connect:["bool socket_connect(resource socket, string addr [, int port])","Opens a connection to addr:port on the socket specified by socket"],socket_create:["resource socket_create(int domain, int type, int protocol)","Creates an endpoint for communication in the domain specified by domain, of type specified by type"],socket_create_listen:["resource socket_create_listen(int port[, int backlog])","Opens a socket on port to accept connections"],socket_create_pair:["bool socket_create_pair(int domain, int type, int protocol, array &fd)","Creates a pair of indistinguishable sockets and stores them in fds."],socket_get_option:["mixed socket_get_option(resource socket, int level, int optname)","Gets socket options for the socket"],socket_getpeername:["bool socket_getpeername(resource socket, string &addr[, int &port])","Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type."],socket_getsockname:["bool socket_getsockname(resource socket, string &addr[, int &port])","Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type."],socket_last_error:["int socket_last_error([resource socket])","Returns the last socket error (either the last used or the provided socket resource)"],socket_listen:["bool socket_listen(resource socket[, int backlog])","Sets the maximum number of connections allowed to be waited for on the socket specified by fd"],socket_read:["string socket_read(resource socket, int length [, int type])","Reads a maximum of length bytes from socket"],socket_recv:["int socket_recv(resource socket, string &buf, int len, int flags)","Receives data from a connected socket"],socket_recvfrom:["int socket_recvfrom(resource socket, string &buf, int len, int flags, string &name [, int &port])","Receives data from a socket, connected or not"],socket_select:["int socket_select(array &read_fds, array &write_fds, array &except_fds, int tv_sec[, int tv_usec])","Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec"],socket_send:["int socket_send(resource socket, string buf, int len, int flags)","Sends data to a connected socket"],socket_sendto:["int socket_sendto(resource socket, string buf, int len, int flags, string addr [, int port])","Sends a message to a socket, whether it is connected or not"],socket_set_block:["bool socket_set_block(resource socket)","Sets blocking mode on a socket resource"],socket_set_nonblock:["bool socket_set_nonblock(resource socket)","Sets nonblocking mode on a socket resource"],socket_set_option:["bool socket_set_option(resource socket, int level, int optname, int|array optval)","Sets socket options for the socket"],socket_shutdown:["bool socket_shutdown(resource socket[, int how])","Shuts down a socket for receiving, sending, or both."],socket_strerror:["string socket_strerror(int errno)","Returns a string describing an error"],socket_write:["int socket_write(resource socket, string buf[, int length])","Writes the buffer to the socket resource, length is optional"],solid_fetch_prev:["bool solid_fetch_prev(resource result_id)",""],sort:["bool sort(array &array_arg [, int sort_flags])","Sort an array"],soundex:["string soundex(string str)","Calculate the soundex key of a string"],spl_autoload:["void spl_autoload(string class_name [, string file_extensions])","Default implementation for __autoload()"],spl_autoload_call:["void spl_autoload_call(string class_name)","Try all registerd autoload function to load the requested class"],spl_autoload_extensions:["string spl_autoload_extensions([string file_extensions])","Register and return default file extensions for spl_autoload"],spl_autoload_functions:["false|array spl_autoload_functions()","Return all registered __autoload() functionns"],spl_autoload_register:['bool spl_autoload_register([mixed autoload_function = "spl_autoload" [, throw = true [, prepend]]])',"Register given function as __autoload() implementation"],spl_autoload_unregister:["bool spl_autoload_unregister(mixed autoload_function)","Unregister given function as __autoload() implementation"],spl_classes:["array spl_classes()","Return an array containing the names of all clsses and interfaces defined in SPL"],spl_object_hash:["string spl_object_hash(object obj)","Return hash id for given object"],split:["array split(string pattern, string string [, int limit])","Split string into array by regular expression"],spliti:["array spliti(string pattern, string string [, int limit])","Split string into array by regular expression case-insensitive"],sprintf:["string sprintf(string format [, mixed arg1 [, mixed ...]])","Return a formatted string"],sql_regcase:["string sql_regcase(string string)","Make regular expression for case insensitive match"],sqlite_array_query:["array sqlite_array_query(resource db, string query [ , int result_type [, bool decode_binary]])","Executes a query against a given database and returns an array of arrays."],sqlite_busy_timeout:["void sqlite_busy_timeout(resource db, int ms)","Set busy timeout duration. If ms <= 0, all busy handlers are disabled."],sqlite_changes:["int sqlite_changes(resource db)","Returns the number of rows that were changed by the most recent SQL statement."],sqlite_close:["void sqlite_close(resource db)","Closes an open sqlite database."],sqlite_column:["mixed sqlite_column(resource result, mixed index_or_name [, bool decode_binary])","Fetches a column from the current row of a result set."],sqlite_create_aggregate:["bool sqlite_create_aggregate(resource db, string funcname, mixed step_func, mixed finalize_func[, long num_args])","Registers an aggregate function for queries."],sqlite_create_function:["bool sqlite_create_function(resource db, string funcname, mixed callback[, long num_args])",'Registers a "regular" function for queries.'],sqlite_current:["array sqlite_current(resource result [, int result_type [, bool decode_binary]])","Fetches the current row from a result set as an array."],sqlite_error_string:["string sqlite_error_string(int error_code)","Returns the textual description of an error code."],sqlite_escape_string:["string sqlite_escape_string(string item)","Escapes a string for use as a query parameter."],sqlite_exec:["bool sqlite_exec(string query, resource db[, string &error_message])","Executes a result-less query against a given database"],sqlite_factory:["object sqlite_factory(string filename [, int mode [, string &error_message]])","Opens a SQLite database and creates an object for it. Will create the database if it does not exist."],sqlite_fetch_all:["array sqlite_fetch_all(resource result [, int result_type [, bool decode_binary]])","Fetches all rows from a result set as an array of arrays."],sqlite_fetch_array:["array sqlite_fetch_array(resource result [, int result_type [, bool decode_binary]])","Fetches the next row from a result set as an array."],sqlite_fetch_column_types:["resource sqlite_fetch_column_types(string table_name, resource db [, int result_type])","Return an array of column types from a particular table."],sqlite_fetch_object:["object sqlite_fetch_object(resource result [, string class_name [, NULL|array ctor_params [, bool decode_binary]]])","Fetches the next row from a result set as an object."],sqlite_fetch_single:["string sqlite_fetch_single(resource result [, bool decode_binary])","Fetches the first column of a result set as a string."],sqlite_field_name:["string sqlite_field_name(resource result, int field_index)","Returns the name of a particular field of a result set."],sqlite_has_prev:["bool sqlite_has_prev(resource result)","* Returns whether a previous row is available."],sqlite_key:["int sqlite_key(resource result)","Return the current row index of a buffered result."],sqlite_last_error:["int sqlite_last_error(resource db)","Returns the error code of the last error for a database."],sqlite_last_insert_rowid:["int sqlite_last_insert_rowid(resource db)","Returns the rowid of the most recently inserted row."],sqlite_libencoding:["string sqlite_libencoding()","Returns the encoding (iso8859 or UTF-8) of the linked SQLite library."],sqlite_libversion:["string sqlite_libversion()","Returns the version of the linked SQLite library."],sqlite_next:["bool sqlite_next(resource result)","Seek to the next row number of a result set."],sqlite_num_fields:["int sqlite_num_fields(resource result)","Returns the number of fields in a result set."],sqlite_num_rows:["int sqlite_num_rows(resource result)","Returns the number of rows in a buffered result set."],sqlite_open:["resource sqlite_open(string filename [, int mode [, string &error_message]])","Opens a SQLite database. Will create the database if it does not exist."],sqlite_popen:["resource sqlite_popen(string filename [, int mode [, string &error_message]])","Opens a persistent handle to a SQLite database. Will create the database if it does not exist."],sqlite_prev:["bool sqlite_prev(resource result)","* Seek to the previous row number of a result set."],sqlite_query:["resource sqlite_query(string query, resource db [, int result_type [, string &error_message]])","Executes a query against a given database and returns a result handle."],sqlite_rewind:["bool sqlite_rewind(resource result)","Seek to the first row number of a buffered result set."],sqlite_seek:["bool sqlite_seek(resource result, int row)","Seek to a particular row number of a buffered result set."],sqlite_single_query:["array sqlite_single_query(resource db, string query [, bool first_row_only [, bool decode_binary]])","Executes a query and returns either an array for one single column or the value of the first row."],sqlite_udf_decode_binary:["string sqlite_udf_decode_binary(string data)","Decode binary encoding on a string parameter passed to an UDF."],sqlite_udf_encode_binary:["string sqlite_udf_encode_binary(string data)","Apply binary encoding (if required) to a string to return from an UDF."],sqlite_unbuffered_query:["resource sqlite_unbuffered_query(string query, resource db [ , int result_type [, string &error_message]])","Executes a query that does not prefetch and buffer all data."],sqlite_valid:["bool sqlite_valid(resource result)","Returns whether more rows are available."],sqrt:["float sqrt(float number)","Returns the square root of the number"],srand:["void srand([int seed])","Seeds random number generator"],sscanf:["mixed sscanf(string str, string format [, string ...])","Implements an ANSI C compatible sscanf"],stat:["array stat(string filename)","Give information about a file"],str_getcsv:["array str_getcsv(string input[, string delimiter[, string enclosure[, string escape]]])","Parse a CSV string into an array"],str_ireplace:["mixed str_ireplace(mixed search, mixed replace, mixed subject [, int &replace_count])","Replaces all occurrences of search in haystack with replace / case-insensitive"],str_pad:["string str_pad(string input, int pad_length [, string pad_string [, int pad_type]])","Returns input string padded on the left or right to specified length with pad_string"],str_repeat:["string str_repeat(string input, int mult)","Returns the input string repeat mult times"],str_replace:["mixed str_replace(mixed search, mixed replace, mixed subject [, int &replace_count])","Replaces all occurrences of search in haystack with replace"],str_rot13:["string str_rot13(string str)","Perform the rot13 transform on a string"],str_shuffle:["void str_shuffle(string str)","Shuffles string. One permutation of all possible is created"],str_split:["array str_split(string str [, int split_length])","Convert a string to an array. If split_length is specified, break the string down into chunks each split_length characters long."],str_word_count:["mixed str_word_count(string str, [int format [, string charlist]])",'Counts the number of words inside a string. If format of 1 is specified, then the function will return an array containing all the words found inside the string. If format of 2 is specified, then the function will return an associated array where the position of the word is the key and the word itself is the value. For the purpose of this function, \'word\' is defined as a locale dependent string containing alphabetic characters, which also may contain, but not start with "\'" and "-" characters.'],strcasecmp:["int strcasecmp(string str1, string str2)","Binary safe case-insensitive string comparison"],strchr:["string strchr(string haystack, string needle)","An alias for strstr"],strcmp:["int strcmp(string str1, string str2)","Binary safe string comparison"],strcoll:["int strcoll(string str1, string str2)","Compares two strings using the current locale"],strcspn:["int strcspn(string str, string mask [, start [, len]])","Finds length of initial segment consisting entirely of characters not found in mask. If start or/and length is provide works like strcspn(substr($s,$start,$len),$bad_chars)"],stream_bucket_append:["void stream_bucket_append(resource brigade, resource bucket)","Append bucket to brigade"],stream_bucket_make_writeable:["object stream_bucket_make_writeable(resource brigade)","Return a bucket object from the brigade for operating on"],stream_bucket_new:["resource stream_bucket_new(resource stream, string buffer)","Create a new bucket for use on the current stream"],stream_bucket_prepend:["void stream_bucket_prepend(resource brigade, resource bucket)","Prepend bucket to brigade"],stream_context_create:["resource stream_context_create([array options[, array params]])","Create a file context and optionally set parameters"],stream_context_get_default:["resource stream_context_get_default([array options])","Get a handle on the default file/stream context and optionally set parameters"],stream_context_get_options:["array stream_context_get_options(resource context|resource stream)","Retrieve options for a stream/wrapper/context"],stream_context_get_params:["array stream_context_get_params(resource context|resource stream)","Get parameters of a file context"],stream_context_set_default:["resource stream_context_set_default(array options)","Set default file/stream context, returns the context as a resource"],stream_context_set_option:["bool stream_context_set_option(resource context|resource stream, string wrappername, string optionname, mixed value)","Set an option for a wrapper"],stream_context_set_params:["bool stream_context_set_params(resource context|resource stream, array options)","Set parameters for a file context"],stream_copy_to_stream:["long stream_copy_to_stream(resource source, resource dest [, long maxlen [, long pos]])","Reads up to maxlen bytes from source stream and writes them to dest stream."],stream_filter_append:["resource stream_filter_append(resource stream, string filtername[, int read_write[, string filterparams]])","Append a filter to a stream"],stream_filter_prepend:["resource stream_filter_prepend(resource stream, string filtername[, int read_write[, string filterparams]])","Prepend a filter to a stream"],stream_filter_register:["bool stream_filter_register(string filtername, string classname)","Registers a custom filter handler class"],stream_filter_remove:["bool stream_filter_remove(resource stream_filter)","Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource"],stream_get_contents:["string stream_get_contents(resource source [, long maxlen [, long offset]])","Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string."],stream_get_filters:["array stream_get_filters()","Returns a list of registered filters"],stream_get_line:["string stream_get_line(resource stream, int maxlen [, string ending])","Read up to maxlen bytes from a stream or until the ending string is found"],stream_get_meta_data:["array stream_get_meta_data(resource fp)","Retrieves header/meta data from streams/file pointers"],stream_get_transports:["array stream_get_transports()","Retrieves list of registered socket transports"],stream_get_wrappers:["array stream_get_wrappers()","Retrieves list of registered stream wrappers"],stream_is_local:["bool stream_is_local(resource stream|string url)",""],stream_resolve_include_path:["string stream_resolve_include_path(string filename)","Determine what file will be opened by calls to fopen() with a relative path"],stream_select:["int stream_select(array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec])","Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec"],stream_set_blocking:["bool stream_set_blocking(resource socket, int mode)","Set blocking/non-blocking mode on a socket or stream"],stream_set_timeout:["bool stream_set_timeout(resource stream, int seconds [, int microseconds])","Set timeout on stream read to seconds + microseonds"],stream_set_write_buffer:["int stream_set_write_buffer(resource fp, int buffer)","Set file write buffer"],stream_socket_accept:["resource stream_socket_accept(resource serverstream, [ double timeout [, string &peername ]])","Accept a client connection from a server socket"],stream_socket_client:["resource stream_socket_client(string remoteaddress [, long &errcode [, string &errstring [, double timeout [, long flags [, resource context]]]]])","Open a client connection to a remote address"],stream_socket_enable_crypto:["int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind [, resource sessionstream]])","Enable or disable a specific kind of crypto on the stream"],stream_socket_get_name:["string stream_socket_get_name(resource stream, bool want_peer)","Returns either the locally bound or remote name for a socket stream"],stream_socket_pair:["array stream_socket_pair(int domain, int type, int protocol)","Creates a pair of connected, indistinguishable socket streams"],stream_socket_recvfrom:["string stream_socket_recvfrom(resource stream, long amount [, long flags [, string &remote_addr]])","Receives data from a socket stream"],stream_socket_sendto:["long stream_socket_sendto(resouce stream, string data [, long flags [, string target_addr]])","Send data to a socket stream. If target_addr is specified it must be in dotted quad (or [ipv6]) format"],stream_socket_server:["resource stream_socket_server(string localaddress [, long &errcode [, string &errstring [, long flags [, resource context]]]])","Create a server socket bound to localaddress"],stream_socket_shutdown:["int stream_socket_shutdown(resource stream, int how)","causes all or part of a full-duplex connection on the socket associated with stream to be shut down. If how is SHUT_RD, further receptions will be disallowed. If how is SHUT_WR, further transmissions will be disallowed. If how is SHUT_RDWR, further receptions and transmissions will be disallowed."],stream_supports_lock:["bool stream_supports_lock(resource stream)","Tells whether the stream supports locking through flock()."],stream_wrapper_register:["bool stream_wrapper_register(string protocol, string classname[, integer flags])","Registers a custom URL protocol handler class"],stream_wrapper_restore:["bool stream_wrapper_restore(string protocol)","Restore the original protocol handler, overriding if necessary"],stream_wrapper_unregister:["bool stream_wrapper_unregister(string protocol)","Unregister a wrapper for the life of the current request."],strftime:["string strftime(string format [, int timestamp])","Format a local time/date according to locale settings"],strip_tags:["string strip_tags(string str [, string allowable_tags])","Strips HTML and PHP tags from a string"],stripcslashes:["string stripcslashes(string str)","Strips backslashes from a string. Uses C-style conventions"],stripos:["int stripos(string haystack, string needle [, int offset])","Finds position of first occurrence of a string within another, case insensitive"],stripslashes:["string stripslashes(string str)","Strips backslashes from a string"],stristr:["string stristr(string haystack, string needle[, bool part])","Finds first occurrence of a string within another, case insensitive"],strlen:["int strlen(string str)","Get string length"],strnatcasecmp:["int strnatcasecmp(string s1, string s2)","Returns the result of case-insensitive string comparison using 'natural' algorithm"],strnatcmp:["int strnatcmp(string s1, string s2)","Returns the result of string comparison using 'natural' algorithm"],strncasecmp:["int strncasecmp(string str1, string str2, int len)","Binary safe string comparison"],strncmp:["int strncmp(string str1, string str2, int len)","Binary safe string comparison"],strpbrk:["array strpbrk(string haystack, string char_list)","Search a string for any of a set of characters"],strpos:["int strpos(string haystack, string needle [, int offset])","Finds position of first occurrence of a string within another"],strptime:["string strptime(string timestamp, string format)","Parse a time/date generated with strftime()"],strrchr:["string strrchr(string haystack, string needle)","Finds the last occurrence of a character in a string within another"],strrev:["string strrev(string str)","Reverse a string"],strripos:["int strripos(string haystack, string needle [, int offset])","Finds position of last occurrence of a string within another string"],strrpos:["int strrpos(string haystack, string needle [, int offset])","Finds position of last occurrence of a string within another string"],strspn:["int strspn(string str, string mask [, start [, len]])","Finds length of initial segment consisting entirely of characters found in mask. If start or/and length is provided works like strspn(substr($s,$start,$len),$good_chars)"],strstr:["string strstr(string haystack, string needle[, bool part])","Finds first occurrence of a string within another"],strtok:["string strtok([string str,] string token)","Tokenize a string"],strtolower:["string strtolower(string str)","Makes a string lowercase"],strtotime:["int strtotime(string time [, int now ])","Convert string representation of date and time to a timestamp"],strtoupper:["string strtoupper(string str)","Makes a string uppercase"],strtr:["string strtr(string str, string from[, string to])","Translates characters in str using given translation tables"],strval:["string strval(mixed var)","Get the string value of a variable"],substr:["string substr(string str, int start [, int length])","Returns part of a string"],substr_compare:["int substr_compare(string main_str, string str, int offset [, int length [, bool case_sensitivity]])","Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters"],substr_count:["int substr_count(string haystack, string needle [, int offset [, int length]])","Returns the number of times a substring occurs in the string"],substr_replace:["mixed substr_replace(mixed str, mixed repl, mixed start [, mixed length])","Replaces part of a string with another string"],sybase_affected_rows:["int sybase_affected_rows([resource link_id])","Get number of affected rows in last query"],sybase_close:["bool sybase_close([resource link_id])","Close Sybase connection"],sybase_connect:["int sybase_connect([string host [, string user [, string password [, string charset [, string appname [, bool new]]]]]])","Open Sybase server connection"],sybase_data_seek:["bool sybase_data_seek(resource result, int offset)","Move internal row pointer"],sybase_deadlock_retry_count:["void sybase_deadlock_retry_count(int retry_count)","Sets deadlock retry count"],sybase_fetch_array:["array sybase_fetch_array(resource result)","Fetch row as array"],sybase_fetch_assoc:["array sybase_fetch_assoc(resource result)","Fetch row as array without numberic indices"],sybase_fetch_field:["object sybase_fetch_field(resource result [, int offset])","Get field information"],sybase_fetch_object:["object sybase_fetch_object(resource result [, mixed object])","Fetch row as object"],sybase_fetch_row:["array sybase_fetch_row(resource result)","Get row as enumerated array"],sybase_field_seek:["bool sybase_field_seek(resource result, int offset)","Set field offset"],sybase_free_result:["bool sybase_free_result(resource result)","Free result memory"],sybase_get_last_message:["string sybase_get_last_message()","Returns the last message from server (over min_message_severity)"],sybase_min_client_severity:["void sybase_min_client_severity(int severity)","Sets minimum client severity"],sybase_min_server_severity:["void sybase_min_server_severity(int severity)","Sets minimum server severity"],sybase_num_fields:["int sybase_num_fields(resource result)","Get number of fields in result"],sybase_num_rows:["int sybase_num_rows(resource result)","Get number of rows in result"],sybase_pconnect:["int sybase_pconnect([string host [, string user [, string password [, string charset [, string appname]]]]])","Open persistent Sybase connection"],sybase_query:["int sybase_query(string query [, resource link_id])","Send Sybase query"],sybase_result:["string sybase_result(resource result, int row, mixed field)","Get result data"],sybase_select_db:["bool sybase_select_db(string database [, resource link_id])","Select Sybase database"],sybase_set_message_handler:["bool sybase_set_message_handler(mixed error_func [, resource connection])","Set the error handler, to be called when a server message is raised. If error_func is NULL the handler will be deleted"],sybase_unbuffered_query:["int sybase_unbuffered_query(string query [, resource link_id])","Send Sybase query"],symlink:["int symlink(string target, string link)","Create a symbolic link"],sys_get_temp_dir:["string sys_get_temp_dir()","Returns directory path used for temporary files"],sys_getloadavg:["array sys_getloadavg()",""],syslog:["bool syslog(int priority, string message)","Generate a system log message"],system:["int system(string command [, int &return_value])","Execute an external program and display output"],tan:["float tan(float number)","Returns the tangent of the number in radians"],tanh:["float tanh(float number)","Returns the hyperbolic tangent of the number, defined as sinh(number)/cosh(number)"],tempnam:["string tempnam(string dir, string prefix)","Create a unique filename in a directory"],textdomain:["string textdomain(string domain)",'Set the textdomain to "domain". Returns the current domain'],tidy_access_count:["int tidy_access_count()","Returns the Number of Tidy accessibility warnings encountered for specified document."],tidy_clean_repair:["bool tidy_clean_repair()","Execute configured cleanup and repair operations on parsed markup"],tidy_config_count:["int tidy_config_count()","Returns the Number of Tidy configuration errors encountered for specified document."],tidy_diagnose:["bool tidy_diagnose()","Run configured diagnostics on parsed and repaired markup."],tidy_error_count:["int tidy_error_count()","Returns the Number of Tidy errors encountered for specified document."],tidy_get_body:["TidyNode tidy_get_body(resource tidy)","Returns a TidyNode Object starting from the tag of the tidy parse tree"],tidy_get_config:["array tidy_get_config()","Get current Tidy configuarion"],tidy_get_error_buffer:["string tidy_get_error_buffer([bool detailed])","Return warnings and errors which occured parsing the specified document"],tidy_get_head:["TidyNode tidy_get_head()","Returns a TidyNode Object starting from the tag of the tidy parse tree"],tidy_get_html:["TidyNode tidy_get_html()","Returns a TidyNode Object starting from the tag of the tidy parse tree"],tidy_get_html_ver:["int tidy_get_html_ver()","Get the Detected HTML version for the specified document."],tidy_get_opt_doc:["string tidy_get_opt_doc(tidy resource, string optname)","Returns the documentation for the given option name"],tidy_get_output:["string tidy_get_output()","Return a string representing the parsed tidy markup"],tidy_get_release:["string tidy_get_release()","Get release date (version) for Tidy library"],tidy_get_root:["TidyNode tidy_get_root()","Returns a TidyNode Object representing the root of the tidy parse tree"],tidy_get_status:["int tidy_get_status()","Get status of specfied document."],tidy_getopt:["mixed tidy_getopt(string option)","Returns the value of the specified configuration option for the tidy document."],tidy_is_xhtml:["bool tidy_is_xhtml()","Indicates if the document is a XHTML document."],tidy_is_xml:["bool tidy_is_xml()","Indicates if the document is a generic (non HTML/XHTML) XML document."],tidy_parse_file:["bool tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]])","Parse markup in file or URI"],tidy_parse_string:["bool tidy_parse_string(string input [, mixed config_options [, string encoding]])","Parse a document stored in a string"],tidy_repair_file:["bool tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]])","Repair a file using an optionally provided configuration file"],tidy_repair_string:["bool tidy_repair_string(string data [, mixed config_file [, string encoding]])","Repair a string using an optionally provided configuration file"],tidy_warning_count:["int tidy_warning_count()","Returns the Number of Tidy warnings encountered for specified document."],time:["int time()","Return current UNIX timestamp"],time_nanosleep:["mixed time_nanosleep(long seconds, long nanoseconds)","Delay for a number of seconds and nano seconds"],time_sleep_until:["mixed time_sleep_until(float timestamp)","Make the script sleep until the specified time"],timezone_abbreviations_list:["array timezone_abbreviations_list()","Returns associative array containing dst, offset and the timezone name"],timezone_identifiers_list:["array timezone_identifiers_list([long what[, string country]])","Returns numerically index array with all timezone identifiers."],timezone_location_get:["array timezone_location_get()","Returns location information for a timezone, including country code, latitude/longitude and comments"],timezone_name_from_abbr:["string timezone_name_from_abbr(string abbr[, long gmtOffset[, long isdst]])","Returns the timezone name from abbrevation"],timezone_name_get:["string timezone_name_get(DateTimeZone object)","Returns the name of the timezone."],timezone_offset_get:["long timezone_offset_get(DateTimeZone object, DateTime object)","Returns the timezone offset."],timezone_open:["DateTimeZone timezone_open(string timezone)","Returns new DateTimeZone object"],timezone_transitions_get:["array timezone_transitions_get(DateTimeZone object [, long timestamp_begin [, long timestamp_end ]])","Returns numerically indexed array containing associative array for all transitions in the specified range for the timezone."],timezone_version_get:["array timezone_version_get()","Returns the Olson database version number."],tmpfile:["resource tmpfile()","Create a temporary file that will be deleted automatically after use"],token_get_all:["array token_get_all(string source)",""],token_name:["string token_name(int type)",""],touch:["bool touch(string filename [, int time [, int atime]])","Set modification time of file"],trigger_error:["void trigger_error(string messsage [, int error_type])","Generates a user-level error/warning/notice message"],trim:["string trim(string str [, string character_mask])","Strips whitespace from the beginning and end of a string"],uasort:["bool uasort(array array_arg, string cmp_function)","Sort an array with a user-defined comparison function and maintain index association"],ucfirst:["string ucfirst(string str)","Make a string's first character lowercase"],ucwords:["string ucwords(string str)","Uppercase the first character of every word in a string"],uksort:["bool uksort(array array_arg, string cmp_function)","Sort an array by keys using a user-defined comparison function"],umask:["int umask([int mask])","Return or change the umask"],uniqid:["string uniqid([string prefix [, bool more_entropy]])","Generates a unique ID"],unixtojd:["int unixtojd([int timestamp])","Convert UNIX timestamp to Julian Day"],unlink:["bool unlink(string filename[, context context])","Delete a file"],unpack:["array unpack(string format, string input)","Unpack binary string into named array elements according to format argument"],unregister_tick_function:["void unregister_tick_function(string function_name)","Unregisters a tick callback function"],unserialize:["mixed unserialize(string variable_representation)","Takes a string representation of variable and recreates it"],unset:["void unset(mixed var [, mixed var])","Unset a given variable"],urldecode:["string urldecode(string str)","Decodes URL-encoded string"],urlencode:["string urlencode(string str)","URL-encodes string"],usleep:["void usleep(int micro_seconds)","Delay for a given number of micro seconds"],usort:["bool usort(array array_arg, string cmp_function)","Sort an array by values using a user-defined comparison function"],utf8_decode:["string utf8_decode(string data)","Converts a UTF-8 encoded string to ISO-8859-1"],utf8_encode:["string utf8_encode(string data)","Encodes an ISO-8859-1 string to UTF-8"],var_dump:["void var_dump(mixed var)","Dumps a string representation of variable to output"],var_export:["string var_export(mixed var [, bool return])","Outputs or returns a string representation of a variable"],variant_abs:["mixed variant_abs(mixed left)","Returns the absolute value of a variant"],variant_add:["mixed variant_add(mixed left, mixed right)",'"Adds" two variant values together and returns the result'],variant_and:["mixed variant_and(mixed left, mixed right)","performs a bitwise AND operation between two variants and returns the result"],variant_cast:["object variant_cast(object variant, int type)","Convert a variant into a new variant object of another type"],variant_cat:["mixed variant_cat(mixed left, mixed right)","concatenates two variant values together and returns the result"],variant_cmp:["int variant_cmp(mixed left, mixed right [, int lcid [, int flags]])","Compares two variants"],variant_date_from_timestamp:["object variant_date_from_timestamp(int timestamp)","Returns a variant date representation of a unix timestamp"],variant_date_to_timestamp:["int variant_date_to_timestamp(object variant)","Converts a variant date/time value to unix timestamp"],variant_div:["mixed variant_div(mixed left, mixed right)","Returns the result from dividing two variants"],variant_eqv:["mixed variant_eqv(mixed left, mixed right)","Performs a bitwise equivalence on two variants"],variant_fix:["mixed variant_fix(mixed left)","Returns the integer part ? of a variant"],variant_get_type:["int variant_get_type(object variant)","Returns the VT_XXX type code for a variant"],variant_idiv:["mixed variant_idiv(mixed left, mixed right)","Converts variants to integers and then returns the result from dividing them"],variant_imp:["mixed variant_imp(mixed left, mixed right)","Performs a bitwise implication on two variants"],variant_int:["mixed variant_int(mixed left)","Returns the integer portion of a variant"],variant_mod:["mixed variant_mod(mixed left, mixed right)","Divides two variants and returns only the remainder"],variant_mul:["mixed variant_mul(mixed left, mixed right)","multiplies the values of the two variants and returns the result"],variant_neg:["mixed variant_neg(mixed left)","Performs logical negation on a variant"],variant_not:["mixed variant_not(mixed left)","Performs bitwise not negation on a variant"],variant_or:["mixed variant_or(mixed left, mixed right)","Performs a logical disjunction on two variants"],variant_pow:["mixed variant_pow(mixed left, mixed right)","Returns the result of performing the power function with two variants"],variant_round:["mixed variant_round(mixed left, int decimals)","Rounds a variant to the specified number of decimal places"],variant_set:["void variant_set(object variant, mixed value)","Assigns a new value for a variant object"],variant_set_type:["void variant_set_type(object variant, int type)",'Convert a variant into another type. Variant is modified "in-place"'],variant_sub:["mixed variant_sub(mixed left, mixed right)","subtracts the value of the right variant from the left variant value and returns the result"],variant_xor:["mixed variant_xor(mixed left, mixed right)","Performs a logical exclusion on two variants"],version_compare:["int version_compare(string ver1, string ver2 [, string oper])",'Compares two "PHP-standardized" version number strings'],vfprintf:["int vfprintf(resource stream, string format, array args)","Output a formatted string into a stream"],virtual:["bool virtual(string filename)","Perform an Apache sub-request"],vprintf:["int vprintf(string format, array args)","Output a formatted string"],vsprintf:["string vsprintf(string format, array args)","Return a formatted string"],wddx_add_vars:["int wddx_add_vars(resource packet_id, mixed var_names [, mixed ...])","Serializes given variables and adds them to packet given by packet_id"],wddx_deserialize:["mixed wddx_deserialize(mixed packet)","Deserializes given packet and returns a PHP value"],wddx_packet_end:["string wddx_packet_end(resource packet_id)","Ends specified WDDX packet and returns the string containing the packet"],wddx_packet_start:["resource wddx_packet_start([string comment])","Starts a WDDX packet with optional comment and returns the packet id"],wddx_serialize_value:["string wddx_serialize_value(mixed var [, string comment])","Creates a new packet and serializes the given value"],wddx_serialize_vars:["string wddx_serialize_vars(mixed var_name [, mixed ...])","Creates a new packet and serializes given variables into a struct"],wordwrap:["string wordwrap(string str [, int width [, string break [, bool cut]]])","Wraps buffer to selected number of characters using string break char"],xml_error_string:["string xml_error_string(int code)","Get XML parser error string"],xml_get_current_byte_index:["int xml_get_current_byte_index(resource parser)","Get current byte index for an XML parser"],xml_get_current_column_number:["int xml_get_current_column_number(resource parser)","Get current column number for an XML parser"],xml_get_current_line_number:["int xml_get_current_line_number(resource parser)","Get current line number for an XML parser"],xml_get_error_code:["int xml_get_error_code(resource parser)","Get XML parser error code"],xml_parse:["int xml_parse(resource parser, string data [, int isFinal])","Start parsing an XML document"],xml_parse_into_struct:["int xml_parse_into_struct(resource parser, string data, array &values [, array &index ])","Parsing a XML document"],xml_parser_create:["resource xml_parser_create([string encoding])","Create an XML parser"],xml_parser_create_ns:["resource xml_parser_create_ns([string encoding [, string sep]])","Create an XML parser"],xml_parser_free:["int xml_parser_free(resource parser)","Free an XML parser"],xml_parser_get_option:["int xml_parser_get_option(resource parser, int option)","Get options from an XML parser"],xml_parser_set_option:["int xml_parser_set_option(resource parser, int option, mixed value)","Set options in an XML parser"],xml_set_character_data_handler:["int xml_set_character_data_handler(resource parser, string hdl)","Set up character data handler"],xml_set_default_handler:["int xml_set_default_handler(resource parser, string hdl)","Set up default handler"],xml_set_element_handler:["int xml_set_element_handler(resource parser, string shdl, string ehdl)","Set up start and end element handlers"],xml_set_end_namespace_decl_handler:["int xml_set_end_namespace_decl_handler(resource parser, string hdl)","Set up character data handler"],xml_set_external_entity_ref_handler:["int xml_set_external_entity_ref_handler(resource parser, string hdl)","Set up external entity reference handler"],xml_set_notation_decl_handler:["int xml_set_notation_decl_handler(resource parser, string hdl)","Set up notation declaration handler"],xml_set_object:["int xml_set_object(resource parser, object &obj)","Set up object which should be used for callbacks"],xml_set_processing_instruction_handler:["int xml_set_processing_instruction_handler(resource parser, string hdl)","Set up processing instruction (PI) handler"],xml_set_start_namespace_decl_handler:["int xml_set_start_namespace_decl_handler(resource parser, string hdl)","Set up character data handler"],xml_set_unparsed_entity_decl_handler:["int xml_set_unparsed_entity_decl_handler(resource parser, string hdl)","Set up unparsed entity declaration handler"],xmlrpc_decode:["array xmlrpc_decode(string xml [, string encoding])","Decodes XML into native PHP types"],xmlrpc_decode_request:["array xmlrpc_decode_request(string xml, string& method [, string encoding])","Decodes XML into native PHP types"],xmlrpc_encode:["string xmlrpc_encode(mixed value)","Generates XML for a PHP value"],xmlrpc_encode_request:["string xmlrpc_encode_request(string method, mixed params [, array output_options])","Generates XML for a method request"],xmlrpc_get_type:["string xmlrpc_get_type(mixed value)","Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime strings"],xmlrpc_is_fault:["bool xmlrpc_is_fault(array)","Determines if an array value represents an XMLRPC fault."],xmlrpc_parse_method_descriptions:["array xmlrpc_parse_method_descriptions(string xml)","Decodes XML into a list of method descriptions"],xmlrpc_server_add_introspection_data:["int xmlrpc_server_add_introspection_data(resource server, array desc)","Adds introspection documentation"],xmlrpc_server_call_method:["mixed xmlrpc_server_call_method(resource server, string xml, mixed user_data [, array output_options])","Parses XML requests and call methods"],xmlrpc_server_create:["resource xmlrpc_server_create()","Creates an xmlrpc server"],xmlrpc_server_destroy:["int xmlrpc_server_destroy(resource server)","Destroys server resources"],xmlrpc_server_register_introspection_callback:["bool xmlrpc_server_register_introspection_callback(resource server, string function)","Register a PHP function to generate documentation"],xmlrpc_server_register_method:["bool xmlrpc_server_register_method(resource server, string method_name, string function)","Register a PHP function to handle method matching method_name"],xmlrpc_set_type:["bool xmlrpc_set_type(string value, string type)","Sets xmlrpc type, base64 or datetime, for a PHP string value"],xmlwriter_end_attribute:["bool xmlwriter_end_attribute(resource xmlwriter)","End attribute - returns FALSE on error"],xmlwriter_end_cdata:["bool xmlwriter_end_cdata(resource xmlwriter)","End current CDATA - returns FALSE on error"],xmlwriter_end_comment:["bool xmlwriter_end_comment(resource xmlwriter)","Create end comment - returns FALSE on error"],xmlwriter_end_document:["bool xmlwriter_end_document(resource xmlwriter)","End current document - returns FALSE on error"],xmlwriter_end_dtd:["bool xmlwriter_end_dtd(resource xmlwriter)","End current DTD - returns FALSE on error"],xmlwriter_end_dtd_attlist:["bool xmlwriter_end_dtd_attlist(resource xmlwriter)","End current DTD AttList - returns FALSE on error"],xmlwriter_end_dtd_element:["bool xmlwriter_end_dtd_element(resource xmlwriter)","End current DTD element - returns FALSE on error"],xmlwriter_end_dtd_entity:["bool xmlwriter_end_dtd_entity(resource xmlwriter)","End current DTD Entity - returns FALSE on error"],xmlwriter_end_element:["bool xmlwriter_end_element(resource xmlwriter)","End current element - returns FALSE on error"],xmlwriter_end_pi:["bool xmlwriter_end_pi(resource xmlwriter)","End current PI - returns FALSE on error"],xmlwriter_flush:["mixed xmlwriter_flush(resource xmlwriter [,bool empty])","Output current buffer"],xmlwriter_full_end_element:["bool xmlwriter_full_end_element(resource xmlwriter)","End current element - returns FALSE on error"],xmlwriter_open_memory:["resource xmlwriter_open_memory()","Create new xmlwriter using memory for string output"],xmlwriter_open_uri:["resource xmlwriter_open_uri(resource xmlwriter, string source)","Create new xmlwriter using source uri for output"],xmlwriter_output_memory:["string xmlwriter_output_memory(resource xmlwriter [,bool flush])","Output current buffer as string"],xmlwriter_set_indent:["bool xmlwriter_set_indent(resource xmlwriter, bool indent)","Toggle indentation on/off - returns FALSE on error"],xmlwriter_set_indent_string:["bool xmlwriter_set_indent_string(resource xmlwriter, string indentString)","Set string used for indenting - returns FALSE on error"],xmlwriter_start_attribute:["bool xmlwriter_start_attribute(resource xmlwriter, string name)","Create start attribute - returns FALSE on error"],xmlwriter_start_attribute_ns:["bool xmlwriter_start_attribute_ns(resource xmlwriter, string prefix, string name, string uri)","Create start namespaced attribute - returns FALSE on error"],xmlwriter_start_cdata:["bool xmlwriter_start_cdata(resource xmlwriter)","Create start CDATA tag - returns FALSE on error"],xmlwriter_start_comment:["bool xmlwriter_start_comment(resource xmlwriter)","Create start comment - returns FALSE on error"],xmlwriter_start_document:["bool xmlwriter_start_document(resource xmlwriter, string version, string encoding, string standalone)","Create document tag - returns FALSE on error"],xmlwriter_start_dtd:["bool xmlwriter_start_dtd(resource xmlwriter, string name, string pubid, string sysid)","Create start DTD tag - returns FALSE on error"],xmlwriter_start_dtd_attlist:["bool xmlwriter_start_dtd_attlist(resource xmlwriter, string name)","Create start DTD AttList - returns FALSE on error"],xmlwriter_start_dtd_element:["bool xmlwriter_start_dtd_element(resource xmlwriter, string name)","Create start DTD element - returns FALSE on error"],xmlwriter_start_dtd_entity:["bool xmlwriter_start_dtd_entity(resource xmlwriter, string name, bool isparam)","Create start DTD Entity - returns FALSE on error"],xmlwriter_start_element:["bool xmlwriter_start_element(resource xmlwriter, string name)","Create start element tag - returns FALSE on error"],xmlwriter_start_element_ns:["bool xmlwriter_start_element_ns(resource xmlwriter, string prefix, string name, string uri)","Create start namespaced element tag - returns FALSE on error"],xmlwriter_start_pi:["bool xmlwriter_start_pi(resource xmlwriter, string target)","Create start PI tag - returns FALSE on error"],xmlwriter_text:["bool xmlwriter_text(resource xmlwriter, string content)","Write text - returns FALSE on error"],xmlwriter_write_attribute:["bool xmlwriter_write_attribute(resource xmlwriter, string name, string content)","Write full attribute - returns FALSE on error"],xmlwriter_write_attribute_ns:["bool xmlwriter_write_attribute_ns(resource xmlwriter, string prefix, string name, string uri, string content)","Write full namespaced attribute - returns FALSE on error"],xmlwriter_write_cdata:["bool xmlwriter_write_cdata(resource xmlwriter, string content)","Write full CDATA tag - returns FALSE on error"],xmlwriter_write_comment:["bool xmlwriter_write_comment(resource xmlwriter, string content)","Write full comment tag - returns FALSE on error"],xmlwriter_write_dtd:["bool xmlwriter_write_dtd(resource xmlwriter, string name, string pubid, string sysid, string subset)","Write full DTD tag - returns FALSE on error"],xmlwriter_write_dtd_attlist:["bool xmlwriter_write_dtd_attlist(resource xmlwriter, string name, string content)","Write full DTD AttList tag - returns FALSE on error"],xmlwriter_write_dtd_element:["bool xmlwriter_write_dtd_element(resource xmlwriter, string name, string content)","Write full DTD element tag - returns FALSE on error"],xmlwriter_write_dtd_entity:["bool xmlwriter_write_dtd_entity(resource xmlwriter, string name, string content [, int pe [, string pubid [, string sysid [, string ndataid]]]])","Write full DTD Entity tag - returns FALSE on error"],xmlwriter_write_element:["bool xmlwriter_write_element(resource xmlwriter, string name[, string content])","Write full element tag - returns FALSE on error"],xmlwriter_write_element_ns:["bool xmlwriter_write_element_ns(resource xmlwriter, string prefix, string name, string uri[, string content])","Write full namespaced element tag - returns FALSE on error"],xmlwriter_write_pi:["bool xmlwriter_write_pi(resource xmlwriter, string target, string content)","Write full PI tag - returns FALSE on error"],xmlwriter_write_raw:["bool xmlwriter_write_raw(resource xmlwriter, string content)","Write text - returns FALSE on error"],xsl_xsltprocessor_get_parameter:["string xsl_xsltprocessor_get_parameter(string namespace, string name)",""],xsl_xsltprocessor_has_exslt_support:["bool xsl_xsltprocessor_has_exslt_support()",""],xsl_xsltprocessor_import_stylesheet:["void xsl_xsltprocessor_import_stylesheet(domdocument doc)",""],xsl_xsltprocessor_register_php_functions:["void xsl_xsltprocessor_register_php_functions([mixed $restrict])",""],xsl_xsltprocessor_remove_parameter:["bool xsl_xsltprocessor_remove_parameter(string namespace, string name)",""],xsl_xsltprocessor_set_parameter:["bool xsl_xsltprocessor_set_parameter(string namespace, mixed name [, string value])",""],xsl_xsltprocessor_set_profiling:["bool xsl_xsltprocessor_set_profiling(string filename)",""],xsl_xsltprocessor_transform_to_doc:["domdocument xsl_xsltprocessor_transform_to_doc(domnode doc)",""],xsl_xsltprocessor_transform_to_uri:["int xsl_xsltprocessor_transform_to_uri(domdocument doc, string uri)",""],xsl_xsltprocessor_transform_to_xml:["string xsl_xsltprocessor_transform_to_xml(domdocument doc)",""],zend_logo_guid:["string zend_logo_guid()","Return the special ID used to request the Zend logo in phpinfo screens"],zend_version:["string zend_version()","Get the version of the Zend Engine"],zip_close:["void zip_close(resource zip)","Close a Zip archive"],zip_entry_close:["void zip_entry_close(resource zip_ent)","Close a zip entry"],zip_entry_compressedsize:["int zip_entry_compressedsize(resource zip_entry)","Return the compressed size of a ZZip entry"],zip_entry_compressionmethod:["string zip_entry_compressionmethod(resource zip_entry)","Return a string containing the compression method used on a particular entry"],zip_entry_filesize:["int zip_entry_filesize(resource zip_entry)","Return the actual filesize of a ZZip entry"],zip_entry_name:["string zip_entry_name(resource zip_entry)","Return the name given a ZZip entry"],zip_entry_open:["bool zip_entry_open(resource zip_dp, resource zip_entry [, string mode])","Open a Zip File, pointed by the resource entry"],zip_entry_read:["mixed zip_entry_read(resource zip_entry [, int len])","Read from an open directory entry"],zip_open:["resource zip_open(string filename)","Create new zip using source uri for output"],zip_read:["resource zip_read(resource zip)","Returns the next file in the archive"],zlib_get_coding_type:["string zlib_get_coding_type()","Returns the coding type used for output compression"],array_column:["array_column(array $array, int|string|null $column_key, int|string|null $index_key = null): array","Return the values from a single column in the input array"],boolval:["boolval(mixed $value): bool","Get the boolean value of a variable"],bzclose:["bzclose(resource $bz): bool","Close a bzip2 file"],bzflush:["bzflush(resource $bz): bool","Do nothing"],bzwrite:["bzwrite(resource $bz, string $data, ?int $length = null): int|false","Binary safe bzip2 file write"],checkdnsrr:["checkdnsrr(string $hostname, string $type = "MX"): bool","Check DNS records corresponding to a given Internet host name or IP address"],chop:["chop()","Alias of rtrim()"],class_uses:["class_uses(object|string $object_or_class, bool $autoload = true): array|false",""],curl_escape:["curl_escape(CurlHandle $handle, string $string): string|false","URL encodes the given string"],curl_file_create:["curl_file_create()","Create a CURLFile object"],curl_multi_errno:["curl_multi_errno(CurlMultiHandle $multi_handle): int","Return the last multi curl error number"],curl_multi_setopt:["curl_multi_setopt(CurlMultiHandle $multi_handle, int $option, mixed $value): bool","Set an option for the cURL multi handle"],curl_multi_strerror:["curl_multi_strerror(int $error_code): ?string","Return string describing error code"],curl_pause:["curl_pause(CurlHandle $handle, int $flags): int","Pause and unpause a connection"],curl_reset:["curl_reset(CurlHandle $handle): void","Reset all options of a libcurl session handle"],curl_share_close:["curl_share_close(CurlShareHandle $share_handle): void","Close a cURL share handle"],curl_share_errno:["curl_share_errno(CurlShareHandle $share_handle): int","Return the last share curl error number"],curl_share_init:["curl_share_init(): CurlShareHandle","Initialize a cURL share handle"],curl_share_setopt:["curl_share_setopt(CurlShareHandle $share_handle, int $option, mixed $value): bool","Set an option for a cURL share handle"],curl_share_strerror:["curl_share_strerror(int $error_code): ?string","Return string describing the given error code"],curl_strerror:["curl_strerror(int $error_code): ?string","Return string describing the given error code"],curl_unescape:["curl_unescape(CurlHandle $handle, string $string): string|false","Decodes the given URL encoded string"],date_create_immutable_from_format:["date_create_immutable_from_format()","Alias of DateTimeImmutable::createFromFormat()"],date_create_immutable:["date_create_immutable()","Alias of DateTimeImmutable::__construct()"],deflate_add:["deflate_add(DeflateContext $context, string $data, int $flush_mode = ZLIB_SYNC_FLUSH): string|false","Incrementally deflate data"],deflate_init:["deflate_init(int $encoding, array $options = []): DeflateContext|false","Initialize an incremental deflate context"],"delete":["delete()","See unlink()"],diskfreespace:["diskfreespace()","Alias of disk_free_space()"],doubleval:["doubleval()","Alias of floatval()"],enchant_dict_add:["enchant_dict_add(EnchantDictionary $dictionary, string $word): void","Add a word to personal word list"],enchant_dict_is_added:["enchant_dict_is_added(EnchantDictionary $dictionary, string $word): bool","Whether or not 'word' exists in this spelling-session"],error_clear_last:["error_clear_last(): void","Clear the most recent error"],eval:["eval(string $code): mixed","Evaluate a string as PHP code"],expect_expectl:["expect_expectl(resource $expect, array $cases, array &$match = ?): int",""],expect_popen:["expect_popen(string $command): resource",""],fdiv:["fdiv(float $num1, float $num2): float","Divides two numbers, according to IEEE 754"],filter_id:["filter_id(string $name): int|false","Returns the filter ID belonging to a named filter"],filter_list:["filter_list(): array","Returns a list of all supported filters"],forward_static_call_array:["forward_static_call_array(callable $callback, array $args): mixed","Call a static method and pass the arguments as array"],fputs:["fputs()","Alias of fwrite()"],ftp_append:["ftp_append(FTP\\Connection $ftp, string $remote_filename, string $local_filename, int $mode = FTP_BINARY): bool","Append the contents of a file to another file on the FTP server"],ftp_mlsd:["ftp_mlsd(FTP\\Connection $ftp, string $directory): array|false","Returns a list of files in the given directory"],ftp_quit:["ftp_quit()","Alias of ftp_close()"],gc_mem_caches:["gc_mem_caches(): int",""],gc_status:["gc_status(): array","Gets information about the garbage collector"],get_debug_type:["get_debug_type(mixed $value): string","Gets the type name of a variable in a way that is suitable for debugging"],get_declared_traits:["get_declared_traits(): array","Returns an array of all declared traits"],get_required_files:["get_required_files()","Alias of get_included_files()"],get_resource_id:["get_resource_id(resource $resource): int",""],get_resources:["get_resources(?string $type = null): array","Returns active resources"],getimagesizefromstring:["getimagesizefromstring(string $string, array &$image_info = null): array|false","Get the size of an image from a string"],getmxrr:["getmxrr(string $hostname, array &$hosts, array &$weights = null): bool","Get MX records corresponding to a given Internet host name"],gmp_binomial:["gmp_binomial(GMP|int|string $n, int $k): GMP","Calculates binomial coefficient"],gmp_div:["gmp_div()","Alias of gmp_div_q()"],gmp_export:["gmp_export(GMP|int|string $num, int $word_size = 1, int $flags = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN): string","Export to a binary string"],gmp_import:["gmp_import(string $data, int $word_size = 1, int $flags = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN): GMP","Import from a binary string"],gmp_kronecker:["gmp_kronecker(GMP|int|string $num1, GMP|int|string $num2): int","Kronecker symbol"],gmp_lcm:["gmp_lcm(GMP|int|string $num1, GMP|int|string $num2): GMP","Calculate LCM"],gmp_perfect_power:["gmp_perfect_power(GMP|int|string $num): bool","Perfect power check"],gmp_random_bits:["gmp_random_bits(int $bits): GMP","Random number"],gmp_random_range:["gmp_random_range(GMP|int|string $min, GMP|int|string $max): GMP","Random number"],gmp_random_seed:["gmp_random_seed(GMP|int|string $seed): void","Sets the RNG seed"],gmp_root:["gmp_root(GMP|int|string $num, int $nth): GMP","Take the integer part of nth root"],gmp_rootrem:["gmp_rootrem(GMP|int|string $num, int $nth): array","Take the integer part and remainder of nth root"],gzclose:["gzclose(resource $stream): bool","Close an open gz-file pointer"],gzdecode:["gzdecode(string $data, int $max_length = 0): string|false","Decodes a gzip compressed string"],gzeof:["gzeof(resource $stream): bool","Test for EOF on a gz-file pointer"],gzgetc:["gzgetc(resource $stream): string|false","Get character from gz-file pointer"],gzgets:["gzgets(resource $stream, ?int $length = null): string|false","Get line from file pointer"],gzgetss:["gzgetss(resource $zp, int $length, string $allowable_tags = ?): string",""],gzpassthru:["gzpassthru(resource $stream): int",""],gzputs:["gzputs()","Alias of gzwrite()"],gzread:["gzread(resource $stream, int $length): string|false","Binary-safe gz-file read"],gzrewind:["gzrewind(resource $stream): bool","Rewind the position of a gz-file pointer"],gzseek:["gzseek(resource $stream, int $offset, int $whence = SEEK_SET): int","Seek on a gz-file pointer"],gztell:["gztell(resource $stream): int|false","Tell gz-file pointer read/write position"],gzwrite:["gzwrite(resource $stream, string $data, ?int $length = null): int|false","Binary-safe gz-file write"],halt_compiler:["__halt_compiler(): void",""],hash_equals:["hash_equals(string $known_string, string $user_string): bool","Timing attack safe string comparison"],hash_hkdf:['hash_hkdf(string $algo, string $key, int $length = 0, string $info = "", string $salt = ""): string',"Generate a HKDF key derivation of a supplied key input"],hash_hmac_algos:["hash_hmac_algos(): array","Return a list of registered hashing algorithms suitable for hash_hmac"],hash_pbkdf2:["hash_pbkdf2(string $algo, string $password, string $salt, int $iterations, int $length = 0, bool $binary = false): string","Generate a PBKDF2 key derivation of a supplied password"],header_register_callback:["header_register_callback(callable $callback): bool","Call a header function"],hex2bin:["hex2bin(string $string): string|false","Decodes a hexadecimally encoded binary string"],hrtime:["hrtime(bool $as_number = false): array|int|float|false","Get the system's high resolution time"],http_response_code:["http_response_code(int $response_code = 0): int|bool","Get or Set the HTTP response code"],imageaffine:["imageaffine(GdImage $image, array $affine, ?array $clip = null): GdImage|false","Return an image containing the affine transformed src image, using an optional clipping area"],imageaffinematrixconcat:["imageaffinematrixconcat(array $matrix1, array $matrix2): array|false","Concatenate two affine transformation matrices"],imageaffinematrixget:["imageaffinematrixget(int $type, array|float $options): array|false","Get an affine transformation matrix"],imagebmp:["imagebmp(GdImage $image, resource|string|null $file = null, bool $compressed = true): bool","Output a BMP image to browser or file"],imagecreatefrombmp:["imagecreatefrombmp(string $filename): GdImage|false","Create a new image from file or URL"],imagecreatefromwebp:["imagecreatefromwebp(string $filename): GdImage|false","Create a new image from file or URL"],imagecrop:["imagecrop(GdImage $image, array $rectangle): GdImage|false","Crop an image to the given rectangle"],imagecropauto:["imagecropauto(GdImage $image, int $mode = IMG_CROP_DEFAULT, float $threshold = 0.5, int $color = -1): GdImage|false","Crop an image automatically using one of the available modes"],imageflip:["imageflip(GdImage $image, int $mode): bool","Flips an image using a given mode"],imagegetclip:["imagegetclip(GdImage $image): array","Get the clipping rectangle"],imagegetinterpolation:["imagegetinterpolation(GdImage $image): int","Get the interpolation method"],imageopenpolygon:["imageopenpolygon(GdImage $image, array $points, int $color): bool","Draws an open polygon"],imagepalettetotruecolor:["imagepalettetotruecolor(GdImage $image): bool","Converts a palette based image to true color"],imageresolution:["imageresolution(GdImage $image, ?int $resolution_x = null, ?int $resolution_y = null): array|bool","Get or set the resolution of the image"],imagescale:["imagescale(GdImage $image, int $width, int $height = -1, int $mode = IMG_BILINEAR_FIXED): GdImage|false","Scale an image using the given new width and height"],imagesetclip:["imagesetclip(GdImage $image, int $x1, int $y1, int $x2, int $y2): bool","Set the clipping rectangle"],imagesetinterpolation:["imagesetinterpolation(GdImage $image, int $method = IMG_BILINEAR_FIXED): bool","Set the interpolation method"],imagewebp:["imagewebp(GdImage $image, resource|string|null $file = null, int $quality = -1): bool","Output a WebP image to browser or file"],imap_create:["","Alias of imap_createmailbox()"],imap_fetchmime:["imap_fetchmime(IMAP\\Connection $imap, int $message_num, string $section, int $flags = 0): string|false","Fetch MIME headers for a particular section of the message"],imap_fetchtext:["imap_fetchtext()","Alias of imap_body()"],imap_header:["imap_header()","Alias of imap_headerinfo()"],imap_listmailbox:["imap_listmailbox()","Alias of imap_list()"],imap_listsubscribed:["imap_listsubscribed()","Alias of imap_lsub()"],imap_rename:["imap_rename()","Alias of imap_renamemailbox()"],imap_scan:["imap_scan()","Alias of imap_listscan()"],imap_scanmailbox:["imap_scanmailbox()","Alias of imap_listscan()"],ini_alter:["ini_alter()","Alias of ini_set()"],intdiv:["intdiv(int $num1, int $num2): int","Integer division"],is_double:["is_double()","Alias of is_float()"],is_int:["is_int(mixed $value): bool","Find whether the type of a variable is integer"],is_integer:["is_integer()","Alias of is_int()"],is_iterable:["is_iterable(mixed $value): bool",""],is_real:["is_real()","Alias of is_float()"],is_soap_fault:["is_soap_fault(mixed $object): bool","Checks if a SOAP call has failed"],is_tainted:["is_tainted(string $string): bool","Checks whether a string is tainted"],is_writeable:["is_writeable()","Alias of is_writable()"],json_last_error_msg:["json_last_error_msg(): string","Returns the error string of the last json_encode() or json_decode() call"],key_exists:["key_exists()","Alias of array_key_exists()"],lchown:["lchown(string $filename, string|int $user): bool","Changes user ownership of symlink"],libxml_set_external_entity_loader:["libxml_set_external_entity_loader(?callable $resolver_function): bool","Changes the default external entity loader"],mb_chr:["mb_chr(int $codepoint, ?string $encoding = null): string|false","Return character by Unicode code point value"],mb_ereg_replace_callback:["mb_ereg_replace_callback(string $pattern, callable $callback, string $string, ?string $options = null): string|false|null",""],mb_ord:["mb_ord(string $string, ?string $encoding = null): int|false","Get Unicode code point of character"],mb_scrub:["mb_scrub(string $string, ?string $encoding = null): string","Description"],mb_str_split:["mb_str_split(string $string, int $length = 1, ?string $encoding = null): array","Given a multibyte string, return an array of its characters"],memcache_debug:["memcache_debug(bool $on_off): bool","Turn debug output on/off"],mysql_db_name:["mysql_db_name(resource $result, int $row, mixed $field = NULL): string","Retrieves database name from the call to mysql_list_dbs()"],mysql_tablename:["mysql_tablename(resource $result, int $i): string|false","Get table name of field"],mysql_xdevapi_expression:["mysql_xdevapi\\expression(string $expression): object","Bind prepared statement variables as parameters"],mysql_xdevapi_getsession:["mysql_xdevapi\\getSession(string $uri): mysql_xdevapi\\Session","Connect to a MySQL server"],mysqli_escape_string:["mysqli_escape_string()","Alias of mysqli_real_escape_string()"],mysqli_execute:["mysqli_execute()","Alias for mysqli_stmt_execute()"],mysqli_get_links_stats:["mysqli_get_links_stats(): array","Return information about open and cached links"],mysqli_set_opt:["mysqli_set_opt()","Alias of mysqli_options()"],ob_tidyhandler:["ob_tidyhandler(string $input, int $mode = ?): string","ob_start callback function to repair the buffer"],odbc_do:["odbc_do()","Alias of odbc_exec()"],odbc_field_precision:["odbc_field_precision()","Alias of odbc_field_len()"],opcache_compile_file:["opcache_compile_file(string $filename): bool","Compiles and caches a PHP script without executing it"],opcache_get_configuration:["opcache_get_configuration(): array|false","Get configuration information about the cache"],opcache_get_status:["opcache_get_status(bool $include_scripts = true): array|false","Get status information about the cache"],opcache_invalidate:["opcache_invalidate(string $filename, bool $force = false): bool","Invalidates a cached script"],opcache_is_script_cached:["opcache_is_script_cached(string $filename): bool","Tells whether a script is cached in OPCache"],opcache_reset:["opcache_reset(): bool","Resets the contents of the opcode cache"],password_algos:["password_algos(): array","Get available password hashing algorithm IDs"],password_get_info:["password_get_info(string $hash): array","Returns information about the given hash"],password_hash:["password_hash(string $password, string|int|null $algo, array $options = []): string","Creates a password hash"],password_needs_rehash:["password_needs_rehash(string $hash, string|int|null $algo, array $options = []): bool","Checks if the given hash matches the given options"],password_verify:["password_verify(string $password, string $hash): bool","Verifies that a password matches a hash"],pcntl_async_signals:["pcntl_async_signals(?bool $enable = null): bool","Enable/disable asynchronous signal handling or return the old setting"],pcntl_errno:["pcntl_errno()","Alias of pcntl_get_last_error()"],pcntl_get_last_error:["pcntl_get_last_error(): int","Retrieve the error number set by the last pcntl function which failed"],pcntl_signal_get_handler:["pcntl_signal_get_handler(int $signal): callable|int","Get the current handler for specified signal"],pcntl_sigwaitinfo:["pcntl_sigwaitinfo(array $signals, array &$info = []): int|false","Waits for signals"],pcntl_strerror:["pcntl_strerror(int $error_code): string","Retrieve the system error message associated with the given errno"],pg_connect_poll:["pg_connect_poll(PgSql\\Connection $connection): int",""],pg_consume_input:["pg_consume_input(PgSql\\Connection $connection): bool","Reads input on the connection"],pg_escape_identifier:["pg_escape_identifier(PgSql\\Connection $connection = ?, string $data): string",""],pg_escape_literal:["pg_escape_literal(PgSql\\Connection $connection = ?, string $data): string",""],pg_flush:["pg_flush(PgSql\\Connection $connection): int|bool","Flush outbound query data on the connection"],pg_lo_truncate:["pg_lo_truncate(PgSql\\Lob $lob, int $size): bool",""],pg_socket:["pg_socket(PgSql\\Connection $connection): resource|false",""],pos:["pos()","Alias of current()"],posix_errno:["posix_errno()","Alias of posix_get_last_error()"],posix_setrlimit:["posix_setrlimit(int $resource, int $soft_limit, int $hard_limit): bool","Set system resource limits"],preg_last_error_msg:["preg_last_error_msg(): string","Returns the error message of the last PCRE regex execution"],preg_replace_callback_array:["preg_replace_callback_array(array $pattern, string|array $subject, int $limit = -1, int &$count = null, int $flags = 0): string|array|null","Perform a regular expression search and replace using callbacks"],ps_translate:["ps_translate(resource $psdoc, float $x, float $y): bool","Sets translation"],random_bytes:["random_bytes(int $length): string","Generates cryptographically secure pseudo-random bytes"],random_int:["random_int(int $min, int $max): int","Generates cryptographically secure pseudo-random integers"],read_exif_data:["read_exif_data()","Alias of exif_read_data()"],recode:["recode()","Alias of recode_string()"],session_abort:["session_abort(): bool","Discard session array changes and finish session"],session_commit:["session_commit()","Alias of session_write_close()"],session_create_id:['session_create_id(string $prefix = ""): string|false',"Create new session id"],session_gc:["session_gc(): int|false","Perform session data garbage collection"],session_register_shutdown:["session_register_shutdown(): void","Session shutdown function"],session_reset:["session_reset(): bool","Re-initialize session array with original values"],session_status:["session_status(): int","Returns the current session status"],set_file_buffer:["set_file_buffer()","Alias of stream_set_write_buffer()"],show_source:["show_source()","Alias of highlight_file()"],sizeof:["sizeof()","Alias of count()"],snmp_set_oid_numeric_print:["snmp_set_oid_numeric_print(int $format): bool",""],snmpwalkoid:["snmpwalkoid(string $hostname, string $community, array|string $object_id, int $timeout = -1, int $retries = -1): array|false",""],socket_addrinfo_bind:["socket_addrinfo_bind(AddressInfo $address): Socket|false","Create and bind to a socket from a given addrinfo"],socket_addrinfo_connect:["socket_addrinfo_connect(AddressInfo $address): Socket|false","Create and connect to a socket from a given addrinfo"],socket_addrinfo_explain:["socket_addrinfo_explain(AddressInfo $address): array","Get information about addrinfo"],socket_addrinfo_lookup:["socket_addrinfo_lookup(string $host, ?string $service = null, array $hints = []): array|false","Get array with contents of getaddrinfo about the given hostname"],socket_cmsg_space:["socket_cmsg_space(int $level, int $type, int $num = 0): ?int","Calculate message buffer size"],socket_export_stream:["socket_export_stream(Socket $socket): resource|false","Export a socket into a stream that encapsulates a socket"],socket_get_status:["socket_get_status()","Alias of stream_get_meta_data()"],socket_getopt:["socket_getopt()","Alias of socket_get_option()"],socket_import_stream:["socket_import_stream(resource $stream): Socket|false","Import a stream"],socket_recvmsg:["socket_recvmsg(Socket $socket, array &$message, int $flags = 0): int|false","Read a message"],socket_sendmsg:["socket_sendmsg(Socket $socket, array $message, int $flags = 0): int|false","Send a message"],socket_set_blocking:["socket_set_blocking()","Alias of stream_set_blocking()"],socket_set_timeout:["socket_set_timeout()","Alias of stream_set_timeout()"],socket_setopt:["socket_setopt()","Alias of socket_set_option()"],socket_wsaprotocol_info_export:["socket_wsaprotocol_info_export(Socket $socket, int $process_id): string|false","Exports the WSAPROTOCOL_INFO Structure"],socket_wsaprotocol_info_import:["socket_wsaprotocol_info_import(string $info_id): Socket|false","Imports a Socket from another Process"],socket_wsaprotocol_info_release:["socket_wsaprotocol_info_release(string $info_id): bool","Releases an exported WSAPROTOCOL_INFO Structure"],spl_object_id:["spl_object_id(object $object): int",""],sqlsrv_begin_transaction:["sqlsrv_begin_transaction(resource $conn): bool","Begins a database transaction"],sqlsrv_cancel:["sqlsrv_cancel(resource $stmt): bool","Cancels a statement"],sqlsrv_client_info:["sqlsrv_client_info(resource $conn): array","Returns information about the client and specified connection"],sqlsrv_close:["sqlsrv_close(resource $conn): bool","Closes an open connection and releases resourses associated with the connection"],sqlsrv_commit:["sqlsrv_commit(resource $conn): bool","Commits a transaction that was begun with sqlsrv_begin_transaction()"],sqlsrv_configure:["sqlsrv_configure(string $setting, mixed $value): bool","Changes the driver error handling and logging configurations"],sqlsrv_connect:["sqlsrv_connect(string $serverName, array $connectionInfo = ?): resource","Opens a connection to a Microsoft SQL Server database"],sqlsrv_errors:["sqlsrv_errors(int $errorsOrWarnings = ?): mixed","Returns error and warning information about the last SQLSRV operation performed"],sqlsrv_execute:["sqlsrv_execute(resource $stmt): bool","Executes a statement prepared with sqlsrv_prepare()"],sqlsrv_fetch_array:["sqlsrv_fetch_array(resource $stmt, int $fetchType = ?, int $row = ?, int $offset = ?): array","Returns a row as an array"],sqlsrv_fetch_object:["sqlsrv_fetch_object(resource $stmt, string $className = ?, array $ctorParams = ?, int $row = ?, int $offset = ?): mixed","Retrieves the next row of data in a result set as an object"],sqlsrv_fetch:["sqlsrv_fetch(resource $stmt, int $row = ?, int $offset = ?): mixed","Makes the next row in a result set available for reading"],sqlsrv_field_metadata:["sqlsrv_field_metadata(resource $stmt): mixed",""],sqlsrv_free_stmt:["sqlsrv_free_stmt(resource $stmt): bool","Frees all resources for the specified statement"],sqlsrv_get_config:["sqlsrv_get_config(string $setting): mixed","Returns the value of the specified configuration setting"],sqlsrv_get_field:["sqlsrv_get_field(resource $stmt, int $fieldIndex, int $getAsType = ?): mixed","Gets field data from the currently selected row"],sqlsrv_has_rows:["sqlsrv_has_rows(resource $stmt): bool","Indicates whether the specified statement has rows"],sqlsrv_next_result:["sqlsrv_next_result(resource $stmt): mixed","Makes the next result of the specified statement active"],sqlsrv_num_fields:["sqlsrv_num_fields(resource $stmt): mixed","Retrieves the number of fields (columns) on a statement"],sqlsrv_num_rows:["sqlsrv_num_rows(resource $stmt): mixed","Retrieves the number of rows in a result set"],sqlsrv_prepare:["sqlsrv_prepare(resource $conn, string $sql, array $params = ?, array $options = ?): mixed","Prepares a query for execution"],sqlsrv_query:["sqlsrv_query(resource $conn, string $sql, array $params = ?, array $options = ?): mixed","Prepares and executes a query"],sqlsrv_rollback:["sqlsrv_rollback(resource $conn): bool",""],sqlsrv_rows_affected:["sqlsrv_rows_affected(resource $stmt): int|false",""],sqlsrv_send_stream_data:["sqlsrv_send_stream_data(resource $stmt): bool","Sends data from parameter streams to the server"],sqlsrv_server_info:["sqlsrv_server_info(resource $conn): array","Returns information about the server"],str_contains:["str_contains(string $haystack, string $needle): bool","Determine if a string contains a given substring"],str_ends_with:["str_ends_with(string $haystack, string $needle): bool","Checks if a string ends with a given substring"],str_starts_with:["str_starts_with(string $haystack, string $needle): bool","Checks if a string starts with a given substring"],stream_isatty:["stream_isatty(resource $stream): bool","Check if a stream is a TTY"],stream_notification_callback:["stream_notification_callback(int $notification_code, int $severity, string $message, int $message_code, int $bytes_transferred, int $bytes_max): void","A callback function for the notification context parameter"],stream_register_wrapper:["stream_register_wrapper()","Alias of stream_wrapper_register()"],stream_set_chunk_size:["stream_set_chunk_size(resource $stream, int $size): int","Set the stream chunk size"],stream_set_read_buffer:["stream_set_read_buffer(resource $stream, int $size): int","Set read file buffering on the given stream"],tcpwrap_check:["tcpwrap_check(string $daemon, string $address, string $user = ?, bool $nodns = false): bool","Performs a tcpwrap check"],trait_exists:["trait_exists(string $trait, bool $autoload = true): bool","Checks if the trait exists"],use_soap_error_handler:["use_soap_error_handler(bool $enable = true): bool","Set whether to use the SOAP error handler"],user_error:["user_error()","Alias of trigger_error()"],yaml_emit_file:["yaml_emit_file(string $filename, mixed $data, int $encoding = YAML_ANY_ENCODING, int $linebreak = YAML_ANY_BREAK, array $callbacks = null): bool","Send the YAML representation of a value to a file"],yaml_emit:["yaml_emit(mixed $data, int $encoding = YAML_ANY_ENCODING, int $linebreak = YAML_ANY_BREAK, array $callbacks = null): string","Returns the YAML representation of a value"],yaml_parse_file:["yaml_parse_file(string $filename, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed","Parse a YAML stream from a file"],yaml_parse_url:["yaml_parse_url(string $url, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed","Parse a Yaml stream from a URL"],yaml_parse:["yaml_parse(string $input, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed","Parse a YAML stream"],zlib_decode:["zlib_decode(string $data, int $max_length = 0): string|false","Uncompress any raw/gzip/zlib encoded data"],zlib_encode:["zlib_encode(string $data, int $encoding, int $level = -1): string|false","Compress data with the specified encoding"]},i={$_COOKIE:{type:"array"},$_ENV:{type:"array"},$_FILES:{type:"array"},$_GET:{type:"array"},$_POST:{type:"array"},$_REQUEST:{type:"array"},$_SERVER:{type:"array",value:{DOCUMENT_ROOT:1,GATEWAY_INTERFACE:1,HTTP_ACCEPT:1,HTTP_ACCEPT_CHARSET:1,HTTP_ACCEPT_ENCODING:1,HTTP_ACCEPT_LANGUAGE:1,HTTP_CONNECTION:1,HTTP_HOST:1,HTTP_REFERER:1,HTTP_USER_AGENT:1,PATH_TRANSLATED:1,PHP_SELF:1,QUERY_STRING:1,REMOTE_ADDR:1,REMOTE_PORT:1,REQUEST_METHOD:1,REQUEST_URI:1,SCRIPT_FILENAME:1,SCRIPT_NAME:1,SERVER_ADMIN:1,SERVER_NAME:1,SERVER_PORT:1,SERVER_PROTOCOL:1,SERVER_SIGNATURE:1,SERVER_SOFTWARE:1,argv:1,argc:1}},$_SESSION:{type:"array"},$GLOBALS:{type:"array"},$argv:{type:"array"},$argc:{type:"int"}},o=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(i.type==="support.php_tag"&&i.value==="0){var o=t.getTokenAt(n.row,i.start);if(o.type==="support.php_tag")return this.getTagCompletions(e,t,n,r)}return this.getFunctionCompletions(e,t,n,r)}if(s(i,"variable"))return this.getVariableCompletions(e,t,n,r);var u=t.getLine(n.row).substr(0,n.column);return i.type==="string"&&/(\$[\w]*)\[["']([^'"]*)$/i.test(u)?this.getArrayKeyCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return[{caption:"php",value:"php",meta:"php tag",score:1e6},{caption:"=",value:"=",meta:"php tag",score:1e6}]},this.getFunctionCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+"($0)",meta:"php function",score:1e6,docHTML:r[e][1]}})},this.getVariableCompletions=function(e,t,n,r){var s=Object.keys(i);return s.map(function(e){return{caption:e,value:e,meta:"php variable",score:1e6}})},this.getArrayKeyCompletions=function(e,t,n,r){var s=t.getLine(n.row).substr(0,n.column),o=s.match(/(\$[\w]*)\[["']([^'"]*)$/i)[1];if(!i[o])return[];var u=[];return i[o].type==="array"&&i[o].value&&(u=Object.keys(i[o].value)),u.map(function(e){return{caption:e,value:e,meta:"php array key",score:1e6}})}}).call(o.prototype),t.PhpCompletions=o}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/php",["require","exports","module","ace/lib/oop","ace/mode/folding/cstyle","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./cstyle").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.indentKeywords={"if":1,"while":1,"for":1,foreach:1,"switch":1,"else":0,elseif:0,endif:-1,endwhile:-1,endfor:-1,endforeach:-1,endswitch:-1},this.foldingStartMarkerPhp=/(?:\s|^)(if|else|elseif|while|for|foreach|switch).*\:/i,this.foldingStopMarkerPhp=/(?:\s|^)(endif|endwhile|endfor|endforeach|endswitch)\;/i,this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarkerPhp.exec(r);if(i)return this.phpBlock(e,n,i.index+2);var i=this.foldingStopMarkerPhp.exec(r);return i?this.phpBlock(e,n,i.index+2):this.getFoldWidgetRangeBase(e,t,n)},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarkerPhp.test(r),s=this.foldingStopMarkerPhp.test(r);if(i&&!s){var o=this.foldingStartMarkerPhp.exec(r),u=o&&o[1].toLowerCase();if(u){var a=e.getTokenAt(n,o.index+2).type;if(a=="keyword")return"start"}}if(s&&t==="markbeginend"){var o=this.foldingStopMarkerPhp.exec(r),u=o&&o[1].toLowerCase();if(u){var a=e.getTokenAt(n,o.index+2).type;if(a=="keyword")return"end"}}return this.getFoldWidgetBase(e,t,n)},this.phpBlock=function(e,t,n,r){var i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!="keyword")return;var a=u.value,f=[a],l=this.indentKeywords[a];if(a==="else"||a==="elseif")l=1;if(!l)return;var c=l===-1?i.getCurrentTokenColumn():e.getLine(t).length,h=t;i.step=l===-1?i.stepBackward:i.stepForward;while(u=i.step()){if(u.type!=="keyword")continue;var p=l*this.indentKeywords[u.value];if(p>0)f.unshift(u.value);else if(p<=0){f.shift();if(!f.length)break;p===0&&f.unshift(u.value)}}if(!u)return null;if(r)return i.getCurrentTokenRange();var t=i.getCurrentTokenRow();return l===-1?new s(t,e.getLine(t).length,h,c):new s(h,c,t,i.getCurrentTokenColumn())}}.call(u.prototype)}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/php",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/php_highlight_rules","ace/mode/php_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/php_completions","ace/mode/folding/php","ace/unicode","ace/mode/folding/mixed","ace/mode/folding/html","ace/mode/folding/cstyle","ace/mode/html","ace/mode/javascript","ace/mode/css"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./php_highlight_rules").PhpHighlightRules,o=e("./php_highlight_rules").PhpLangHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../worker/worker_client").WorkerClient,f=e("./php_completions").PhpCompletions,l=e("./folding/php").FoldMode,c=e("../unicode"),h=e("./folding/mixed").FoldMode,p=e("./folding/html").FoldMode,d=e("./folding/cstyle").FoldMode,v=e("./html").Mode,m=e("./javascript").Mode,g=e("./css").Mode,y=function(e){this.HighlightRules=o,this.$outdent=new u,this.$behaviour=this.$defaultBehaviour,this.$completer=new f,this.foldingRules=new h(new p,{"js-":new d,"css-":new d,"php-":new l})};r.inherits(y,i),function(){this.tokenRe=new RegExp("^["+c.wordChars+"_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+c.wordChars+"_]|\\s])+","g"),this.lineCommentStart=["//","#"],this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[:]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o!="doc-start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.$id="ace/mode/php-inline"}.call(y.prototype);var b=function(e){if(e&&e.inline){var t=new y;return t.createWorker=this.createWorker,t.inlinePhp=!0,t}v.call(this),this.HighlightRules=s,this.createModeDelegates({"js-":m,"css-":g,"php-":y}),this.foldingRules=new h(new p,{"js-":new d,"css-":new d,"php-":new l})};r.inherits(b,v),function(){this.createWorker=function(e){var t=new a(["ace"],"ace/mode/php_worker","PhpWorker");return t.attachToDocument(e.getDocument()),this.inlinePhp&&t.call("setOptions",[{inline:!0}]),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/php",this.snippetFileId="ace/snippets/php"}.call(b.prototype),t.Mode=b}),define("ace/mode/php_laravel_blade",["require","exports","module","ace/lib/oop","ace/mode/php_laravel_blade_highlight_rules","ace/mode/php","ace/mode/javascript","ace/mode/css","ace/mode/html"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./php_laravel_blade_highlight_rules").PHPLaravelBladeHighlightRules,s=e("./php").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html").Mode,f=function(){s.call(this),this.HighlightRules=i,this.createModeDelegates({"js-":o,"css-":u,"html-":a})};r.inherits(f,s),function(){this.$id="ace/mode/php_laravel_blade"}.call(f.prototype),t.Mode=f}); (function() { - window.require(["ace/mode/php_laravel_blade"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-pig.js b/www/js/ace/mode-pig.js deleted file mode 100644 index 481a034d1..000000000 --- a/www/js/ace/mode-pig.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/pig_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.block.pig",regex:/\/\*/,push:[{token:"comment.block.pig",regex:/\*\//,next:"pop"},{defaultToken:"comment.block.pig"}]},{token:"comment.line.double-dash.asciidoc",regex:/--.*$/},{token:"keyword.control.pig",regex:/\b(?:ASSERT|LOAD|STORE|DUMP|FILTER|DISTINCT|FOREACH|GENERATE|STREAM|JOIN|COGROUP|GROUP|CROSS|ORDER|LIMIT|UNION|SPLIT|DESCRIBE|EXPLAIN|ILLUSTRATE|AS|BY|INTO|USING|LIMIT|PARALLEL|OUTER|INNER|DEFAULT|LEFT|SAMPLE|RANK|CUBE|ALL|KILL|QUIT|MAPREDUCE|ASC|DESC|THROUGH|SHIP|CACHE|DECLARE|CASE|WHEN|THEN|END|IN|PARTITION|FULL|IMPORT|IF|ONSCHEMA|INPUT|OUTPUT)\b/,caseInsensitive:!0},{token:"storage.datatypes.pig",regex:/\b(?:int|long|float|double|chararray|bytearray|boolean|datetime|biginteger|bigdecimal|tuple|bag|map)\b/,caseInsensitive:!0},{token:"support.function.storage.pig",regex:/\b(?:PigStorage|BinStorage|BinaryStorage|PigDump|HBaseStorage|JsonLoader|JsonStorage|AvroStorage|TextLoader|PigStreaming|TrevniStorage|AccumuloStorage)\b/},{token:"support.function.udf.pig",regex:/\b(?:DIFF|TOBAG|TOMAP|TOP|TOTUPLE|RANDOM|FLATTEN|flatten|CUBE|ROLLUP|IsEmpty|ARITY|PluckTuple|SUBTRACT|BagToString)\b/},{token:"support.function.udf.math.pig",regex:/\b(?:ABS|ACOS|ASIN|ATAN|CBRT|CEIL|COS|COSH|EXP|FLOOR|LOG|LOG10|ROUND|ROUND_TO|SIN|SINH|SQRT|TAN|TANH|AVG|COUNT|COUNT_STAR|MAX|MIN|SUM|COR|COV)\b/},{token:"support.function.udf.string.pig",regex:/\b(?:CONCAT|INDEXOF|LAST_INDEX_OF|LCFIRST|LOWER|REGEX_EXTRACT|REGEX_EXTRACT_ALL|REPLACE|SIZE|STRSPLIT|SUBSTRING|TOKENIZE|TRIM|UCFIRST|UPPER|LTRIM|RTRIM|ENDSWITH|STARTSWITH|TRIM)\b/},{token:"support.function.udf.datetime.pig",regex:/\b(?:AddDuration|CurrentTime|DaysBetween|GetDay|GetHour|GetMilliSecond|GetMinute|GetMonth|GetSecond|GetWeek|GetWeekYear|GetYear|HoursBetween|MilliSecondsBetween|MinutesBetween|MonthsBetween|SecondsBetween|SubtractDuration|ToDate|WeeksBetween|YearsBetween|ToMilliSeconds|ToString|ToUnixTime)\b/},{token:"support.function.command.pig",regex:/\b(?:cat|cd|copyFromLocal|copyToLocal|cp|ls|mkdir|mv|pwd|rm)\b/},{token:"variable.pig",regex:/\$[a_zA-Z0-9_]+/},{token:"constant.language.pig",regex:/\b(?:NULL|true|false|stdin|stdout|stderr)\b/,caseInsensitive:!0},{token:"constant.numeric.pig",regex:/\b\d+(?:\.\d+)?\b/},{token:"keyword.operator.comparison.pig",regex:/!=|==|<|>|<=|>=|\b(?:MATCHES|IS|OR|AND|NOT)\b/,caseInsensitive:!0},{token:"keyword.operator.arithmetic.pig",regex:/\+|\-|\*|\/|\%|\?|:|::|\.\.|#/},{token:"string.quoted.double.pig",regex:/"/,push:[{token:"string.quoted.double.pig",regex:/"/,next:"pop"},{token:"constant.character.escape.pig",regex:/\\./},{defaultToken:"string.quoted.double.pig"}]},{token:"string.quoted.single.pig",regex:/'/,push:[{token:"string.quoted.single.pig",regex:/'/,next:"pop"},{token:"constant.character.escape.pig",regex:/\\./},{defaultToken:"string.quoted.single.pig"}]},{todo:{token:["text","keyword.parameter.pig","text","storage.type.parameter.pig"],regex:/^(\s*)(set)(\s+)(\S+)/,caseInsensitive:!0,push:[{token:"text",regex:/$/,next:"pop"},{include:"$self"}]}},{token:["text","keyword.alias.pig","text","storage.type.alias.pig"],regex:/(\s*)(DEFINE|DECLARE|REGISTER)(\s+)(\S+)/,caseInsensitive:!0,push:[{token:"text",regex:/;?$/,next:"pop"}]}]},this.normalizeRules()};s.metaData={fileTypes:["pig"],name:"Pig",scopeName:"source.pig"},r.inherits(s,i),t.PigHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/pig",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pig_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./pig_highlight_rules").PigHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/pig"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/pig"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-plain_text.js b/www/js/ace/mode-plain_text.js deleted file mode 100644 index d9de62005..000000000 --- a/www/js/ace/mode-plain_text.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,u=function(){this.HighlightRules=s,this.$behaviour=new o};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){return""},this.$id="ace/mode/plain_text"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/plain_text"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-plsql.js b/www/js/ace/mode-plsql.js deleted file mode 100644 index c93b744b7..000000000 --- a/www/js/ace/mode-plsql.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/plsql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="all|alter|and|any|array|arrow|as|asc|at|begin|between|by|case|check|clusters|cluster|colauth|columns|compress|connect|crash|create|cross|current|database|declare|default|delete|desc|distinct|drop|else|end|exception|exclusive|exists|fetch|form|for|foreign|from|goto|grant|group|having|identified|if|in|inner|indexes|index|insert|intersect|into|is|join|key|left|like|lock|minus|mode|natural|nocompress|not|nowait|null|of|on|option|or|order,overlaps|outer|primary|prior|procedure|public|range|record|references|resource|revoke|right|select|share|size|sql|start|subtype|tabauth|table|then|to|type|union|unique|update|use|values|view|views|when|where|with",t="true|false",n="abs|acos|add_months|ascii|asciistr|asin|atan|atan2|avg|bfilename|bin_to_num|bitand|cardinality|case|cast|ceil|chartorowid|chr|coalesce|compose|concat|convert|corr|cos|cosh|count|covar_pop|covar_samp|cume_dist|current_date|current_timestamp|dbtimezone|decode|decompose|dense_rank|dump|empty_blob|empty_clob|exp|extract|first_value|floor|from_tz|greatest|group_id|hextoraw|initcap|instr|instr2|instr4|instrb|instrc|lag|last_day|last_value|lead|least|length|length2|length4|lengthb|lengthc|listagg|ln|lnnvl|localtimestamp|log|lower|lpad|ltrim|max|median|min|mod|months_between|nanvl|nchr|new_time|next_day|nth_value|nullif|numtodsinterval|numtoyminterval|nvl|nvl2|power|rank|rawtohex|regexp_count|regexp_instr|regexp_replace|regexp_substr|remainder|replace|round|rownum|rpad|rtrim|sessiontimezone|sign|sin|sinh|soundex|sqrt|stddev|substr|sum|sys_context|sysdate|systimestamp|tan|tanh|to_char|to_clob|to_date|to_dsinterval|to_lob|to_multi_byte|to_nclob|to_number|to_single_byte|to_timestamp|to_timestamp_tz|to_yminterval|translate|trim|trunc|tz_offset|uid|upper|user|userenv|var_pop|var_samp|variance|vsize",r="char|nchar|nvarchar2|varchar2|long|raw|number|numeric|float|dec|decimal|integer|int|smallint|real|double|precision|date|timestamp|interval|year|day|bfile|blob|clob|nclob|rowid|urowid",i=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t,"storage.type":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"comment",start:"/\\*",end:"\\*/"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]},this.normalizeRules()};r.inherits(s,i),t.plsqlHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/sql",["require","exports","module","ace/lib/oop","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./cstyle").FoldMode,s=t.FoldMode=function(){};r.inherits(s,i),function(){}.call(s.prototype)}),define("ace/mode/plsql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/plsql_highlight_rules","ace/mode/folding/sql"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./plsql_highlight_rules").plsqlHighlightRules,o=e("./folding/sql").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/plsql"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/plsql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-powershell.js b/www/js/ace/mode-powershell.js deleted file mode 100644 index a6e9227fe..000000000 --- a/www/js/ace/mode-powershell.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/powershell_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="[a-zA-Z\\?_\u00a1-\uffff][a-zA-Z\\d\\?_\u00a1-\uffff]*",t="begin|break|catch|class|continue|data|define|do|dynamicparam|else|elseif|end|enum|exit|filter|finally|for|foreach|from|function|if|in|inlinescript|hidden|parallel|param|process|return|static|sequence|switch|throw|trap|try|until|using|while|workflow|var",n="Get-AppBackgroundTask|Start-AppBackgroundTask|Unregister-AppBackgroundTask|Disable-AppBackgroundTaskDiagnosticLog|Enable-AppBackgroundTaskDiagnosticLog|Set-AppBackgroundTaskResourcePolicy|Get-AppLockerFileInformation|Get-AppLockerPolicy|New-AppLockerPolicy|Set-AppLockerPolicy|Test-AppLockerPolicy|Add-AppvClientConnectionGroup|Add-AppvClientPackage|Add-AppvPublishingServer|Disable-Appv|Disable-AppvClientConnectionGroup|Disable-AppvClientMode|Disable-AppvPublishingServer|Enable-Appv|Enable-AppvClientConnectionGroup|Enable-AppvClientMode|Enable-AppvPublishingServer|Get-AppvClientApplication|Get-AppvClientConfiguration|Get-AppvClientConnectionGroup|Get-AppvClientMode|Get-AppvClientPackage|Get-AppvClientPackageStatus|Get-AppvClientPackageVersion|Get-AppvClientPackageVersionHistory|Get-AppvClientPackageVersionStatus|Get-AppvClientPublishingServer|Get-AppvClientSFTFileSystem|Get-AppvClientStatus|Get-AppvPublishingServer|Get-AppvVirtualProcess|Publish-AppvClientPackage|Remove-AppvClientConnectionGroup|Remove-AppvClientPackage|Remove-AppvPublishingServer|Set-AppvClientConfiguration|Set-AppvClientMode|Set-AppvClientPackage|Set-AppvClientPublishingServer|Set-AppvVirtualProcess|Sync-AppvPublishingServer|Get-AppvStatus|Mount-AppvClientConnectionGroup|Repair-AppvClientConnectionGroup|Repair-AppvClientPackage|Send-AppvClientReport|Set-AppvPublishingServer|Start-AppvVirtualProcess|Stop-AppvClientConnectionGroup|Stop-AppvClientPackage|Unpublish-AppvClientPackage|Expand-AppvSequencerPackage|New-AppvPackageAccelerator|New-AppvSequencerPackage|Update-AppvSequencerPackage|Add-AppSharedPackageContainer|Add-AppxPackage|Add-AppxVolume|Dismount-AppxVolume|Get-AppSharedPackageContainer|Get-AppxDefaultVolume|Get-AppxLastError|Get-AppxLog|Get-AppxPackage|Get-AppxPackageAutoUpdateSettings|Get-AppxPackageManifest|Get-AppxVolume|Invoke-CommandInDesktopPackage|Mount-AppxVolume|Move-AppxPackage|Remove-AppSharedPackageContainer|Remove-AppxPackage|Remove-AppxPackageAutoUpdateSettings|Remove-AppxVolume|Reset-AppSharedPackageContainer|Reset-AppxPackage|Set-AppxDefaultVolume|Set-AppxPackageAutoUpdateSettings|Clear-AssignedAccess|Get-AssignedAccess|Set-AssignedAccess|Get-BpaModel|Get-BpaResult|Invoke-BpaModel|Set-BpaResult|Add-BitLockerKeyProtector|Backup-BitLockerKeyProtector|BackupToAAD-BitLockerKeyProtector|Clear-BitLockerAutoUnlock|Disable-BitLocker|Disable-BitLockerAutoUnlock|Enable-BitLocker|Enable-BitLockerAutoUnlock|Get-BitLockerVolume|Lock-BitLocker|Remove-BitLockerKeyProtector|Resume-BitLocker|Suspend-BitLocker|Unlock-BitLocker|Add-BitsFile|Complete-BitsTransfer|Get-BitsTransfer|Remove-BitsTransfer|Resume-BitsTransfer|Set-BitsTransfer|Start-BitsTransfer|Suspend-BitsTransfer|Checkpoint-SbecActiveConfig|Clear-SbecProviderCache|Disable-SbecAutologger|Disable-SbecBcd|Enable-SbecAutologger|Enable-SbecBcd|Enable-SbecBootImage|Enable-SbecWdsBcd|Get-SbecActiveConfig|Get-SbecBackupConfig|Get-SbecDestination|Get-SbecForwarding|Get-SbecHistory|Get-SbecLocalizedMessage|Get-SbecLogSession|Get-SbecTraceProviders|New-SbecUnattendFragment|Redo-SbecActiveConfig|Restore-SbecBackupConfig|Save-SbecInstance|Save-SbecLogSession|Set-SbecActiveConfig|Set-SbecLogSession|Start-SbecInstance|Start-SbecLogSession|Start-SbecNtKernelLogSession|Start-SbecSimpleLogSession|Stop-SbecInstance|Stop-SbecLogSession|Test-SbecActiveConfig|Test-SbecConfig|Undo-SbecActiveConfig|Add-BCDataCacheExtension|Clear-BCCache|Disable-BC|Disable-BCDowngrading|Disable-BCServeOnBattery|Enable-BCDistributed|Enable-BCDowngrading|Enable-BCHostedClient|Enable-BCHostedServer|Enable-BCLocal|Enable-BCServeOnBattery|Export-BCCachePackage|Export-BCSecretKey|Get-BCClientConfiguration|Get-BCContentServerConfiguration|Get-BCDataCache|Get-BCDataCacheExtension|Get-BCHashCache|Get-BCHostedCacheServerConfiguration|Get-BCNetworkConfiguration|Get-BCStatus|Import-BCCachePackage|Import-BCSecretKey|Publish-BCFileContent|Publish-BCWebContent|Remove-BCDataCacheExtension|Reset-BC|Set-BCAuthentication|Set-BCCache|Set-BCDataCacheEntryMaxAge|Set-BCMinSMBLatency|Set-BCSecretKey|Add-CauClusterRole|Disable-CauClusterRole|Enable-CauClusterRole|Export-CauReport|Get-CauClusterRole|Get-CauPlugin|Get-CauReport|Get-CauRun|Invoke-CauRun|Invoke-CauScan|Register-CauPlugin|Remove-CauClusterRole|Save-CauDebugTrace|Set-CauClusterRole|Stop-CauRun|Test-CauSetup|Unregister-CauPlugin|Export-BinaryMiLog|Get-CimAssociatedInstance|Get-CimClass|Get-CimInstance|Get-CimSession|Import-BinaryMiLog|Invoke-CimMethod|New-CimInstance|New-CimSession|New-CimSessionOption|Register-CimIndicationEvent|Remove-CimInstance|Remove-CimSession|Set-CimInstance|ConvertFrom-CIPolicy|Add-SignerRule|ConvertFrom-CIPolicy|Edit-CIPolicyRule|Get-CIPolicy|Get-CIPolicyIdInfo|Get-CIPolicyInfo|Get-SystemDriver|Merge-CIPolicy|New-CIPolicy|New-CIPolicyRule|Remove-CIPolicyRule|Set-CIPolicyIdInfo|Set-CIPolicySetting|Set-CIPolicyVersion|Set-HVCIOptions|Set-RuleOption|Disable-NetQosFlowControl|Enable-NetQosFlowControl|Get-NetQosDcbxSetting|Get-NetQosFlowControl|Get-NetQosTrafficClass|New-NetQosTrafficClass|Remove-NetQosTrafficClass|Set-NetQosDcbxSetting|Set-NetQosFlowControl|Set-NetQosTrafficClass|Switch-NetQosDcbxSetting|Switch-NetQosFlowControl|Switch-NetQosTrafficClass|Disable-DedupVolume|Enable-DedupVolume|Expand-DedupFile|Get-DedupJob|Get-DedupMetadata|Get-DedupSchedule|Get-DedupStatus|Get-DedupVolume|Measure-DedupFileMetadata|New-DedupSchedule|Remove-DedupSchedule|Set-DedupSchedule|Set-DedupVolume|Start-DedupJob|Stop-DedupJob|Update-DedupStatus|Add-MpPreference|Get-MpComputerStatus|Get-MpPreference|Get-MpThreat|Get-MpThreatCatalog|Get-MpThreatDetection|Remove-MpPreference|Remove-MpThreat|Set-MpPreference|Start-MpScan|Start-MpWDOScan|Update-MpSignature|Backup-DHASConfiguration|Get-DHASActiveEncryptionCertificate|Get-DHASActiveSigningCertificate|Get-DHASCertificateChainPolicy|Get-DHASInactiveEncryptionCertificate|Get-DHASInactiveSigningCertificate|Install-DeviceHealthAttestation|Remove-DHASInactiveEncryptionCertificate|Remove-DHASInactiveSigningCertificate|Restore-DHASConfiguration|Set-DHASActiveEncryptionCertificate|Set-DHASActiveSigningCertificate|Set-DHASCertificateChainPolicy|Set-DHASSupportedAuthenticationSchema|Uninstall-DeviceHealthAttestation||Get-DfsnAccess|Get-DfsnFolder|Get-DfsnFolderTarget|Get-DfsnRoot|Get-DfsnRootTarget|Get-DfsnServerConfiguration|Grant-DfsnAccess|Move-DfsnFolder|New-DfsnFolder|New-DfsnFolderTarget|New-DfsnRoot|New-DfsnRootTarget|Remove-DfsnAccess|Remove-DfsnFolder|Remove-DfsnFolderTarget|Remove-DfsnRoot|Remove-DfsnRootTarget|Revoke-DfsnAccess|Set-DfsnFolder|Set-DfsnFolderTarget|Set-DfsnRoot|Set-DfsnRootTarget|Set-DfsnServerConfiguration|Add-DfsrConnection|Add-DfsrMember|ConvertFrom-DfsrGuid|Export-DfsrClone|Get-DfsrBacklog|Get-DfsrCloneState|Get-DfsrConnection|Get-DfsrConnectionSchedule|Get-DfsrDelegation|Get-DfsReplicatedFolder|Get-DfsReplicationGroup|Get-DfsrFileHash|Get-DfsrGroupSchedule|Get-DfsrIdRecord|Get-DfsrMember|Get-DfsrMembership|Get-DfsrPreservedFiles|Get-DfsrServiceConfiguration|Get-DfsrState|Grant-DfsrDelegation|Import-DfsrClone|New-DfsReplicatedFolder|New-DfsReplicationGroup|Remove-DfsrConnection|Remove-DfsReplicatedFolder|Remove-DfsReplicationGroup|Remove-DfsrMember|Remove-DfsrPropagationTestFile|Reset-DfsrCloneState|Restore-DfsrPreservedFiles|Revoke-DfsrDelegation|Set-DfsrConnection|Set-DfsrConnectionSchedule|Set-DfsReplicatedFolder|Set-DfsReplicationGroup|Set-DfsrGroupSchedule|Set-DfsrMember|Set-DfsrMembership|Set-DfsrServiceConfiguration|Start-DfsrPropagationTest|Suspend-DfsReplicationGroup|Sync-DfsReplicationGroup|Update-DfsrConfigurationFromAD|Write-DfsrHealthReport|Write-DfsrPropagationReport|Add-DhcpServerInDC|Add-DhcpServerSecurityGroup|Add-DhcpServerv4Class|Add-DhcpServerv4ExclusionRange|Add-DhcpServerv4Failover|Add-DhcpServerv4FailoverScope|Add-DhcpServerv4Filter|Add-DhcpServerv4Lease|Add-DhcpServerv4MulticastExclusionRange|Add-DhcpServerv4MulticastScope|Add-DhcpServerv4OptionDefinition|Add-DhcpServerv4Policy|Add-DhcpServerv4PolicyIPRange|Add-DhcpServerv4Reservation|Add-DhcpServerv4Scope|Add-DhcpServerv4Superscope|Add-DhcpServerv6Class|Add-DhcpServerv6ExclusionRange|Add-DhcpServerv6Lease|Add-DhcpServerv6OptionDefinition|Add-DhcpServerv6Reservation|Add-DhcpServerv6Scope|Backup-DhcpServer|Export-DhcpServer|Get-DhcpServerAuditLog|Get-DhcpServerDatabase|Get-DhcpServerDnsCredential|Get-DhcpServerInDC|Get-DhcpServerSetting|Get-DhcpServerv4Binding|Get-DhcpServerv4Class|Get-DhcpServerv4DnsSetting|Get-DhcpServerv4ExclusionRange|Get-DhcpServerv4Failover|Get-DhcpServerv4Filter|Get-DhcpServerv4FilterList|Get-DhcpServerv4FreeIPAddress|Get-DhcpServerv4Lease|Get-DhcpServerv4MulticastExclusionRange|Get-DhcpServerv4MulticastLease|Get-DhcpServerv4MulticastScope|Get-DhcpServerv4MulticastScopeStatistics|Get-DhcpServerv4OptionDefinition|Get-DhcpServerv4OptionValue|Get-DhcpServerv4Policy|Get-DhcpServerv4PolicyIPRange|Get-DhcpServerv4Reservation|Get-DhcpServerv4Scope|Get-DhcpServerv4ScopeStatistics|Get-DhcpServerv4Statistics|Get-DhcpServerv4Superscope|Get-DhcpServerv4SuperscopeStatistics|Get-DhcpServerv6Binding|Get-DhcpServerv6Class|Get-DhcpServerv6DnsSetting|Get-DhcpServerv6ExclusionRange|Get-DhcpServerv6FreeIPAddress|Get-DhcpServerv6Lease|Get-DhcpServerv6OptionDefinition|Get-DhcpServerv6OptionValue|Get-DhcpServerv6Reservation|Get-DhcpServerv6Scope|Get-DhcpServerv6ScopeStatistics|Get-DhcpServerv6StatelessStatistics|Get-DhcpServerv6StatelessStore|Get-DhcpServerv6Statistics|Get-DhcpServerVersion|Import-DhcpServer|Invoke-DhcpServerv4FailoverReplication|Remove-DhcpServerDnsCredential|Remove-DhcpServerInDC|Remove-DhcpServerv4Class|Remove-DhcpServerv4ExclusionRange|Remove-DhcpServerv4Failover|Remove-DhcpServerv4FailoverScope|Remove-DhcpServerv4Filter|Remove-DhcpServerv4Lease|Remove-DhcpServerv4MulticastExclusionRange|Remove-DhcpServerv4MulticastLease|Remove-DhcpServerv4MulticastScope|Remove-DhcpServerv4OptionDefinition|Remove-DhcpServerv4OptionValue|Remove-DhcpServerv4Policy|Remove-DhcpServerv4PolicyIPRange|Remove-DhcpServerv4Reservation|Remove-DhcpServerv4Scope|Remove-DhcpServerv4Superscope|Remove-DhcpServerv6Class|Remove-DhcpServerv6ExclusionRange|Remove-DhcpServerv6Lease|Remove-DhcpServerv6OptionDefinition|Remove-DhcpServerv6OptionValue|Remove-DhcpServerv6Reservation|Remove-DhcpServerv6Scope|Rename-DhcpServerv4Superscope|Repair-DhcpServerv4IPRecord|Restore-DhcpServer|Set-DhcpServerAuditLog|Set-DhcpServerDatabase|Set-DhcpServerDnsCredential|Set-DhcpServerSetting|Set-DhcpServerv4Binding|Set-DhcpServerv4Class|Set-DhcpServerv4DnsSetting|Set-DhcpServerv4Failover|Set-DhcpServerv4FilterList|Set-DhcpServerv4MulticastScope|Set-DhcpServerv4OptionDefinition|Set-DhcpServerv4OptionValue|Set-DhcpServerv4Policy|Set-DhcpServerv4Reservation|Set-DhcpServerv4Scope|Set-DhcpServerv6Binding|Set-DhcpServerv6Class|Set-DhcpServerv6DnsSetting|Set-DhcpServerv6OptionDefinition|Set-DhcpServerv6OptionValue|Set-DhcpServerv6Reservation|Set-DhcpServerv6Scope|Set-DhcpServerv6StatelessStore|Disable-DAManualEntryPointSelection|Enable-DAManualEntryPointSelection|Get-DAClientExperienceConfiguration|Get-DAEntryPointTableItem|New-DAEntryPointTableItem|Remove-DAEntryPointTableItem|Rename-DAEntryPointTableItem|Reset-DAClientExperienceConfiguration|Reset-DAEntryPointTableItem|Set-DAClientExperienceConfiguration|Set-DAEntryPointTableItem|Add-AppxProvisionedPackage|Add-WindowsCapability|Add-WindowsDriver|Add-WindowsImage|Add-WindowsPackage|Clear-WindowsCorruptMountPoint|Disable-WindowsOptionalFeature|Dismount-WindowsImage|Enable-WindowsOptionalFeature|Expand-WindowsCustomDataImage|Expand-WindowsImage|Export-WindowsCapabilitySource|Export-WindowsDriver|Export-WindowsImage|Get-AppxProvisionedPackage|Get-NonRemovableAppsPolicy|Get-WIMBootEntry|Get-WindowsCapability|Get-WindowsDriver|Get-WindowsEdition|Get-WindowsImage|Get-WindowsImageContent|Get-WindowsOptionalFeature|Get-WindowsPackage|Get-WindowsReservedStorageState|Mount-WindowsImage|New-WindowsCustomImage|New-WindowsImage|Optimize-AppXProvisionedPackages|Optimize-WindowsImage|Remove-AppxProvisionedPackage|Remove-WindowsCapability|Remove-WindowsDriver|Remove-WindowsImage|Remove-WindowsPackage|Repair-WindowsImage|Save-WindowsImage|Set-AppXProvisionedDataFile|Set-NonRemovableAppsPolicy|Set-WindowsEdition|Set-WindowsProductKey|Set-WindowsReservedStorageState|Split-WindowsImage|Start-OSUninstall|Update-WIMBootEntry|Use-WindowsUnattend|Add-DnsClientDohServerAddress|Add-DnsClientNrptRule|Clear-DnsClientCache|Get-DnsClient|Get-DnsClientCache|Get-DnsClientDohServerAddress|Get-DnsClientGlobalSetting|Get-DnsClientNrptGlobal|Get-DnsClientNrptPolicy|Get-DnsClientNrptRule|Get-DnsClientServerAddress|Register-DnsClient|Remove-DnsClientDohServerAddress|Remove-DnsClientNrptRule|Resolve-DnsName|Set-DnsClient|Set-DnsClientDohServerAddress|Set-DnsClientGlobalSetting|Set-DnsClientNrptGlobal|Set-DnsClientNrptRule|Set-DnsClientServerAddress|Add-DnsServerClientSubnet|Add-DnsServerConditionalForwarderZone|Add-DnsServerDirectoryPartition|Add-DnsServerForwarder|Add-DnsServerPrimaryZone|Add-DnsServerQueryResolutionPolicy|Add-DnsServerRecursionScope|Add-DnsServerResourceRecord|Add-DnsServerResourceRecordA|Add-DnsServerResourceRecordAAAA|Add-DnsServerResourceRecordCName|Add-DnsServerResourceRecordDnsKey|Add-DnsServerResourceRecordDS|Add-DnsServerResourceRecordMX|Add-DnsServerResourceRecordPtr|Add-DnsServerResponseRateLimitingExceptionlist|Add-DnsServerRootHint|Add-DnsServerSecondaryZone|Add-DnsServerSigningKey|Add-DnsServerStubZone|Add-DnsServerTrustAnchor|Add-DnsServerVirtualizationInstance|Add-DnsServerZoneDelegation|Add-DnsServerZoneScope|Add-DnsServerZoneTransferPolicy|Clear-DnsServerCache|Clear-DnsServerStatistics|ConvertTo-DnsServerPrimaryZone|ConvertTo-DnsServerSecondaryZone|Disable-DnsServerPolicy|Disable-DnsServerSigningKeyRollover|Enable-DnsServerPolicy|Enable-DnsServerSigningKeyRollover|Export-DnsServerDnsSecPublicKey|Export-DnsServerZone|Get-DnsServer|Get-DnsServerCache|Get-DnsServerClientSubnet|Get-DnsServerDiagnostics|Get-DnsServerDirectoryPartition|Get-DnsServerDnsSecZoneSetting|Get-DnsServerDsSetting|Get-DnsServerEDns|Get-DnsServerForwarder|Get-DnsServerGlobalNameZone|Get-DnsServerGlobalQueryBlockList|Get-DnsServerQueryResolutionPolicy|Get-DnsServerRecursion|Get-DnsServerRecursionScope|Get-DnsServerResourceRecord|Get-DnsServerResponseRateLimiting|Get-DnsServerResponseRateLimitingExceptionlist|Get-DnsServerRootHint|Get-DnsServerScavenging|Get-DnsServerSetting|Get-DnsServerSigningKey|Get-DnsServerStatistics|Get-DnsServerTrustAnchor|Get-DnsServerTrustPoint|Get-DnsServerVirtualizationInstance|Get-DnsServerZone|Get-DnsServerZoneAging|Get-DnsServerZoneDelegation|Get-DnsServerZoneScope|Get-DnsServerZoneTransferPolicy|Import-DnsServerResourceRecordDS|Import-DnsServerRootHint|Import-DnsServerTrustAnchor|Invoke-DnsServerSigningKeyRollover|Invoke-DnsServerZoneSign|Invoke-DnsServerZoneUnsign|Register-DnsServerDirectoryPartition|Remove-DnsServerClientSubnet|Remove-DnsServerDirectoryPartition|Remove-DnsServerForwarder|Remove-DnsServerQueryResolutionPolicy|Remove-DnsServerRecursionScope|Remove-DnsServerResourceRecord|Remove-DnsServerResponseRateLimitingExceptionlist|Remove-DnsServerRootHint|Remove-DnsServerSigningKey|Remove-DnsServerTrustAnchor|Remove-DnsServerVirtualizationInstance|Remove-DnsServerZone|Remove-DnsServerZoneDelegation|Remove-DnsServerZoneScope|Remove-DnsServerZoneTransferPolicy|Reset-DnsServerZoneKeyMasterRole|Restore-DnsServerPrimaryZone|Restore-DnsServerSecondaryZone|Resume-DnsServerZone|Set-DnsServer|Set-DnsServerCache|Set-DnsServerClientSubnet|Set-DnsServerConditionalForwarderZone|Set-DnsServerDiagnostics|Set-DnsServerDnsSecZoneSetting|Set-DnsServerDsSetting|Set-DnsServerEDns|Set-DnsServerForwarder|Set-DnsServerGlobalNameZone|Set-DnsServerGlobalQueryBlockList|Set-DnsServerPrimaryZone|Set-DnsServerQueryResolutionPolicy|Set-DnsServerRecursion|Set-DnsServerRecursionScope|Set-DnsServerResourceRecord|Set-DnsServerResourceRecordAging|Set-DnsServerResponseRateLimiting|Set-DnsServerResponseRateLimitingExceptionlist|Set-DnsServerRootHint|Set-DnsServerScavenging|Set-DnsServerSecondaryZone|Set-DnsServerSetting|Set-DnsServerSigningKey|Set-DnsServerStubZone|Set-DnsServerVirtualizationInstance|Set-DnsServerZoneAging|Set-DnsServerZoneDelegation|Set-DnsServerZoneTransferPolicy|Show-DnsServerCache|Show-DnsServerKeyStorageProvider|Start-DnsServerScavenging|Start-DnsServerZoneTransfer|Step-DnsServerSigningKeyRollover|Suspend-DnsServerZone|Sync-DnsServerZone|Test-DnsServer|Test-DnsServerDnsSecZoneSetting|Unregister-DnsServerDirectoryPartition|Update-DnsServerTrustPoint|Add-EtwTraceProvider|Get-AutologgerConfig|Get-EtwTraceProvider|Get-EtwTraceSession|New-AutologgerConfig|New-EtwTraceSession|Remove-AutologgerConfig|Remove-EtwTraceProvider|Save-EtwTraceSession|Send-EtwTraceSession|Set-EtwTraceProvider|Start-EtwTraceSession|Stop-EtwTraceSession|Update-AutologgerConfig|Update-EtwTraceSession|Add-ClusterCheckpoint|Add-ClusterDisk|Add-ClusterFileServerRole|Add-ClusterGenericApplicationRole|Add-ClusterGenericScriptRole|Add-ClusterGenericServiceRole|Add-ClusterGroup|Add-ClusterGroupSetDependency|Add-ClusterGroupToSet|Add-ClusteriSCSITargetServerRole|Add-ClusterNode|Add-ClusterResource|Add-ClusterResourceDependency|Add-ClusterResourceType|Add-ClusterScaleOutFileServerRole|Add-ClusterSharedVolume|Add-ClusterVirtualMachineRole|Add-ClusterVMMonitoredItem|Block-ClusterAccess|Clear-ClusterDiskReservation|Clear-ClusterNode|Disable-ClusterStorageSpacesDirect|Enable-ClusterStorageSpacesDirect|Get-Cluster|Get-ClusterAccess|Get-ClusterAvailableDisk|Get-ClusterCheckpoint|Get-ClusterDiagnosticInfo|Get-ClusterFaultDomain|Get-ClusterFaultDomainXML|Get-ClusterGroup|Get-ClusterGroupSet|Get-ClusterGroupSetDependency|Get-ClusterLog|Get-ClusterNetwork|Get-ClusterNetworkInterface|Get-ClusterNode|Get-ClusterOwnerNode|Get-ClusterParameter|Get-ClusterQuorum|Get-ClusterResource|Get-ClusterResourceDependency|Get-ClusterResourceDependencyReport|Get-ClusterResourceType|Get-ClusterSharedVolume|Get-ClusterSharedVolumeState|Get-ClusterStorageSpacesDirect|Get-ClusterVMMonitoredItem|Grant-ClusterAccess|Move-ClusterGroup|Move-ClusterResource|Move-ClusterSharedVolume|Move-ClusterVirtualMachineRole|New-Cluster|New-ClusterFaultDomain|New-ClusterGroupSet|New-ClusterNameAccount|Remove-Cluster|Remove-ClusterAccess|Remove-ClusterCheckpoint|Remove-ClusterFaultDomain|Remove-ClusterGroup|Remove-ClusterGroupFromSet|Remove-ClusterGroupSet|Remove-ClusterGroupSetDependency|Remove-ClusterNode|Remove-ClusterResource|Remove-ClusterResourceDependency|Remove-ClusterResourceType|Remove-ClusterSharedVolume|Remove-ClusterVMMonitoredItem|Repair-ClusterStorageSpacesDirect|Reset-ClusterVMMonitoredState|Resume-ClusterNode|Resume-ClusterResource|Set-ClusterFaultDomain|Set-ClusterFaultDomainXML|Set-ClusterGroupSet|Set-ClusterLog|Set-ClusterOwnerNode|Set-ClusterParameter|Set-ClusterQuorum|Set-ClusterResourceDependency|Set-ClusterStorageSpacesDirect|Set-ClusterStorageSpacesDirectDisk|Start-Cluster|Start-ClusterGroup|Start-ClusterNode|Start-ClusterResource|Stop-Cluster|Stop-ClusterGroup|Stop-ClusterNode|Stop-ClusterResource|Suspend-ClusterNode|Suspend-ClusterResource|Test-Cluster|Test-ClusterResourceFailure|Update-ClusterFunctionalLevel|Update-ClusterIPResource|Update-ClusterNetworkNameResource|Update-ClusterVirtualMachineConfiguration|Get-FsrmAdrSetting|Get-FsrmAutoQuota|Get-FsrmClassification|Get-FsrmClassificationPropertyDefinition|Get-FsrmClassificationRule|Get-FsrmEffectiveNamespace|Get-FsrmFileGroup|Get-FsrmFileManagementJob|Get-FsrmFileScreen|Get-FsrmFileScreenException|Get-FsrmFileScreenTemplate|Get-FsrmMacro|Get-FsrmMgmtProperty|Get-FsrmQuota|Get-FsrmQuotaTemplate|Get-FsrmRmsTemplate|Get-FsrmSetting|Get-FsrmStorageReport|New-FsrmAction|New-FsrmAutoQuota|New-FsrmClassificationPropertyDefinition|New-FsrmClassificationPropertyValue|New-FsrmClassificationRule|New-FsrmFileGroup|New-FsrmFileManagementJob|New-FsrmFileScreen|New-FsrmFileScreenException|New-FsrmFileScreenTemplate|New-FsrmFmjAction|New-FsrmFmjCondition|New-FsrmFMJNotification|New-FsrmFmjNotificationAction|New-FsrmQuota|New-FsrmQuotaTemplate|New-FsrmQuotaThreshold|New-FsrmScheduledTask|New-FsrmStorageReport|Remove-FsrmAutoQuota|Remove-FsrmClassificationPropertyDefinition|Remove-FsrmClassificationRule|Remove-FsrmFileGroup|Remove-FsrmFileManagementJob|Remove-FsrmFileScreen|Remove-FsrmFileScreenException|Remove-FsrmFileScreenTemplate|Remove-FsrmMgmtProperty|Remove-FsrmQuota|Remove-FsrmQuotaTemplate|Remove-FsrmStorageReport|Reset-FsrmFileScreen|Reset-FsrmQuota|Send-FsrmTestEmail|Set-FsrmAdrSetting|Set-FsrmAutoQuota|Set-FsrmClassification|Set-FsrmClassificationPropertyDefinition|Set-FsrmClassificationRule|Set-FsrmFileGroup|Set-FsrmFileManagementJob|Set-FsrmFileScreen|Set-FsrmFileScreenException|Set-FsrmFileScreenTemplate|Set-FsrmMgmtProperty|Set-FsrmQuota|Set-FsrmQuotaTemplate|Set-FsrmSetting|Set-FsrmStorageReport|Start-FsrmClassification|Start-FsrmFileManagementJob|Start-FsrmStorageReport|Stop-FsrmClassification|Stop-FsrmFileManagementJob|Stop-FsrmStorageReport|Update-FsrmAutoQuota|Update-FsrmClassificationPropertyDefinition|Update-FsrmQuota|Wait-FsrmClassification|Wait-FsrmFileManagementJob|Wait-FsrmStorageReport|Backup-GPO|Copy-GPO|Get-GPInheritance|Get-GPO|Get-GPOReport|Get-GPPermission|Get-GPPrefRegistryValue|Get-GPRegistryValue|Get-GPResultantSetOfPolicy|Get-GPStarterGPO|Import-GPO|Invoke-GPUpdate|New-GPLink|New-GPO|New-GPStarterGPO|Remove-GPLink|Remove-GPO|Remove-GPPrefRegistryValue|Remove-GPRegistryValue|Rename-GPO|Restore-GPO|Set-GPInheritance|Set-GPLink|Set-GPPermission|Set-GPPrefRegistryValue|Set-GPRegistryValue|Export-HwCertTestCollectionToXml|Import-HwCertTestCollectionFromXml|Merge-HwCertTestCollectionFromPackage|Merge-HwCertTestCollectionFromXml|New-HwCertProjectDefinitionFile|New-HwCertTestCollection|New-HwCertTestCollectionExcelReport|Add-HgsAttestationCIPolicy|Add-HgsAttestationDumpPolicy|Add-HgsAttestationHostGroup|Add-HgsAttestationTpmHost|Add-HgsAttestationTpmPolicy|Disable-HgsAttestationPolicy|Enable-HgsAttestationPolicy|Get-HgsAttestationHostGroup|Get-HgsAttestationPolicy|Get-HgsAttestationSignerCertificate|Get-HgsAttestationTpmHost|Remove-HgsAttestationHostGroup|Remove-HgsAttestationPolicy|Remove-HgsAttestationTpmHost|ConvertTo-HgsKeyProtector|Export-HgsGuardian|Get-HgsAttestationBaselinePolicy|Get-HgsClientConfiguration|Get-HgsGuardian|Grant-HgsKeyProtectorAccess|Import-HgsGuardian|New-HgsGuardian|New-HgsKeyProtector|Remove-HgsGuardian|Revoke-HgsKeyProtectorAccess|Set-HgsClientConfiguration|Test-HgsClientConfiguration|Get-HgsTrace|Get-HgsTraceFileData|New-HgsTraceTarget|Test-HgsTraceTarget|Add-HgsKeyProtectionAttestationSignerCertificate|Add-HgsKeyProtectionCertificate|Export-HgsKeyProtectionState|Get-HgsKeyProtectionAttestationSignerCertificate|Get-HgsKeyProtectionCertificate|Get-HgsKeyProtectionConfiguration|Import-HgsKeyProtectionState|Remove-HgsKeyProtectionAttestationSignerCertificate|Remove-HgsKeyProtectionCertificate|Set-HgsKeyProtectionAttestationSignerCertificatePolicy|Set-HgsKeyProtectionCertificate|Set-HgsKeyProtectionConfiguration|Clear-HgsServer|Export-HgsServerState|Get-HgsServer|Import-HgsServerState|Initialize-HgsServer|Install-HgsServer|Set-HgsServer|Test-HgsServer|Uninstall-HgsServer|Debug-SlbDatapath|Debug-VirtualMachineQueueOperation|Disable-MuxEchoResponder|Enable-MuxEchoResponder|Get-CustomerRoute|Get-NetworkControllerVipResource|Get-PACAMapping|Get-ProviderAddress|Get-VipHostMapping|Get-VMNetworkAdapterPortId|Get-VMSwitchExternalPortId|Test-DipHostReachability|Test-EncapOverheadSettings|Test-LogicalNetworkConnection|Test-LogicalNetworkSupportsJumboPacket|Test-VipReachability|Test-VirtualNetworkConnection|Get-ComputeProcess|Stop-ComputeProcess|Add-VMDvdDrive|Add-VMFibreChannelHba|Add-VMGpuPartitionAdapter|Add-VMGroupMember|Add-VMHardDiskDrive|Add-VMMigrationNetwork|Add-VMNetworkAdapter|Add-VMNetworkAdapterAcl|Add-VMNetworkAdapterExtendedAcl|Add-VmNetworkAdapterRoutingDomainMapping|Add-VMRemoteFx3dVideoAdapter|Add-VMScsiController|Add-VMStoragePath|Add-VMSwitch|Add-VMSwitchExtensionPortFeature|Add-VMSwitchExtensionSwitchFeature|Add-VMSwitchTeamMember|Checkpoint-VM|Compare-VM|Complete-VMFailover|Connect-VMNetworkAdapter|Connect-VMSan|Convert-VHD|Copy-VMFile|Debug-VM|Disable-VMConsoleSupport|Disable-VMEventing|Disable-VMIntegrationService|Disable-VMMigration|Disable-VMRemoteFXPhysicalVideoAdapter|Disable-VMResourceMetering|Disable-VMSwitchExtension|Disable-VMTPM|Disconnect-VMNetworkAdapter|Disconnect-VMSan|Dismount-VHD|Enable-VMConsoleSupport|Enable-VMEventing|Enable-VMIntegrationService|Enable-VMMigration|Enable-VMRemoteFXPhysicalVideoAdapter|Enable-VMReplication|Enable-VMResourceMetering|Enable-VMSwitchExtension|Enable-VMTPM|Export-VM|Export-VMSnapshot|Get-VHD|Get-VHDSet|Get-VHDSnapshot|Get-VM|Get-VMBios|Get-VMComPort|Get-VMConnectAccess|Get-VMDvdDrive|Get-VMFibreChannelHba|Get-VMFirmware|Get-VMFloppyDiskDrive|Get-VMGpuPartitionAdapter|Get-VMGroup|Get-VMHardDiskDrive|Get-VMHost|Get-VMHostCluster|Get-VMHostNumaNode|Get-VMHostNumaNodeStatus|Get-VMHostPartitionableGpu|Get-VMHostSupportedVersion|Get-VMIdeController|Get-VMIntegrationService|Get-VMKeyProtector|Get-VMMemory|Get-VMMigrationNetwork|Get-VMNetworkAdapter|Get-VMNetworkAdapterAcl|Get-VMNetworkAdapterExtendedAcl|Get-VMNetworkAdapterFailoverConfiguration|Get-VmNetworkAdapterIsolation|Get-VMNetworkAdapterRoutingDomainMapping|Get-VMNetworkAdapterTeamMapping|Get-VMNetworkAdapterVlan|Get-VMProcessor|Get-VMRemoteFx3dVideoAdapter|Get-VMRemoteFXPhysicalVideoAdapter|Get-VMReplication|Get-VMReplicationAuthorizationEntry|Get-VMReplicationServer|Get-VMResourcePool|Get-VMSan|Get-VMScsiController|Get-VMSecurity|Get-VMSnapshot|Get-VMStoragePath|Get-VMSwitch|Get-VMSwitchExtension|Get-VMSwitchExtensionPortData|Get-VMSwitchExtensionPortFeature|Get-VMSwitchExtensionSwitchData|Get-VMSwitchExtensionSwitchFeature|Get-VMSwitchTeam|Get-VMSystemSwitchExtension|Get-VMSystemSwitchExtensionPortFeature|Get-VMSystemSwitchExtensionSwitchFeature|Get-VMVideo|Grant-VMConnectAccess|Import-VM|Import-VMInitialReplication|Measure-VM|Measure-VMReplication|Measure-VMResourcePool|Merge-VHD|Mount-VHD|Move-VM|Move-VMStorage|New-VFD|New-VHD|New-VM|New-VMGroup|||New-VMReplicationAuthorizationEntry|New-VMResourcePool|New-VMSan|New-VMSwitch|Optimize-VHD|Optimize-VHDSet|Remove-VHDSnapshot|Remove-VM|Remove-VMDvdDrive|Remove-VMFibreChannelHba|Remove-VMGpuPartitionAdapter|Remove-VMGroup|Remove-VMGroupMember|Remove-VMHardDiskDrive|Remove-VMMigrationNetwork|Remove-VMNetworkAdapter|Remove-VMNetworkAdapterAcl|Remove-VMNetworkAdapterExtendedAcl|Remove-VMNetworkAdapterRoutingDomainMapping|Remove-VMNetworkAdapterTeamMapping|Remove-VMRemoteFx3dVideoAdapter|Remove-VMReplication|Remove-VMReplicationAuthorizationEntry|Remove-VMResourcePool|Remove-VMSan|Remove-VMSavedState|Remove-VMScsiController|Remove-VMSnapshot|Remove-VMStoragePath|Remove-VMSwitch|Remove-VMSwitchExtensionPortFeature|Remove-VMSwitchExtensionSwitchFeature|Remove-VMSwitchTeamMember|Rename-VM|Rename-VMGroup|Rename-VMNetworkAdapter|Rename-VMResourcePool|Rename-VMSan|Rename-VMSnapshot|Rename-VMSwitch|Repair-VM|Reset-VMReplicationStatistics|Reset-VMResourceMetering|Resize-VHD|Restart-VM|Restore-VMSnapshot|Resume-VM|Resume-VMReplication|Revoke-VMConnectAccess|Save-VM|Set-VHD|Set-VM|Set-VMBios|Set-VMComPort|Set-VMDvdDrive|Set-VMFibreChannelHba|Set-VMFirmware|Set-VMFloppyDiskDrive|Set-VMGpuPartitionAdapter|Set-VMHardDiskDrive|Set-VMHost|Set-VMHostCluster|Set-VMHostPartitionableGpu|Set-VMKeyProtector|Set-VMMemory|Set-VMMigrationNetwork|Set-VMNetworkAdapter|Set-VMNetworkAdapterFailoverConfiguration|Set-VmNetworkAdapterIsolation|Set-VmNetworkAdapterRoutingDomainMapping|Set-VMNetworkAdapterTeamMapping|Set-VMNetworkAdapterVlan|Set-VMProcessor|Set-VMRemoteFx3dVideoAdapter|Set-VMReplication|Set-VMReplicationAuthorizationEntry|Set-VMReplicationServer|Set-VMResourcePool|Set-VMSan|Set-VMSecurity|Set-VMSecurityPolicy|Set-VMSwitch|Set-VMSwitchExtensionPortFeature|Set-VMSwitchExtensionSwitchFeature|Set-VMSwitchTeam|Set-VMVideo|Start-VM|Start-VMFailover|Start-VMInitialReplication|Start-VMTrace|Stop-VM|Stop-VMFailover|Stop-VMInitialReplication|Stop-VMReplication|Stop-VMTrace|Suspend-VM|Suspend-VMReplication|Test-VHD|Test-VMNetworkAdapter|Test-VMReplicationConnection|Update-VMVersion|Clear-IISCentralCertProvider|Clear-IISConfigCollection|Disable-IISCentralCertProvider|Disable-IISSharedConfig|Enable-IISCentralCertProvider|Enable-IISSharedConfig|Export-IISConfiguration|Get-IISAppPool|Get-IISCentralCertProvider|Get-IISConfigAttributeValue|Get-IISConfigCollection|Get-IISConfigCollectionElement|Get-IISConfigElement|Get-IISConfigSection|Get-IISServerManager|Get-IISSharedConfig|Get-IISSite|Get-IISSiteBinding|New-IISConfigCollectionElement|New-IISSite|New-IISSiteBinding|Remove-IISConfigAttribute|Remove-IISConfigCollectionElement|Remove-IISConfigElement|Remove-IISSite|Remove-IISSiteBinding|Reset-IISServerManager|Set-IISCentralCertProvider|Set-IISCentralCertProviderCredential|Set-IISConfigAttributeValue|Start-IISCommitDelay|Start-IISSite|Stop-IISCommitDelay|Stop-IISSite|Copy-UserInternationalSettingsToSystem|Get-WinAcceptLanguageFromLanguageListOptOut|Get-WinCultureFromLanguageListOptOut|Get-WinDefaultInputMethodOverride|Get-WinHomeLocation|Get-WinLanguageBarOption|Get-WinSystemLocale|Get-WinUILanguageOverride|Get-WinUserLanguageList|New-WinUserLanguageList|Set-Culture|Set-WinAcceptLanguageFromLanguageListOptOut|Set-WinCultureFromLanguageListOptOut|Set-WinDefaultInputMethodOverride|Set-WinHomeLocation|Set-WinLanguageBarOption|Set-WinSystemLocale|Set-WinUILanguageOverride|Set-WinUserLanguageList|Add-IpamAddress|Add-IpamAddressSpace|Add-IpamBlock|Add-IpamCustomField|Add-IpamCustomFieldAssociation|Add-IpamCustomValue|Add-IpamDiscoveryDomain|Connect-IscsiTarget|Disconnect-IscsiTarget|Get-IscsiConnection|Get-IscsiSession|Get-IscsiTarget|Get-IscsiTargetPortal|New-IscsiTargetPortal|Register-IscsiSession|Remove-IscsiTargetPortal|Set-IscsiChapSecret|Unregister-IscsiSession|Update-IscsiTarget|Update-IscsiTargetPortal|Add-IscsiVirtualDiskTargetMapping|Checkpoint-IscsiVirtualDisk|Convert-IscsiVirtualDisk|Dismount-IscsiVirtualDiskSnapshot|Export-IscsiTargetServerConfiguration|Export-IscsiVirtualDiskSnapshot|Get-IscsiServerTarget|Get-IscsiTargetServerSetting|Get-IscsiVirtualDisk|Get-IscsiVirtualDiskSnapshot|Import-IscsiTargetServerConfiguration|Import-IscsiVirtualDisk|Mount-IscsiVirtualDiskSnapshot|New-IscsiServerTarget|New-IscsiVirtualDisk|Remove-IscsiServerTarget|Remove-IscsiVirtualDisk|Remove-IscsiVirtualDiskSnapshot|Remove-IscsiVirtualDiskTargetMapping|Resize-IscsiVirtualDisk|Restore-IscsiVirtualDisk|Set-IscsiServerTarget|Set-IscsiTargetServerSetting|Set-IscsiVirtualDisk|Set-IscsiVirtualDiskSnapshot|Stop-IscsiVirtualDiskOperation|Get-IseSnippet|Import-IseSnippet|New-IseSnippet|Add-KdsRootKey|Clear-KdsCache|Get-KdsConfiguration|Get-KdsRootKey|Set-KdsConfiguration|Test-KdsRootKey|Get-InstalledLanguage|Get-SystemPreferredUILanguage|Install-Language|Set-SystemPreferredUILanguage|Uninstall-Language|Find-LapsADExtendedRights|Get-LapsAADPassword|Get-LapsADPassword|Get-LapsDiagnostics|Invoke-LapsPolicyProcessing|Reset-LapsPassword|Set-LapsADAuditing|Set-LapsADComputerSelfPermission|Set-LapsADPasswordExpirationTime|Set-LapsADReadPasswordPermission|Set-LapsADResetPasswordPermission|Update-LapsADSchema|Disable-DiagnosticDataViewing|Enable-DiagnosticDataViewing|Get-DiagnosticData|Get-DiagnosticDataTypes|Get-DiagnosticDataViewingSetting|Get-DiagnosticStoreCapacity|Set-DiagnosticStoreCapacity|Compress-Archive|Expand-Archive|Export-Counter|Get-Counter|Get-WinEvent|Import-Counter|New-WinEvent|Start-Transcript|Stop-Transcript|Add-Computer|Add-Content|Checkpoint-Computer|Clear-Content|Clear-EventLog|Clear-Item|Clear-ItemProperty|Clear-RecycleBin|Complete-Transaction|Convert-Path|Copy-Item|Copy-ItemProperty|Debug-Process|Disable-ComputerRestore|Enable-ComputerRestore|Get-ChildItem|Get-Clipboard|Get-ComputerRestorePoint|Get-Content|Get-ControlPanelItem|Get-EventLog|Get-HotFix|Get-Item|Get-ItemProperty|Get-ItemPropertyValue|Get-Location|Get-Process|Get-PSDrive|Get-PSProvider|Get-Service|Get-Transaction|Get-WmiObject|Invoke-Item|Invoke-WmiMethod|Join-Path|Limit-EventLog|Move-Item|Move-ItemProperty|New-EventLog|New-Item|New-ItemProperty|New-PSDrive|New-Service|New-WebServiceProxy|Pop-Location|Push-Location|Register-WmiEvent|Remove-Computer|Remove-EventLog|Remove-Item|Remove-ItemProperty|Remove-PSDrive|Remove-WmiObject|Rename-Computer|Rename-Item|Rename-ItemProperty|Reset-ComputerMachinePassword|Resolve-Path|Restart-Computer|Restart-Service|Restore-Computer|Resume-Service|Set-Clipboard|Set-Content|Set-Item|Set-ItemProperty|Set-Location|Set-Service|Set-WmiInstance|Show-ControlPanelItem|Show-EventLog|Split-Path|Start-Process|Start-Service|Start-Transaction|Stop-Computer|Stop-Process|Stop-Service|Suspend-Service|Test-ComputerSecureChannel|Test-Connection|Test-Path|Undo-Transaction|Use-Transaction|Wait-Process|Write-EventLog|Export-ODataEndpointProxy|ConvertFrom-SecureString|ConvertTo-SecureString|Get-Acl|Get-AuthenticodeSignature|Get-CmsMessage|Get-Credential|Get-ExecutionPolicy|Get-PfxCertificate|Protect-CmsMessage|Set-Acl|Set-AuthenticodeSignature|Set-ExecutionPolicy|Unprotect-CmsMessage|ConvertFrom-SddlString|Format-Hex|Get-FileHash|Import-PowerShellDataFile|New-Guid|New-TemporaryFile|Add-Member|Add-Type|Clear-Variable|Compare-Object|ConvertFrom-Csv|ConvertFrom-Json|ConvertFrom-String|ConvertFrom-StringData|Convert-String|ConvertTo-Csv|ConvertTo-Html|ConvertTo-Json|ConvertTo-Xml|Debug-Runspace|Disable-PSBreakpoint|Disable-RunspaceDebug|Enable-PSBreakpoint|Enable-RunspaceDebug|Export-Alias|Export-Clixml|Export-Csv|Export-FormatData|Export-PSSession|Format-Custom|Format-List|Format-Table|Format-Wide|Get-Alias|Get-Culture|Get-Date|Get-Event|Get-EventSubscriber|Get-FormatData|Get-Host|Get-Member|Get-PSBreakpoint|Get-PSCallStack|Get-Random|Get-Runspace|Get-RunspaceDebug|Get-TraceSource|Get-TypeData|Get-UICulture|Get-Unique|Get-Variable|Group-Object|Import-Alias|Import-Clixml|Import-Csv|Import-LocalizedData|Import-PSSession|Invoke-Expression|Invoke-RestMethod|Invoke-WebRequest|Measure-Command|Measure-Object|New-Alias|New-Event|New-Object|New-TimeSpan|New-Variable|Out-File|Out-GridView|Out-Printer|Out-String|Read-Host|Register-EngineEvent|Register-ObjectEvent|Remove-Event|Remove-PSBreakpoint|Remove-TypeData|Remove-Variable|Select-Object|Select-String|Select-Xml|Send-MailMessage|Set-Alias|Set-Date|Set-PSBreakpoint|Set-TraceSource|Set-Variable|Show-Command|Sort-Object|Start-Sleep|Tee-Object|Trace-Command|Unblock-File|Unregister-Event|Update-FormatData|Update-List|Update-TypeData|Wait-Debugger|Wait-Event|Write-Debug|Write-Error|Write-Host|Write-Information|Write-Output|Write-Progress|Write-Verbose|Write-Warning|Connect-WSMan|Disable-WSManCredSSP|Disconnect-WSMan|Enable-WSManCredSSP|Get-WSManCredSSP|Get-WSManInstance|Invoke-WSManAction|New-WSManInstance|New-WSManSessionOption|Remove-WSManInstance|Set-WSManInstance|Set-WSManQuickConfig|Test-WSMan|Debug-MMAppPrelaunch|Disable-MMAgent|Enable-MMAgent|Get-MMAgent|Set-MMAgent|Clear-MSDSMSupportedHW|Disable-MSDSMAutomaticClaim|Enable-MSDSMAutomaticClaim|Get-MPIOAvailableHW|Get-MPIOSetting|Get-MSDSMAutomaticClaimSettings|Get-MSDSMGlobalDefaultLoadBalancePolicy|Get-MSDSMSupportedHW|New-MSDSMSupportedHW|Remove-MSDSMSupportedHW|Set-MPIOSetting|Set-MSDSMGlobalDefaultLoadBalancePolicy|Update-MPIOClaimedHW|Add-DtcClusterTMMapping|Complete-DtcDiagnosticTransaction|Get-Dtc|Get-DtcAdvancedHostSetting|Get-DtcAdvancedSetting|Get-DtcClusterDefault|Get-DtcClusterTMMapping|Get-DtcDefault|Get-DtcLog|Get-DtcNetworkSetting|Get-DtcTransaction|Get-DtcTransactionsStatistics|Get-DtcTransactionsTraceSession|Get-DtcTransactionsTraceSetting|Install-Dtc|Join-DtcDiagnosticResourceManager|New-DtcDiagnosticTransaction|Receive-DtcDiagnosticTransaction|Remove-DtcClusterTMMapping|Reset-DtcLog|Send-DtcDiagnosticTransaction|Set-DtcAdvancedHostSetting|Set-DtcAdvancedSetting|Set-DtcClusterDefault|Set-DtcClusterTMMapping|Set-DtcDefault|Set-DtcLog|Set-DtcNetworkSetting|Set-DtcTransaction|Set-DtcTransactionsTraceSession|Set-DtcTransactionsTraceSetting|Start-Dtc|Start-DtcDiagnosticResourceManager|Start-DtcTransactionsTraceSession|Stop-Dtc|Stop-DtcDiagnosticResourceManager|Stop-DtcTransactionsTraceSession|Test-Dtc|Undo-DtcDiagnosticTransaction|Uninstall-Dtc|Write-DtcTransactionsTraceSession|Clear-MSMQOutgoingQueue|Clear-MSMQQueue|Enable-MSMQCertificate|Get-MSMQCertificate|Get-MSMQOutgoingQueue|Get-MsmqQueue|Get-MsmqQueueACL|Get-MsmqQueueManager|Get-MsmqQueueManagerACL|Move-MsmqMessage|New-MsmqMessage|New-MsmqQueue|Receive-MsmqQueue|Remove-MsmqCertificate|Remove-MsmqQueue|Resume-MsmqOutgoingQueue|Send-MsmqQueue|Set-MsmqQueue|Set-MsmqQueueACL|Set-MsmqQueueManager|Set-MsmqQueueManagerACL|Suspend-MsmqOutgoingQueue|Add-WmsSystem|Clear-WmsStation|Close-WmsApp|Close-WmsSession|Disable-WmsDiskProtection|Disable-WmsScheduledUpdate|Disable-WmsWebLimiting|Disconnect-WmsSession|Enable-WmsDiskProtection|Enable-WmsScheduledUpdate|Enable-WmsWebLimiting|Get-WmsAlert|Get-WmsApp|Get-WmsDiskProtection|Get-WmsScheduledUpdate|Get-WmsSession|Get-WmsStation|Get-WmsSystem|Get-WmsUser|Get-WmsVersion|Get-WmsWebLimiting|Hide-WmsIdentifier|Join-WmsStation|Lock-WmsSession|Lock-WmsUsbStorage|New-WmsUser|Open-WmsApp|Publish-WmsDesktop|Remove-WmsSystem|Remove-WmsUser|Restart-WmsSystem|Resume-WmsDiskProtection|Search-WmsSystem|Set-WmsScheduledUpdate|Set-WmsStation|Set-WmsSystem|Set-WmsUser|Set-WmsWebLimiting|Show-WmsDesktop|Show-WmsIdentifier|Split-WmsStation|Stop-WmsSystem|Suspend-WmsDiskProtection|Unlock-WmsSession|Unlock-WmsUsbStorage|Unpublish-WmsDesktop|Update-WmsStation|Disable-WmsVirtualDesktopRole|Enable-WmsVirtualDesktopRole|Get-WmsVirtualDesktop|Import-WmsVirtualDesktop|New-WmsVirtualDesktop|New-WmsVirtualDesktopTemplate|Open-WmsVirtualDesktop|Edit-NanoServerImage|Get-NanoServerPackage|New-NanoServerImage|Disable-NetAdapter|Disable-NetAdapterBinding|Disable-NetAdapterChecksumOffload|Disable-NetAdapterEncapsulatedPacketTaskOffload|Disable-NetAdapterIPsecOffload|Disable-NetAdapterLso|Disable-NetAdapterPowerManagement|Disable-NetAdapterQos|Disable-NetAdapterRdma|Disable-NetAdapterRsc|Disable-NetAdapterRss|Disable-NetAdapterSriov|Disable-NetAdapterUso|Disable-NetAdapterVmq|Enable-NetAdapter|Enable-NetAdapterBinding|Enable-NetAdapterChecksumOffload|Enable-NetAdapterEncapsulatedPacketTaskOffload|Enable-NetAdapterIPsecOffload|Enable-NetAdapterLso|Enable-NetAdapterPowerManagement|Enable-NetAdapterQos|Enable-NetAdapterRdma|Enable-NetAdapterRsc|Enable-NetAdapterRss|Enable-NetAdapterSriov|Enable-NetAdapterUso|Enable-NetAdapterVmq|Get-NetAdapter|Get-NetAdapterAdvancedProperty|Get-NetAdapterBinding|Get-NetAdapterChecksumOffload|Get-NetAdapterDataPathConfiguration|Get-NetAdapterEncapsulatedPacketTaskOffload|Get-NetAdapterHardwareInfo|Get-NetAdapterIPsecOffload|Get-NetAdapterLso|Get-NetAdapterPowerManagement|Get-NetAdapterQos|Get-NetAdapterRdma|Get-NetAdapterRsc|Get-NetAdapterRss|Get-NetAdapterSriov|Get-NetAdapterSriovVf|Get-NetAdapterStatistics|Get-NetAdapterUso|Get-NetAdapterVmq|Get-NetAdapterVmqQueue|Get-NetAdapterVPort|New-NetAdapterAdvancedProperty|Remove-NetAdapterAdvancedProperty|Rename-NetAdapter|Reset-NetAdapterAdvancedProperty|Restart-NetAdapter|Set-NetAdapter|Set-NetAdapterAdvancedProperty|Set-NetAdapterBinding|Set-NetAdapterChecksumOffload|Set-NetAdapterDataPathConfiguration|Set-NetAdapterEncapsulatedPacketTaskOffload|Set-NetAdapterIPsecOffload|Set-NetAdapterLso|Set-NetAdapterPowerManagement|Set-NetAdapterQos|Set-NetAdapterRdma|Set-NetAdapterRsc|Set-NetAdapterRss|Set-NetAdapterSriov|Set-NetAdapterUso|Set-NetAdapterVmq|Get-NetConnectionProfile|Set-NetConnectionProfile|Add-NetEventNetworkAdapter|Add-NetEventPacketCaptureProvider|Add-NetEventProvider|Add-NetEventVFPProvider|Add-NetEventVmNetworkAdapter|Add-NetEventVmSwitch|Add-NetEventVmSwitchProvider|Add-NetEventWFPCaptureProvider|Get-NetEventNetworkAdapter|Get-NetEventPacketCaptureProvider|Get-NetEventProvider|Get-NetEventSession|Get-NetEventVFPProvider|Get-NetEventVmNetworkAdapter|Get-NetEventVmSwitch|Get-NetEventVmSwitchProvider|Get-NetEventWFPCaptureProvider|New-NetEventSession|Remove-NetEventNetworkAdapter|Remove-NetEventPacketCaptureProvider|Remove-NetEventProvider|Remove-NetEventSession|Remove-NetEventVFPProvider|Remove-NetEventVmNetworkAdapter|Remove-NetEventVmSwitch|Remove-NetEventVmSwitchProvider|Remove-NetEventWFPCaptureProvider|Set-NetEventPacketCaptureProvider|Set-NetEventProvider|Set-NetEventSession|Set-NetEventVFPProvider|Set-NetEventVmSwitchProvider|Set-NetEventWFPCaptureProvider|Start-NetEventSession|Stop-NetEventSession|Add-NetLbfoTeamMember|Add-NetLbfoTeamNic|Get-NetLbfoTeam|Get-NetLbfoTeamMember|Get-NetLbfoTeamNic|New-NetLbfoTeam|Remove-NetLbfoTeam|Remove-NetLbfoTeamMember|Remove-NetLbfoTeamNic|Rename-NetLbfoTeam|Set-NetLbfoTeam|Set-NetLbfoTeamMember|Set-NetLbfoTeamNic|Disable-NetLldpAgent|Enable-NetLldpAgent|Get-NetLldpAgent|Add-NetNatExternalAddress|Add-NetNatStaticMapping|Get-NetNat|Get-NetNatExternalAddress|Get-NetNatGlobal|Get-NetNatSession|Get-NetNatStaticMapping|New-NetNat|Remove-NetNat|Remove-NetNatExternalAddress|Remove-NetNatStaticMapping|Set-NetNat|Set-NetNatGlobal|Get-NetQosPolicy|New-NetQosPolicy|Remove-NetQosPolicy|Set-NetQosPolicy|Copy-NetFirewallRule|Copy-NetIPsecMainModeCryptoSet|Copy-NetIPsecMainModeRule|Copy-NetIPsecPhase1AuthSet|Copy-NetIPsecPhase2AuthSet|Copy-NetIPsecQuickModeCryptoSet|Copy-NetIPsecRule|Disable-NetFirewallRule|Disable-NetIPsecMainModeRule|Disable-NetIPsecRule|Enable-NetFirewallRule|Enable-NetIPsecMainModeRule|Enable-NetIPsecRule|Find-NetIPsecRule|Get-DAPolicyChange|Get-NetFirewallAddressFilter|Get-NetFirewallApplicationFilter|Get-NetFirewallDynamicKeywordAddress|Get-NetFirewallInterfaceFilter|Get-NetFirewallInterfaceTypeFilter|Get-NetFirewallPortFilter|Get-NetFirewallProfile|Get-NetFirewallRule|Get-NetFirewallSecurityFilter|Get-NetFirewallServiceFilter|Get-NetFirewallSetting|Get-NetIPsecDospSetting|Get-NetIPsecMainModeCryptoSet|Get-NetIPsecMainModeRule|Get-NetIPsecMainModeSA|Get-NetIPsecPhase1AuthSet|Get-NetIPsecPhase2AuthSet|Get-NetIPsecQuickModeCryptoSet|Get-NetIPsecQuickModeSA|Get-NetIPsecRule|New-NetFirewallDynamicKeywordAddress|New-NetFirewallRule|New-NetIPsecAuthProposal|New-NetIPsecDospSetting|New-NetIPsecMainModeCryptoProposal|New-NetIPsecMainModeCryptoSet|New-NetIPsecMainModeRule|New-NetIPsecPhase1AuthSet|New-NetIPsecPhase2AuthSet|New-NetIPsecQuickModeCryptoProposal|New-NetIPsecQuickModeCryptoSet|New-NetIPsecRule|Open-NetGPO|Remove-NetFirewallDynamicKeywordAddress|Remove-NetFirewallRule|Remove-NetIPsecDospSetting|Remove-NetIPsecMainModeCryptoSet|Remove-NetIPsecMainModeRule|Remove-NetIPsecMainModeSA|Remove-NetIPsecPhase1AuthSet|Remove-NetIPsecPhase2AuthSet|Remove-NetIPsecQuickModeCryptoSet|Remove-NetIPsecQuickModeSA|Remove-NetIPsecRule|Rename-NetFirewallRule|Rename-NetIPsecMainModeCryptoSet|Rename-NetIPsecMainModeRule|Rename-NetIPsecPhase1AuthSet|Rename-NetIPsecPhase2AuthSet|Rename-NetIPsecQuickModeCryptoSet|Rename-NetIPsecRule|Save-NetGPO|Set-NetFirewallAddressFilter|Set-NetFirewallApplicationFilter|Set-NetFirewallInterfaceFilter|Set-NetFirewallInterfaceTypeFilter|Set-NetFirewallPortFilter|Set-NetFirewallProfile|Set-NetFirewallRule|Set-NetFirewallSecurityFilter|Set-NetFirewallServiceFilter|Set-NetFirewallSetting|Set-NetIPsecDospSetting|Set-NetIPsecMainModeCryptoSet|Set-NetIPsecMainModeRule|Set-NetIPsecPhase1AuthSet|Set-NetIPsecPhase2AuthSet|Set-NetIPsecQuickModeCryptoSet|Set-NetIPsecRule|Show-NetFirewallRule|Show-NetIPsecRule|Sync-NetIPsecRule|Update-NetFirewallDynamicKeywordAddress|Update-NetIPsecRule|Add-NetSwitchTeamMember|Get-NetSwitchTeam|Get-NetSwitchTeamMember|New-NetSwitchTeam|Remove-NetSwitchTeam|Remove-NetSwitchTeamMember|Rename-NetSwitchTeam|Find-NetRoute|Get-NetCompartment|Get-NetIPAddress|Get-NetIPConfiguration|Get-NetIPInterface|Get-NetIPv4Protocol|Get-NetIPv6Protocol|Get-NetNeighbor|Get-NetOffloadGlobalSetting|Get-NetPrefixPolicy|Get-NetRoute|Get-NetTCPConnection|Get-NetTCPSetting|Get-NetTransportFilter|Get-NetUDPEndpoint|Get-NetUDPSetting|New-NetIPAddress|New-NetNeighbor|New-NetRoute|New-NetTransportFilter|Remove-NetIPAddress|Remove-NetNeighbor|Remove-NetRoute|Remove-NetTransportFilter|Set-NetIPAddress|Set-NetIPInterface|Set-NetIPv4Protocol|Set-NetIPv6Protocol|Set-NetNeighbor|Set-NetOffloadGlobalSetting|Set-NetRoute|Set-NetTCPSetting|Set-NetUDPSetting|Test-NetConnection|Get-NetVirtualizationCustomerRoute|Get-NetVirtualizationGlobal|Get-NetVirtualizationLookupRecord|Get-NetVirtualizationProviderAddress|Get-NetVirtualizationProviderRoute|New-NetVirtualizationCustomerRoute|New-NetVirtualizationLookupRecord|New-NetVirtualizationProviderAddress|New-NetVirtualizationProviderRoute|Remove-NetVirtualizationCustomerRoute|Remove-NetVirtualizationLookupRecord|Remove-NetVirtualizationProviderAddress|Remove-NetVirtualizationProviderRoute|Select-NetVirtualizationNextHop|Set-NetVirtualizationCustomerRoute|Set-NetVirtualizationGlobal|Set-NetVirtualizationLookupRecord|Set-NetVirtualizationProviderAddress|Set-NetVirtualizationProviderRoute|Get-DAConnectionStatus|Get-NCSIPolicyConfiguration|Reset-NCSIPolicyConfiguration|Set-NCSIPolicyConfiguration|Add-NetworkControllerNode|Clear-NetworkControllerNodeContent|Disable-NetworkControllerNode|Enable-NetworkControllerNode|Get-NetworkController|Get-NetworkControllerAccessControlList|Get-NetworkControllerAccessControlListRule|Get-NetworkControllerAuditingSettingsConfiguration|Get-NetworkControllerBackup|Get-NetworkControllerCluster|Get-NetworkControllerConnectivityCheck|Get-NetworkControllerConnectivityCheckResult|Get-NetworkControllerCredential|Get-NetworkControllerDiagnostic|Get-NetworkControllerDiscovery|Get-NetworkControllerFabricRoute|Get-NetworkControllerGateway|Get-NetworkControllerGatewayPool|Get-NetworkControllerIDnsServerConfiguration|Get-NetworkControllerInternalResourceInstances|Get-NetworkControllerIpPool|Get-NetworkControllerIpReservation|Get-NetworkControllerLoadBalancer|Get-NetworkControllerLoadBalancerBackendAddressPool|Get-NetworkControllerLoadBalancerConfiguration|Get-NetworkControllerLoadBalancerFrontendIpConfiguration|Get-NetworkControllerLoadBalancerInboundNatRule|Get-NetworkControllerLoadBalancerMux|Get-NetworkControllerLoadBalancerOutboundNatRule|Get-NetworkControllerLoadBalancerProbe|Get-NetworkControllerLoadBalancingRule|Get-NetworkControllerLogicalNetwork|Get-NetworkControllerLogicalSubnet|Get-NetworkControllerMacPool|Get-NetworkControllerNetworkInterface|Get-NetworkControllerNetworkInterfaceIpConfiguration|Get-NetworkControllerNode|Get-NetworkControllerPublicIpAddress|Get-NetworkControllerRestore|Get-NetworkControllerRoute|Get-NetworkControllerRouteTable|Get-NetworkControllerServer|Get-NetworkControllerServerInterface|Get-NetworkControllerServiceInsertion|Get-NetworkControllerState|Get-NetworkControllerStatistics|Get-NetworkControllerSubnetEgressReset|Get-NetworkControllerVirtualGateway|Get-NetworkControllerVirtualGatewayBgpPeer|Get-NetworkControllerVirtualGatewayBgpRouter|Get-NetworkControllerVirtualGatewayNetworkConnection|Get-NetworkControllerVirtualGatewayPolicyMap|Get-NetworkControllerVirtualNetwork|Get-NetworkControllerVirtualNetworkConfiguration|Get-NetworkControllerVirtualNetworkPeering|Get-NetworkControllerVirtualServer|Get-NetworkControllerVirtualSubnet|Get-NetworkControllerVirtualSwitchConfiguration|Install-NetworkController|Install-NetworkControllerCluster|Invoke-NetworkControllerConnectivityCheck|Invoke-NetworkControllerState|Invoke-NetworkControllerSubnetEgressReset|New-NetworkControllerAccessControlList|New-NetworkControllerAccessControlListRule|New-NetworkControllerBackup|New-NetworkControllerCredential|New-NetworkControllerFabricRoute|New-NetworkControllerGateway|New-NetworkControllerGatewayPool|New-NetworkControllerIDnsServerConfiguration|New-NetworkControllerIpPool|New-NetworkControllerIpReservation|New-NetworkControllerLoadBalancer|New-NetworkControllerLoadBalancerBackendAddressPool|New-NetworkControllerLoadBalancerConfiguration|New-NetworkControllerLoadBalancerFrontendIpConfiguration|New-NetworkControllerLoadBalancerInboundNatRule|New-NetworkControllerLoadBalancerMux|New-NetworkControllerLoadBalancerOutboundNatRule|New-NetworkControllerLoadBalancerProbe|New-NetworkControllerLoadBalancingRule|New-NetworkControllerLogicalNetwork|New-NetworkControllerLogicalSubnet|New-NetworkControllerMacPool|New-NetworkControllerNetworkInterface|New-NetworkControllerNetworkInterfaceIpConfiguration|New-NetworkControllerNodeObject|New-NetworkControllerPublicIpAddress|New-NetworkControllerRestore|New-NetworkControllerRoute|New-NetworkControllerRouteTable|New-NetworkControllerServer|New-NetworkControllerServerInterface|New-NetworkControllerServiceInsertion|New-NetworkControllerVirtualGateway|New-NetworkControllerVirtualGatewayBgpPeer|New-NetworkControllerVirtualGatewayBgpRouter|New-NetworkControllerVirtualGatewayNetworkConnection|New-NetworkControllerVirtualGatewayPolicyMap|New-NetworkControllerVirtualNetwork|New-NetworkControllerVirtualNetworkPeering|New-NetworkControllerVirtualServer|New-NetworkControllerVirtualSubnet|Remove-NetworkControllerAccessControlList|Remove-NetworkControllerAccessControlListRule|Remove-NetworkControllerBackup|Remove-NetworkControllerCredential|Remove-NetworkControllerFabricRoute|Remove-NetworkControllerGateway|Remove-NetworkControllerGatewayPool|Remove-NetworkControllerIpPool|Remove-NetworkControllerIpReservation|Remove-NetworkControllerLoadBalancer|Remove-NetworkControllerLoadBalancerBackendAddressPool|Remove-NetworkControllerLoadBalancerConfiguration|Remove-NetworkControllerLoadBalancerFrontendIpConfiguration|Remove-NetworkControllerLoadBalancerInboundNatRule|Remove-NetworkControllerLoadBalancerMux|Remove-NetworkControllerLoadBalancerOutboundNatRule|Remove-NetworkControllerLoadBalancerProbe|Remove-NetworkControllerLoadBalancingRule|Remove-NetworkControllerLogicalNetwork|Remove-NetworkControllerLogicalSubnet|Remove-NetworkControllerMacPool|Remove-NetworkControllerNetworkInterface|Remove-NetworkControllerNetworkInterfaceIpConfiguration|Remove-NetworkControllerNode|Remove-NetworkControllerPublicIpAddress|Remove-NetworkControllerRestore|Remove-NetworkControllerRoute|Remove-NetworkControllerRouteTable|Remove-NetworkControllerServer|Remove-NetworkControllerServerInterface|Remove-NetworkControllerServiceInsertion|Remove-NetworkControllerVirtualGateway|Remove-NetworkControllerVirtualGatewayBgpPeer|Remove-NetworkControllerVirtualGatewayBgpRouter|Remove-NetworkControllerVirtualGatewayNetworkConnection|Remove-NetworkControllerVirtualGatewayPolicyMap|Remove-NetworkControllerVirtualNetwork|Remove-NetworkControllerVirtualNetworkPeering|Remove-NetworkControllerVirtualServer|Remove-NetworkControllerVirtualSubnet|Repair-NetworkControllerCluster|Set-NetworkController|Set-NetworkControllerAuditingSettingsConfiguration|Set-NetworkControllerCluster|Set-NetworkControllerDiagnostic|Set-NetworkControllerNode|Set-NetworkControllerVirtualNetworkConfiguration|Set-NetworkControllerVirtualSwitchConfiguration|Uninstall-NetworkController|Uninstall-NetworkControllerCluster|Update-NetworkController|Debug-NetworkController|Debug-NetworkControllerConfigurationState|Debug-ServiceFabricNodeStatus|Get-NetworkControllerDeploymentInfo|Get-NetworkControllerManagedDevices|Get-NetworkControllerReplica|Add-NlbClusterNode|Add-NlbClusterNodeDip|Add-NlbClusterPortRule|Add-NlbClusterVip|Disable-NlbClusterPortRule|Enable-NlbClusterPortRule|Get-NlbCluster|Get-NlbClusterDriverInfo|Get-NlbClusterNode|Get-NlbClusterNodeDip|Get-NlbClusterNodeNetworkInterface|Get-NlbClusterPortRule|Get-NlbClusterVip|New-NlbCluster|New-NlbClusterIpv6Address|Remove-NlbCluster|Remove-NlbClusterNode|Remove-NlbClusterNodeDip|Remove-NlbClusterPortRule|Remove-NlbClusterVip|Resume-NlbCluster|Resume-NlbClusterNode|Set-NlbCluster|Set-NlbClusterNode|Set-NlbClusterNodeDip|Set-NlbClusterPortRule|Set-NlbClusterPortRuleNodeHandlingPriority|Set-NlbClusterPortRuleNodeWeight|Set-NlbClusterVip|Start-NlbCluster|Start-NlbClusterNode|Stop-NlbCluster|Stop-NlbClusterNode|Suspend-NlbCluster|Suspend-NlbClusterNode|Disable-NetworkSwitchEthernetPort|Disable-NetworkSwitchFeature|Disable-NetworkSwitchVlan|Enable-NetworkSwitchEthernetPort|Enable-NetworkSwitchFeature|Enable-NetworkSwitchVlan|Get-NetworkSwitchEthernetPort|Get-NetworkSwitchFeature|Get-NetworkSwitchGlobalData|Get-NetworkSwitchVlan|New-NetworkSwitchVlan|Remove-NetworkSwitchEthernetPortIPAddress|Remove-NetworkSwitchVlan|Restore-NetworkSwitchConfiguration|Save-NetworkSwitchConfiguration|Set-NetworkSwitchEthernetPortIPAddress|Set-NetworkSwitchPortMode|Set-NetworkSwitchPortProperty|Set-NetworkSwitchVlanProperty|Add-NetIPHttpsCertBinding|Disable-NetDnsTransitionConfiguration|Disable-NetIPHttpsProfile|Disable-NetNatTransitionConfiguration|Enable-NetDnsTransitionConfiguration|Enable-NetIPHttpsProfile|Enable-NetNatTransitionConfiguration|Get-Net6to4Configuration|Get-NetDnsTransitionConfiguration|Get-NetDnsTransitionMonitoring|Get-NetIPHttpsConfiguration|Get-NetIPHttpsState|Get-NetIsatapConfiguration|Get-NetNatTransitionConfiguration|Get-NetNatTransitionMonitoring|Get-NetTeredoConfiguration|Get-NetTeredoState|New-NetIPHttpsConfiguration|New-NetNatTransitionConfiguration|Remove-NetIPHttpsCertBinding|Remove-NetIPHttpsConfiguration|Remove-NetNatTransitionConfiguration|Rename-NetIPHttpsConfiguration|Reset-Net6to4Configuration|Reset-NetDnsTransitionConfiguration|Reset-NetIPHttpsConfiguration|Reset-NetIsatapConfiguration|Reset-NetTeredoConfiguration|Set-Net6to4Configuration|Set-NetDnsTransitionConfiguration|Set-NetIPHttpsConfiguration|Set-NetIsatapConfiguration|Set-NetNatTransitionConfiguration|Set-NetTeredoConfiguration|Disconnect-NfsSession|Get-NfsClientConfiguration|Get-NfsClientgroup|Get-NfsClientLock|Get-NfsMappedIdentity|Get-NfsMappingStore|Get-NfsMountedClient|Get-NfsNetgroup|Get-NfsNetgroupStore|Get-NfsOpenFile|Get-NfsServerConfiguration|Get-NfsSession|Get-NfsShare|Get-NfsSharePermission|Get-NfsStatistics|Grant-NfsSharePermission|Install-NfsMappingStore|New-NfsClientgroup|New-NfsMappedIdentity|New-NfsNetgroup|New-NfsShare|Remove-NfsClientgroup|Remove-NfsMappedIdentity|Remove-NfsNetgroup|Remove-NfsShare|Rename-NfsClientgroup|Reset-NfsStatistics|Resolve-NfsMappedIdentity|Revoke-NfsClientLock|Revoke-NfsMountedClient|Revoke-NfsOpenFile|Revoke-NfsSharePermission|Set-NfsClientConfiguration|Set-NfsClientgroup|Set-NfsMappedIdentity|Set-NfsMappingStore|Set-NfsNetgroup|Set-NfsNetgroupStore|Set-NfsServerConfiguration|Set-NfsShare|Test-NfsMappedIdentity|Test-NfsMappingStore|Export-NpsConfiguration|Get-NpsRadiusClient|Get-NpsSharedSecretTemplate|Import-NpsConfiguration|New-NpsRadiusClient|Remove-NpsRadiusClient|Set-NpsRadiusClient|Find-Package|Find-PackageProvider|Get-Package|Get-PackageProvider|Get-PackageSource|Import-PackageProvider|Install-Package|Install-PackageProvider|Register-PackageSource|Save-Package|Set-PackageSource|Uninstall-Package|Unregister-PackageSource|Clear-PcsvDeviceLog|Get-PcsvDevice|Get-PcsvDeviceLog|Restart-PcsvDevice|Set-PcsvDeviceBootConfiguration|Set-PcsvDeviceNetworkConfiguration|Set-PcsvDeviceUserPassword|Start-PcsvDevice|Stop-PcsvDevice|Get-PmemDedicatedMemory|Get-PmemDisk|Get-PmemPhysicalDevice|Get-PmemUnusedRegion|Initialize-PmemPhysicalDevice|New-PmemDedicatedMemory|New-PmemDisk|Remove-PmemDedicatedMemory|Remove-PmemDisk|AfterAll|AfterEach|Assert-MockCalled|Assert-VerifiableMocks|BeforeAll|BeforeEach|Context|Describe|Get-MockDynamicParameters|Get-TestDriveItem|In|InModuleScope|Invoke-Mock|Invoke-Pester|It|Mock|New-Fixture|Set-DynamicParameterVariables|Setup|Should|Add-CertificateEnrollmentPolicyServer|Export-Certificate|Export-PfxCertificate|Get-Certificate|Get-CertificateAutoEnrollmentPolicy|Get-CertificateEnrollmentPolicyServer|Get-CertificateNotificationTask|Get-PfxData|Import-Certificate|Import-PfxCertificate|New-CertificateNotificationTask|New-SelfSignedCertificate|Remove-CertificateEnrollmentPolicyServer|Remove-CertificateNotificationTask|Set-CertificateAutoEnrollmentPolicy|Switch-Certificate|Test-Certificate|Get-PlatformIdentifier|Disable-PnpDevice|Enable-PnpDevice|Get-PnpDevice|Get-PnpDeviceProperty|Find-DscResource|Find-Module|Find-Script|Get-InstalledModule|Get-InstalledScript|Get-PSRepository|Install-Module|Install-Script|New-ScriptFileInfo|Publish-Module|Publish-Script|Register-PSRepository|Save-Module|Save-Script|Set-PSRepository|Test-ScriptFileInfo|Uninstall-Module|Uninstall-Script|Unregister-PSRepository|Update-Module|Update-ModuleManifest|Update-Script|Update-ScriptFileInfo|Add-Printer|Add-PrinterDriver|Add-PrinterPort|Get-PrintConfiguration|Get-Printer|Get-PrinterDriver|Get-PrinterPort|Get-PrinterProperty|Get-PrintJob|Read-PrinterNfcTag|Remove-Printer|Remove-PrinterDriver|Remove-PrinterPort|Remove-PrintJob|Rename-Printer|Restart-PrintJob|Resume-PrintJob|Set-PrintConfiguration|Set-Printer|Set-PrinterProperty|Suspend-PrintJob|Write-PrinterNfcTag|ConvertTo-ProcessMitigationPolicy|Get-ProcessMitigation|Set-ProcessMitigation|Export-ProvisioningPackage|Export-Trace|Get-ProvisioningPackage|Get-TrustedProvisioningCertificate|Install-ProvisioningPackage|Install-TrustedProvisioningCertificate|Uninstall-ProvisioningPackage|Uninstall-TrustedProvisioningCertificate|Configuration|Disable-DscDebug|Enable-DscDebug|Get-DscConfiguration|Get-DscConfigurationStatus|Get-DscLocalConfigurationManager|Get-DscResource|New-DscChecksum|Remove-DscConfigurationDocument|Restore-DscConfiguration|Stop-DscConfiguration|Invoke-DscResource|Publish-DscConfiguration|Set-DscLocalConfigurationManager|Start-DscConfiguration|Test-DscConfiguration|Update-DscConfiguration|Disable-PSTrace|Disable-PSWSManCombinedTrace|Disable-WSManTrace|Enable-PSTrace|Enable-PSWSManCombinedTrace|Enable-WSManTrace|Get-LogProperties|Set-LogProperties|Start-Trace|Stop-Trace|PSConsoleHostReadline|Get-PSReadlineKeyHandler|Get-PSReadlineOption|Remove-PSReadlineKeyHandler|Set-PSReadlineKeyHandler|Set-PSReadlineOption|Add-JobTrigger|Disable-JobTrigger|Disable-ScheduledJob|Enable-JobTrigger|Enable-ScheduledJob|Get-JobTrigger|Get-ScheduledJob|Get-ScheduledJobOption|New-JobTrigger|New-ScheduledJobOption|Register-ScheduledJob|Remove-JobTrigger|Set-JobTrigger|Set-ScheduledJob|Set-ScheduledJobOption|Unregister-ScheduledJob|New-PSWorkflowSession|New-PSWorkflowExecutionOption|Invoke-AsWorkflow|Add-RDServer|Add-RDSessionHost|Add-RDVirtualDesktopToCollection|Disable-RDVirtualDesktopADMachineAccountReuse|Disconnect-RDUser|Enable-RDVirtualDesktopADMachineAccountReuse|Export-RDPersonalSessionDesktopAssignment|Export-RDPersonalVirtualDesktopAssignment|Get-RDAvailableApp|Get-RDCertificate|Get-RDConnectionBrokerHighAvailability|Get-RDDeploymentGatewayConfiguration|Get-RDFileTypeAssociation|Get-RDLicenseConfiguration|Get-RDPersonalSessionDesktopAssignment|Get-RDPersonalVirtualDesktopAssignment|Get-RDPersonalVirtualDesktopPatchSchedule|Get-RDRemoteApp|Get-RDRemoteDesktop|Get-RDServer|Get-RDSessionCollection|Get-RDSessionCollectionConfiguration|Get-RDSessionHost|Get-RDUserSession|Get-RDVirtualDesktop|Get-RDVirtualDesktopCollection|Get-RDVirtualDesktopCollectionConfiguration|Get-RDVirtualDesktopCollectionJobStatus|Get-RDVirtualDesktopConcurrency|Get-RDVirtualDesktopIdleCount|Get-RDVirtualDesktopTemplateExportPath|Get-RDWorkspace|Grant-RDOUAccess|Import-RDPersonalSessionDesktopAssignment|Import-RDPersonalVirtualDesktopAssignment|Invoke-RDUserLogoff|Move-RDVirtualDesktop|New-RDCertificate|New-RDPersonalVirtualDesktopPatchSchedule|New-RDRemoteApp|New-RDSessionCollection|New-RDSessionDeployment|New-RDVirtualDesktopCollection|New-RDVirtualDesktopDeployment|Remove-RDDatabaseConnectionString|Remove-RDPersonalSessionDesktopAssignment|Remove-RDPersonalVirtualDesktopAssignment|Remove-RDPersonalVirtualDesktopPatchSchedule|Remove-RDRemoteApp|Remove-RDServer|Remove-RDSessionCollection|Remove-RDSessionHost|Remove-RDVirtualDesktopCollection|Remove-RDVirtualDesktopFromCollection|Send-RDUserMessage|Set-RDActiveManagementServer|Set-RDCertificate|Set-RDClientAccessName|Set-RDConnectionBrokerHighAvailability|Set-RDDatabaseConnectionString|Set-RDDeploymentGatewayConfiguration|Set-RDFileTypeAssociation|Set-RDLicenseConfiguration|Set-RDPersonalSessionDesktopAssignment|Set-RDPersonalVirtualDesktopAssignment|Set-RDPersonalVirtualDesktopPatchSchedule|Set-RDRemoteApp|Set-RDRemoteDesktop|Set-RDSessionCollectionConfiguration|Set-RDSessionHost|Set-RDVirtualDesktopCollectionConfiguration|Set-RDVirtualDesktopConcurrency|Set-RDVirtualDesktopIdleCount|Set-RDVirtualDesktopTemplateExportPath|Set-RDWorkspace|Stop-RDVirtualDesktopCollectionJob|Test-RDOUAccess|Test-RDVirtualDesktopADMachineAccountReuse|Update-RDVirtualDesktopCollection|Add-BgpCustomRoute|Add-BgpPeer|Add-BgpRouteAggregate|Add-BgpRouter|Add-BgpRoutingPolicy|Add-BgpRoutingPolicyForPeer|Add-DAAppServer|Add-DAClient|Add-DAClientDnsConfiguration|Add-DAEntryPoint|Add-DAMgmtServer|Add-RemoteAccessIpFilter|Add-RemoteAccessLoadBalancerNode|Add-RemoteAccessRadius|Add-VpnIPAddressRange|Add-VpnS2SInterface|Add-VpnSstpProxyRule|Clear-BgpRouteFlapDampening|Clear-RemoteAccessInboxAccountingStore|Clear-VpnS2SInterfaceStatistics|Connect-VpnS2SInterface|Disable-BgpRouteFlapDampening|Disable-DAMultiSite|Disable-DAOtpAuthentication|Disable-RemoteAccessRoutingDomain|Disconnect-VpnS2SInterface|Disconnect-VpnUser|Enable-BgpRouteFlapDampening|Enable-DAMultiSite|Enable-DAOtpAuthentication|Enable-RemoteAccessRoutingDomain|Get-BgpCustomRoute|Get-BgpPeer|Get-BgpRouteAggregate|Get-BgpRouteFlapDampening|Get-BgpRouteInformation|Get-BgpRouter|Get-BgpRoutingPolicy|Get-BgpStatistics|Get-DAAppServer|Get-DAClient|Get-DAClientDnsConfiguration|Get-DAEntryPoint|Get-DAEntryPointDC|Get-DAMgmtServer|Get-DAMultiSite|Get-DANetworkLocationServer|Get-DAOtpAuthentication|Get-DAServer|Get-RemoteAccess|Get-RemoteAccessAccounting|Get-RemoteAccessConfiguration|Get-RemoteAccessConnectionStatistics|Get-RemoteAccessConnectionStatisticsSummary|Get-RemoteAccessHealth|Get-RemoteAccessIpFilter|Get-RemoteAccessLoadBalancer|Get-RemoteAccessRadius|Get-RemoteAccessRoutingDomain|Get-RemoteAccessUserActivity|Get-RoutingProtocolPreference|Get-VpnAuthProtocol|Get-VpnS2SInterface|Get-VpnS2SInterfaceStatistics|Get-VpnServerConfiguration|Get-VpnSstpProxyRule|Install-RemoteAccess|New-VpnSstpProxyRule|New-VpnTrafficSelector|Remove-BgpCustomRoute|Remove-BgpPeer|Remove-BgpRouteAggregate|Remove-BgpRouter|Remove-BgpRoutingPolicy|Remove-BgpRoutingPolicyForPeer|Remove-DAAppServer|Remove-DAClient|Remove-DAClientDnsConfiguration|Remove-DAEntryPoint|Remove-DAMgmtServer|Remove-RemoteAccessIpFilter|Remove-RemoteAccessLoadBalancerNode|Remove-RemoteAccessRadius|Remove-VpnIPAddressRange|Remove-VpnS2SInterface|Remove-VpnSstpProxyRule|Set-BgpPeer|Set-BgpRouteAggregate|Set-BgpRouteFlapDampening|Set-BgpRouter|Set-BgpRoutingPolicy|Set-BgpRoutingPolicyForPeer|Set-DAAppServerConnection|Set-DAClient|Set-DAClientDnsConfiguration|Set-DAEntryPoint|Set-DAEntryPointDC|Set-DAMultiSite|Set-DANetworkLocationServer|Set-DAOtpAuthentication|Set-DAServer|Set-RemoteAccess|Set-RemoteAccessAccounting|Set-RemoteAccessConfiguration|Set-RemoteAccessInboxAccountingStore|Set-RemoteAccessIpFilter|Set-RemoteAccessLoadBalancer|Set-RemoteAccessRadius|Set-RemoteAccessRoutingDomain|Set-RoutingProtocolPreference|Set-VpnAuthProtocol|Set-VpnAuthType|Set-VpnIPAddressAssignment|Set-VpnS2SInterface|Set-VpnServerConfiguration|Set-VpnSstpProxyRule|Start-BgpPeer|Stop-BgpPeer|Uninstall-RemoteAccess|Update-DAMgmtServer|Convert-License|Disable-ScheduledTask|Enable-ScheduledTask|Export-ScheduledTask|Get-ClusteredScheduledTask|Get-ScheduledTask|Get-ScheduledTaskInfo|New-ScheduledTask|New-ScheduledTaskAction|New-ScheduledTaskPrincipal|New-ScheduledTaskSettingsSet|New-ScheduledTaskTrigger|Register-ClusteredScheduledTask|Register-ScheduledTask|Set-ClusteredScheduledTask|Set-ScheduledTask|Start-ScheduledTask|Stop-ScheduledTask|Unregister-ClusteredScheduledTask|Unregister-ScheduledTask|Confirm-SecureBootUEFI|Format-SecureBootUEFI|Get-SecureBootPolicy|Get-SecureBootUEFI|Set-SecureBootUEFI|Get-DisplayResolution|Set-DisplayResolution|Disable-ServerManagerStandardUserRemoting|Enable-ServerManagerStandardUserRemoting|Get-WindowsFeature|Install-WindowsFeature|Uninstall-WindowsFeature|Get-SMCounterSample|Get-SMPerformanceCollector|Get-SMServerBpaResult|Get-SMServerClusterName|Get-SMServerEvent|Get-SMServerFeature|Get-SMServerInventory|Get-SMServerService|Remove-SMServerPerformanceLog|Start-SMPerformanceCollector|Stop-SMPerformanceCollector|Get-KeyProtectorFromShieldingDataFile|Get-ShieldedVMProvisioningStatus|Initialize-ShieldedVM|New-ShieldedVMSpecializationDataFile|Test-ShieldingDataApplicability|Import-ShieldingDataFile|New-ShieldingDataFile|New-VolumeIDQualifier|Save-ShieldedVMRecoveryKey|Save-VolumeSignatureCatalog|Unprotect-ShieldedVMRecoveryKey|Initialize-VMShieldingHelperVHD|Protect-TemplateDisk|Block-SmbShareAccess|Close-SmbOpenFile|Close-SmbSession|Disable-SmbDelegation|Enable-SmbDelegation|Get-SmbBandwidthLimit|Get-SmbClientConfiguration|Get-SmbClientNetworkInterface|Get-SmbConnection|Get-SmbDelegation|Get-SmbGlobalMapping|Get-SmbMapping|Get-SmbMultichannelConnection|Get-SmbMultichannelConstraint|Get-SmbOpenFile|Get-SmbServerCertificateMapping|Get-SmbServerCertProps|Get-SmbServerConfiguration|Get-SmbServerNetworkInterface|Get-SmbSession|Get-SmbShare|Get-SmbShareAccess|Grant-SmbShareAccess|New-SmbGlobalMapping|New-SmbMapping|New-SmbMultichannelConstraint|New-SmbServerCertificateMapping|New-SmbShare|Remove-SmbBandwidthLimit|Remove-SmbComponent|Remove-SmbGlobalMapping|Remove-SmbMapping|Remove-SmbMultichannelConstraint|Remove-SmbServerCertificateMapping|Remove-SmbShare|Reset-SmbClientConfiguration|Reset-SmbServerConfiguration|Revoke-SmbShareAccess|Set-SmbBandwidthLimit|Set-SmbClientConfiguration|Set-SmbPathAcl|Set-SmbServerCertificateMapping|Set-SmbServerConfiguration|Set-SmbShare|Unblock-SmbShareAccess|Update-SmbMultichannelConnection|Move-SmbClient|Get-SmbWitnessClient|Move-SmbWitnessClient|Register-SmisProvider|Search-SmisProvider|Unregister-SmisProvider|Get-SilComputer|Get-SilComputerIdentity|Get-SilData|Get-SilLogging|Get-SilSoftware|Get-SilUalAccess|Get-SilWindowsUpdate|Publish-SilData|Set-SilLogging|Start-SilLogging|Stop-SilLogging|Get-StartApps|Export-StartLayout|Import-StartLayout|Export-StartLayoutEdgeAssets|Add-InitiatorIdToMaskingSet|Add-PartitionAccessPath|Add-PhysicalDisk|Add-TargetPortToMaskingSet|Add-VirtualDiskToMaskingSet|Block-FileShareAccess|Clear-Disk|Clear-FileStorageTier|Connect-VirtualDisk|Debug-FileShare|Debug-StorageSubSystem|Debug-Volume|Disable-PhysicalDiskIdentification|Disable-StorageEnclosureIdentification|Disable-StorageHighAvailability|Disable-StorageMaintenanceMode|Disconnect-VirtualDisk|Dismount-DiskImage|Enable-PhysicalDiskIdentification|Enable-StorageEnclosureIdentification|Enable-StorageHighAvailability|Enable-StorageMaintenanceMode|Format-Volume|Get-DedupProperties|Get-Disk|||||Get-DiskImage|Get-DiskStorageNodeView|Get-FileIntegrity|Get-FileShare|Get-FileShareAccessControlEntry|Get-FileStorageTier|Get-InitiatorId|Get-InitiatorPort|Get-MaskingSet|Get-OffloadDataTransferSetting|Get-Partition|Get-PartitionSupportedSize|Get-PhysicalDisk|Get-PhysicalDiskStorageNodeView|Get-PhysicalExtent|Get-PhysicalExtentAssociation|Get-ResiliencySetting|Get-StorageAdvancedProperty|Get-StorageDiagnosticInfo|Get-StorageEnclosure|Get-StorageEnclosureStorageNodeView|Get-StorageEnclosureVendorData|Get-StorageFaultDomain|Get-StorageFileServer|Get-StorageFirmwareInformation|Get-StorageHealthAction|Get-StorageHealthReport|Get-StorageHealthSetting|Get-StorageJob|Get-StorageNode|Get-StoragePool|Get-StorageProvider|Get-StorageReliabilityCounter|Get-StorageSetting|Get-StorageSubSystem|Get-StorageTier|Get-StorageTierSupportedSize|Get-SupportedClusterSizes|Get-SupportedFileSystems|Get-TargetPort|Get-TargetPortal|Get-VirtualDisk|Get-VirtualDiskSupportedSize|Get-Volume|Get-VolumeCorruptionCount|Get-VolumeScrubPolicy|Grant-FileShareAccess|Hide-VirtualDisk|Initialize-Disk|Mount-DiskImage|New-FileShare|New-MaskingSet|New-Partition|New-StorageFileServer|New-StoragePool|New-StorageSubsystemVirtualDisk|New-StorageTier|New-VirtualDisk|New-VirtualDiskClone|New-VirtualDiskSnapshot|New-Volume|Optimize-StoragePool|Optimize-Volume|Register-StorageSubsystem|Remove-FileShare|Remove-InitiatorId|Remove-InitiatorIdFromMaskingSet|Remove-MaskingSet|Remove-Partition|Remove-PartitionAccessPath|Remove-PhysicalDisk|Remove-StorageFileServer|Remove-StorageHealthSetting|Remove-StoragePool|Remove-StorageTier|Remove-TargetPortFromMaskingSet|Remove-VirtualDisk|Remove-VirtualDiskFromMaskingSet|Rename-MaskingSet|Repair-FileIntegrity|Repair-VirtualDisk|Repair-Volume|Reset-PhysicalDisk|Reset-StorageReliabilityCounter|Resize-Partition|Resize-StorageTier|Resize-VirtualDisk|Revoke-FileShareAccess|Set-Disk|Set-FileIntegrity|Set-FileShare|Set-FileStorageTier|Set-InitiatorPort|Set-Partition|Set-PhysicalDisk|Set-ResiliencySetting|Set-StorageFileServer|Set-StorageHealthSetting|Set-StoragePool|Set-StorageProvider|Set-StorageSetting|Set-StorageSubSystem|Set-StorageTier|Set-VirtualDisk|Set-Volume|Set-VolumeScrubPolicy|Show-VirtualDisk|Start-StorageDiagnosticLog|Stop-StorageDiagnosticLog|Stop-StorageJob|Unblock-FileShareAccess|Unregister-StorageSubsystem|Update-Disk|Update-HostStorageCache|Update-StorageFirmware|Update-StoragePool|Update-StorageProviderCache|Write-VolumeCache|Get-StorageQoSFlow|Get-StorageQosPolicy|Get-StorageQosPolicyStore|Get-StorageQosVolume|New-StorageQosPolicy|Remove-StorageQosPolicy|Set-StorageQosPolicy|Set-StorageQosPolicyStore|Clear-SRMetadata|Dismount-SRDestination|Export-SRConfiguration|Get-SRAccess|Get-SRDelegation|Get-SRGroup|Get-SRNetworkConstraint|Get-SRPartnership|Grant-SRAccess|Grant-SRDelegation|Mount-SRDestination|New-SRGroup|New-SRPartnership|Remove-SRGroup|Remove-SRNetworkConstraint|Remove-SRPartnership|Revoke-SRAccess|Revoke-SRDelegation|Set-SRGroup|Set-SRNetworkConstraint|Set-SRPartnership|Suspend-SRGroup|Sync-SRGroup|Test-SRTopology|Disable-SyncShare|Enable-SyncShare|Get-SyncServerSetting|Get-SyncShare|Get-SyncUserStatus|New-SyncShare|Remove-SyncShare|Repair-SyncShare|Set-SyncServerSetting|Set-SyncShare|Add-InsightsCapability|Disable-InsightsCapability|Disable-InsightsCapabilitySchedule|Enable-InsightsCapability|Enable-InsightsCapabilitySchedule|Get-InsightsCapability|Get-InsightsCapabilityAction|Get-InsightsCapabilityResult|Get-InsightsCapabilitySchedule|Invoke-InsightsCapability|Remove-InsightsCapability|Remove-InsightsCapabilityAction|Set-InsightsCapabilityAction|Set-InsightsCapabilitySchedule|Update-InsightsCapability|Disable-TlsCipherSuite|Disable-TlsEccCurve|Disable-TlsSessionTicketKey|Enable-TlsCipherSuite|Enable-TlsEccCurve|Enable-TlsSessionTicketKey|Export-TlsSessionTicketKey|Get-TlsCipherSuite|Get-TlsEccCurve|New-TlsSessionTicketKey|Get-TroubleshootingPack|Invoke-TroubleshootingPack|Clear-Tpm|ConvertTo-TpmOwnerAuth|Disable-TpmAutoProvisioning|Enable-TpmAutoProvisioning|Get-Tpm|Get-TpmEndorsementKeyInfo|Get-TpmSupportedFeature|Import-TpmOwnerAuth|Initialize-Tpm|Set-TpmOwnerAuth|Unblock-Tpm|Clear-UevAppxPackage|Clear-UevConfiguration|Disable-Uev|Disable-UevAppxPackage|Disable-UevTemplate|Enable-Uev|Enable-UevAppxPackage|Enable-UevTemplate|Export-UevConfiguration|Export-UevPackage|Get-UevAppxPackage|Get-UevConfiguration|Get-UevStatus|Get-UevTemplate|Get-UevTemplateProgram|Import-UevConfiguration|Register-UevTemplate|Repair-UevTemplateIndex|Restore-UevBackup|Restore-UevUserSetting|Set-UevConfiguration|Set-UevTemplateProfile|Test-UevTemplate|Unregister-UevTemplate|Update-UevTemplate|Add-WsusComputer|Add-WsusDynamicCategory|Approve-WsusUpdate|Deny-WsusUpdate|Get-WsusClassification|Get-WsusComputer|Get-WsusDynamicCategory|Get-WsusProduct|Get-WsusServer|Get-WsusUpdate|Invoke-WsusServerCleanup|Remove-WsusDynamicCategory|Set-WsusClassification|Set-WsusDynamicCategory|Set-WsusProduct|Set-WsusServerSynchronization|Disable-Ual|Enable-Ual|Get-Ual|Get-UalDailyAccess|Get-UalDailyDeviceAccess|Get-UalDailyUserAccess|Get-UalDeviceAccess|Get-UalDns|Get-UalHyperV|Get-UalOverview|Get-UalServerDevice|Get-UalServerUser|Get-UalSystemId|Get-UalUserAccess|Add-VamtProductKey|Export-VamtData|Find-VamtManagedMachine|Get-VamtConfirmationId|Get-VamtProduct|Get-VamtProductKey|Import-VamtData|Initialize-VamtData|Install-VamtConfirmationId|Install-VamtProductActivation|Install-VamtProductKey|Update-VamtProduct|Add-VpnConnection|Add-VpnConnectionRoute|Add-VpnConnectionTriggerApplication|Add-VpnConnectionTriggerDnsConfiguration|Add-VpnConnectionTriggerTrustedNetwork|Get-VpnConnection|Get-VpnConnectionTrigger|New-EapConfiguration|New-VpnServerAddress|Remove-VpnConnection|Remove-VpnConnectionRoute|Remove-VpnConnectionTriggerApplication|Remove-VpnConnectionTriggerDnsConfiguration|Remove-VpnConnectionTriggerTrustedNetwork|Set-VpnConnection|Set-VpnConnectionIPsecConfiguration|Set-VpnConnectionProxy|Set-VpnConnectionTriggerDnsConfiguration|Set-VpnConnectionTriggerTrustedNetwork|Add-WdsDriverPackage|Approve-WdsClient|Copy-WdsInstallImage|Deny-WdsClient|Disable-WdsBootImage|Disable-WdsDriverPackage|Disable-WdsInstallImage|Disconnect-WdsMulticastClient|Enable-WdsBootImage|Enable-WdsDriverPackage|Enable-WdsInstallImage|Export-WdsBootImage|Export-WdsInstallImage|Get-WdsBootImage|Get-WdsClient|Get-WdsDriverPackage|Get-WdsInstallImage|Get-WdsInstallImageGroup|Get-WdsMulticastClient|Import-WdsBootImage|Import-WdsDriverPackage|Import-WdsInstallImage|New-WdsClient|New-WdsInstallImageGroup|Remove-WdsBootImage|Remove-WdsClient|Remove-WdsDriverPackage|Remove-WdsInstallImage|Remove-WdsInstallImageGroup|Set-WdsBootImage|Set-WdsClient|Set-WdsInstallImage|Set-WdsInstallImageGroup|Add-WebConfiguration|Add-WebConfigurationLock|Add-WebConfigurationProperty|Backup-WebConfiguration|Clear-WebCentralCertProvider|Clear-WebConfiguration|Clear-WebRequestTracingSetting|Clear-WebRequestTracingSettings|ConvertTo-WebApplication|Disable-WebCentralCertProvider|Disable-WebGlobalModule|Disable-WebRequestTracing|Enable-WebCentralCertProvider|Enable-WebGlobalModule|Enable-WebRequestTracing|Get-WebAppDomain|Get-WebApplication|Get-WebAppPoolState|Get-WebBinding|Get-WebCentralCertProvider|Get-WebConfigFile|Get-WebConfiguration|Get-WebConfigurationBackup|Get-WebConfigurationLocation|Get-WebConfigurationLock|Get-WebConfigurationProperty|Get-WebFilePath|Get-WebGlobalModule|Get-WebHandler|Get-WebItemState|Get-WebManagedModule|Get-WebRequest|Get-Website|Get-WebsiteState|Get-WebURL|Get-WebVirtualDirectory|New-WebApplication|New-WebAppPool|New-WebBinding|New-WebFtpSite|New-WebGlobalModule|New-WebHandler|New-WebManagedModule|New-Website|New-WebVirtualDirectory|Remove-WebApplication|Remove-WebAppPool|Remove-WebBinding|Remove-WebConfigurationBackup|Remove-WebConfigurationLocation|Remove-WebConfigurationLock|Remove-WebConfigurationProperty|Remove-WebGlobalModule|Remove-WebHandler|Remove-WebManagedModule|Remove-Website|Remove-WebVirtualDirectory|Rename-WebConfigurationLocation|Restart-WebAppPool|Restart-WebItem|Restore-WebConfiguration|Select-WebConfiguration|Set-WebBinding|Set-WebCentralCertProvider|Set-WebCentralCertProviderCredential|Set-WebConfiguration|Set-WebConfigurationProperty|Set-WebGlobalModule|Set-WebHandler|Set-WebManagedModule|Start-WebAppPool|Start-WebCommitDelay|Start-WebItem|Start-Website|Stop-WebAppPool|Stop-WebCommitDelay|Stop-WebItem|Stop-Website|Add-WebApplicationProxyApplication|Get-WebApplicationProxyApplication|Get-WebApplicationProxyAvailableADFSRelyingParty|Get-WebApplicationProxyConfiguration|Get-WebApplicationProxyHealth|Get-WebApplicationProxySslCertificate|Install-WebApplicationProxy|Remove-WebApplicationProxyApplication|Set-WebApplicationProxyApplication|Set-WebApplicationProxyConfiguration|Set-WebApplicationProxySslCertificate|Update-WebApplicationProxyDeviceRegistration|Get-WheaMemoryPolicy|Set-WheaMemoryPolicy|Get-WindowsDeveloperLicense|Show-WindowsDeveloperLicenseRegistration|Unregister-WindowsDeveloperLicense|Clear-WindowsDiagnosticData|Disable-WindowsErrorReporting|Enable-WindowsErrorReporting|Get-WindowsErrorReporting|Get-WindowsSearchSetting|Set-WindowsSearchSetting|Add-WBBackupTarget|Add-WBBareMetalRecovery|Add-WBFileSpec|Add-WBSystemState|Add-WBVirtualMachine|Add-WBVolume|Backup-ACL|Get-WBBackupSet|Get-WBBackupTarget|Get-WBBackupVolumeBrowsePath|Get-WBBareMetalRecovery|Get-WBDisk|Get-WBFileSpec|Get-WBJob|Get-WBPerformanceConfiguration|Get-WBPolicy|Get-WBSchedule|Get-WBSummary|Get-WBSystemState|Get-WBVirtualMachine|Get-WBVolume|Get-WBVssBackupOption|New-WBBackupTarget|New-WBFileSpec|New-WBPolicy|Remove-WBBackupSet|Remove-WBBackupTarget|Remove-WBBareMetalRecovery|Remove-WBCatalog|Remove-WBFileSpec|Remove-WBPolicy|Remove-WBSystemState|Remove-WBVirtualMachine|Remove-WBVolume|Restore-ACL|Restore-WBCatalog|Resume-WBBackup|Resume-WBVolumeRecovery|Set-WBPerformanceConfiguration|Set-WBPolicy|Set-WBSchedule|Set-WBVssBackupOption|Start-WBApplicationRecovery|Start-WBBackup|Start-WBFileRecovery|Start-WBHyperVRecovery|Start-WBSystemStateRecovery|Start-WBVolumeRecovery|Stop-WBJob|Get-WindowsUpdateLog",r=this.createKeywordMapper({"support.function":n,keyword:t},"identifier"),i="eq|ne|gt|lt|le|ge|like|notlike|match|notmatch|contains|notcontains|in|notin|band|bor|bxor|bnot|ceq|cne|cgt|clt|cle|cge|clike|cnotlike|cmatch|cnotmatch|ccontains|cnotcontains|cin|cnotin|ieq|ine|igt|ilt|ile|ige|ilike|inotlike|imatch|inotmatch|icontains|inotcontains|iin|inotin|and|or|xor|not|split|join|replace|f|csplit|creplace|isplit|ireplace|is|isnot|as|shl|shr";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment.start",regex:"<#",next:"comment"},{token:"string",regex:/@'$/,push:[{token:"string",regex:/^'@/,next:"pop"},{defaultToken:"string"}]},{token:"string",regex:/@"$/,push:[{token:"string",regex:/^"@/,next:"pop"},{include:"expressions"},{include:"expandable-strings"},{defaultToken:"string"}]},{include:"strings"},{include:"variables"},{include:"statements"},{include:"expressions"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment.end",regex:"#>",next:"start"},{token:"doc.comment.tag",regex:"^\\.\\w+"},{defaultToken:"comment"}],"expandable-strings":[{token:"constant.language.escape",regex:/`./},{include:"variables"}],variables:[{token:"variable.instance",regex:"[$]"+e+"\\b"},{token:"variable.braced",regex:/\$\{/,push:[{token:"variable.braced",regex:/\}/,next:"pop"},{token:"constant.language.escape",regex:/`./},{defaultToken:"variable.braced"}]}],statements:[{token:"punctuation",regex:";"},{token:"keyword.operator",regex:"\\-(?:"+i+")"},{token:"keyword.operator",regex:"&|\\+|\\-|\\*|\\/|\\%|\\=|\\>|\\&|\\!|\\|"},{include:"constants"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b"}],constants:[{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"[$](?:[Tt]rue|[Ff]alse)\\b"},{token:"constant.language",regex:"[$][Nn]ull\\b"}],strings:[{token:"string",regex:"['][^']*[']"},{token:"string",regex:/"/,push:[{token:"string",regex:/"|$/,next:"pop"},{include:"expressions"},{include:"expandable-strings"},{defaultToken:"string"}]}],expressions:[{token:"keyword.operator",regex:/[$@]\(/,push:[{token:"keyword.operator",regex:/\)/,next:"pop"},{include:"parens-block"},{include:"expressions"},{include:"strings"},{include:"variables"},{include:"statements"}]},{token:"keyword.operator",regex:/@\{/,push:[{token:"keyword.operator",regex:/\}/,next:"pop"},{include:"parens-block"},{include:"strings"},{include:"variables"},{include:"statements"}]}],"parens-block":[{token:"paren.lparen",regex:/\(/,push:[{token:"paren.rparen",regex:/\)/,next:"pop"},{include:"parens-block"},{include:"strings"},{include:"variables"},{include:"statements"}]}]},this.normalizeRules()};r.inherits(s,i),t.PowershellHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/powershell",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/powershell_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./powershell_highlight_rules").PowershellHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u({start:"^\\s*(<#)",end:"^[#\\s]>\\s*$"})};r.inherits(a,i),function(){this.lineCommentStart="#",this.blockComment={start:"<#",end:"#>"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){return null},this.$id="ace/mode/powershell"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/powershell"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-praat.js b/www/js/ace/mode-praat.js deleted file mode 100644 index 5f2fa1bbc..000000000 --- a/www/js/ace/mode-praat.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/praat_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="if|then|else|elsif|elif|endif|fi|endfor|endproc|while|endwhile|repeat|until|select|plus|minus|assert|asserterror",t="macintosh|windows|unix|praatVersion|praatVersion\\$pi|undefined|newline\\$|tab\\$|shellDirectory\\$|homeDirectory\\$|preferencesDirectory\\$|temporaryDirectory\\$|defaultDirectory\\$",n="clearinfo|endSendPraat",r="writeInfo|writeInfoLine|appendInfo|appendInfoLine|info\\$|writeFile|writeFileLine|appendFile|appendFileLine|abs|round|floor|ceiling|min|max|imin|imax|sqrt|sin|cos|tan|arcsin|arccos|arctan|arctan2|sinc|sincpi|exp|ln|lnBeta|lnGamma|log10|log2|sinh|cosh|tanh|arcsinh|arccosh|arctanh|sigmoid|invSigmoid|erf|erfc|random(?:Uniform|Integer|Gauss|Poisson|Binomial)|gaussP|gaussQ|invGaussQ|incompleteGammaP|incompleteBeta|chiSquareP|chiSquareQ|invChiSquareQ|studentP|studentQ|invStudentQ|fisherP|fisherQ|invFisherQ|binomialP|binomialQ|invBinomialP|invBinomialQ|hertzToBark|barkToHerz|hertzToMel|melToHertz|hertzToSemitones|semitonesToHerz|erb|hertzToErb|erbToHertz|phonToDifferenceLimens|differenceLimensToPhon|soundPressureToPhon|beta|beta2|besselI|besselK|numberOfColumns|numberOfRows|selected|selected\\$|numberOfSelected|variableExists|index|rindex|startsWith|endsWith|index_regex|rindex_regex|replace_regex\\$|length|extractWord\\$|extractLine\\$|extractNumber|left\\$|right\\$|mid\\$|replace\\$|date\\$|fixed\\$|percent\\$|zero#|linear#|randomUniform#|randomInteger#|randomGauss#|beginPause|endPause|demoShow|demoWindowTitle|demoInput|demoWaitForInput|demoClicked|demoClickedIn|demoX|demoY|demoKeyPressed|demoKey\\$|demoExtraControlKeyPressed|demoShiftKeyPressed|demoCommandKeyPressed|demoOptionKeyPressed|environment\\$|chooseReadFile\\$|chooseDirectory\\$|createDirectory|fileReadable|deleteFile|selectObject|removeObject|plusObject|minusObject|runScript|exitScript|beginSendPraat|endSendPraat|objectsAreIdentical",i="Activation|AffineTransform|AmplitudeTier|Art|Artword|Autosegment|BarkFilter|CCA|Categories|Cepstrum|Cepstrumc|ChebyshevSeries|ClassificationTable|Cochleagram|Collection|Configuration|Confusion|ContingencyTable|Corpus|Correlation|Covariance|CrossCorrelationTable|CrossCorrelationTables|DTW|Diagonalizer|Discriminant|Dissimilarity|Distance|Distributions|DurationTier|EEG|ERP|ERPTier|Eigen|Excitation|Excitations|ExperimentMFC|FFNet|FeatureWeights|Formant|FormantFilter|FormantGrid|FormantPoint|FormantTier|GaussianMixture|HMM|HMM_Observation|HMM_ObservationSequence|HMM_State|HMM_StateSequence|Harmonicity|ISpline|Index|Intensity|IntensityTier|IntervalTier|KNN|KlattGrid|KlattTable|LFCC|LPC|Label|LegendreSeries|LinearRegression|LogisticRegression|LongSound|Ltas|MFCC|MSpline|ManPages|Manipulation|Matrix|MelFilter|MixingMatrix|Movie|Network|OTGrammar|OTHistory|OTMulti|PCA|PairDistribution|ParamCurve|Pattern|Permutation|Pitch|PitchTier|PointProcess|Polygon|Polynomial|Procrustes|RealPoint|RealTier|ResultsMFC|Roots|SPINET|SSCP|SVD|Salience|ScalarProduct|Similarity|SimpleString|SortedSetOfString|Sound|Speaker|Spectrogram|Spectrum|SpectrumTier|SpeechSynthesizer|SpellingChecker|Strings|StringsIndex|Table|TableOfReal|TextGrid|TextInterval|TextPoint|TextTier|Tier|Transition|VocalTract|Weight|WordList";this.$rules={start:[{token:"string.interpolated",regex:/'((?:\.?[a-z][a-zA-Z0-9_.]*)(?:\$|#|:[0-9]+)?)'/},{token:["text","text","keyword.operator","text","keyword"],regex:/(^\s*)(?:(\.?[a-z][a-zA-Z0-9_.]*\$?\s+)(=)(\s+))?(stopwatch)/},{token:["text","keyword","text","string"],regex:/(^\s*)(print(?:line|tab)?|echo|exit|pause|send(?:praat|socket)|include|execute|system(?:_nocheck)?)(\s+)(.*)/},{token:["text","keyword"],regex:"(^\\s*)("+n+")$"},{token:["text","keyword.operator","text"],regex:/(\s+)((?:\+|-|\/|\*|<|>)=?|==?|!=|%|\^|\||and|or|not)(\s+)/},{token:["text","text","keyword.operator","text","keyword","text","keyword"],regex:/(^\s*)(?:(\.?[a-z][a-zA-Z0-9_.]*\$?\s+)(=)(\s+))?(?:((?:no)?warn|(?:unix_)?nocheck|noprogress)(\s+))?((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/},{token:["text","keyword","text","keyword"],regex:/(^\s*)((?:no(?:warn|check))?)(\s*)(\b(?:editor(?::?)|endeditor)\b)/},{token:["text","keyword","text","keyword"],regex:/(^\s*)(?:(demo)?(\s+))((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/},{token:["text","keyword","text","keyword"],regex:/^(\s*)(?:(demo)(\s+))?(10|12|14|16|24)$/},{token:["text","support.function","text"],regex:/(\s*)(do\$?)(\s*:\s*|\s*\(\s*)/},{token:"entity.name.type",regex:"("+i+")"},{token:"variable.language",regex:"("+t+")"},{token:["support.function","text"],regex:"((?:"+r+")\\$?)(\\s*(?::|\\())"},{token:"keyword",regex:/(\bfor\b)/,next:"for"},{token:"keyword",regex:"(\\b(?:"+e+")\\b)"},{token:"string",regex:/"[^"]*"/},{token:"string",regex:/"[^"]*$/,next:"brokenstring"},{token:["text","keyword","text","entity.name.section"],regex:/(^\s*)(\bform\b)(\s+)(.*)/,next:"form"},{token:"constant.numeric",regex:/\b[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["keyword","text","entity.name.function"],regex:/(procedure)(\s+)([^:\s]+)/},{token:["entity.name.function","text"],regex:/(@\S+)(:|\s*\()/},{token:["text","keyword","text","entity.name.function"],regex:/(^\s*)(call)(\s+)(\S+)/},{token:"comment",regex:/(^\s*#|;).*$/},{token:"text",regex:/\s+/}],form:[{token:["keyword","text","constant.numeric"],regex:/((?:optionmenu|choice)\s+)(\S+:\s+)([0-9]+)/},{token:["keyword","constant.numeric"],regex:/((?:option|button)\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/},{token:["keyword","string"],regex:/((?:option|button)\s+)(.*)/},{token:["keyword","text","string"],regex:/((?:sentence|text)\s+)(\S+\s*)(.*)/},{token:["keyword","text","string","invalid.illegal"],regex:/(word\s+)(\S+\s*)(\S+)?(\s.*)?/},{token:["keyword","text","constant.language"],regex:/(boolean\s+)(\S+\s*)(0|1|"?(?:yes|no)"?)/},{token:["keyword","text","constant.numeric"],regex:/((?:real|natural|positive|integer)\s+)(\S+\s*)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/},{token:["keyword","string"],regex:/(comment\s+)(.*)/},{token:"keyword",regex:"endform",next:"start"}],"for":[{token:["keyword","text","constant.numeric","text"],regex:/(from|to)(\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?)(\s*)/},{token:["keyword","text"],regex:/(from|to)(\s+\S+\s*)/},{token:"text",regex:/$/,next:"start"}],brokenstring:[{token:["text","string"],regex:/(\s*\.{3})([^"]*)/},{token:"string",regex:/"/,next:"start"}]}};r.inherits(s,i),t.PraatHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/praat",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/praat_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./praat_highlight_rules").PraatHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new u,this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/praat"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/praat"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-prisma.js b/www/js/ace/mode-prisma.js deleted file mode 100644 index a45f179f3..000000000 --- a/www/js/ace/mode-prisma.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/prisma_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#triple_comment"},{include:"#double_comment"},{include:"#model_block_definition"},{include:"#config_block_definition"},{include:"#enum_block_definition"},{include:"#type_definition"}],"#model_block_definition":[{token:["source.prisma.embedded.source","storage.type.model.prisma","source.prisma.embedded.source","entity.name.type.model.prisma","source.prisma.embedded.source","punctuation.definition.tag.prisma"],regex:/^(\s*)(model|type)(\s+)([A-Za-z][\w]*)(\s+)({)/,push:[{token:"punctuation.definition.tag.prisma",regex:/\s*\}/,next:"pop"},{include:"#triple_comment"},{include:"#double_comment"},{include:"#field_definition"},{defaultToken:"source.prisma.embedded.source"}]}],"#enum_block_definition":[{token:["source.prisma.embedded.source","storage.type.enum.prisma","source.prisma.embedded.source","entity.name.type.enum.prisma","source.prisma.embedded.source","punctuation.definition.tag.prisma"],regex:/^(\s*)(enum)(\s+)([A-Za-z][\w]*)(\s+)({)/,push:[{token:"punctuation.definition.tag.prisma",regex:/\s*\}/,next:"pop"},{include:"#triple_comment"},{include:"#double_comment"},{include:"#enum_value_definition"},{defaultToken:"source.prisma.embedded.source"}]}],"#config_block_definition":[{token:["source.prisma.embedded.source","storage.type.config.prisma","source.prisma.embedded.source","entity.name.type.config.prisma","source.prisma.embedded.source","punctuation.definition.tag.prisma"],regex:/^(\s*)(generator|datasource)(\s+)([A-Za-z][\w]*)(\s+)({)/,push:[{token:"source.prisma.embedded.source",regex:/\s*\}/,next:"pop"},{include:"#triple_comment"},{include:"#double_comment"},{include:"#assignment"},{defaultToken:"source.prisma.embedded.source"}]}],"#assignment":[{token:["text","variable.other.assignment.prisma","text","keyword.operator.terraform","text"],regex:/^(\s*)(\w+)(\s*)(=)(\s*)/,push:[{token:"text",regex:/$/,next:"pop"},{include:"#value"},{include:"#double_comment_inline"}]}],"#field_definition":[{token:["text","variable.other.assignment.prisma","invalid.illegal.colon.prisma","text","support.type.primitive.prisma","keyword.operator.list_type.prisma","keyword.operator.optional_type.prisma","invalid.illegal.required_type.prisma"],regex:/^(\s*)(\w+)((?:\s*:)?)(\s+)(\w+)((?:\[\])?)((?:\?)?)((?:\!)?)/},{include:"#attribute_with_arguments"},{include:"#attribute"}],"#type_definition":[{token:["text","storage.type.type.prisma","text","entity.name.type.type.prisma","text","support.type.primitive.prisma"],regex:/^(\s*)(type)(\s+)(\w+)(\s*=\s*)(\w+)/},{include:"#attribute_with_arguments"},{include:"#attribute"}],"#enum_value_definition":[{token:["text","variable.other.assignment.prisma","text"],regex:/^(\s*)(\w+)(\s*$)/},{include:"#attribute_with_arguments"},{include:"#attribute"}],"#attribute_with_arguments":[{token:["entity.name.function.attribute.prisma","punctuation.definition.tag.prisma"],regex:/(@@?[\w\.]+)(\()/,push:[{token:"punctuation.definition.tag.prisma",regex:/\)/,next:"pop"},{include:"#named_argument"},{include:"#value"},{defaultToken:"source.prisma.attribute.with_arguments"}]}],"#attribute":[{token:"entity.name.function.attribute.prisma",regex:/@@?[\w\.]+/}],"#array":[{token:"source.prisma.array",regex:/\[/,push:[{token:"source.prisma.array",regex:/\]/,next:"pop"},{include:"#value"},{defaultToken:"source.prisma.array"}]}],"#value":[{include:"#array"},{include:"#functional"},{include:"#literal"}],"#functional":[{token:["support.function.functional.prisma","punctuation.definition.tag.prisma"],regex:/(\w+)(\()/,push:[{token:"punctuation.definition.tag.prisma",regex:/\)/,next:"pop"},{include:"#value"},{defaultToken:"source.prisma.functional"}]}],"#literal":[{include:"#boolean"},{include:"#number"},{include:"#double_quoted_string"},{include:"#identifier"}],"#identifier":[{token:"support.constant.constant.prisma",regex:/\b(?:\w)+\b/}],"#map_key":[{token:["variable.parameter.key.prisma","text","punctuation.definition.separator.key-value.prisma","text"],regex:/(\w+)(\s*)(:)(\s*)/}],"#named_argument":[{include:"#map_key"},{include:"#value"}],"#triple_comment":[{token:"comment.prisma",regex:/\/\/\//,push:[{token:"comment.prisma",regex:/$/,next:"pop"},{defaultToken:"comment.prisma"}]}],"#double_comment":[{token:"comment.prisma",regex:/\/\//,push:[{token:"comment.prisma",regex:/$/,next:"pop"},{defaultToken:"comment.prisma"}]}],"#double_comment_inline":[{token:"comment.prisma",regex:/\/\/[^$]*/}],"#boolean":[{token:"constant.language.boolean.prisma",regex:/\b(?:true|false)\b/}],"#number":[{token:"constant.numeric.prisma",regex:/(?:0(?:x|X)[0-9a-fA-F]*|(?:\+|-)?\b(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:(?:e|E)(?:\+|-)?[0-9]+)?)(?:[LlFfUuDdg]|UL|ul)?\b/}],"#double_quoted_string":[{token:"string.quoted.double.start.prisma",regex:/"/,push:[{token:"string.quoted.double.end.prisma",regex:/"/,next:"pop"},{include:"#string_interpolation"},{token:"string.quoted.double.prisma",regex:/[\w\-\/\._\\%@:\?=]+/},{defaultToken:"unnamed"}]}],"#string_interpolation":[{token:"keyword.control.interpolation.start.prisma",regex:/\$\{/,push:[{token:"keyword.control.interpolation.end.prisma",regex:/\s*\}/,next:"pop"},{include:"#value"},{defaultToken:"source.tag.embedded.source.prisma"}]}]},this.normalizeRules()};s.metaData={name:"Prisma",scopeName:"source.prisma"},r.inherits(s,i),t.PrismaHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/prisma",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/prisma_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./prisma_highlight_rules").PrismaHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.$id="ace/mode/prisma"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/prisma"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-prolog.js b/www/js/ace/mode-prolog.js deleted file mode 100644 index 469c08895..000000000 --- a/www/js/ace/mode-prolog.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/prolog_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#comment"},{include:"#basic_fact"},{include:"#rule"},{include:"#directive"},{include:"#fact"}],"#atom":[{token:"constant.other.atom.prolog",regex:"\\b[a-z][a-zA-Z0-9_]*\\b"},{token:"constant.numeric.prolog",regex:"-?\\d+(?:\\.\\d+)?"},{include:"#string"}],"#basic_elem":[{include:"#comment"},{include:"#statement"},{include:"#constants"},{include:"#operators"},{include:"#builtins"},{include:"#list"},{include:"#atom"},{include:"#variable"}],"#basic_fact":[{token:["entity.name.function.fact.basic.prolog","punctuation.end.fact.basic.prolog"],regex:"([a-z]\\w*)(\\.)"}],"#builtins":[{token:"support.function.builtin.prolog",regex:"\\b(?:abolish|abort|ancestors|arg|ascii|assert[az]|atom(?:ic)?|body|char|close|conc|concat|consult|define|definition|dynamic|dump|fail|file|free|free_proc|functor|getc|goal|halt|head|head|integer|length|listing|match_args|member|next_clause|nl|nonvar|nth|number|cvars|nvars|offset|op|print?|prompt|putc|quoted|ratom|read|redefine|rename|retract(?:all)?|see|seeing|seen|skip|spy|statistics|system|tab|tell|telling|term|time|told|univ|unlink_clause|unspy_predicate|var|write)\\b"}],"#comment":[{token:["punctuation.definition.comment.prolog","comment.line.percentage.prolog"],regex:"(%)(.*$)"},{token:"punctuation.definition.comment.prolog",regex:"/\\*",push:[{token:"punctuation.definition.comment.prolog",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.prolog"}]}],"#constants":[{token:"constant.language.prolog",regex:"\\b(?:true|false|yes|no)\\b"}],"#directive":[{token:"keyword.operator.directive.prolog",regex:":-",push:[{token:"meta.directive.prolog",regex:"\\.",next:"pop"},{include:"#comment"},{include:"#statement"},{defaultToken:"meta.directive.prolog"}]}],"#expr":[{include:"#comments"},{token:"meta.expression.prolog",regex:"\\(",push:[{token:"meta.expression.prolog",regex:"\\)",next:"pop"},{include:"#expr"},{defaultToken:"meta.expression.prolog"}]},{token:"keyword.control.cutoff.prolog",regex:"!"},{token:"punctuation.control.and.prolog",regex:","},{token:"punctuation.control.or.prolog",regex:";"},{include:"#basic_elem"}],"#fact":[{token:["entity.name.function.fact.prolog","punctuation.begin.fact.parameters.prolog"],regex:"([a-z]\\w*)(\\()(?!.*:-)",push:[{token:["punctuation.end.fact.parameters.prolog","punctuation.end.fact.prolog"],regex:"(\\))(\\.?)",next:"pop"},{include:"#parameter"},{defaultToken:"meta.fact.prolog"}]}],"#list":[{token:"punctuation.begin.list.prolog",regex:"\\[(?=.*\\])",push:[{token:"punctuation.end.list.prolog",regex:"\\]",next:"pop"},{include:"#comment"},{token:"punctuation.separator.list.prolog",regex:","},{token:"punctuation.concat.list.prolog",regex:"\\|",push:[{token:"meta.list.concat.prolog",regex:"(?=\\s*\\])",next:"pop"},{include:"#basic_elem"},{defaultToken:"meta.list.concat.prolog"}]},{include:"#basic_elem"},{defaultToken:"meta.list.prolog"}]}],"#operators":[{token:"keyword.operator.prolog",regex:"\\\\\\+|\\bnot\\b|\\bis\\b|->|[><]|[><\\\\:=]?=|(?:=\\\\|\\\\=)="}],"#parameter":[{token:"variable.language.anonymous.prolog",regex:"\\b_\\b"},{token:"variable.parameter.prolog",regex:"\\b[A-Z_]\\w*\\b"},{token:"punctuation.separator.parameters.prolog",regex:","},{include:"#basic_elem"},{token:"text",regex:"[^\\s]"}],"#rule":[{token:"meta.rule.prolog",regex:"(?=[a-z]\\w*.*:-)",push:[{token:"punctuation.rule.end.prolog",regex:"\\.",next:"pop"},{token:"meta.rule.signature.prolog",regex:"(?=[a-z]\\w*.*:-)",push:[{token:"meta.rule.signature.prolog",regex:"(?=:-)",next:"pop"},{token:"entity.name.function.rule.prolog",regex:"[a-z]\\w*(?=\\(|\\s*:-)"},{token:"punctuation.rule.parameters.begin.prolog",regex:"\\(",push:[{token:"punctuation.rule.parameters.end.prolog",regex:"\\)",next:"pop"},{include:"#parameter"},{defaultToken:"meta.rule.parameters.prolog"}]},{defaultToken:"meta.rule.signature.prolog"}]},{token:"keyword.operator.definition.prolog",regex:":-",push:[{token:"meta.rule.definition.prolog",regex:"(?=\\.)",next:"pop"},{include:"#comment"},{include:"#expr"},{defaultToken:"meta.rule.definition.prolog"}]},{defaultToken:"meta.rule.prolog"}]}],"#statement":[{token:"meta.statement.prolog",regex:"(?=[a-z]\\w*\\()",push:[{token:"punctuation.end.statement.parameters.prolog",regex:"\\)",next:"pop"},{include:"#builtins"},{include:"#atom"},{token:"punctuation.begin.statement.parameters.prolog",regex:"\\(",push:[{token:"meta.statement.parameters.prolog",regex:"(?=\\))",next:"pop"},{token:"punctuation.separator.statement.prolog",regex:","},{include:"#basic_elem"},{defaultToken:"meta.statement.parameters.prolog"}]},{defaultToken:"meta.statement.prolog"}]}],"#string":[{token:"punctuation.definition.string.begin.prolog",regex:"'",push:[{token:"punctuation.definition.string.end.prolog",regex:"'",next:"pop"},{token:"constant.character.escape.prolog",regex:"\\\\."},{token:"constant.character.escape.quote.prolog",regex:"''"},{defaultToken:"string.quoted.single.prolog"}]}],"#variable":[{token:"variable.language.anonymous.prolog",regex:"\\b_\\b"},{token:"variable.other.prolog",regex:"\\b[A-Z_][a-zA-Z0-9_]*\\b"}]},this.normalizeRules()};s.metaData={fileTypes:["plg","prolog"],foldingStartMarker:"(%\\s*region \\w*)|([a-z]\\w*.*:- ?)",foldingStopMarker:"(%\\s*end(\\s*region)?)|(?=\\.)",keyEquivalent:"^~P",name:"Prolog",scopeName:"source.prolog"},r.inherits(s,i),t.PrologHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/prolog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/prolog_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./prolog_highlight_rules").PrologHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="%",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/prolog"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/prolog"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-properties.js b/www/js/ace/mode-properties.js deleted file mode 100644 index 5cc115c03..000000000 --- a/www/js/ace/mode-properties.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/properties_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=/\\u[0-9a-fA-F]{4}|\\/;this.$rules={start:[{token:"comment",regex:/[!#].*$/},{token:"keyword",regex:/[=:]$/},{token:"keyword",regex:/[=:]/,next:"value"},{token:"constant.language.escape",regex:e},{defaultToken:"variable"}],value:[{regex:/\\$/,token:"string",next:"value"},{regex:/$/,token:"string",next:"start"},{token:"constant.language.escape",regex:e},{defaultToken:"string"}]}};r.inherits(s,i),t.PropertiesHighlightRules=s}),define("ace/mode/properties",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/properties_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./properties_highlight_rules").PropertiesHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.$id="ace/mode/properties"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/properties"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-protobuf.js b/www/js/ace/mode-protobuf.js deleted file mode 100644 index 885dd192d..000000000 --- a/www/js/ace/mode-protobuf.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="hypot|hypotf|hypotl|sscanf|system|snprintf|scanf|scalbn|scalbnf|scalbnl|scalbln|scalblnf|scalblnl|sin|sinh|sinhf|sinhl|sinf|sinl|signal|signbit|strstr|strspn|strncpy|strncat|strncmp|strcspn|strchr|strcoll|strcpy|strcat|strcmp|strtoimax|strtod|strtoul|strtoull|strtoumax|strtok|strtof|strtol|strtold|strtoll|strerror|strpbrk|strftime|strlen|strrchr|strxfrm|sprintf|setjmp|setvbuf|setlocale|setbuf|sqrt|sqrtf|sqrtl|swscanf|swprintf|srand|nearbyint|nearbyintf|nearbyintl|nexttoward|nexttowardf|nexttowardl|nextafter|nextafterf|nextafterl|nan|nanf|nanl|csin|csinh|csinhf|csinhl|csinf|csinl|csqrt|csqrtf|csqrtl|ccos|ccosh|ccoshf|ccosf|ccosl|cimag|cimagf|cimagl|ctime|ctan|ctanh|ctanhf|ctanhl|ctanf|ctanl|cos|cosh|coshf|coshl|cosf|cosl|conj|conjf|conjl|copysign|copysignf|copysignl|cpow|cpowf|cpowl|cproj|cprojf|cprojl|ceil|ceilf|ceill|cexp|cexpf|cexpl|clock|clog|clogf|clogl|clearerr|casin|casinh|casinhf|casinhl|casinf|casinl|cacos|cacosh|cacoshf|cacoshl|cacosf|cacosl|catan|catanh|catanhf|catanhl|catanf|catanl|calloc|carg|cargf|cargl|cabs|cabsf|cabsl|creal|crealf|creall|cbrt|cbrtf|cbrtl|time|toupper|tolower|tan|tanh|tanhf|tanhl|tanf|tanl|trunc|truncf|truncl|tgamma|tgammaf|tgammal|tmpnam|tmpfile|isspace|isnormal|isnan|iscntrl|isinf|isdigit|isunordered|isupper|ispunct|isprint|isfinite|iswspace|iswcntrl|iswctype|iswdigit|iswupper|iswpunct|iswprint|iswlower|iswalnum|iswalpha|iswgraph|iswxdigit|iswblank|islower|isless|islessequal|islessgreater|isalnum|isalpha|isgreater|isgreaterequal|isgraph|isxdigit|isblank|ilogb|ilogbf|ilogbl|imaxdiv|imaxabs|div|difftime|_Exit|ungetc|ungetwc|pow|powf|powl|puts|putc|putchar|putwc|putwchar|perror|printf|erf|erfc|erfcf|erfcl|erff|erfl|exit|exp|exp2|exp2f|exp2l|expf|expl|expm1|expm1f|expm1l|vsscanf|vsnprintf|vscanf|vsprintf|vswscanf|vswprintf|vprintf|vfscanf|vfprintf|vfwscanf|vfwprintf|vwscanf|vwprintf|va_start|va_copy|va_end|va_arg|qsort|fscanf|fsetpos|fseek|fclose|ftell|fopen|fdim|fdimf|fdiml|fpclassify|fputs|fputc|fputws|fputwc|fprintf|feholdexcept|fesetenv|fesetexceptflag|fesetround|feclearexcept|fetestexcept|feof|feupdateenv|feraiseexcept|ferror|fegetenv|fegetexceptflag|fegetround|fflush|fwscanf|fwide|fwprintf|fwrite|floor|floorf|floorl|fabs|fabsf|fabsl|fgets|fgetc|fgetpos|fgetws|fgetwc|freopen|free|fread|frexp|frexpf|frexpl|fmin|fminf|fminl|fmod|fmodf|fmodl|fma|fmaf|fmal|fmax|fmaxf|fmaxl|ldiv|ldexp|ldexpf|ldexpl|longjmp|localtime|localeconv|log|log1p|log1pf|log1pl|log10|log10f|log10l|log2|log2f|log2l|logf|logl|logb|logbf|logbl|labs|lldiv|llabs|llrint|llrintf|llrintl|llround|llroundf|llroundl|lrint|lrintf|lrintl|lround|lroundf|lroundl|lgamma|lgammaf|lgammal|wscanf|wcsstr|wcsspn|wcsncpy|wcsncat|wcsncmp|wcscspn|wcschr|wcscoll|wcscpy|wcscat|wcscmp|wcstoimax|wcstod|wcstoul|wcstoull|wcstoumax|wcstok|wcstof|wcstol|wcstold|wcstoll|wcstombs|wcspbrk|wcsftime|wcslen|wcsrchr|wcsrtombs|wcsxfrm|wctob|wctomb|wcrtomb|wprintf|wmemset|wmemchr|wmemcpy|wmemcmp|wmemmove|assert|asctime|asin|asinh|asinhf|asinhl|asinf|asinl|acos|acosh|acoshf|acoshl|acosf|acosl|atoi|atof|atol|atoll|atexit|atan|atanh|atanhf|atanhl|atan2|atan2f|atan2l|atanf|atanl|abs|abort|gets|getc|getchar|getenv|getwc|getwchar|gmtime|rint|rintf|rintl|round|roundf|roundl|rename|realloc|rewind|remove|remquo|remquof|remquol|remainder|remainderf|remainderl|rand|raise|bsearch|btowc|modf|modff|modfl|memset|memchr|memcpy|memcmp|memmove|mktime|malloc|mbsinit|mbstowcs|mbsrtowcs|mbtowc|mblen|mbrtowc|mbrlen",u=function(e){var t="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",n="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",r="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",s="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",u="NULL|true|false|TRUE|FALSE|nullptr",a=this.$keywords=this.createKeywordMapper(Object.assign({"keyword.control":t,"storage.type":n,"storage.modifier":r,"keyword.operator":s,"variable.language":"this","constant.language":u,"support.function.C99.c":o},e),"identifier"),f="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",l=/\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source,c="%"+/(\d+\$)?/.source+/[#0\- +']*/.source+/[,;:_]?/.source+/((-?\d+)|\*(-?\d+\$)?)?/.source+/(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source+/(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source+/(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source;this.$rules={start:[{token:"comment",regex:"//$",next:"start"},{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:"'(?:"+l+"|.)?'"},{token:"string.start",regex:'"',stateName:"qqstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:l},{token:"constant.language.escape",regex:c},{token:"string.end",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"string.start",regex:'R"\\(',stateName:"rawString",next:[{token:"string.end",regex:'\\)"',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:a,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"},{token:"keyword.operator",regex:/--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(u,s),t.c_cppHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp",this.snippetFileId="ace/snippets/c_cpp"}.call(a.prototype),t.Mode=a}),define("ace/mode/protobuf_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes",t="message|required|optional|repeated|package|import|option|enum",n=this.createKeywordMapper({"keyword.declaration.protobuf":t,"support.type":e},"identifier");this.$rules={start:[{token:"comment",regex:/\/\/.*$/},{token:"comment",regex:/\/\*/,next:"comment"},{token:"constant",regex:"<[^>]+>"},{regex:"=",token:"keyword.operator.assignment.protobuf"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:n,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()};r.inherits(s,i),t.ProtobufHighlightRules=s}),define("ace/mode/protobuf",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/protobuf_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp").Mode,s=e("./protobuf_highlight_rules").ProtobufHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){i.call(this),this.foldingRules=new o,this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/protobuf"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/protobuf"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-prql.js b/www/js/ace/mode-prql.js deleted file mode 100644 index 9bf5aae3c..000000000 --- a/www/js/ace/mode-prql.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/prql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="min|max|sum|average|stddev|every|any|concat_array|count|lag|lead|first|last|rank|rank_dense|row_number|round|as|in|tuple_every|tuple_map|tuple_zip|_eq|_is_null|from_text|lower|upper|read_parquet|read_csv",t=["bool","int","int8","int16","int32","int64","int128","float","text","timestamp","set"].join("|"),n=this.createKeywordMapper({"constant.language":"null","constant.language.boolean":"true|false",keyword:"let|into|case|prql|type|module|internal","storage.type":"let|func","support.function":e,"support.type":t,"variable.language":"date|math"},"identifier"),r=/\\(\d+|['"\\&bfnrt]|u\{[0-9a-fA-F]{1,6}\}|x[0-9a-fA-F]{2})/,i=/[A-Za-z_][a-z_A-Z0-9]/.source,s=/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/.source,o="[\\u202A\\u202B\\u202D\\u202E\\u2066\\u2067\\u2068\\u202C\\u2069]";this.$rules={start:[{token:"string.start",regex:'s?"',next:"string"},{token:"string.start",regex:'f"',next:"fstring"},{token:"string.start",regex:'r"',next:"rstring"},{token:"string.single",start:"'",end:"'"},{token:"string.character",regex:"'(?:"+r.source+"|.)'?"},{token:"constant.language",regex:"^"+i+"*"},{token:["constant.numeric","keyword"],regex:"("+s+")(years|months|weeks|days|hours|minutes|seconds|milliseconds|microseconds)"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:s},{token:"comment.block.documentation",regex:"#!.*"},{token:"comment.line.number-sign",regex:"#.*"},{token:"keyword.operator",regex:/\|\s*/,next:"pipe"},{token:"keyword.operator",regex:/->|=>|==|!=|>=|<=|~=|&&|\|\||\?\?|\/\/|@/},{token:"invalid.illegal",regex:o},{token:"punctuation.operator",regex:/[,`]/},{token:n,regex:"[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b"},{token:"paren.lparen",regex:/[\[({]/},{token:"paren.rparen",regex:/[\])}]/}],pipe:[{token:"constant.language",regex:i+"*",next:"pop"},{token:"error",regex:"",next:"pop"}],string:[{token:"constant.character.escape",regex:r},{token:"text",regex:/\\(\s|$)/,next:"stringGap"},{token:"string.end",regex:'"',next:"start"},{token:"invalid.illegal",regex:o},{defaultToken:"string.double"}],stringGap:[{token:"text",regex:/\\/,next:"string"},{token:"error",regex:"",next:"start"}],fstring:[{token:"constant.character.escape",regex:r},{token:"string.end",regex:'"',next:"start"},{token:"invalid.illegal",regex:o},{token:"paren.lparen",regex:"{",push:"fstringParenRules"},{token:"invalid.illegal",regex:o},{defaultToken:"string"}],fstringParenRules:[{token:"constant.language",regex:"^"+i+"*"},{token:"paren.rparen",regex:"}",next:"pop"}],rstring:[{token:"string.end",regex:'"',next:"start"},{token:"invalid.illegal",regex:o},{defaultToken:"string"}]},this.normalizeRules()};r.inherits(s,i),t.PrqlHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/prql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/prql_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./prql_highlight_rules").PrqlHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/prql"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/prql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-puppet.js b/www/js/ace/mode-puppet.js deleted file mode 100644 index 727779198..000000000 --- a/www/js/ace/mode-puppet.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/puppet_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["keyword.type.puppet","constant.class.puppet","keyword.inherits.puppet","constant.class.puppet"],regex:'^\\s*(class)(\\s+(?:[-_A-Za-z0-9".]+::)*[-_A-Za-z0-9".]+\\s*)(?:(inherits\\s*)(\\s+(?:[-_A-Za-z0-9".]+::)*[-_A-Za-z0-9".]+\\s*))?'},{token:["storage.function.puppet","name.function.puppet","punctuation.lpar"],regex:"(^\\s*define)(\\s+[a-zA-Z0-9_:]+\\s*)(\\()",push:[{token:"punctuation.rpar.puppet",regex:"\\)",next:"pop"},{include:"constants"},{include:"variable"},{include:"strings"},{include:"operators"},{defaultToken:"string"}]},{token:["language.support.class","keyword.operator"],regex:"\\b([a-zA-Z_]+)(\\s+=>)"},{token:["exported.resource.puppet","keyword.name.resource.puppet","paren.lparen"],regex:"(\\@\\@)?(\\s*[a-zA-Z_]*)(\\s*\\{)"},{token:"qualified.variable.puppet",regex:"(\\$([a-z][a-z0-9_]*)?(::[a-z][a-z0-9_]*)*::[a-z0-9_][a-zA-Z0-9_]*)"},{token:"singleline.comment.puppet",regex:"#(.)*$"},{token:"multiline.comment.begin.puppet",regex:"^\\s*\\/\\*",push:"blockComment"},{token:"keyword.control.puppet",regex:"\\b(case|if|unless|else|elsif|in|default:|and|or)\\s+(?!::)"},{token:"keyword.control.puppet",regex:"\\b(import|default|inherits|include|require|contain|node|application|consumes|environment|site|function|produces)\\b"},{token:"support.function.puppet",regex:"\\b(lest|str2bool|escape|gsub|Timestamp|Timespan|with|alert|crit|debug|notice|sprintf|split|step|strftime|slice|shellquote|type|sha1|defined|scanf|reverse_each|regsubst|return|emerg|reduce|err|failed|fail|versioncmp|file|generate|then|info|realize|search|tag|tagged|template|epp|warning|hiera_include|each|assert_type|binary_file|create_resources|dig|digest|filter|lookup|find_file|fqdn_rand|hiera_array|hiera_hash|inline_epp|inline_template|map|match|md5|new|next)\\b"},{token:"constant.types.puppet",regex:"\\b(String|File|Package|Service|Class|Integer|Array|Catalogentry|Variant|Boolean|Undef|Number|Hash|Float|Numeric|NotUndef|Callable|Optional|Any|Regexp|Sensitive|Sensitive.new|Type|Resource|Default|Enum|Scalar|Collection|Data|Pattern|Tuple|Struct)\\b"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{include:"variable"},{include:"constants"},{include:"strings"},{include:"operators"},{token:"regexp.begin.string.puppet",regex:"\\s*(\\/(\\S)+)\\/"}],blockComment:[{regex:"\\*\\/",token:"multiline.comment.end.puppet",next:"pop"},{defaultToken:"comment"}],constants:[{token:"constant.language.puppet",regex:"\\b(false|true|running|stopped|installed|purged|latest|file|directory|held|undef|present|absent|link|mounted|unmounted)\\b"}],variable:[{token:"variable.puppet",regex:"(\\$[a-z0-9_{][a-zA-Z0-9_]*)"}],strings:[{token:"punctuation.quote.puppet",regex:"'",push:[{token:"punctuation.quote.puppet",regex:"'",next:"pop"},{include:"escaped_chars"},{defaultToken:"string"}]},{token:"punctuation.quote.puppet",regex:'"',push:[{token:"punctuation.quote.puppet",regex:'"',next:"pop"},{include:"escaped_chars"},{include:"variable"},{defaultToken:"string"}]}],escaped_chars:[{token:"constant.escaped_char.puppet",regex:"\\\\."}],operators:[{token:"keyword.operator",regex:"\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=|::|,"}]},this.normalizeRules()};r.inherits(s,i),t.PuppetHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/puppet",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/puppet_highlight_rules","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./puppet_highlight_rules").PuppetHighlightRules,o=e("./folding/cstyle").FoldMode,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=function(){i.call(this),this.HighlightRules=s,this.$outdent=new u,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new o};r.inherits(a,i),function(){this.lineCommentStart="#",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/puppet"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/puppet"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-python.js b/www/js/ace/mode-python.js deleted file mode 100644 index 810808302..000000000 --- a/www/js/ace/mode-python.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield|async|await|nonlocal",t="True|False|None|NotImplemented|Ellipsis|__debug__",n="abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|apply|delattr|help|next|setattr|set|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|ascii|breakpoint|bytes",r=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":n,"variable.language":"self|cls","constant.language":t,keyword:e},"identifier"),i="[uU]?",s="[rR]",o="[fF]",u="(?:[rR][fF]|[fF][rR])",a="(?:(?:[1-9]\\d*)|(?:0))",f="(?:0[oO]?[0-7]+)",l="(?:0[xX][\\dA-Fa-f]+)",c="(?:0[bB][01]+)",h="(?:"+a+"|"+f+"|"+l+"|"+c+")",p="(?:[eE][+-]?\\d+)",d="(?:\\.\\d+)",v="(?:\\d+)",m="(?:(?:"+v+"?"+d+")|(?:"+v+"\\.))",g="(?:(?:"+m+"|"+v+")"+p+")",y="(?:"+g+"|"+m+")",b="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:i+'"{3}',next:"qqstring3"},{token:"string",regex:i+'"(?=.)',next:"qqstring"},{token:"string",regex:i+"'{3}",next:"qstring3"},{token:"string",regex:i+"'(?=.)",next:"qstring"},{token:"string",regex:s+'"{3}',next:"rawqqstring3"},{token:"string",regex:s+'"(?=.)',next:"rawqqstring"},{token:"string",regex:s+"'{3}",next:"rawqstring3"},{token:"string",regex:s+"'(?=.)",next:"rawqstring"},{token:"string",regex:o+'"{3}',next:"fqqstring3"},{token:"string",regex:o+'"(?=.)',next:"fqqstring"},{token:"string",regex:o+"'{3}",next:"fqstring3"},{token:"string",regex:o+"'(?=.)",next:"fqstring"},{token:"string",regex:u+'"{3}',next:"rfqqstring3"},{token:"string",regex:u+'"(?=.)',next:"rfqqstring"},{token:"string",regex:u+"'{3}",next:"rfqstring3"},{token:"string",regex:u+"'(?=.)",next:"rfqstring"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"punctuation",regex:",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:["keyword","text","entity.name.function"],regex:"(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)"},{token:"text",regex:"\\s+"},{include:"constants"}],qqstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],rawqqstring3:[{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],rawqstring3:[{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],rawqqstring:[{token:"string",regex:"\\\\$",next:"rawqqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],rawqstring:[{token:"string",regex:"\\\\$",next:"rawqstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}],fqqstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring3:[{token:"constant.language.escape",regex:b},{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqqstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"\\\\$",next:"fqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstring:[{token:"constant.language.escape",regex:b},{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring3:[{token:"string",regex:'"{3}',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring3:[{token:"string",regex:"'{3}",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqqstring:[{token:"string",regex:"\\\\$",next:"rfqqstring"},{token:"string",regex:'"|$',next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],rfqstring:[{token:"string",regex:"'|$",next:"start"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"},{defaultToken:"string"}],fqstringParRules:[{token:"paren.lparen",regex:"[\\[\\(]"},{token:"paren.rparen",regex:"[\\]\\)]"},{token:"string",regex:"\\s+"},{token:"string",regex:"'[^']*'"},{token:"string",regex:'"[^"]*"'},{token:"function.support",regex:"(!s|!r|!a)"},{include:"constants"},{token:"paren.rparen",regex:"}",next:"pop"},{token:"paren.lparen",regex:"{",push:"fqstringParRules"}],constants:[{token:"constant.numeric",regex:"(?:"+y+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:y},{token:"constant.numeric",regex:h+"[lL]\\b"},{token:"constant.numeric",regex:h+"\\b"},{token:["punctuation","function.support"],regex:"(\\.)([a-zA-Z_]+)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}]},this.normalizeRules()};r.inherits(s,i),t.PythonHighlightRules=s}),define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){this.foldingStartMarker=new RegExp("([\\[{])(?:\\s*)$|("+e+")(?:\\s*)(?:#.*)?$")};r.inherits(s,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i)return i[1]?this.openingBracketBlock(e,i[1],n,i.index):i[2]?this.indentationBlock(e,n,i.index+i[2].length):this.indentationBlock(e,n)}}.call(s.prototype)}),define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./python_highlight_rules").PythonHighlightRules,o=e("./folding/pythonic").FoldMode,u=e("../range").Range,a=function(){this.HighlightRules=s,this.foldingRules=new o("\\:"),this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="#",this.$pairQuotesAfter={"'":/[ruf]/i,'"':/[ruf]/i},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new u(n,r.length-i.length,n,r.length))},this.$id="ace/mode/python",this.snippetFileId="ace/snippets/python"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/python"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-qml.js b/www/js/ace/mode-qml.js deleted file mode 100644 index ec994b6a9..000000000 --- a/www/js/ace/mode-qml.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/qml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|readonly|string|int|bool|date|color|url|real|double|var|variant|height|width|anchors|parent|Abstract3DSeries|AbstractActionInput|AbstractAnimation|AbstractAxis|AbstractAxis3D|AbstractAxisInput|AbstractBarSeries|AbstractButton|AbstractClipAnimator|AbstractClipBlendNode|AbstractDataProxy|AbstractGraph3D|AbstractInputHandler3D|AbstractPhysicalDevice|AbstractRayCaster|AbstractSeries|AbstractSkeleton|AbstractTextureImage|Accelerometer|AccelerometerReading|Accessible|Action|ActionGroup|ActionInput|AdditiveClipBlend|Address|Affector|Age|AlphaCoverage|AlphaTest|Altimeter|AltimeterReading|AmbientLightReading|AmbientLightSensor|AmbientTemperatureReading|AmbientTemperatureSensor|AnalogAxisInput|AnchorAnimation|AnchorChanges|AngleDirection|AnimatedImage|AnimatedSprite|Animation|AnimationController|AnimationGroup|Animator|ApplicationWindow|ApplicationWindowStyle|AreaSeries|Armature|AttenuationModelInverse|AttenuationModelLinear|Attractor|Attribute|Audio|AudioCategory|AudioEngine|AudioListener|AudioSample|AuthenticationDialogRequest|Axis|AxisAccumulator|AxisSetting|BackspaceKey|Bar3DSeries|BarCategoryAxis|BarDataProxy|BarSeries|BarSet|Bars3D|BaseKey|Behavior|Binding|Blend|BlendEquation|BlendEquationArguments|BlendedClipAnimator|BlitFramebuffer|BluetoothDiscoveryModel|BluetoothService|BluetoothSocket|BorderImage|BorderImageMesh|BoxPlotSeries|BoxSet|BrightnessContrast|Buffer|BusyIndicator|BusyIndicatorStyle|Button|ButtonAxisInput|ButtonGroup|ButtonStyle|Calendar|CalendarStyle|Camera|Camera3D|CameraCapabilities|CameraCapture|CameraExposure|CameraFlash|CameraFocus|CameraImageProcessing|CameraLens|CameraRecorder|CameraSelector|CandlestickSeries|CandlestickSet|Canvas|Canvas3D|Canvas3DAbstractObject|Canvas3DActiveInfo|Canvas3DBuffer|Canvas3DContextAttributes|Canvas3DFrameBuffer|Canvas3DProgram|Canvas3DRenderBuffer|Canvas3DShader|Canvas3DShaderPrecisionFormat|Canvas3DTexture|Canvas3DTextureProvider|Canvas3DUniformLocation|CanvasGradient|CanvasImageData|CanvasPixelArray|Category|CategoryAxis|CategoryAxis3D|CategoryModel|CategoryRange|ChangeLanguageKey|ChartView|CheckBox|CheckBoxStyle|CheckDelegate|CircularGauge|CircularGaugeStyle|ClearBuffers|ClipAnimator|ClipPlane|CloseEvent|ColorAnimation|ColorDialog|ColorDialogRequest|ColorGradient|ColorGradientStop|ColorMask|ColorOverlay|Colorize|Column|ColumnLayout|ComboBox|ComboBoxStyle|Compass|CompassReading|Component|Component3D|ComputeCommand|ConeGeometry|ConeMesh|ConicalGradient|Connections|ContactDetail|ContactDetails|Container|Context2D|Context3D|ContextMenuRequest|Control|CoordinateAnimation|CuboidGeometry|CuboidMesh|CullFace|CumulativeDirection|Custom3DItem|Custom3DLabel|Custom3DVolume|CustomParticle|CylinderGeometry|CylinderMesh|Date|DateTimeAxis|DelayButton|DelayButtonStyle|DelegateChoice|DelegateChooser|DelegateModel|DelegateModelGroup|DepthTest|Desaturate|Dial|DialStyle|Dialog|DialogButtonBox|DiffuseMapMaterial|DiffuseSpecularMapMaterial|DiffuseSpecularMaterial|Direction|DirectionalBlur|DirectionalLight|DispatchCompute|Displace|DistanceReading|DistanceSensor|Dithering|DoubleValidator|Drag|DragEvent|DragHandler|Drawer|DropArea|DropShadow|DwmFeatures|DynamicParameter|EditorialModel|Effect|EllipseShape|Emitter|EnterKey|EnterKeyAction|Entity|EntityLoader|EnvironmentLight|EventConnection|EventPoint|EventTouchPoint|ExclusiveGroup|ExtendedAttributes|ExtrudedTextGeometry|ExtrudedTextMesh|FastBlur|FileDialog|FileDialogRequest|FillerKey|FilterKey|FinalState|FirstPersonCameraController|Flickable|Flipable|Flow|FocusScope|FolderListModel|FontDialog|FontLoader|FontMetrics|FormValidationMessageRequest|ForwardRenderer|Frame|FrameAction|FrameGraphNode|Friction|FrontFace|FrustumCulling|FullScreenRequest|GLStateDumpExt|GammaAdjust|Gauge|GaugeStyle|GaussianBlur|GeocodeModel|Geometry|GeometryRenderer|GestureEvent|Glow|GoochMaterial|Gradient|GradientStop|GraphicsApiFilter|GraphicsInfo|Gravity|Grid|GridLayout|GridMesh|GridView|GroupBox|GroupGoal|Gyroscope|GyroscopeReading|HBarModelMapper|HBoxPlotModelMapper|HCandlestickModelMapper|HPieModelMapper|HXYModelMapper|HandlerPoint|HandwritingInputPanel|HandwritingModeKey|HeightMapSurfaceDataProxy|HideKeyboardKey|HistoryState|HolsterReading|HolsterSensor|HorizontalBarSeries||HorizontalPercentBarSeries|HorizontalStackedBarSeries|HoverHandler|HueSaturation|HumidityReading|HumiditySensor|IRProximityReading|IRProximitySensor|Icon|Image|ImageModel|ImageParticle|InnerShadow|InputChord|InputContext|InputEngine|InputHandler3D|InputMethod|InputModeKey|InputPanel|InputSequence|InputSettings|Instantiator|IntValidator|InvokedServices|Item|ItemDelegate|ItemGrabResult|ItemModelBarDataProxy|ItemModelScatterDataProxy|ItemModelSurfaceDataProxy|ItemParticle|ItemSelectionModel|IviApplication|IviSurface|JavaScriptDialogRequest|Joint|JumpList|JumpListCategory|JumpListDestination|JumpListLink|JumpListSeparator|Key|KeyEvent|KeyIcon|KeyNavigation|KeyPanel|KeyboardColumn|KeyboardDevice|KeyboardHandler|KeyboardLayout|KeyboardLayoutLoader|KeyboardRow|KeyboardStyle|KeyframeAnimation|Keys|Label|Layer|LayerFilter|Layout|LayoutMirroring|Legend|LerpBlend|LevelAdjust|LevelOfDetail|LevelOfDetailBoundingSphere|LevelOfDetailLoader|LevelOfDetailSwitch|LidReading|LidSensor|Light|Light3D|LightReading|LightSensor|LineSeries|LineShape|LineWidth|LinearGradient|ListElement|ListModel|ListView|Loader|Locale|Location|LogValueAxis|LogValueAxis3DFormatter|LoggingCategory|LogicalDevice|Magnetometer|MagnetometerReading|Map|MapCircle|MapCircleObject|MapCopyrightNotice|MapGestureArea|MapIconObject|MapItemGroup|MapItemView|MapObjectView|MapParameter|MapPinchEvent|MapPolygon|MapPolygonObject|MapPolyline|MapPolylineObject|MapQuickItem|MapRectangle|MapRoute|MapRouteObject|MapType|Margins|MaskShape|MaskedBlur|Material|Matrix4x4|MediaPlayer|MemoryBarrier|Menu|MenuBar|MenuBarItem|MenuBarStyle|MenuItem|MenuSeparator|MenuStyle|Mesh|MessageDialog|ModeKey|MorphTarget|MorphingAnimation|MouseArea|MouseDevice|MouseEvent|MouseHandler|MultiPointHandler|MultiPointTouchArea|MultiSampleAntiAliasing|Navigator|NdefFilter|NdefMimeRecord|NdefRecord|NdefTextRecord|NdefUriRecord|NearField|NoDepthMask|NoDraw|Node|NodeInstantiator|NormalDiffuseMapAlphaMaterial|NormalDiffuseMapMaterial|NormalDiffuseSpecularMapMaterial|Number|NumberAnimation|NumberKey|Object3D|ObjectModel|ObjectPicker|OpacityAnimator|OpacityMask|OpenGLInfo|OrbitCameraController|OrientationReading|OrientationSensor|Overlay|Package|Page|PageIndicator|Pane|ParallelAnimation|Parameter|ParentAnimation|ParentChange|Particle|ParticleGroup|ParticlePainter|ParticleSystem|Path|PathAngleArc|PathAnimation|PathArc|PathAttribute|PathCubic|PathCurve|PathElement|PathInterpolator|PathLine|PathMove|PathPercent|PathQuad|PathSvg|PathView|PauseAnimation|PerVertexColorMaterial|PercentBarSeries|PhongAlphaMaterial|PhongMaterial|PickEvent|PickLineEvent|PickPointEvent|PickTriangleEvent|PickingSettings|Picture|PieMenu|PieMenuStyle|PieSeries|PieSlice|PinchArea|PinchEvent|PinchHandler|Place|PlaceAttribute|PlaceSearchModel|PlaceSearchSuggestionModel|PlaneGeometry|PlaneMesh|PlayVariation|Playlist|PlaylistItem|Plugin|PluginParameter|PointDirection|PointHandler|PointLight|PointSize|PointerDevice|PointerDeviceHandler|PointerEvent|PointerHandler|PolarChartView|PolygonOffset|Popup|Position|PositionSource|Positioner|PressureReading|PressureSensor|Product|ProgressBar|ProgressBarStyle|PropertyAction|PropertyAnimation|PropertyChanges|ProximityFilter|ProximityReading|ProximitySensor|QAbstractState|QAbstractTransition|QSignalTransition|QVirtualKeyboardSelectionListModel|Qt|QtMultimedia|QtObject|QtPositioning|QuaternionAnimation|QuotaRequest|RadialBlur|RadialGradient|Radio|RadioButton|RadioButtonStyle|RadioData|RadioDelegate|RangeSlider|Ratings|RayCaster|Rectangle|RectangleShape|RectangularGlow|RecursiveBlur|RegExpValidator|RegisterProtocolHandlerRequest|RenderCapture|RenderCaptureReply|RenderPass|RenderPassFilter|RenderSettings|RenderState|RenderStateSet|RenderSurfaceSelector|RenderTarget|RenderTargetOutput|RenderTargetSelector|Repeater|ReviewModel|Rotation|RotationAnimation|RotationAnimator|RotationReading|RotationSensor|RoundButton|Route|RouteLeg|RouteManeuver|RouteModel|RouteQuery|RouteSegment|Row|RowLayout|Scale|ScaleAnimator|Scatter3D|Scatter3DSeries|ScatterDataProxy|ScatterSeries|Scene2D|Scene3D|SceneLoader|ScissorTest|Screen|ScreenRayCaster|ScriptAction|ScrollBar|ScrollIndicator|ScrollView|ScrollViewStyle|ScxmlStateMachine|SeamlessCubemap|SelectionListItem|Sensor|SensorGesture|SensorGlobal|SensorReading|SequentialAnimation|Settings|SettingsStore|ShaderEffect|ShaderEffectSource|ShaderProgram|ShaderProgramBuilder|Shape|ShellSurface|ShellSurfaceItem|ShiftHandler|ShiftKey|Shortcut|SignalSpy|SignalTransition|SinglePointHandler|Skeleton|SkeletonLoader|Slider|SliderStyle|SmoothedAnimation|SortPolicy|Sound|SoundEffect|SoundInstance|SpaceKey|SphereGeometry|SphereMesh|SpinBox|SpinBoxStyle|SplineSeries|SplitView|SpotLight|SpringAnimation|Sprite|SpriteGoal|SpriteSequence|Stack|StackLayout|StackView|StackViewDelegate|StackedBarSeries|State|StateChangeScript|StateGroup|StateMachine|StateMachineLoader|StatusBar|StatusBarStyle|StatusIndicator|StatusIndicatorStyle|StencilMask|StencilOperation|StencilOperationArguments|StencilTest|StencilTestArguments|Store|String|Supplier|Surface3D|Surface3DSeries|SurfaceDataProxy|SwipeDelegate|SwipeView|Switch|SwitchDelegate|SwitchStyle|SymbolModeKey|SystemPalette|Tab|TabBar|TabButton|TabView|TabViewStyle|TableView|TableViewColumn|TableViewStyle|TapHandler|TapReading|TapSensor|TargetDirection|TaskbarButton|Technique|TechniqueFilter|TestCase|Text|TextArea|TextAreaStyle|TextEdit|TextField|TextFieldStyle|TextInput|TextMetrics|TextureImage|TextureImageFactory|Theme3D|ThemeColor|ThresholdMask|ThumbnailToolBar|ThumbnailToolButton|TiltReading|TiltSensor|TimeoutTransition|Timer|ToggleButton|ToggleButtonStyle|ToolBar|ToolBarStyle|ToolButton|ToolSeparator|ToolTip|Torch|TorusGeometry|TorusMesh|TouchEventSequence|TouchInputHandler3D|TouchPoint|Trace|TraceCanvas|TraceInputArea|TraceInputKey|TraceInputKeyPanel|TrailEmitter|Transaction|Transform|Transition|Translate|TreeView|TreeViewStyle|Tumbler|TumblerColumn|TumblerStyle|Turbulence|UniformAnimator|User|VBarModelMapper|VBoxPlotModelMapper|VCandlestickModelMapper|VPieModelMapper|VXYModelMapper|ValueAxis|ValueAxis3D|ValueAxis3DFormatter|Vector3dAnimation|VertexBlendAnimation|Video|VideoOutput|ViewTransition|Viewport|VirtualKeyboardSettings|Wander|WavefrontMesh|WaylandClient|WaylandCompositor|WaylandHardwareLayer|WaylandOutput|WaylandQuickItem|WaylandSeat|WaylandSurface|WaylandView|Waypoint|WebChannel|WebEngine|WebEngineAction|WebEngineCertificateError|WebEngineDownloadItem|WebEngineHistory|WebEngineHistoryListModel|WebEngineLoadRequest|WebEngineNavigationRequest|WebEngineNewViewRequest|WebEngineProfile|WebEngineScript|WebEngineSettings|WebEngineView|WebSocket|WebSocketServer|WebView|WebViewLoadRequest|WheelEvent|Window|WlShell|WlShellSurface|WorkerScript|XAnimator|XYPoint|XYSeries|XdgDecorationManagerV1|XdgPopup|XdgPopupV5|XdgPopupV6|XdgShell|XdgShellV5|XdgShellV6|XdgSurface|XdgSurfaceV5|XdgSurfaceV6|XdgToplevel|XdgToplevelV6|XmlListModel|XmlRole|YAnimator|ZoomBlur","storage.type":"const|let|var|function|property|","constant.language":"null|Infinity|NaN|undefined","support.function":"print|console\\.log","constant.language.boolean":"true|false"},"identifier");this.$rules={start:[{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{token:e,regex:"\\b\\w+\\b"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};r.inherits(s,i),t.QmlHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/qml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/qml_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./qml_highlight_rules").QmlHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'"},this.$id="ace/mode/qml"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/qml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-r.js b/www/js/ace/mode-r.js deleted file mode 100644 index 09e0d075e..000000000 --- a/www/js/ace/mode-r.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(e){e||(e="text"),this.$rules={start:[{token:"comment",regex:"%.*$"},{token:e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b",next:"nospell"},{token:"keyword",regex:"\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:e,regex:"\\s+"}],nospell:[{token:"comment",regex:"%.*$",next:"start"},{token:"nospell."+e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b"},{token:"keyword",regex:"\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])",next:"start"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])]"},{token:"paren.keyword.operator",regex:"}",next:"start"},{token:"nospell."+e,regex:"\\s+"},{token:"nospell."+e,regex:"\\w+"}]}};r.inherits(o,s),t.TexHighlightRules=o}),define("ace/mode/r_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./tex_highlight_rules").TexHighlightRules,u=function(){var e=i.arrayToMap("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass".split("|")),t=i.arrayToMap("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|NA_complex_".split("|"));this.$rules={start:[{token:"comment.sectionhead",regex:"#+(?!').*(?:----|====|####)\\s*$"},{token:"comment",regex:"#+'",next:"rd-start"},{token:"comment",regex:"#.*$"},{token:"string",regex:'["]',next:"qqstring"},{token:"string",regex:"[']",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+[Li]?\\b"},{token:"constant.numeric",regex:"\\d+L\\b"},{token:"constant.numeric",regex:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b"},{token:"constant.numeric",regex:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b"},{token:"constant.language.boolean",regex:"(?:TRUE|FALSE|T|F)\\b"},{token:"identifier",regex:"`.*?`"},{onMatch:function(n){return e[n]?"keyword":t[n]?"constant.language":n=="..."||n.match(/^\.\.\d+$/)?"variable.language":"identifier"},regex:"[a-zA-Z.][a-zA-Z0-9._]*\\b"},{token:"keyword.operator",regex:"%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:"},{token:"keyword.operator",regex:"%.*?%"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]};var n=(new o("comment")).getRules();for(var r=0;r|\\+|\\*|-|/|~|%|\\?|!|\\^|\\.|\\:|\\,|\u00bb|\u00ab|\\||\\&|\u269b|\u2218"},v={token:"constant.language",regex:"\ud835\udc52|\u03c0|\u03c4|\u221e"},m={token:"string.quoted.single",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},g={token:"string.quoted.single",regex:"[<](?:[a-zA-Z0-9 ])*[>]"},y={token:"string.regexp",regex:"[m|rx]?[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"};this.$rules={start:[{token:"comment.block",regex:"#[`|=]\\(.*\\)"},{token:"comment.block",regex:"#[`|=]\\[.*\\]"},{token:"comment.doc",regex:"^=(?:begin)\\b",next:"block_comment"},{token:"string.unquoted",regex:"q[x|w]?\\:to/END/;",next:"qheredoc"},{token:"string.unquoted",regex:"qq[x|w]?\\:to/END/;",next:"qqheredoc"},y,m,{token:"string.quoted.double",regex:'"',next:"qqstring"},g,{token:["keyword","text","variable.module"],regex:"(use)(\\s+)((?:"+o+"\\.?)*)"},u,a,f,l,c,h,p,d,v,{token:"comment",regex:"#.*$"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"constant.language.escape",regex:'\\\\(?:[nrtef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})'},h,p,{token:"lparen",regex:"{",next:"qqinterpolation"},{token:"string.quoted.double",regex:'"',next:"start"},{defaultToken:"string.quoted.double"}],qqinterpolation:[u,a,f,l,c,h,p,d,v,m,y,{token:"rparen",regex:"}",next:"qqstring"}],block_comment:[{token:"comment.doc",regex:"^=end +[a-zA-Z_0-9]*",next:"start"},{defaultToken:"comment.doc"}],qheredoc:[{token:"string.unquoted",regex:"END$",next:"start"},{defaultToken:"string.unquoted"}],qqheredoc:[h,p,{token:"lparen",regex:"{",next:"qqheredocinterpolation"},{token:"string.unquoted",regex:"END$",next:"start"},{defaultToken:"string.unquoted"}],qqheredocinterpolation:[u,a,f,l,c,h,p,d,v,m,y,{token:"rparen",regex:"}",next:"qqheredoc"}]}};r.inherits(s,i),t.RakuHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/raku",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/raku_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./raku_highlight_rules").RakuHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new u({start:"^=(begin)\\b",end:"^=(end)\\b"}),this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="#",this.blockComment=[{start:"=begin",end:"=end",lineStartOnly:!0},{start:"=item",end:"=end",lineStartOnly:!0}],this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/raku"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/raku"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-razor.js b/www/js/ace/mode-razor.js deleted file mode 100644 index 142feca6e..000000000 --- a/www/js/ace/mode-razor.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/csharp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=this.createKeywordMapper({"variable.language":"this",keyword:"abstract|async|await|event|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|partial|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic","constant.language":"null|true|false"},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:/'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))?'/},{token:"string",start:'"',end:'"|$',next:[{token:"constant.language.escape",regex:/\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/},{token:"invalid",regex:/\\./}]},{token:"string",start:'@"',end:'"',next:[{token:"constant.language.escape",regex:'""'}]},{token:"string",start:/\$"/,end:'"|$',next:[{token:"constant.language.escape",regex:/\\(:?$)|{{/},{token:"constant.language.escape",regex:/\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/},{token:"invalid",regex:/\\./}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"keyword",regex:"^\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(o,s),t.CSharpHighlightRules=o}),define("ace/mode/razor_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/html_highlight_rules","ace/mode/csharp_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./html_highlight_rules").HtmlHighlightRules,u=e("./csharp_highlight_rules").CSharpHighlightRules,a="razor-block-",f=function(){u.call(this);var e=function(e,t){return typeof t=="function"?t(e):t},t="in-braces";this.$rules.start.unshift({regex:"[\\[({]",onMatch:function(e,n,r){var i=/razor-[^\-]+-/.exec(n)[0];return r.unshift(e),r.unshift(i+t),this.next=i+t,"paren.lparen"}},{start:"@\\*",end:"\\*@",token:"comment"});var n={"{":"}","[":"]","(":")"};this.$rules[t]=i.deepCopy(this.$rules.start),this.$rules[t].unshift({regex:"[\\])}]",onMatch:function(t,r,i){var s=i[1];return n[s]!==t?"invalid.illegal":(i.shift(),i.shift(),this.next=e(t,i[0])||"start","paren.rparen")}})};r.inherits(f,u);var l=function(){o.call(this);var e={regex:"@[({]|@functions{",onMatch:function(e,t,n){return n.unshift(e),n.unshift("razor-block-start"),this.next="razor-block-start","punctuation.block.razor"}},t={"@{":"}","@(":")","@functions{":"}"},n={regex:"[})]",onMatch:function(e,n,r){var i=r[1];return t[i]!==e?"invalid.illegal":(r.shift(),r.shift(),this.next=r.shift()||"start","punctuation.block.razor")}},r={regex:"@(?![{(])",onMatch:function(e,t,n){return n.unshift("razor-short-start"),this.next="razor-short-start","punctuation.short.razor"}},i={token:"",regex:"(?=[^A-Za-z_\\.()\\[\\]])",next:"pop"},s={regex:"@(?=if)",onMatch:function(e,t,n){return n.unshift(function(e){return e!=="}"?"start":n.shift()||"start"}),this.next="razor-block-start","punctuation.control.razor"}},u=[{start:"@\\*",end:"\\*@",token:"comment"},{token:["meta.directive.razor","text","identifier"],regex:"^(\\s*@model)(\\s+)(.+)$"},e,r];for(var a in this.$rules)this.$rules[a].unshift.apply(this.$rules[a],u);this.embedRules(f,"razor-block-",[n],["start"]),this.embedRules(f,"razor-short-",[i],["start"]),this.normalizeRules()};r.inherits(l,o),t.RazorHighlightRules=l,t.RazorLangHighlightRules=f}),define("ace/mode/razor_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../token_iterator").TokenIterator,i=["abstract","as","base","bool","break","byte","case","catch","char","checked","class","const","continue","decimal","default","delegate","do","double","else","enum","event","explicit","extern","false","finally","fixed","float","for","foreach","goto","if","implicit","in","int","interface","internal","is","lock","long","namespace","new","null","object","operator","out","override","params","private","protected","public","readonly","ref","return","sbyte","sealed","short","sizeof","stackalloc","static","string","struct","switch","this","throw","true","try","typeof","uint","ulong","unchecked","unsafe","ushort","using","var","virtual","void","volatile","while"],s=["Html","Model","Url","Layout"],o=function(){};(function(){this.getCompletions=function(e,t,n,r){if(e.lastIndexOf("razor-short-start")==-1&&e.lastIndexOf("razor-block-start")==-1)return[];var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e.lastIndexOf("razor-short-start")!=-1)return this.getShortStartCompletions(e,t,n,r);if(e.lastIndexOf("razor-block-start")!=-1)return this.getKeywordCompletions(e,t,n,r)},this.getShortStartCompletions=function(e,t,n,r){return s.map(function(e){return{value:e,meta:"keyword",score:1e6}})},this.getKeywordCompletions=function(e,t,n,r){return s.concat(i).map(function(e){return{value:e,meta:"keyword",score:1e6}})}}).call(o.prototype),t.RazorCompletions=o}),define("ace/mode/razor",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/razor_highlight_rules","ace/mode/razor_completions","ace/mode/html_completions"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./razor_highlight_rules").RazorHighlightRules,o=e("./razor_completions").RazorCompletions,u=e("./html_completions").HtmlCompletions,a=function(){i.call(this),this.$highlightRules=new s,this.$completer=new o,this.$htmlCompleter=new u};r.inherits(a,i),function(){this.getCompletions=function(e,t,n,r){var i=this.$completer.getCompletions(e,t,n,r),s=this.$htmlCompleter.getCompletions(e,t,n,r);return i.concat(s)},this.createWorker=function(e){return null},this.$id="ace/mode/razor",this.snippetFileId="ace/snippets/razor"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/razor"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-rdoc.js b/www/js/ace/mode-rdoc.js deleted file mode 100644 index 2b119ed6b..000000000 --- a/www/js/ace/mode-rdoc.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:"%.*$"},{token:["keyword","lparen","variable.parameter","rparen","lparen","storage.type","rparen"],regex:"(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})"},{token:["keyword","lparen","variable.parameter","rparen"],regex:"(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?"},{token:["storage.type","lparen","variable.parameter","rparen"],regex:"(\\\\begin)({)(verbatim)(})",next:"verbatim"},{token:["storage.type","lparen","variable.parameter","rparen"],regex:"(\\\\begin)({)(lstlisting)(})",next:"lstlisting"},{token:["storage.type","lparen","variable.parameter","rparen"],regex:"(\\\\(?:begin|end))({)([\\w*]*)(})"},{token:"storage.type",regex:/\\verb\b\*?/,next:[{token:["keyword.operator","string","keyword.operator"],regex:"(.)(.*?)(\\1|$)|",next:"start"}]},{token:"storage.type",regex:"\\\\[a-zA-Z]+"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"constant.character.escape",regex:"\\\\[^a-zA-Z]?"},{token:"string",regex:"\\${1,2}",next:"equation"}],equation:[{token:"comment",regex:"%.*$"},{token:"string",regex:"\\${1,2}",next:"start"},{token:"constant.character.escape",regex:"\\\\(?:[^a-zA-Z]|[a-zA-Z]+)"},{token:"error",regex:"^\\s*$",next:"start"},{defaultToken:"string"}],verbatim:[{token:["storage.type","lparen","variable.parameter","rparen"],regex:"(\\\\end)({)(verbatim)(})",next:"start"},{defaultToken:"text"}],lstlisting:[{token:["storage.type","lparen","variable.parameter","rparen"],regex:"(\\\\end)({)(lstlisting)(})",next:"start"},{defaultToken:"text"}]},this.normalizeRules()};r.inherits(s,i),t.LatexHighlightRules=s}),define("ace/mode/rdoc_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/latex_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./latex_highlight_rules"),u=function(){this.$rules={start:[{token:"comment",regex:"%.*$"},{token:"text",regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b",next:"nospell"},{token:"keyword",regex:"\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],nospell:[{token:"comment",regex:"%.*$",next:"start"},{token:"nospell.text",regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b"},{token:"keyword",regex:"\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])",next:"start"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])]"},{token:"paren.keyword.operator",regex:"}",next:"start"},{token:"nospell.text",regex:"\\s+"},{token:"nospell.text",regex:"\\w+"}]}};r.inherits(u,s),t.RDocHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/rdoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rdoc_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./rdoc_highlight_rules").RDocHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=function(e){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.$id="ace/mode/rdoc"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/rdoc"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-red.js b/www/js/ace/mode-red.js deleted file mode 100644 index c3c9fe83e..000000000 --- a/www/js/ace/mode-red.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/red_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="";this.$rules={start:[{token:"keyword.operator",regex:/\s([\-+%/=<>*]|(?:\*\*\|\/\/|==|>>>?|<>|<<|=>|<=|=\?))(\s|(?=:))/},{token:"string.email",regex:/\w[-\w._]*\@\w[-\w._]*/},{token:"value.time",regex:/\b\d+:\d+(:\d+)?/},{token:"string.url",regex:/\w[-\w_]*\:(\/\/)?\w[-\w._]*(:\d+)?/},{token:"value.date",regex:/(\b\d{1,4}[-/]\d{1,2}[-/]\d{1,2}|\d{1,2}[-/]\d{1,2}[-/]\d{1,4})\b/},{token:"value.tuple",regex:/\b\d{1,3}\.\d{1,3}\.\d{1,3}(\.\d{1,3}){0,9}/},{token:"value.pair",regex:/[+-]?\d+x[-+]?\d+/},{token:"value.binary",regex:/\b2#{([01]{8})+}/},{token:"value.binary",regex:/\b64#{([\w/=+])+}/},{token:"value.binary",regex:/(16)?#{([\dabcdefABCDEF][\dabcdefABCDEF])*}/},{token:"value.issue",regex:/#\w[-\w'*.]*/},{token:"value.numeric",regex:/[+-]?\d['\d]*(?:\.\d+)?e[-+]?\d{1,3}\%?(?!\w)/},{token:"invalid.illegal",regex:/[+-]?\d['\d]*(?:\.\d+)?\%?[a-zA-Z]/},{token:"value.numeric",regex:/[+-]?\d['\d]*(?:\.\d+)?\%?(?![a-zA-Z])/},{token:"value.character",regex:/#"(\^[-@/_~^"HKLM\[]|.)"/},{token:"string.file",regex:/%[-\w\.\/]+/},{token:"string.tag",regex://,next:"start"},{defaultToken:"string.tag"}],comment:[{token:"comment",regex:/}/,next:"start"},{defaultToken:"comment"}]}};r.inherits(s,i),t.RedHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/red",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/red_highlight_rules","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./red_highlight_rules").RedHighlightRules,o=e("./folding/cstyle").FoldMode,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../range").Range,f=function(){this.HighlightRules=s,this.foldingRules=new o,this.$outdent=new u,this.$behaviour=this.$defaultBehaviour};r.inherits(f,i),function(){this.lineCommentStart=";",this.blockComment={start:"comment {",end:"}"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\[\(]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/red"}.call(f.prototype),t.Mode=f}); (function() { - window.require(["ace/mode/red"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-redshift.js b/www/js/ace/mode-redshift.js deleted file mode 100644 index 824eb18e4..000000000 --- a/www/js/ace/mode-redshift.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),define("ace/mode/redshift_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/json_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=e("./json_highlight_rules").JsonHighlightRules,a=function(){var e="aes128|aes256|all|allowoverwrite|analyse|analyze|and|any|array|as|asc|authorization|backup|between|binary|blanksasnull|both|bytedict|bzip2|case|cast|check|collate|column|constraint|create|credentials|cross|current_date|current_time|current_timestamp|current_user|current_user_id|default|deferrable|deflate|defrag|delta|delta32k|desc|disable|distinct|do|else|emptyasnull|enable|encode|encrypt|encryption|end|except|explicit|false|for|foreign|freeze|from|full|globaldict256|globaldict64k|grant|group|gzip|having|identity|ignore|ilike|in|initially|inner|intersect|into|is|isnull|join|leading|left|like|limit|localtime|localtimestamp|lun|luns|lzo|lzop|minus|mostly13|mostly32|mostly8|natural|new|not|notnull|null|nulls|off|offline|offset|old|on|only|open|or|order|outer|overlaps|parallel|partition|percent|permissions|placing|primary|raw|readratio|recover|references|rejectlog|resort|restore|right|select|session_user|similar|some|sysdate|system|table|tag|tdes|text255|text32k|then|timestamp|to|top|trailing|true|truncatecolumns|union|unique|user|using|verbose|wallet|when|where|with|without",t="current_schema|current_schemas|has_database_privilege|has_schema_privilege|has_table_privilege|age|current_time|current_timestamp|localtime|isfinite|now|ascii|get_bit|get_byte|octet_length|set_bit|set_byte|to_ascii|avg|count|listagg|max|min|stddev_samp|stddev_pop|sum|var_samp|var_pop|bit_and|bit_or|bool_and|bool_or|avg|count|cume_dist|dense_rank|first_value|last_value|lag|lead|listagg|max|median|min|nth_value|ntile|percent_rank|percentile_cont|percentile_disc|rank|ratio_to_report|row_number|case|coalesce|decode|greatest|least|nvl|nvl2|nullif|add_months|age|convert_timezone|current_date|timeofday|current_time|current_timestamp|date_cmp|date_cmp_timestamp|date_part_year|dateadd|datediff|date_part|date_trunc|extract|getdate|interval_cmp|isfinite|last_day|localtime|localtimestamp|months_between|next_day|now|sysdate|timestamp_cmp|timestamp_cmp_date|trunc|abs|acos|asin|atan|atan2|cbrt|ceiling|ceil|checksum|cos|cot|degrees|dexp|dlog1|dlog10|exp|floor|ln|log|mod|pi|power|radians|random|round|sin|sign|sqrt|tan|trunc|ascii|bpcharcmp|btrim|bttext_pattern_cmp|char_length|character_length|charindex|chr|concat|crc32|func_sha1|get_bit|get_byte|initcap|left|right|len|length|lower|lpad|rpad|ltrim|md5|octet_length|position|quote_ident|quote_literal|regexp_count|regexp_instr|regexp_replace|regexp_substr|repeat|replace|replicate|reverse|rtrim|set_bit|set_byte|split_part|strpos|strtol|substring|textlen|to_ascii|to_hex|translate|trim|upper|json_array_length|json_extract_array_element_text|json_extract_path_text|cast|convert|to_char|to_date|to_number|current_database|current_schema|current_schemas|current_user|current_user_id|has_database_privilege|has_schema_privilege|has_table_privilege|pg_backend_pid|pg_last_copy_count|pg_last_copy_id|pg_last_query_id|pg_last_unload_count|session_user|slice_num|user|version",n=this.createKeywordMapper({"support.function":t,keyword:e},"identifier",!0),r=[{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"variable.language",regex:'".*?"'},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:n,regex:"[a-zA-Z_][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|~=|~>=~|~>~|~~|~~\\*"},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}];this.$rules={start:[{token:"comment",regex:"--.*$"},s.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"keyword.statementBegin",regex:"^[a-zA-Z]+",next:"statement"},{token:"support.buildin",regex:"^\\\\[\\S]+.*$"}],statement:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\/\\*",next:"commentStatement"},{token:"statementEnd",regex:";",next:"start"},{token:"string",regex:"\\$json\\$",next:"json-start"},{token:"string",regex:"\\$[\\w_0-9]*\\$$",next:"dollarSql"},{token:"string",regex:"\\$[\\w_0-9]*\\$",next:"dollarStatementString"}].concat(r),dollarSql:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\/\\*",next:"commentDollarSql"},{token:"string",regex:"^\\$[\\w_0-9]*\\$",next:"statement"},{token:"string",regex:"\\$[\\w_0-9]*\\$",next:"dollarSqlString"}].concat(r),comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],commentStatement:[{token:"comment",regex:".*?\\*\\/",next:"statement"},{token:"comment",regex:".+"}],commentDollarSql:[{token:"comment",regex:".*?\\*\\/",next:"dollarSql"},{token:"comment",regex:".+"}],dollarStatementString:[{token:"string",regex:".*?\\$[\\w_0-9]*\\$",next:"statement"},{token:"string",regex:".+"}],dollarSqlString:[{token:"string",regex:".*?\\$[\\w_0-9]*\\$",next:"dollarSql"},{token:"string",regex:".+"}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.embedRules(u,"json-",[{token:"string",regex:"\\$json\\$",next:"statement"}])};r.inherits(a,o),t.RedshiftHighlightRules=a}),define("ace/mode/redshift",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/redshift_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../mode/text").Mode,s=e("./redshift_highlight_rules").RedshiftHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="--",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){return e=="start"||e=="keyword.statementEnd"?"":this.$getIndent(t)},this.$id="ace/mode/redshift"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/redshift"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-rhtml.js b/www/js/ace/mode-rhtml.js deleted file mode 100644 index bbb3eb8b2..000000000 --- a/www/js/ace/mode-rhtml.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(e){e||(e="text"),this.$rules={start:[{token:"comment",regex:"%.*$"},{token:e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b",next:"nospell"},{token:"keyword",regex:"\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:e,regex:"\\s+"}],nospell:[{token:"comment",regex:"%.*$",next:"start"},{token:"nospell."+e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b"},{token:"keyword",regex:"\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])",next:"start"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])]"},{token:"paren.keyword.operator",regex:"}",next:"start"},{token:"nospell."+e,regex:"\\s+"},{token:"nospell."+e,regex:"\\w+"}]}};r.inherits(o,s),t.TexHighlightRules=o}),define("ace/mode/r_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./tex_highlight_rules").TexHighlightRules,u=function(){var e=i.arrayToMap("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass".split("|")),t=i.arrayToMap("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|NA_complex_".split("|"));this.$rules={start:[{token:"comment.sectionhead",regex:"#+(?!').*(?:----|====|####)\\s*$"},{token:"comment",regex:"#+'",next:"rd-start"},{token:"comment",regex:"#.*$"},{token:"string",regex:'["]',next:"qqstring"},{token:"string",regex:"[']",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+[Li]?\\b"},{token:"constant.numeric",regex:"\\d+L\\b"},{token:"constant.numeric",regex:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b"},{token:"constant.numeric",regex:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b"},{token:"constant.language.boolean",regex:"(?:TRUE|FALSE|T|F)\\b"},{token:"identifier",regex:"`.*?`"},{onMatch:function(n){return e[n]?"keyword":t[n]?"constant.language":n=="..."||n.match(/^\.\.\d+$/)?"variable.language":"identifier"},regex:"[a-zA-Z.][a-zA-Z0-9._]*\\b"},{token:"keyword.operator",regex:"%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:"},{token:"keyword.operator",regex:"%.*?%"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]};var n=(new o("comment")).getRules();for(var r=0;r",next:"start"}],["start"]),this.normalizeRules()};r.inherits(u,o),t.RHtmlHighlightRules=u}),define("ace/mode/rhtml",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/rhtml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./rhtml_highlight_rules").RHtmlHighlightRules,o=function(e,t){i.call(this),this.$session=t,this.HighlightRules=s};r.inherits(o,i),function(){this.insertChunkInfo={value:"\n",position:{row:0,column:15}},this.getLanguageMode=function(e){return this.$session.getState(e.row).match(/^r-/)?"R":"HTML"},this.$id="ace/mode/rhtml"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/rhtml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-robot.js b/www/js/ace/mode-robot.js deleted file mode 100644 index a5cc4dc41..000000000 --- a/www/js/ace/mode-robot.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/robot_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=new RegExp(/\$\{CURDIR\}|\$\{TEMPDIR\}|\$\{EXECDIR\}|\$\{\/\}|\$\{\:\}|\$\{\\n\}|\$\{true\}|\$\{false\}|\$\{none\}|\$\{null\}|\$\{space(?:\s*\*\s+[0-9]+)?\}|\$\{empty\}|&\{empty\}|@\{empty\}|\$\{TEST NAME\}|@\{TEST[\s_]TAGS\}|\$\{TEST[\s_]DOCUMENTATION\}|\$\{TEST[\s_]STATUS\}|\$\{TEST[\s_]MESSAGE\}|\$\{PREV[\s_]TEST[\s_]NAME\}|\$\{PREV[\s_]TEST[\s_]STATUS\}|\$\{PREV[\s_]TEST[\s_]MESSAGE\}|\$\{SUITE[\s_]NAME\}|\$\{SUITE[\s_]SOURCE\}|\$\{SUITE[\s_]DOCUMENTATION\}|&\{SUITE[\s_]METADATA\}|\$\{SUITE[\s_]STATUS\}|\$\{SUITE[\s_]MESSAGE\}|\$\{KEYWORD[\s_]STATUS\}|\$\{KEYWORD[\s_]MESSAGE\}|\$\{LOG[\s_]LEVEL\}|\$\{OUTPUT[\s_]FILE\}|\$\{LOG[\s_]FILE\}|\$\{REPORT[\s_]FILE\}|\$\{DEBUG[\s_]FILE\}|\$\{OUTPUT[\s_]DIR\}/);this.$rules={start:[{token:"string.robot.header",regex:/^\*{3}\s+(?:settings?|metadata|(?:user )?keywords?|test ?cases?|tasks?|variables?)/,caseInsensitive:!0,push:[{token:"string.robot.header",regex:/$/,next:"pop"},{defaultToken:"string.robot.header"}],comment:"start of a table"},{token:"comment.robot",regex:/(?:^|\s{2,}|\t|\|\s{1,})(?=[^\\])#/,push:[{token:"comment.robot",regex:/$/,next:"pop"},{defaultToken:"comment.robot"}]},{token:"comment",regex:/^\s*\[?Documentation\]?/,caseInsensitive:!0,push:[{token:"comment",regex:/^(?!\s*\.\.\.)/,next:"pop"},{defaultToken:"comment"}]},{token:"storage.type.method.robot",regex:/\[(?:Arguments|Setup|Teardown|Precondition|Postcondition|Template|Return|Timeout)\]/,caseInsensitive:!0,comment:"testcase settings"},{token:"storage.type.method.robot",regex:/\[Tags\]/,caseInsensitive:!0,push:[{token:"storage.type.method.robot",regex:/^(?!\s*\.\.\.)/,next:"pop"},{token:"comment",regex:/^\s*\.\.\./},{defaultToken:"storage.type.method.robot"}],comment:"test tags"},{token:"constant.language",regex:e,caseInsensitive:!0},{token:"entity.name.variable.wrapper",regex:/[$@&%]\{\{?/,push:[{token:"entity.name.variable.wrapper",regex:/\}\}?(\s?=)?/,next:"pop"},{include:"$self"},{token:"entity.name.variable",regex:/./},{defaultToken:"entity.name.variable"}]},{token:"keyword.control.robot",regex:/^[^\s\t*$|]+|(?=^\|)\s+[^\s\t*$|]+/,push:[{token:"keyword.control.robot",regex:/(?=\s{2})|\t|$|\s+(?=\|)/,next:"pop"},{defaultToken:"keyword.control.robot"}]},{token:"constant.numeric.robot",regex:/\b[0-9]+(?:\.[0-9]+)?\b/},{token:"keyword",regex:/\s{2,}(for|in range|in|end|else if|if|else|with name)(\s{2,}|$)/,caseInsensitive:!0},{token:"storage.type.function",regex:/^(?:\s{2,}\s+)[^ \t*$@&%[.|]+/,push:[{token:"storage.type.function",regex:/(?=\s{2})|\t|$|\s+(?=\|)/,next:"pop"},{defaultToken:"storage.type.function"}]}]},this.normalizeRules()};s.metadata={fileTypes:["robot"],name:"Robot",scopeName:"source.robot"},r.inherits(s,i),t.RobotHighlightRules=s}),define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){this.foldingStartMarker=new RegExp("([\\[{])(?:\\s*)$|("+e+")(?:\\s*)(?:#.*)?$")};r.inherits(s,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i)return i[1]?this.openingBracketBlock(e,i[1],n,i.index):i[2]?this.indentationBlock(e,n,i.index+i[2].length):this.indentationBlock(e,n)}}.call(s.prototype)}),define("ace/mode/robot",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/robot_highlight_rules","ace/mode/folding/pythonic"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./robot_highlight_rules").RobotHighlightRules,o=e("./folding/pythonic").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/robot",this.snippetFileId="ace/snippets/robot"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/robot"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-rst.js b/www/js/ace/mode-rst.js deleted file mode 100644 index ef2c774fe..000000000 --- a/www/js/ace/mode-rst.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/rst_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e={title:"markup.heading",list:"markup.heading",table:"constant",directive:"keyword.operator",entity:"string",link:"markup.underline.list",bold:"markup.bold",italic:"markup.italic",literal:"support.function",comment:"comment"},t="(^|\\s|[\"'(<\\[{\\-/:])",n="(?:$|(?=\\s|[\\\\.,;!?\\-/:\"')>\\]}]))";this.$rules={start:[{token:e.title,regex:"(^)([\\=\\-`:\\.'\"~\\^_\\*\\+#])(\\2{2,}\\s*$)"},{token:["text",e.directive,e.literal],regex:"(^\\s*\\.\\. )([^: ]+::)(.*$)",next:"codeblock"},{token:e.directive,regex:"::$",next:"codeblock"},{token:[e.entity,e.link],regex:"(^\\.\\. _[^:]+:)(.*$)"},{token:[e.entity,e.link],regex:"(^__ )(https?://.*$)"},{token:e.entity,regex:"^\\.\\. \\[[^\\]]+\\] "},{token:e.comment,regex:"^\\.\\. .*$",next:"comment"},{token:e.list,regex:"^\\s*[\\*\\+-] "},{token:e.list,regex:"^\\s*(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\. "},{token:e.list,regex:"^\\s*\\(?(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\) "},{token:e.table,regex:"^={2,}(?: +={2,})+$"},{token:e.table,regex:"^\\+-{2,}(?:\\+-{2,})+\\+$"},{token:e.table,regex:"^\\+={2,}(?:\\+={2,})+\\+$"},{token:["text",e.literal],regex:t+"(``)(?=\\S)",next:"code"},{token:["text",e.bold],regex:t+"(\\*\\*)(?=\\S)",next:"bold"},{token:["text",e.italic],regex:t+"(\\*)(?=\\S)",next:"italic"},{token:e.entity,regex:"\\|[\\w\\-]+?\\|"},{token:e.entity,regex:":[\\w-:]+:`\\S",next:"entity"},{token:["text",e.entity],regex:t+"(_`)(?=\\S)",next:"entity"},{token:e.entity,regex:"_[A-Za-z0-9\\-]+?"},{token:["text",e.link],regex:t+"(`)(?=\\S)",next:"link"},{token:e.link,regex:"[A-Za-z0-9\\-]+?__?"},{token:e.link,regex:"\\[[^\\]]+?\\]_"},{token:e.link,regex:"https?://\\S+"},{token:e.table,regex:"\\|"}],codeblock:[{token:e.literal,regex:"^ +.+$",next:"codeblock"},{token:e.literal,regex:"^$",next:"codeblock"},{token:"empty",regex:"",next:"start"}],code:[{token:e.literal,regex:"\\S``"+n,next:"start"},{defaultToken:e.literal}],bold:[{token:e.bold,regex:"\\S\\*\\*"+n,next:"start"},{defaultToken:e.bold}],italic:[{token:e.italic,regex:"\\S\\*"+n,next:"start"},{defaultToken:e.italic}],entity:[{token:e.entity,regex:"\\S`"+n,next:"start"},{defaultToken:e.entity}],link:[{token:e.link,regex:"\\S`__?"+n,next:"start"},{defaultToken:e.link}],comment:[{token:e.comment,regex:"^ +.+$",next:"comment"},{token:e.comment,regex:"^$",next:"comment"},{token:"empty",regex:"",next:"start"}]}};r.inherits(o,s),t.RSTHighlightRules=o}),define("ace/mode/rst",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rst_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./rst_highlight_rules").RSTHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.type="text",this.$id="ace/mode/rst",this.snippetFileId="ace/snippets/rst"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/rst"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-ruby.js b/www/js/ace/mode-ruby.js deleted file mode 100644 index 6c220ebcf..000000000 --- a/www/js/ace/mode-ruby.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.constantOtherSymbol={token:"constant.other.symbol.ruby",regex:"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"};t.qString={token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},t.qqString={token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},t.tString={token:"string",regex:"[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"};var o=t.constantNumericHex={token:"constant.numeric",regex:"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"},u=t.constantNumericBinary={token:"constant.numeric",regex:/\b(0[bB][01](?:[01]|_(?=[01]))*)\b/},a=t.constantNumericDecimal={token:"constant.numeric",regex:/\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/},f=t.constantNumericOctal={token:"constant.numeric",regex:/\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/},l=t.constantNumericRational={token:"constant.numeric",regex:/\b([\d]+(?:[./][\d]+)?ri?)\b/},c=t.constantNumericComplex={token:"constant.numeric",regex:/\b([\d]i)\b/},h=t.constantNumericFloat={token:"constant.numeric",regex:"[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"},p=t.instanceVariable={token:"variable.instance",regex:"@{1,2}[a-zA-Z_\\d]+"},d=function(){var e="abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|private_class_method|remove_method|undef_method",t="alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend",n="true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION",r="$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",i=this.$keywords=this.createKeywordMapper({keyword:t,"constant.language":n,"variable.language":r,"support.function":e,"invalid.deprecated":"debugger"},"identifier"),d="\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})",v={"(":")","[":"]","{":"}","<":">","^":"^","|":"|","%":"%"};this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment.multiline",regex:"^=begin(?=$|\\s.*$)",next:"comment"},{token:"string.regexp",regex:/[/](?=.*\/)/,next:"regex"},[{token:["constant.other.symbol.ruby","string.start"],regex:/(:)?(")/,push:[{token:"constant.language.escape",regex:d},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/`/,push:[{token:"constant.language.escape",regex:d},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/`/,next:"pop"},{defaultToken:"string"}]},{token:["constant.other.symbol.ruby","string.start"],regex:/(:)?(')/,push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:/'/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/%[qwx]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="qStateWithoutInterpolation",this.token}},{token:"string.start",regex:/%[QWX]?([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="qStateWithInterpolation",this.token}},{token:"constant.other.symbol.ruby",regex:/%[si]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="sStateWithoutInterpolation",this.token}},{token:"constant.other.symbol.ruby",regex:/%[SI]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="sStateWithInterpolation",this.token}},{token:"string.regexp",regex:/%[r]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="rState",this.token}}],{token:"punctuation",regex:"::"},p,{token:"variable.global",regex:"[$][a-zA-Z_\\d]+"},{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]*"},{token:["punctuation.operator","support.function"],regex:/(\.)([a-zA-Z_\d]+)(?=\()/},{token:["punctuation.operator","identifier"],regex:/(\.)([a-zA-Z_][a-zA-Z_\d]*)/},{token:"string.character",regex:"\\B\\?(?:"+d+"|\\S)"},{token:"punctuation.operator",regex:/\?(?=.+:)/},l,c,s,o,h,u,a,f,{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.separator.key-value",regex:"=>"},{stateName:"heredoc",onMatch:function(e,t,n){var r=e[2]=="-"||e[2]=="~"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[3]),[{type:"constant",value:i[1]},{type:"string",value:i[2]},{type:"support.class",value:i[3]},{type:"string",value:i[4]}]},regex:"(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)",rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]",onMatch:function(e,t,n){return this.next="",e=="}"&&n.length>1&&n[1]!="start"&&(n.shift(),this.next=n.shift()),this.token}},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:/[?:,;.]/}],comment:[{token:"comment.multiline",regex:"^=end(?=$|\\s.*$)",next:"start"},{token:"comment",regex:".+"}],qStateWithInterpolation:[{token:"string.start",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"string"}},{token:"constant.language.escape",regex:d},{token:"constant.language.escape",regex:/\\./},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","string")}},{defaultToken:"string"}],qStateWithoutInterpolation:[{token:"string.start",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"string"}},{token:"constant.language.escape",regex:/\\['\\]/},{token:"constant.language.escape",regex:/\\./},{token:"string.end",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","string")}},{defaultToken:"string"}],sStateWithoutInterpolation:[{token:"constant.other.symbol.ruby",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.other.symbol.ruby"}},{token:"constant.other.symbol.ruby",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.other.symbol.ruby")}},{defaultToken:"constant.other.symbol.ruby"}],sStateWithInterpolation:[{token:"constant.other.symbol.ruby",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.other.symbol.ruby"}},{token:"constant.language.escape",regex:d},{token:"constant.language.escape",regex:/\\./},{token:"paren.start",regex:/#{/,push:"start"},{token:"constant.other.symbol.ruby",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.other.symbol.ruby")}},{defaultToken:"constant.other.symbol.ruby"}],rState:[{token:"string.regexp",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.language.escape"}},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.regexp",regex:/\//},{token:"string.regexp",regex:/[)\]>}^|%][imxouesn]*/,onMatch:function(e,t,n){return n.length&&e[0]===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.language.escape")}},{include:"regex"},{defaultToken:"string.regexp"}],regex:[{token:"regexp.keyword",regex:/\\[wWdDhHsS]/},{token:"constant.language.escape",regex:/\\[AGbBzZ]/},{token:"constant.language.escape",regex:/\\g<[a-zA-Z0-9]*>/},{token:["constant.language.escape","regexp.keyword","constant.language.escape"],regex:/(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/},{token:["constant.language.escape","invalid","constant.language.escape"],regex:/(\\p{\^?)([^/]*)(})/},{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:/[/][imxouesn]*/,next:"start"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"regexp.keyword",regex:/\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/},{token:"constant.language.escape",regex:/\[\^?/,push:"regex_character_class"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.keyword",regex:/\\[wWdDhHsS]/},{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:/&?&?\[\^?/,push:"regex_character_class"},{token:"constant.language.escape",regex:"]",next:"pop"},{token:"constant.language.escape",regex:"-"},{defaultToken:"string.regexp.characterclass"}]},this.normalizeRules()};r.inherits(d,i),t.RubyHighlightRules=d}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.indentKeywords={"class":1,def:1,module:1,"do":1,unless:1,"if":1,"while":1,"for":1,until:1,begin:1,"else":0,elsif:0,rescue:0,ensure:0,when:0,end:-1,"case":1,"=begin":1,"=end":-1},this.foldingStartMarker=/(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/,this.foldingStopMarker=/(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarker.test(r),s=this.foldingStopMarker.test(r);if(i&&!s){var o=r.match(this.foldingStartMarker);if(o[1]){if(o[1]=="if"||o[1]=="else"||o[1]=="while"||o[1]=="until"||o[1]=="unless"){if(o[1]=="else"&&/^\s*else\s*$/.test(r)===!1)return;if(/^\s*(?:if|else|while|until|unless)\s*/.test(r)===!1)return}if(o[1]=="when"&&/\sthen\s/.test(r)===!0)return;if(e.getTokenAt(n,o.index+2).type==="keyword")return"start"}else{if(!o[3])return"start";if(e.getTokenAt(n,o.index+1).type==="comment.multiline")return"start"}}if(t!="markbeginend"||!s||i&&s)return"";var o=r.match(this.foldingStopMarker);if(o[3]==="end"){if(e.getTokenAt(n,o.index+1).type==="keyword")return"end"}else{if(!o[1])return"end";if(e.getTokenAt(n,o.index+1).type==="comment.multiline")return"end"}},this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]||i[3]?this.rubyBlock(e,n,i.index+2):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[3]==="end"&&e.getTokenAt(n,i.index+1).type==="keyword"?this.rubyBlock(e,n,i.index+1):i[1]==="=end"&&e.getTokenAt(n,i.index+1).type==="comment.multiline"?this.rubyBlock(e,n,i.index+1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.rubyBlock=function(e,t,n,r){var i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!="keyword"&&u.type!="comment.multiline")return;var a=u.value,f=e.getLine(t);switch(u.value){case"if":case"unless":case"while":case"until":var l=new RegExp("^\\s*"+u.value);if(!l.test(f))return;var c=this.indentKeywords[a];break;case"when":if(/\sthen\s/.test(f))return;case"elsif":case"rescue":case"ensure":var c=1;break;case"else":var l=new RegExp("^\\s*"+u.value+"\\s*$");if(!l.test(f))return;var c=1;break;default:var c=this.indentKeywords[a]}var h=[a];if(!c)return;var p=c===-1?e.getLine(t-1).length:e.getLine(t).length,d=t,v=[];v.push(i.getCurrentTokenRange()),i.step=c===-1?i.stepBackward:i.stepForward;if(u.type=="comment.multiline")while(u=i.step()){if(u.type!=="comment.multiline")continue;if(c==1){p=6;if(u.value=="=end")break}else if(u.value=="=begin")break}else while(u=i.step()){var m=!1;if(u.type!=="keyword")continue;var g=c*this.indentKeywords[u.value];f=e.getLine(i.getCurrentTokenRow());switch(u.value){case"do":for(var y=i.$tokenIndex-1;y>=0;y--){var b=i.$rowTokens[y];if(b&&(b.value=="while"||b.value=="until"||b.value=="for")){g=0;break}}break;case"else":var l=new RegExp("^\\s*"+u.value+"\\s*$");if(!l.test(f)||a=="case")g=0,m=!0;break;case"if":case"unless":case"while":case"until":var l=new RegExp("^\\s*"+u.value);l.test(f)||(g=0,m=!0);break;case"when":if(/\sthen\s/.test(f)||a=="case")g=0,m=!0}if(g>0)h.unshift(u.value);else if(g<=0&&m===!1){h.shift();if(!h.length){if((a=="while"||a=="until"||a=="for")&&u.value!="do")break;if(u.value=="do"&&c==-1&&g!=0)break;if(u.value!="do")break}g===0&&h.unshift(u.value)}}if(!u)return null;if(r)return v.push(i.getCurrentTokenRange()),v;var t=i.getCurrentTokenRow();if(c===-1){if(u.type==="comment.multiline")var w=6;else var w=e.getLine(t).length;return new s(t,w,d-1,p)}return new s(d,p,t-1,e.getLine(t-1).length)}}.call(u.prototype)}),define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/ruby"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ruby_highlight_rules").RubyHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./folding/ruby").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new a,this.indentKeywords=this.foldingRules.indentKeywords};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/),u=t.match(/^\s*(class|def|module)\s.*$/),a=t.match(/.*do(\s*|\s+\|.*\|\s*)$/),f=t.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/);if(o||u||a||f)r+=n}return r},this.checkOutdent=function(e,t,n){return/^\s+(end|else|rescue|ensure)$/.test(t+n)||this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){var r=t.getLine(n);if(/}/.test(r))return this.$outdent.autoOutdent(t,n);var i=this.$getIndent(r),s=t.getLine(n-1),o=this.$getIndent(s),a=t.getTabString();o.length<=i.length&&i.slice(-a.length)==a&&t.remove(new u(n,i.length-a.length,n,i.length))},this.getMatching=function(e,t,n){if(t==undefined){var r=e.selection.lead;n=r.column,t=r.row}var i=e.getTokenAt(t,n);if(i&&i.value in this.indentKeywords)return this.foldingRules.rubyBlock(e,t,n,!0)},this.$id="ace/mode/ruby",this.snippetFileId="ace/snippets/ruby"}.call(f.prototype),t.Mode=f}); (function() { - window.require(["ace/mode/ruby"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-rust.js b/www/js/ace/mode-rust.js deleted file mode 100644 index 8ab5475bc..000000000 --- a/www/js/ace/mode-rust.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/rust_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/doc_comment_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=/\\(?:[nrt0'"\\]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\})/.source,u=/[a-zA-Z_\xa1-\uffff][a-zA-Z0-9_\xa1-\uffff]*/.source,a=function(){var e=this.createKeywordMapper({"keyword.source.rust":"abstract|alignof|as|async|await|become|box|break|catch|continue|const|crate|default|do|dyn|else|enum|extern|for|final|if|impl|in|let|loop|macro|match|mod|move|mut|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield|try","storage.type.source.rust":"Self|isize|usize|char|bool|u8|u16|u32|u64|u128|f16|f32|f64|i8|i16|i32|i64|i128|str|option|either|c_float|c_double|c_void|FILE|fpos_t|DIR|dirent|c_char|c_schar|c_uchar|c_short|c_ushort|c_int|c_uint|c_long|c_ulong|size_t|ptrdiff_t|clock_t|time_t|c_longlong|c_ulonglong|intptr_t|uintptr_t|off_t|dev_t|ino_t|pid_t|mode_t|ssize_t","constant.language.source.rust":"true|false|Some|None|Ok|Err|FALSE|TRUE","support.constant.source.rust":"EXIT_FAILURE|EXIT_SUCCESS|RAND_MAX|EOF|SEEK_SET|SEEK_CUR|SEEK_END|_IOFBF|_IONBF|_IOLBF|BUFSIZ|FOPEN_MAX|FILENAME_MAX|L_tmpnam|TMP_MAX|O_RDONLY|O_WRONLY|O_RDWR|O_APPEND|O_CREAT|O_EXCL|O_TRUNC|S_IFIFO|S_IFCHR|S_IFBLK|S_IFDIR|S_IFREG|S_IFMT|S_IEXEC|S_IWRITE|S_IREAD|S_IRWXU|S_IXUSR|S_IWUSR|S_IRUSR|F_OK|R_OK|W_OK|X_OK|STDIN_FILENO|STDOUT_FILENO|STDERR_FILENO","constant.language":"macro_rules|mac_variant"},"identifier");this.$rules={start:[{token:"variable.other.source.rust",regex:"'"+u+"(?![\\'])"},{token:"string.quoted.single.source.rust",regex:"'(?:[^'\\\\]|"+o+")'"},{token:"identifier",regex:"r#"+u+"\\b"},{stateName:"bracketedComment",onMatch:function(e,t,n){var r=e.replace(/^\w+/,"");return n.unshift(this.next,r.length,t),"string.quoted.raw.source.rust"},regex:/(b|c)?r#*"/,next:[{onMatch:function(e,t,n){var r="string.quoted.raw.source.rust";return e.length>=n[1]?(e.length>n[1]&&(r="invalid"),n.shift(),n.shift(),this.next=n.shift()):this.next="",r},regex:/"#*/,next:"start"},{defaultToken:"string.quoted.raw.source.rust"}]},{token:"string.quoted.double.source.rust",regex:'"',push:[{token:"string.quoted.double.source.rust",regex:'"',next:"pop"},{token:"constant.character.escape.source.rust",regex:o},{defaultToken:"string.quoted.double.source.rust"}]},{token:["keyword.source.rust","text","entity.name.function.source.rust","punctuation"],regex:"\\b(fn)(\\s+)((?:r#)?"+u+")(<)(?!<)",push:"generics"},{token:["keyword.source.rust","text","entity.name.function.source.rust"],regex:"\\b(fn)(\\s+)((?:r#)?"+u+")"},{token:["support.constant","punctuation"],regex:"("+u+"::)(<)(?!<)",push:"generics"},{token:"support.constant",regex:u+"::"},{token:"variable.language.source.rust",regex:"\\bself\\b"},s.getStartRule("doc-start"),{token:"comment.line.doc.source.rust",regex:"///.*$"},{token:"comment.line.doc.source.rust",regex:"//!.*$"},{token:"comment.line.double-dash.source.rust",regex:"//.*$"},{token:"comment.start.block.source.rust",regex:"/\\*",stateName:"comment",push:[{token:"comment.start.block.source.rust",regex:"/\\*",push:"comment"},{token:"comment.end.block.source.rust",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.source.rust"}]},{token:["keyword.source.rust","identifier","punctuaction"],regex:"(?:(impl)|("+u+"))(<)(?!<)",stateName:"generics",push:[{token:"keyword.operator",regex:/<<|=/},{token:"punctuaction",regex:"<(?!<)",push:"generics"},{token:"variable.other.source.rust",regex:"'"+u+"(?![\\'])"},{token:"storage.type.source.rust",regex:"\\b(u8|u16|u32|u64|u128|usize|i8|i16|i32|i64|i128|isize|char|bool)\\b"},{token:"keyword",regex:"\\b(?:const|dyn)\\b"},{token:"punctuation",regex:">",next:"pop"},{include:"punctuation"},{include:"operators"},{include:"constants"},{token:"identifier",regex:"\\b"+u+"\\b"}]},{token:e,regex:u},{token:"meta.preprocessor.source.rust",regex:"\\b\\w\\(\\w\\)*!|#\\[[\\w=\\(\\)_]+\\]\\b"},{include:"punctuation"},{include:"operators"},{include:"constants"}],punctuation:[{token:"paren.lparen",regex:/[\[({]/},{token:"paren.rparen",regex:/[\])}]/},{token:"punctuation.operator",regex:/[?:,;.]/}],operators:[{token:"keyword.operator",regex:/\$|[-=]>|[-+%^=!&|<>]=?|[*/](?![*/])=?/}],constants:[{token:"constant.numeric.source.rust",regex:/\b(?:0x[a-fA-F0-9_]+|0o[0-7_]+|0b[01_]+|[0-9][0-9_]*(?!\.))(?:[iu](?:size|8|16|32|64|128))?\b/},{token:"constant.numeric.source.rust",regex:/\b(?:[0-9][0-9_]*)(?:\.[0-9][0-9_]*)?(?:[Ee][+-][0-9][0-9_]*)?(?:f32|f64)?\b/}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.normalizeRules()};a.metaData={fileTypes:["rs","rc"],foldingStartMarker:"^.*\\bfn\\s*(\\w+\\s*)?\\([^\\)]*\\)(\\s*\\{[^\\}]*)?\\s*$",foldingStopMarker:"^\\s*\\}",name:"Rust",scopeName:"source.rust"},r.inherits(a,i),t.RustHighlightRules=a}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/rust",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rust_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./rust_highlight_rules").RustHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/",nestable:!0},this.$quotes={'"':'"'},this.$id="ace/mode/rust"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/rust"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-sac.js b/www/js/ace/mode-sac.js deleted file mode 100644 index 55ba7abf4..000000000 --- a/www/js/ace/mode-sac.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/sac_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="break|continue|do|else|for|if|return|with|while|use|class|all|void",t="bool|char|complex|double|float|byte|int|short|long|longlong|ubyte|uint|ushort|ulong|ulonglong|struct|typedef",n="inline|external|specialize",r="step|width",s="true|false",o=this.$keywords=this.createKeywordMapper({"keyword.control":e,"storage.type":t,"storage.modifier":n,"keyword.operator":r,"constant.language":s},"identifier"),u="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",a=/\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source,f="%"+/(\d+\$)?/.source+/[#0\- +']*/.source+/[,;:_]?/.source+/((-?\d+)|\*(-?\d+\$)?)?/.source+/(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source+/(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source+/(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source;this.$rules={start:[{token:"comment",regex:"//$",next:"start"},{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:"'(?:"+a+"|.)?'"},{token:"string.start",regex:'"',stateName:"qqstring",next:[{token:"string",regex:/\\\s*$/,next:"qqstring"},{token:"constant.language.escape",regex:a},{token:"constant.language.escape",regex:f},{token:"string.end",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"string.start",regex:'R"\\(',stateName:"rawString",next:[{token:"string.end",regex:'\\)"',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:"support.function",regex:"fold|foldfix|genarray|modarray|propagate"},{token:o,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"},{token:"keyword.operator",regex:/--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(o,s),t.sacHighlightRules=o}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/sac",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sac_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sac_highlight_rules").sacHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/sac"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/sac"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-sass.js b/www/js/ace/mode-sass.js deleted file mode 100644 index 21c1732a6..000000000 --- a/www/js/ace/mode-sass.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./css_highlight_rules"),u=function(){var e=i.arrayToMap(o.supportType.split("|")),t=i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unquote".split("|")),n=i.arrayToMap(o.supportConstant.split("|")),r=i.arrayToMap(o.supportConstantColor.split("|")),s=i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),u=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),a="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:a+"(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:a},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:function(i){return e.hasOwnProperty(i.toLowerCase())?"support.type":s.hasOwnProperty(i)?"keyword":n.hasOwnProperty(i)?"constant.language":t.hasOwnProperty(i)?"support.function":r.hasOwnProperty(i.toLowerCase())?"support.constant.color":u.hasOwnProperty(i.toLowerCase())?"variable.language":"text"},regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable",regex:"[a-z_\\-$][a-z0-9_\\-$]*\\b"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]}};r.inherits(u,s),t.ScssHighlightRules=u}),define("ace/mode/sass_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/scss_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./scss_highlight_rules").ScssHighlightRules,o=function(){s.call(this);var e=this.$rules.start;e[1].token=="comment"&&(e.splice(1,1,{onMatch:function(e,t,n){return n.unshift(this.next,-1,e.length-2,t),"comment"},regex:/^\s*\/\*/,next:"comment"},{token:"error.invalid",regex:"/\\*|[{;}]"},{token:"support.type",regex:/^\s*:[\w\-]+\s/}),this.$rules.comment=[{regex:/^\s*/,onMatch:function(e,t,n){return n[1]===-1&&(n[1]=Math.max(n[2],e.length-1)),e.length<=n[1]?(n.shift(),n.shift(),n.shift(),this.next=n.shift(),"text"):(this.next="","comment")},next:"start"},{defaultToken:"comment"}])};r.inherits(o,s),t.SassHighlightRules=o}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u"},{token:"keyword",regex:"(?:use|include)"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]},this.embedRules(s,"doc-",[s.getEndRule("start")])};r.inherits(u,o),t.scadHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/scad",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scad_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./scad_highlight_rules").scadHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/scad"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/scad"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-scala.js b/www/js/ace/mode-scala.js deleted file mode 100644 index e73bcad02..000000000 --- a/www/js/ace/mode-scala.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/scala_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="case|default|do|else|for|if|match|while|throw|return|try|trye|catch|finally|yield|abstract|class|def|extends|final|forSome|implicit|implicits|import|lazy|new|object|null|override|package|private|protected|sealed|super|this|trait|type|val|var|with|assert|assume|require|print|println|printf|readLine|readBoolean|readByte|readShort|readChar|readInt|readLong|readFloat|readDouble",t="true|false",n="AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object|Unit|Any|AnyVal|AnyRef|Null|ScalaObject|Singleton|Seq|Iterable|List|Option|Array|Char|Byte|Int|Long|Nothing|App|Application|BufferedIterator|BigDecimal|BigInt|Console|Either|Enumeration|Equiv|Fractional|Function|IndexedSeq|Integral|Iterator|Map|Numeric|Nil|NotNull|Ordered|Ordering|PartialFunction|PartialOrdering|Product|Proxy|Range|Responder|Seq|Serializable|Set|Specializable|Stream|StringContext|Symbol|Traversable|TraversableOnce|Tuple|Vector|Pair|Triple",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"support.function":n,"constant.language":t},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'"""',next:"tstring"},{token:"string",regex:'"(?=.)',next:"string"},{token:"symbol.constant",regex:"'[\\w\\d_]+"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],string:[{token:"escape",regex:'\\\\"'},{token:"string",regex:'"',next:"start"},{token:"string.invalid",regex:'[^"\\\\]*$',next:"start"},{token:"string",regex:'[^"\\\\]+'}],tstring:[{token:"string",regex:'"{3,5}',next:"start"},{defaultToken:"string"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.ScalaHighlightRules=o}),define("ace/mode/scala",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/scala_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./scala_highlight_rules").ScalaHighlightRules,o=function(){i.call(this),this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/scala"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/scala"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-scheme.js b/www/js/ace/mode-scheme.js deleted file mode 100644 index 69fae7314..000000000 --- a/www/js/ace/mode-scheme.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/scheme_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="case|do|let|loop|if|else|when",t="eq?|eqv?|equal?|and|or|not|null?",n="#t|#f",r="cons|car|cdr|cond|lambda|lambda*|syntax-rules|format|set!|quote|eval|append|list|list?|member?|load",i=this.createKeywordMapper({"keyword.control":e,"keyword.operator":t,"constant.language":n,"support.function":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:";.*$"},{token:["storage.type.function-type.scheme","text","entity.name.function.scheme"],regex:"(?:\\b(?:(define|define-syntax|define-macro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)"},{token:"punctuation.definition.constant.character.scheme",regex:"#:\\S+"},{token:["punctuation.definition.variable.scheme","variable.other.global.scheme","punctuation.definition.variable.scheme"],regex:"(\\*)(\\S*)(\\*)"},{token:"constant.numeric",regex:"#[xXoObB][0-9a-fA-F]+"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?"},{token:i,regex:"[a-zA-Z_#][a-zA-Z0-9_\\-\\?\\!\\*]*"},{token:"string",regex:'"(?=.)',next:"qqstring"}],qqstring:[{token:"constant.character.escape.scheme",regex:"\\\\."},{token:"string",regex:'[^"\\\\]+',merge:!0},{token:"string",regex:"\\\\$",next:"qqstring",merge:!0},{token:"string",regex:'"|$',next:"start",merge:!0}]}};r.inherits(s,i),t.SchemeHighlightRules=s}),define("ace/mode/matching_parens_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\)/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\))/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){var t=e.match(/^(\s+)/);return t?t[1]:""}}).call(i.prototype),t.MatchingParensOutdent=i}),define("ace/mode/scheme",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scheme_highlight_rules","ace/mode/matching_parens_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./scheme_highlight_rules").SchemeHighlightRules,o=e("./matching_parens_outdent").MatchingParensOutdent,u=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart=";",this.minorIndentFunctions=["define","lambda","define-macro","define-syntax","syntax-rules","define-record-type","define-structure"],this.$toIndent=function(e){return e.split("").map(function(e){return/\s/.exec(e)?e:" "}).join("")},this.$calculateIndent=function(e,t){var n=this.$getIndent(e),r=0,i,s;for(var o=e.length-1;o>=0;o--){s=e[o],s==="("?(r--,i=!0):s==="("||s==="["||s==="{"?(r--,i=!1):(s===")"||s==="]"||s==="}")&&r++;if(r<0)break}if(!(r<0&&i))return r<0&&!i?this.$toIndent(e.substring(0,o+1)):r>0?(n=n.substring(0,n.length-t.length),n):n;o+=1;var u=o,a="";for(;;){s=e[o];if(s===" "||s===" ")return this.minorIndentFunctions.indexOf(a)!==-1?this.$toIndent(e.substring(0,u-1)+t):this.$toIndent(e.substring(0,o+1));if(s===undefined)return this.$toIndent(e.substring(0,u-1)+t);a+=e[o],o++}},this.getNextLineIndent=function(e,t,n){return this.$calculateIndent(t,n)},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/scheme"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/scheme"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-scrypt.js b/www/js/ace/mode-scrypt.js deleted file mode 100644 index d88ae871e..000000000 --- a/www/js/ace/mode-scrypt.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/scrypt_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="contract|library|loop|new|private|public|if|else|struct|type|require|static|const|import|exit|return|asm",t="true|false",n="function|auto|constructor|bytes|int|bool|SigHashPreimage|PrivKey|PubKey|Sig|Ripemd160|Sha1|Sha256|SigHashType|SigHashPreimage|OpCodeType",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t,"support.function":n},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:["support.function.math.scrypt","text","text"],regex:/\b(abs|min|max|within|ripemd160|sha1|sha256|hash160|hash256|checkSig|checkMultiSig|num2bin|pack|unpack|len|reverseBytes|repeat)(\s*)(\()/},{token:["entity.name.type.scrypt","text","text","text","variable.object.property.scrypt"],regex:/\b(SigHash)(\s*)(\.)(\s*)(ANYONECANPAY|ALL|FORKID|NONE|SINGLE)\b/},{token:["entity.name.type.scrypt","text","text","text","variable.object.property.scrypt"],regex:/\b(OpCode)(\s*)(\.)(\s*)(OP_PUSHDATA1|OP_PUSHDATA2|OP_PUSHDATA4|OP_0|OP_FALSE|OP_1NEGATE|OP_1|OP_TRUE|OP_2|OP_3|OP_4|OP_5|OP_6|OP_7|OP_8|OP_9|OP_10|OP_11|OP_12|OP_13|OP_14|OP_15|OP_16|OP_1ADD|OP_1SUB|OP_NEGATE|OP_ABS|OP_NOT|OP_0NOTEQUAL|OP_ADD|OP_SUB|OP_MUL|OP_DIV|OP_MOD|OP_LSHIFT|OP_RSHIFT|OP_BOOLAND|OP_BOOLOR|OP_NUMEQUAL|OP_NUMEQUALVERIFY|OP_NUMNOTEQUAL|OP_LESSTHAN|OP_GREATERTHAN|OP_LESSTHANOREQUAL|OP_GREATERTHANOREQUAL|OP_MIN|OP_MAX|OP_WITHIN|OP_CAT|OP_SPLIT|OP_BIN2NUM|OP_NUM2BIN|OP_SIZE|OP_NOP|OP_IF|OP_NOTIF|OP_ELSE|OP_ENDIF|OP_VERIFY|OP_RETURN|OP_TOALTSTACK|OP_FROMALTSTACK|OP_IFDUP|OP_DEPTH|OP_DROP|OP_DUP|OP_NIP|OP_OVER|OP_PICK|OP_ROLL|OP_ROT|OP_SWAP|OP_TUCK|OP_2DROP|OP_2DUP|OP_3DUP|OP_2OVER|OP_2ROT|OP_2SWAP|OP_RIPEMD160|OP_SHA1|OP_SHA256|OP_HASH160|OP_HASH256|OP_CODESEPARATOR|OP_CHECKSIG|OP_CHECKSIGVERIFY|OP_CHECKMULTISIG|OP_CHECKMULTISIGVERIFY|OP_INVERT|OP_AND|OP_OR|OP_XOR|OP_EQUAL|OP_EQUALVERIFY)\b/},{token:"entity.name.type.scrypt",regex:/\b(?:P2PKH|P2PK|Tx|HashPuzzleRipemd160|HashPuzzleSha1|HashPuzzleSha256|HashPuzzleHash160|OpCode|SigHash)\b/},{token:["punctuation.separator.period.scrypt","text","entity.name.function.scrypt","text","punctuation.definition.parameters.begin.bracket.round.scrypt"],regex:/(\.)([^\S$\r]*)([\w][\w\d]*)(\s*)(\()/,push:[{token:"punctuation.definition.parameters.end.bracket.round.scrypt",regex:/\)/,next:"pop"},{defaultToken:"start"}]},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\||\\^|\\*|\\/|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<>|<|>|!|&&|\\|\\||\\?|\\:|\\*=|\\/=|%=|\\+=|\\-=|&=|\\|=|\\^="},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(o,s),t.scryptHighlightRules=o}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/scrypt",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scrypt_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./scrypt_highlight_rules").scryptHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'"},this.createWorker=function(e){return null},this.$id="ace/mode/scrypt"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/scrypt"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-scss.js b/www/js/ace/mode-scss.js deleted file mode 100644 index e2d165b26..000000000 --- a/www/js/ace/mode-scss.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./css_highlight_rules"),u=function(){var e=i.arrayToMap(o.supportType.split("|")),t=i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unquote".split("|")),n=i.arrayToMap(o.supportConstant.split("|")),r=i.arrayToMap(o.supportConstantColor.split("|")),s=i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),u=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),a="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:a+"(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:a},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:function(i){return e.hasOwnProperty(i.toLowerCase())?"support.type":s.hasOwnProperty(i)?"keyword":n.hasOwnProperty(i)?"constant.language":t.hasOwnProperty(i)?"support.function":r.hasOwnProperty(i.toLowerCase())?"support.constant.color":u.hasOwnProperty(i.toLowerCase())?"variable.language":"text"},regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable",regex:"[a-z_\\-$][a-z0-9_\\-$]*\\b"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]}};r.inherits(u,s),t.ScssHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/scss",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scss_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle","ace/mode/css_completions"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./scss_highlight_rules").ScssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/css").CssBehaviour,a=e("./folding/cstyle").FoldMode,f=e("./css_completions").CssCompletions,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.$completer=new f,this.foldingRules=new a};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.$id="ace/mode/scss"}.call(l.prototype),t.Mode=l}); (function() { - window.require(["ace/mode/scss"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-sh.js b/www/js/ace/mode-sh.js deleted file mode 100644 index 7c700ddcd..000000000 --- a/www/js/ace/mode-sh.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:"+l+"(?==))",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string.start",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$`"\\]|$)/},{include:"variables"},{token:"keyword.operator",regex:/`/},{token:"string.end",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"string",regex:"\\$'",push:[{token:"constant.language.escape",regex:/\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:["keyword","text","text","text","variable"],regex:/(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/},{token:"variable.language",regex:h},{token:"variable",regex:c},{include:"variables"},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"},{token:"punctuation.operator",regex:";"},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]]"},{token:"paren.rparen",regex:"[\\)\\}]",next:"pop"}],variables:[{token:"variable",regex:/(\$)(\w+)/},{token:["variable","paren.lparen"],regex:/(\$)(\()/,push:"start"},{token:["variable","paren.lparen","keyword.operator","variable","keyword.operator"],regex:/(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,push:"start"},{token:"variable",regex:/\$[*@#?\-$!0_]/},{token:["variable","paren.lparen"],regex:/(\$)(\{)/,push:"start"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sh_highlight_rules").ShHighlightRules,o=e("../range").Range,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new o(n,r.length-i.length,n,r.length))},this.$id="ace/mode/sh",this.snippetFileId="ace/snippets/sh"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/sh"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-sjs.js b/www/js/ace/mode-sjs.js deleted file mode 100644 index 5a15f6257..000000000 --- a/www/js/ace/mode-sjs.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/sjs_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=new i({noES6:!0}),t="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)",n=function(e){return e.isContextAware=!0,e},r=function(e){return{token:e.token,regex:e.regex,next:n(function(t,n){return n.length===0&&n.unshift(t),n.unshift(e.next),e.next})}},s=function(e){return{token:e.token,regex:e.regex,next:n(function(e,t){return t.shift(),t[0]||"start"})}};this.$rules=e.$rules,this.$rules.no_regex=[{token:"keyword",regex:"(waitfor|or|and|collapse|spawn|retract)\\b"},{token:"keyword.operator",regex:"(->|=>|\\.\\.)"},{token:"variable.language",regex:"(hold|default)\\b"},r({token:"string",regex:"`",next:"bstring"}),r({token:"string",regex:'"',next:"qqstring"}),r({token:"string",regex:'"',next:"qqstring"}),{token:["paren.lparen","text","paren.rparen"],regex:"(\\{)(\\s*)(\\|)",next:"block_arguments"}].concat(this.$rules.no_regex),this.$rules.block_arguments=[{token:"paren.rparen",regex:"\\|",next:"no_regex"}].concat(this.$rules.function_arguments),this.$rules.bstring=[{token:"constant.language.escape",regex:t},{token:"string",regex:"\\\\$",next:"bstring"},r({token:"paren.lparen",regex:"\\$\\{",next:"string_interp"}),r({token:"paren.lparen",regex:"\\$",next:"bstring_interp_single"}),s({token:"string",regex:"`"}),{defaultToken:"string"}],this.$rules.qqstring=[{token:"constant.language.escape",regex:t},{token:"string",regex:"\\\\$",next:"qqstring"},r({token:"paren.lparen",regex:"#\\{",next:"string_interp"}),s({token:"string",regex:'"'}),{defaultToken:"string"}];var o=[];for(var u=0;u=e.length?(n.splice(0,3),this.next=n.shift(),this.token):(this.next="",[{type:"text",value:i}])},next:""},{token:"string",regex:/.+/,onMatch:function(e,t,n,i){var s=n[2][0],o=n[2][1],u=n[1];if(r[o]){var a=r[o].getTokenizer().getLineTokens(i.slice(s.length),u.slice(0));return n[1]=a.state,a.tokens}return this.token}}]},{token:"constant.begin.javascript.filter.slim",regex:"^(\\s*)():$"},{token:"constant.begin..filter.slim",regex:"^(\\s*)(ruby):$"},{token:"constant.begin.coffeescript.filter.slim",regex:"^(\\s*)():$"},{token:"constant.begin..filter.slim",regex:"^(\\s*)(markdown):$"},{token:"constant.begin.css.filter.slim",regex:"^(\\s*)():$"},{token:"constant.begin.scss.filter.slim",regex:"^(\\s*)():$"},{token:"constant.begin..filter.slim",regex:"^(\\s*)(sass):$"},{token:"constant.begin..filter.slim",regex:"^(\\s*)(less):$"},{token:"constant.begin..filter.slim",regex:"^(\\s*)(erb):$"},{token:"keyword.html.tags.slim",regex:"^(\\s*)((:?\\*(\\w)+)|doctype html|abbr|acronym|address|applet|area|article|aside|audio|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dialog|dfn|dir|div|dl|dt|embed|fieldset|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|link|li|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|source|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|xmp|b|u|s|em|a)(?:([.#](\\w|\\.)+)+\\s?)?\\b"},{token:"keyword.slim",regex:"^(\\s*)(?:([.#](\\w|\\.)+)+\\s?)"},{token:"string",regex:/^(\s*)('|\||\/|(\/!))\s*/,onMatch:function(e,t,n,r){var i=/^\s*/.exec(r)[0];return n.length<1?n.push(this.next):n[0]="mlString",n.length<2?n.push(i.length):n[1]=i.length,this.token},next:"mlString"},{token:"keyword.control.slim",regex:"^(\\s*)(\\-|==|=)",push:[{token:"control.end.slim",regex:"$",next:"pop"},{include:"rubyline"},{include:"misc"}]},{token:"paren",regex:"\\(",push:[{token:"paren",regex:"\\)",next:"pop"},{include:"misc"}]},{token:"paren",regex:"\\[",push:[{token:"paren",regex:"\\]",next:"pop"},{include:"misc"}]},{include:"misc"}],mlString:[{token:"indent",regex:/^\s*/,onMatch:function(e,t,n){var r=n[1];return r>=e.length?(this.next="start",n.splice(0)):this.next="mlString",this.token},next:"start"},{defaultToken:"string"}],rubyline:[{token:"keyword.operator.ruby.embedded.slim",regex:"(==|=)(<>|><|<'|'<|<|>)?|-"},{token:"list.ruby.operators.slim",regex:"(\\b)(for|in|do|if|else|elsif|unless|while|yield|not|and|or)\\b"},{token:"string",regex:"['](.)*?[']"},{token:"string",regex:'["](.)*?["]'}],misc:[{token:"class.variable.slim",regex:"\\@([a-zA-Z_][a-zA-Z0-9_]*)\\b"},{token:"list.meta.slim",regex:"(\\b)(true|false|nil)(\\b)"},{token:"keyword.operator.equals.slim",regex:"="},{token:"string",regex:"['](.)*?[']"},{token:"string",regex:'["](.)*?["]'}]},this.normalizeRules()};i.inherits(o,s),t.SlimHighlightRules=o}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../config").$modes,i=e("../lib/oop"),s=e("../lib/lang"),o=e("./text_highlight_rules").TextHighlightRules,u=e("./html_highlight_rules").HtmlHighlightRules,a=function(e){return"(?:[^"+s.escapeRegExp(e)+"\\\\]|\\\\.)*"},f=function(){u.call(this);var e={token:"support.function",regex:/^\s*(```+[^`]*|~~~+[^~]*)$/,onMatch:function(e,t,n,i){var s=e.match(/^(\s*)([`~]+)(.*)/),o=/[\w-]+|$/.exec(s[3])[0];return r[o]||(o=""),n.unshift("githubblock",[],[s[1],s[2],o],t),this.token},next:"githubblock"},t=[{token:"support.function",regex:".*",onMatch:function(e,t,n,i){var s=n[1],o=n[2][0],u=n[2][1],a=n[2][2],f=/^(\s*)(`+|~+)\s*$/.exec(e);if(f&&f[1].length=u.length&&f[2][0]==u[0])return n.splice(0,3),this.next=n.shift(),this.token;this.next="";if(a&&r[a]){var l=r[a].getTokenizer().getLineTokens(e,s.slice(0));return n[1]=l.state,l.tokens}return this.token}}];this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s|$)/,next:"header"},e,{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+a("]")+")(\\]\\s*\\[)("+a("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\!?\\[)("+a("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+a('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty_line",regex:"^$",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},e,{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:t}),this.normalizeRules()};i.inherits(f,o),t.MarkdownHighlightRules=f}),define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.foldingStartMarker=/^(?:[=-]+\s*$|#{1,6} |`{3})/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?r[0]=="`"?e.bgTokenizer.getState(n)=="start"?"end":"start":"start":""},this.getFoldWidgetRange=function(e,t,n){function l(t){return f=e.getTokens(t)[0],f&&f.type.lastIndexOf(c,0)===0}function h(){var e=f.value[0];return e=="="?6:e=="-"?5:7-f.value.search(/[^#]|$/)}var r=e.getLine(n),i=r.length,o=e.getLength(),u=n,a=n;if(!r.match(this.foldingStartMarker))return;if(r[0]=="`"){if(e.bgTokenizer.getState(n)!=="start"){while(++n0){r=e.getLine(n);if(r[0]=="`"&r.substring(0,3)=="```")break}return new s(n,r.length,u,0)}var f,c="markup.heading";if(l(n)){var p=h();while(++n=p)break}a=n-(!f||["=","-"].indexOf(f.value[0])==-1?1:2);if(a>u)while(a>u&&/^\s*$/.test(e.getLine(a)))a--;if(a>u){var v=e.getLine(a).length;return new s(u,i,a,v)}}}}.call(o.prototype)}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set|function|declare|readonly",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:"+l+"(?==))",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string.start",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$`"\\]|$)/},{include:"variables"},{token:"keyword.operator",regex:/`/},{token:"string.end",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"string",regex:"\\$'",push:[{token:"constant.language.escape",regex:/\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:["keyword","text","text","text","variable"],regex:/(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/},{token:"variable.language",regex:h},{token:"variable",regex:c},{include:"variables"},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]"},{token:"punctuation.operator",regex:";"},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]]"},{token:"paren.rparen",regex:"[\\)\\}]",next:"pop"}],variables:[{token:"variable",regex:/(\$)(\w+)/},{token:["variable","paren.lparen"],regex:/(\$)(\()/,push:"start"},{token:["variable","paren.lparen","keyword.operator","variable","keyword.operator"],regex:/(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/,push:"start"},{token:"variable",regex:/\$[*@#?\-$!0_]/},{token:["variable","paren.lparen"],regex:/(\$)(\{)/,push:"start"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sh_highlight_rules").ShHighlightRules,o=e("../range").Range,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new o(n,r.length-i.length,n,r.length))},this.$id="ace/mode/sh",this.snippetFileId="ace/snippets/sh"}.call(a.prototype),t.Mode=a}),define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./xml_highlight_rules").XmlHighlightRules,u=e("./behaviour/xml").XmlBehaviour,a=e("./folding/xml").FoldMode,f=e("../worker/worker_client").WorkerClient,l=function(){this.HighlightRules=o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(l,s),function(){this.voidElements=i.arrayToMap([]),this.blockComment={start:""},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/xml_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/xml"}.call(l.prototype),t.Mode=l}),define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/behaviour/cstyle","ace/mode/text","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown","ace/mode/javascript","ace/mode/html","ace/mode/sh","ace/mode/sh","ace/mode/xml","ace/mode/css"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./behaviour/cstyle").CstyleBehaviour,s=e("./text").Mode,o=e("./markdown_highlight_rules").MarkdownHighlightRules,u=e("./folding/markdown").FoldMode,a=function(){this.HighlightRules=o,this.createModeDelegates({javascript:e("./javascript").Mode,html:e("./html").Mode,bash:e("./sh").Mode,sh:e("./sh").Mode,xml:e("./xml").Mode,css:e("./css").Mode}),this.foldingRules=new u,this.$behaviour=new i({braces:!0})};r.inherits(a,s),function(){this.type="text",this.blockComment={start:""},this.$quotes={'"':'"',"`":"`"},this.getNextLineIndent=function(e,t,n){if(e=="listblock"){var r=/^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(t);if(!r)return"";var i=r[2];return i||(i=parseInt(r[3],10)+1+"."),r[1]+i+r[4]}return this.$getIndent(t)},this.$id="ace/mode/markdown",this.snippetFileId="ace/snippets/markdown"}.call(a.prototype),t.Mode=a}),define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function s(){var e="[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",t="this|throw|then|try|typeof|super|switch|return|break|by|continue|catch|class|in|instanceof|is|isnt|if|else|extends|for|own|finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|or|on|unless|until|and|yes|yield|export|import|default",n="true|false|null|undefined|NaN|Infinity",r="case|const|function|var|void|with|enum|implements|interface|let|package|private|protected|public|static",i="Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray",s="Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|encodeURIComponent|decodeURI|decodeURIComponent|String|",o="window|arguments|prototype|document",u=this.createKeywordMapper({keyword:t,"constant.language":n,"invalid.illegal":r,"language.support.class":i,"language.support.function":s,"variable.language":o},"identifier"),a={token:["paren.lparen","variable.parameter","paren.rparen","text","storage.type"],regex:/(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source},f=/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/;this.$rules={start:[{token:"constant.numeric",regex:"(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)"},{stateName:"qdoc",token:"string",regex:"'''",next:[{token:"string",regex:"'''",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqdoc",token:"string",regex:'"""',next:[{token:"string",regex:'"""',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qstring",token:"string",regex:"'",next:[{token:"string",regex:"'",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqstring",token:"string.start",regex:'"',next:[{token:"string.end",regex:'"',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"js",token:"string",regex:"`",next:[{token:"string",regex:"`",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{regex:"[{}]",onMatch:function(e,t,n){this.next="";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift()||"";if(this.next.indexOf("string")!=-1)return"paren.string"}return"paren"}},{token:"string.regex",regex:"///",next:"heregex"},{token:"string.regex",regex:/(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/},{token:"comment",regex:"###(?!#)",next:"comment"},{token:"comment",regex:"#.*"},{token:["punctuation.operator","text","identifier"],regex:"(\\.)(\\s*)("+r+")"},{token:"punctuation.operator",regex:"\\.{1,3}"},{token:["keyword","text","language.support.class","text","keyword","text","language.support.class"],regex:"(class)(\\s+)("+e+")(?:(\\s+)(extends)(\\s+)("+e+"))?"},{token:["entity.name.function","text","keyword.operator","text"].concat(a.token),regex:"("+e+")(\\s*)([=:])(\\s*)"+a.regex},a,{token:"variable",regex:"@(?:"+e+")?"},{token:u,regex:e},{token:"punctuation.operator",regex:"\\,|\\."},{token:"storage.type",regex:"[\\-=]>"},{token:"keyword.operator",regex:"(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])"},{token:"paren.lparen",regex:"[({[]"},{token:"paren.rparen",regex:"[\\]})]"},{token:"text",regex:"\\s+"}],heregex:[{token:"string.regex",regex:".*?///[imgy]{0,4}",next:"start"},{token:"comment.regex",regex:"\\s+(?:#.*)?"},{token:"string.regex",regex:"\\S+"}],comment:[{token:"comment",regex:"###",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules;r.inherits(s,i),t.CoffeeHighlightRules=s}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u|\b(?:else|try|(?:swi|ca)tch(?:\s+[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$|^\s*(else\b\s*)?(?:if|for|while|loop)\b(?!.*\bthen\b)/;this.lineCommentStart="#",this.blockComment={start:"###",end:"###"},this.getNextLineIndent=function(t,n,r){var i=this.$getIndent(n),s=this.getTokenizer().getLineTokens(n,t).tokens;return(!s.length||s[s.length-1].type!=="comment")&&t==="start"&&e.test(n)&&(i+=r),i},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/coffee_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/coffee",this.snippetFileId="ace/snippets/coffee"}.call(l.prototype),t.Mode=l}),define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./css_highlight_rules"),u=function(){var e=i.arrayToMap(o.supportType.split("|")),t=i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unquote".split("|")),n=i.arrayToMap(o.supportConstant.split("|")),r=i.arrayToMap(o.supportConstantColor.split("|")),s=i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),u=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),a="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:a+"(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:a},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:function(i){return e.hasOwnProperty(i.toLowerCase())?"support.type":s.hasOwnProperty(i)?"keyword":n.hasOwnProperty(i)?"constant.language":t.hasOwnProperty(i)?"support.function":r.hasOwnProperty(i.toLowerCase())?"support.constant.color":u.hasOwnProperty(i.toLowerCase())?"variable.language":"text"},regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable",regex:"[a-z_\\-$][a-z0-9_\\-$]*\\b"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]}};r.inherits(u,s),t.ScssHighlightRules=u}),define("ace/mode/scss",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scss_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle","ace/mode/css_completions"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./scss_highlight_rules").ScssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/css").CssBehaviour,a=e("./folding/cstyle").FoldMode,f=e("./css_completions").CssCompletions,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.$completer=new f,this.foldingRules=new a};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.$id="ace/mode/scss"}.call(l.prototype),t.Mode=l}),define("ace/mode/sass_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/scss_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./scss_highlight_rules").ScssHighlightRules,o=function(){s.call(this);var e=this.$rules.start;e[1].token=="comment"&&(e.splice(1,1,{onMatch:function(e,t,n){return n.unshift(this.next,-1,e.length-2,t),"comment"},regex:/^\s*\/\*/,next:"comment"},{token:"error.invalid",regex:"/\\*|[{;}]"},{token:"support.type",regex:/^\s*:[\w\-]+\s/}),this.$rules.comment=[{regex:/^\s*/,onMatch:function(e,t,n){return n[1]===-1&&(n[1]=Math.max(n[2],e.length-1)),e.length<=n[1]?(n.shift(),n.shift(),n.shift(),this.next=n.shift(),"text"):(this.next="","comment")},next:"start"},{defaultToken:"comment"}])};r.inherits(o,s),t.SassHighlightRules=o}),define("ace/mode/sass",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sass_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sass_highlight_rules").SassHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.$id="ace/mode/sass"}.call(u.prototype),t.Mode=u}),define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./css_highlight_rules"),o=function(){var e="@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|or|and|when|not",t=e.split("|"),n=s.supportType.split("|"),r=this.createKeywordMapper({"support.constant":s.supportConstant,keyword:e,"support.constant.color":s.supportConstantColor,"support.constant.fonts":s.supportConstantFonts},"identifier",!0),i="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+i+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:i},{token:["support.function","paren.lparen","string","paren.rparen"],regex:"(url)(\\()(.*)(\\))"},{token:["support.function","paren.lparen"],regex:"(:extend|[a-z0-9_\\-]+)(\\()"},{token:function(e){return t.indexOf(e.toLowerCase())>-1?"keyword":"variable"},regex:"[@\\$][a-z0-9_\\-@\\$]*\\b"},{token:"variable",regex:"[@\\$]\\{[a-z0-9_\\-@\\$]*\\}"},{token:function(e,t){return n.indexOf(e.toLowerCase())>-1?["support.type.property","text"]:["support.type.unknownProperty","text"]},regex:"([a-z0-9-_]+)(\\s*:)"},{token:"keyword",regex:"&"},{token:r,regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z_][a-z0-9-_]*"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|=|!=|-|%|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()};r.inherits(o,i),t.LessHighlightRules=o}),define("ace/mode/less",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/less_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/css_completions","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./less_highlight_rules").LessHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/css").CssBehaviour,a=e("./css_completions").CssCompletions,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.$completer=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions("ruleset",t,n,r)},this.$id="ace/mode/less"}.call(l.prototype),t.Mode=l}),define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.constantOtherSymbol={token:"constant.other.symbol.ruby",regex:"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"};t.qString={token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},t.qqString={token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},t.tString={token:"string",regex:"[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"};var o=t.constantNumericHex={token:"constant.numeric",regex:"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"},u=t.constantNumericBinary={token:"constant.numeric",regex:/\b(0[bB][01](?:[01]|_(?=[01]))*)\b/},a=t.constantNumericDecimal={token:"constant.numeric",regex:/\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/},f=t.constantNumericOctal={token:"constant.numeric",regex:/\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/},l=t.constantNumericRational={token:"constant.numeric",regex:/\b([\d]+(?:[./][\d]+)?ri?)\b/},c=t.constantNumericComplex={token:"constant.numeric",regex:/\b([\d]i)\b/},h=t.constantNumericFloat={token:"constant.numeric",regex:"[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b"},p=t.instanceVariable={token:"variable.instance",regex:"@{1,2}[a-zA-Z_\\d]+"},d=function(){var e="abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|private_class_method|remove_method|undef_method",t="alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend",n="true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION",r="$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",i=this.$keywords=this.createKeywordMapper({keyword:t,"constant.language":n,"variable.language":r,"support.function":e,"invalid.deprecated":"debugger"},"identifier"),d="\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})",v={"(":")","[":"]","{":"}","<":">","^":"^","|":"|","%":"%"};this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment.multiline",regex:"^=begin(?=$|\\s.*$)",next:"comment"},{token:"string.regexp",regex:/[/](?=.*\/)/,next:"regex"},[{token:["constant.other.symbol.ruby","string.start"],regex:/(:)?(")/,push:[{token:"constant.language.escape",regex:d},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/`/,push:[{token:"constant.language.escape",regex:d},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/`/,next:"pop"},{defaultToken:"string"}]},{token:["constant.other.symbol.ruby","string.start"],regex:/(:)?(')/,push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:/'/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/%[qwx]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="qStateWithoutInterpolation",this.token}},{token:"string.start",regex:/%[QWX]?([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="qStateWithInterpolation",this.token}},{token:"constant.other.symbol.ruby",regex:/%[si]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="sStateWithoutInterpolation",this.token}},{token:"constant.other.symbol.ruby",regex:/%[SI]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="sStateWithInterpolation",this.token}},{token:"string.regexp",regex:/%[r]([(\[<{^|%])/,onMatch:function(e,t,n){n.length&&(n=[]);var r=e[e.length-1];return n.unshift(r,t),this.next="rState",this.token}}],{token:"punctuation",regex:"::"},p,{token:"variable.global",regex:"[$][a-zA-Z_\\d]+"},{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]*"},{token:["punctuation.operator","support.function"],regex:/(\.)([a-zA-Z_\d]+)(?=\()/},{token:["punctuation.operator","identifier"],regex:/(\.)([a-zA-Z_][a-zA-Z_\d]*)/},{token:"string.character",regex:"\\B\\?(?:"+d+"|\\S)"},{token:"punctuation.operator",regex:/\?(?=.+:)/},l,c,s,o,h,u,a,f,{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.separator.key-value",regex:"=>"},{stateName:"heredoc",onMatch:function(e,t,n){var r=e[2]=="-"||e[2]=="~"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[3]),[{type:"constant",value:i[1]},{type:"string",value:i[2]},{type:"support.class",value:i[3]},{type:"string",value:i[4]}]},regex:"(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)",rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]",onMatch:function(e,t,n){return this.next="",e=="}"&&n.length>1&&n[1]!="start"&&(n.shift(),this.next=n.shift()),this.token}},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:/[?:,;.]/}],comment:[{token:"comment.multiline",regex:"^=end(?=$|\\s.*$)",next:"start"},{token:"comment",regex:".+"}],qStateWithInterpolation:[{token:"string.start",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"string"}},{token:"constant.language.escape",regex:d},{token:"constant.language.escape",regex:/\\./},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.end",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","string")}},{defaultToken:"string"}],qStateWithoutInterpolation:[{token:"string.start",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"string"}},{token:"constant.language.escape",regex:/\\['\\]/},{token:"constant.language.escape",regex:/\\./},{token:"string.end",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","string")}},{defaultToken:"string"}],sStateWithoutInterpolation:[{token:"constant.other.symbol.ruby",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.other.symbol.ruby"}},{token:"constant.other.symbol.ruby",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.other.symbol.ruby")}},{defaultToken:"constant.other.symbol.ruby"}],sStateWithInterpolation:[{token:"constant.other.symbol.ruby",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.other.symbol.ruby"}},{token:"constant.language.escape",regex:d},{token:"constant.language.escape",regex:/\\./},{token:"paren.start",regex:/#{/,push:"start"},{token:"constant.other.symbol.ruby",regex:/[)\]>}^|%]/,onMatch:function(e,t,n){return n.length&&e===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.other.symbol.ruby")}},{defaultToken:"constant.other.symbol.ruby"}],rState:[{token:"string.regexp",regex:/[(\[<{]/,onMatch:function(e,t,n){return n.length&&e===n[0]?(n.unshift(e,t),this.token):"constant.language.escape"}},{token:"paren.start",regex:/#{/,push:"start"},{token:"string.regexp",regex:/\//},{token:"string.regexp",regex:/[)\]>}^|%][imxouesn]*/,onMatch:function(e,t,n){return n.length&&e[0]===v[n[0]]?(n.shift(),this.next=n.shift(),this.token):(this.next="","constant.language.escape")}},{include:"regex"},{defaultToken:"string.regexp"}],regex:[{token:"regexp.keyword",regex:/\\[wWdDhHsS]/},{token:"constant.language.escape",regex:/\\[AGbBzZ]/},{token:"constant.language.escape",regex:/\\g<[a-zA-Z0-9]*>/},{token:["constant.language.escape","regexp.keyword","constant.language.escape"],regex:/(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/},{token:["constant.language.escape","invalid","constant.language.escape"],regex:/(\\p{\^?)([^/]*)(})/},{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:/[/][imxouesn]*/,next:"start"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"regexp.keyword",regex:/\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/},{token:"constant.language.escape",regex:/\[\^?/,push:"regex_character_class"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.keyword",regex:/\\[wWdDhHsS]/},{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:/&?&?\[\^?/,push:"regex_character_class"},{token:"constant.language.escape",regex:"]",next:"pop"},{token:"constant.language.escape",regex:"-"},{defaultToken:"string.regexp.characterclass"}]},this.normalizeRules()};r.inherits(d,i),t.RubyHighlightRules=d}),define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.indentKeywords={"class":1,def:1,module:1,"do":1,unless:1,"if":1,"while":1,"for":1,until:1,begin:1,"else":0,elsif:0,rescue:0,ensure:0,when:0,end:-1,"case":1,"=begin":1,"=end":-1},this.foldingStartMarker=/(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/,this.foldingStopMarker=/(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarker.test(r),s=this.foldingStopMarker.test(r);if(i&&!s){var o=r.match(this.foldingStartMarker);if(o[1]){if(o[1]=="if"||o[1]=="else"||o[1]=="while"||o[1]=="until"||o[1]=="unless"){if(o[1]=="else"&&/^\s*else\s*$/.test(r)===!1)return;if(/^\s*(?:if|else|while|until|unless)\s*/.test(r)===!1)return}if(o[1]=="when"&&/\sthen\s/.test(r)===!0)return;if(e.getTokenAt(n,o.index+2).type==="keyword")return"start"}else{if(!o[3])return"start";if(e.getTokenAt(n,o.index+1).type==="comment.multiline")return"start"}}if(t!="markbeginend"||!s||i&&s)return"";var o=r.match(this.foldingStopMarker);if(o[3]==="end"){if(e.getTokenAt(n,o.index+1).type==="keyword")return"end"}else{if(!o[1])return"end";if(e.getTokenAt(n,o.index+1).type==="comment.multiline")return"end"}},this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]||i[3]?this.rubyBlock(e,n,i.index+2):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[3]==="end"&&e.getTokenAt(n,i.index+1).type==="keyword"?this.rubyBlock(e,n,i.index+1):i[1]==="=end"&&e.getTokenAt(n,i.index+1).type==="comment.multiline"?this.rubyBlock(e,n,i.index+1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.rubyBlock=function(e,t,n,r){var i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!="keyword"&&u.type!="comment.multiline")return;var a=u.value,f=e.getLine(t);switch(u.value){case"if":case"unless":case"while":case"until":var l=new RegExp("^\\s*"+u.value);if(!l.test(f))return;var c=this.indentKeywords[a];break;case"when":if(/\sthen\s/.test(f))return;case"elsif":case"rescue":case"ensure":var c=1;break;case"else":var l=new RegExp("^\\s*"+u.value+"\\s*$");if(!l.test(f))return;var c=1;break;default:var c=this.indentKeywords[a]}var h=[a];if(!c)return;var p=c===-1?e.getLine(t-1).length:e.getLine(t).length,d=t,v=[];v.push(i.getCurrentTokenRange()),i.step=c===-1?i.stepBackward:i.stepForward;if(u.type=="comment.multiline")while(u=i.step()){if(u.type!=="comment.multiline")continue;if(c==1){p=6;if(u.value=="=end")break}else if(u.value=="=begin")break}else while(u=i.step()){var m=!1;if(u.type!=="keyword")continue;var g=c*this.indentKeywords[u.value];f=e.getLine(i.getCurrentTokenRow());switch(u.value){case"do":for(var y=i.$tokenIndex-1;y>=0;y--){var b=i.$rowTokens[y];if(b&&(b.value=="while"||b.value=="until"||b.value=="for")){g=0;break}}break;case"else":var l=new RegExp("^\\s*"+u.value+"\\s*$");if(!l.test(f)||a=="case")g=0,m=!0;break;case"if":case"unless":case"while":case"until":var l=new RegExp("^\\s*"+u.value);l.test(f)||(g=0,m=!0);break;case"when":if(/\sthen\s/.test(f)||a=="case")g=0,m=!0}if(g>0)h.unshift(u.value);else if(g<=0&&m===!1){h.shift();if(!h.length){if((a=="while"||a=="until"||a=="for")&&u.value!="do")break;if(u.value=="do"&&c==-1&&g!=0)break;if(u.value!="do")break}g===0&&h.unshift(u.value)}}if(!u)return null;if(r)return v.push(i.getCurrentTokenRange()),v;var t=i.getCurrentTokenRow();if(c===-1){if(u.type==="comment.multiline")var w=6;else var w=e.getLine(t).length;return new s(t,w,d-1,p)}return new s(d,p,t-1,e.getLine(t-1).length)}}.call(u.prototype)}),define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/ruby"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ruby_highlight_rules").RubyHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./folding/ruby").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new a,this.indentKeywords=this.foldingRules.indentKeywords};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/),u=t.match(/^\s*(class|def|module)\s.*$/),a=t.match(/.*do(\s*|\s+\|.*\|\s*)$/),f=t.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/);if(o||u||a||f)r+=n}return r},this.checkOutdent=function(e,t,n){return/^\s+(end|else|rescue|ensure)$/.test(t+n)||this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){var r=t.getLine(n);if(/}/.test(r))return this.$outdent.autoOutdent(t,n);var i=this.$getIndent(r),s=t.getLine(n-1),o=this.$getIndent(s),a=t.getTabString();o.length<=i.length&&i.slice(-a.length)==a&&t.remove(new u(n,i.length-a.length,n,i.length))},this.getMatching=function(e,t,n){if(t==undefined){var r=e.selection.lead;n=r.column,t=r.row}var i=e.getTokenAt(t,n);if(i&&i.value in this.indentKeywords)return this.foldingRules.rubyBlock(e,t,n,!0)},this.$id="ace/mode/ruby",this.snippetFileId="ace/snippets/ruby"}.call(f.prototype),t.Mode=f}),define("ace/mode/slim",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/slim_highlight_rules","ace/mode/javascript","ace/mode/markdown","ace/mode/coffee","ace/mode/scss","ace/mode/sass","ace/mode/less","ace/mode/ruby","ace/mode/css"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./slim_highlight_rules").SlimHighlightRules,o=function(){i.call(this),this.HighlightRules=s,this.createModeDelegates({javascript:e("./javascript").Mode,markdown:e("./markdown").Mode,coffee:e("./coffee").Mode,scss:e("./scss").Mode,sass:e("./sass").Mode,less:e("./less").Mode,ruby:e("./ruby").Mode,css:e("./css").Mode})};r.inherits(o,i),function(){this.$id="ace/mode/slim"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/slim"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-smarty.js b/www/js/ace/mode-smarty.js deleted file mode 100644 index 532b9b942..000000000 --- a/www/js/ace/mode-smarty.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/smarty_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=function(){i.call(this);var e={start:[{include:"#comments"},{include:"#blocks"}],"#blocks":[{token:"punctuation.section.embedded.begin.smarty",regex:"\\{%?",push:[{token:"punctuation.section.embedded.end.smarty",regex:"%?\\}",next:"pop"},{include:"#strings"},{include:"#variables"},{include:"#lang"},{defaultToken:"source.smarty"}]}],"#comments":[{token:["punctuation.definition.comment.smarty","comment.block.smarty"],regex:"(\\{%?)(\\*)",push:[{token:"comment.block.smarty",regex:"\\*%?\\}",next:"pop"},{defaultToken:"comment.block.smarty"}]}],"#lang":[{token:"keyword.operator.smarty",regex:"(?:!=|!|<=|>=|<|>|===|==|%|&&|\\|\\|)|\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod)\\b"},{token:"constant.language.smarty",regex:"\\b(?:TRUE|FALSE|true|false)\\b"},{token:"keyword.control.smarty",regex:"\\b(?:if|else|elseif|foreach|foreachelse|section|switch|case|break|default)\\b"},{token:"variable.parameter.smarty",regex:"\\b[a-zA-Z]+="},{token:"support.function.built-in.smarty",regex:"\\b(?:capture|config_load|counter|cycle|debug|eval|fetch|include_php|include|insert|literal|math|strip|rdelim|ldelim|assign|constant|block|html_[a-z_]*)\\b"},{token:"support.function.variable-modifier.smarty",regex:"\\|(?:capitalize|cat|count_characters|count_paragraphs|count_sentences|count_words|date_format|default|escape|indent|lower|nl2br|regex_replace|replace|spacify|string_format|strip_tags|strip|truncate|upper|wordwrap)"}],"#strings":[{token:"punctuation.definition.string.begin.smarty",regex:"'",push:[{token:"punctuation.definition.string.end.smarty",regex:"'",next:"pop"},{token:"constant.character.escape.smarty",regex:"\\\\."},{defaultToken:"string.quoted.single.smarty"}]},{token:"punctuation.definition.string.begin.smarty",regex:'"',push:[{token:"punctuation.definition.string.end.smarty",regex:'"',next:"pop"},{token:"constant.character.escape.smarty",regex:"\\\\."},{defaultToken:"string.quoted.double.smarty"}]}],"#variables":[{token:["punctuation.definition.variable.smarty","variable.other.global.smarty"],regex:"\\b(\\$)(Smarty\\.)"},{token:["punctuation.definition.variable.smarty","variable.other.smarty"],regex:"(\\$)([a-zA-Z_][a-zA-Z0-9_]*)\\b"},{token:["keyword.operator.smarty","variable.other.property.smarty"],regex:"(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b"},{token:["keyword.operator.smarty","meta.function-call.object.smarty","punctuation.definition.variable.smarty","variable.other.smarty","punctuation.definition.variable.smarty"],regex:"(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\()(.*?)(\\))"}]},t=e.start;for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],t);Object.keys(e).forEach(function(t){this.$rules[t]||(this.$rules[t]=e[t])},this),this.normalizeRules()};s.metaData={fileTypes:["tpl"],foldingStartMarker:"\\{%?",foldingStopMarker:"%?\\}",name:"Smarty",scopeName:"text.html.smarty"},r.inherits(s,i),t.SmartyHighlightRules=s}),define("ace/mode/smarty",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/smarty_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./smarty_highlight_rules").SmartyHighlightRules,o=function(){i.call(this),this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/smarty"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/smarty"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-smithy.js b/www/js/ace/mode-smithy.js deleted file mode 100644 index acb0f8470..000000000 --- a/www/js/ace/mode-smithy.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/smithy_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#comment"},{token:["meta.keyword.statement.smithy","variable.other.smithy","text","keyword.operator.smithy"],regex:/^(\$)(\s+.+)(\s*)(=)/},{token:["keyword.statement.smithy","text","entity.name.type.namespace.smithy"],regex:/^(namespace)(\s+)([A-Z-a-z0-9_\.#$-]+)/},{token:["keyword.statement.smithy","text","keyword.statement.smithy","text","entity.name.type.smithy"],regex:/^(use)(\s+)(shape|trait)(\s+)([A-Z-a-z0-9_\.#$-]+)\b/},{token:["keyword.statement.smithy","variable.other.smithy","text","keyword.operator.smithy"],regex:/^(metadata)(\s+.+)(\s*)(=)/},{token:["keyword.statement.smithy","text","entity.name.type.smithy"],regex:/^(apply|byte|short|integer|long|float|double|bigInteger|bigDecimal|boolean|blob|string|timestamp|service|resource|trait|list|map|set|structure|union|document)(\s+)([A-Z-a-z0-9_\.#$-]+)\b/},{token:["keyword.operator.smithy","text","entity.name.type.smithy","text","text","support.function.smithy","text","text","support.function.smithy"],regex:/^(operation)(\s+)([A-Z-a-z0-9_\.#$-]+)(\(.*\))(?:(\s*)(->)(\s*[A-Z-a-z0-9_\.#$-]+))?(?:(\s+)(errors))?/},{include:"#trait"},{token:["support.type.property-name.smithy","punctuation.separator.dictionary.pair.smithy"],regex:/([A-Z-a-z0-9_\.#$-]+)(:)/},{include:"#value"},{token:"keyword.other.smithy",regex:/\->/}],"#comment":[{include:"#doc_comment"},{include:"#line_comment"}],"#doc_comment":[{token:"comment.block.documentation.smithy",regex:/\/\/\/.*/}],"#line_comment":[{token:"comment.line.double-slash.smithy",regex:/\/\/.*/}],"#trait":[{token:["punctuation.definition.annotation.smithy","storage.type.annotation.smithy"],regex:/(@)([0-9a-zA-Z\.#-]+)/},{token:["punctuation.definition.annotation.smithy","punctuation.definition.object.end.smithy","meta.structure.smithy"],regex:/(@)([0-9a-zA-Z\.#-]+)(\()/,push:[{token:"punctuation.definition.object.end.smithy",regex:/\)/,next:"pop"},{include:"#value"},{include:"#object_inner"},{defaultToken:"meta.structure.smithy"}]}],"#value":[{include:"#constant"},{include:"#number"},{include:"#string"},{include:"#array"},{include:"#object"}],"#array":[{token:"punctuation.definition.array.begin.smithy",regex:/\[/,push:[{token:"punctuation.definition.array.end.smithy",regex:/\]/,next:"pop"},{include:"#comment"},{include:"#value"},{token:"punctuation.separator.array.smithy",regex:/,/},{token:"invalid.illegal.expected-array-separator.smithy",regex:/[^\s\]]/},{defaultToken:"meta.structure.array.smithy"}]}],"#constant":[{token:"constant.language.smithy",regex:/\b(?:true|false|null)\b/}],"#number":[{token:"constant.numeric.smithy",regex:/-?(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?/}],"#object":[{token:"punctuation.definition.dictionary.begin.smithy",regex:/\{/,push:[{token:"punctuation.definition.dictionary.end.smithy",regex:/\}/,next:"pop"},{include:"#trait"},{include:"#object_inner"},{defaultToken:"meta.structure.dictionary.smithy"}]}],"#object_inner":[{include:"#comment"},{include:"#string_key"},{token:"punctuation.separator.dictionary.key-value.smithy",regex:/:/,push:[{token:"punctuation.separator.dictionary.pair.smithy",regex:/,|(?=\})/,next:"pop"},{include:"#value"},{token:"invalid.illegal.expected-dictionary-separator.smithy",regex:/[^\s,]/},{defaultToken:"meta.structure.dictionary.value.smithy"}]},{token:"invalid.illegal.expected-dictionary-separator.smithy",regex:/[^\s\}]/}],"#string_key":[{include:"#identifier_key"},{include:"#dquote_key"},{include:"#squote_key"}],"#identifier_key":[{token:"support.type.property-name.smithy",regex:/[A-Z-a-z0-9_\.#$-]+/}],"#dquote_key":[{include:"#dquote"}],"#squote_key":[{include:"#squote"}],"#string":[{include:"#textblock"},{include:"#dquote"},{include:"#squote"},{include:"#identifier"}],"#textblock":[{token:"punctuation.definition.string.begin.smithy",regex:/"""/,push:[{token:"punctuation.definition.string.end.smithy",regex:/"""/,next:"pop"},{token:"constant.character.escape.smithy",regex:/\\./},{defaultToken:"string.quoted.double.smithy"}]}],"#dquote":[{token:"punctuation.definition.string.begin.smithy",regex:/"/,push:[{token:"punctuation.definition.string.end.smithy",regex:/"/,next:"pop"},{token:"constant.character.escape.smithy",regex:/\\./},{defaultToken:"string.quoted.double.smithy"}]}],"#squote":[{token:"punctuation.definition.string.begin.smithy",regex:/'/,push:[{token:"punctuation.definition.string.end.smithy",regex:/'/,next:"pop"},{token:"constant.character.escape.smithy",regex:/\\./},{defaultToken:"string.quoted.single.smithy"}]}],"#identifier":[{token:"storage.type.smithy",regex:/[A-Z-a-z_][A-Z-a-z0-9_\.#$-]*/}]},this.normalizeRules()};s.metaData={name:"Smithy",fileTypes:["smithy"],scopeName:"source.smithy",foldingStartMarker:"(\\{|\\[)\\s*",foldingStopMarker:"\\s*(\\}|\\])"},r.inherits(s,i),t.SmithyHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/smithy",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/smithy_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./smithy_highlight_rules").SmithyHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="//",this.$quotes={'"':'"'},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/smithy"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/smithy"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-snippets.js b/www/js/ace/mode-snippets.js deleted file mode 100644 index 5582fe14d..000000000 --- a/www/js/ace/mode-snippets.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/soy_template_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=function(){i.call(this);var e={start:[{include:"#template"},{include:"#if"},{include:"#comment-line"},{include:"#comment-block"},{include:"#comment-doc"},{include:"#call"},{include:"#css"},{include:"#param"},{include:"#print"},{include:"#msg"},{include:"#for"},{include:"#foreach"},{include:"#switch"},{include:"#tag"},{include:"text.html.basic"}],"#call":[{token:["punctuation.definition.tag.begin.soy","meta.tag.call.soy"],regex:"(\\{/?)(\\s*)(?=call|delcall)",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#string-quoted-single"},{include:"#string-quoted-double"},{token:["entity.name.tag.soy","variable.parameter.soy"],regex:"(call|delcall)(\\s+[\\.\\w]+)"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy"],regex:"\\b(data)(\\s*)(=)"},{defaultToken:"meta.tag.call.soy"}]}],"#comment-line":[{token:["comment.line.double-slash.soy","comment.line.double-slash.soy"],regex:"(//)(.*$)"}],"#comment-block":[{token:"punctuation.definition.comment.begin.soy",regex:"/\\*(?!\\*)",push:[{token:"punctuation.definition.comment.end.soy",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.soy"}]}],"#comment-doc":[{token:"punctuation.definition.comment.begin.soy",regex:"/\\*\\*(?!/)",push:[{token:"punctuation.definition.comment.end.soy",regex:"\\*/",next:"pop"},{token:["support.type.soy","text","variable.parameter.soy"],regex:"(@param|@param\\?)(\\s+)(\\w+)"},{defaultToken:"comment.block.documentation.soy"}]}],"#css":[{token:["punctuation.definition.tag.begin.soy","meta.tag.css.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(css)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{token:"support.constant.soy",regex:"\\b(?:LITERAL|REFERENCE|BACKEND_SPECIFIC|GOOG)\\b"},{defaultToken:"meta.tag.css.soy"}]}],"#for":[{token:["punctuation.definition.tag.begin.soy","meta.tag.for.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(for)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{token:"keyword.operator.soy",regex:"\\bin\\b"},{token:"support.function.soy",regex:"\\brange\\b"},{include:"#variable"},{include:"#number"},{include:"#primitive"},{defaultToken:"meta.tag.for.soy"}]}],"#foreach":[{token:["punctuation.definition.tag.begin.soy","meta.tag.foreach.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(foreach)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{token:"keyword.operator.soy",regex:"\\bin\\b"},{include:"#variable"},{defaultToken:"meta.tag.foreach.soy"}]}],"#function":[{token:"support.function.soy",regex:"\\b(?:isFirst|isLast|index|hasData|length|keys|round|floor|ceiling|min|max|randomInt)\\b"}],"#if":[{token:["punctuation.definition.tag.begin.soy","meta.tag.if.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(if|elseif)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#variable"},{include:"#operator"},{include:"#function"},{include:"#string-quoted-single"},{include:"#string-quoted-double"},{defaultToken:"meta.tag.if.soy"}]}],"#namespace":[{token:["entity.name.tag.soy","text","variable.parameter.soy"],regex:"(namespace|delpackage)(\\s+)([\\w\\.]+)"}],"#number":[{token:"constant.numeric",regex:"[\\d]+"}],"#operator":[{token:"keyword.operator.soy",regex:"==|!=|\\band\\b|\\bor\\b|\\bnot\\b|-|\\+|/|\\?:"}],"#param":[{token:["punctuation.definition.tag.begin.soy","meta.tag.param.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(param)",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#variable"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy"],regex:"\\b([\\w]+)(\\s*)((?::)?)"},{defaultToken:"meta.tag.param.soy"}]}],"#primitive":[{token:"constant.language.soy",regex:"\\b(?:null|false|true)\\b"}],"#msg":[{token:["punctuation.definition.tag.begin.soy","meta.tag.msg.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(msg)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#string-quoted-single"},{include:"#string-quoted-double"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy"],regex:"\\b(meaning|desc)(\\s*)(=)"},{defaultToken:"meta.tag.msg.soy"}]}],"#print":[{token:["punctuation.definition.tag.begin.soy","meta.tag.print.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(print)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#variable"},{include:"#print-parameter"},{include:"#number"},{include:"#primitive"},{include:"#attribute-lookup"},{defaultToken:"meta.tag.print.soy"}]}],"#print-parameter":[{token:"keyword.operator.soy",regex:"\\|"},{token:"variable.parameter.soy",regex:"noAutoescape|id|escapeHtml|escapeJs|insertWorkBreaks|truncate"}],"#special-character":[{token:"support.constant.soy",regex:"\\bsp\\b|\\bnil\\b|\\\\r|\\\\n|\\\\t|\\blb\\b|\\brb\\b"}],"#string-quoted-double":[{token:"string.quoted.double",regex:'"[^"]*"'}],"#string-quoted-single":[{token:"string.quoted.single",regex:"'[^']*'"}],"#switch":[{token:["punctuation.definition.tag.begin.soy","meta.tag.switch.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(switch|case)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#variable"},{include:"#function"},{include:"#number"},{include:"#string-quoted-single"},{include:"#string-quoted-double"},{defaultToken:"meta.tag.switch.soy"}]}],"#attribute-lookup":[{token:"punctuation.definition.attribute-lookup.begin.soy",regex:"\\[",push:[{token:"punctuation.definition.attribute-lookup.end.soy",regex:"\\]",next:"pop"},{include:"#variable"},{include:"#function"},{include:"#operator"},{include:"#number"},{include:"#primitive"},{include:"#string-quoted-single"},{include:"#string-quoted-double"}]}],"#tag":[{token:"punctuation.definition.tag.begin.soy",regex:"\\{",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#namespace"},{include:"#variable"},{include:"#special-character"},{include:"#tag-simple"},{include:"#function"},{include:"#operator"},{include:"#attribute-lookup"},{include:"#number"},{include:"#primitive"},{include:"#print-parameter"}]}],"#tag-simple":[{token:"entity.name.tag.soy",regex:"{{\\s*(?:literal|else|ifempty|default)\\s*(?=\\})"}],"#template":[{token:["punctuation.definition.tag.begin.soy","meta.tag.template.soy"],regex:"(\\{/?)(\\s*)(?=template|deltemplate)",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{token:["entity.name.tag.soy","text","entity.name.function.soy"],regex:"(template|deltemplate)(\\s+)([\\.\\w]+)",originalRegex:"(?<=template|deltemplate)\\s+([\\.\\w]+)"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy","text","string.quoted.double.soy"],regex:'\\b(private)(\\s*)(=)(\\s*)("true"|"false")'},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy","text","string.quoted.single.soy"],regex:"\\b(private)(\\s*)(=)(\\s*)('true'|'false')"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy","text","string.quoted.double.soy"],regex:'\\b(autoescape)(\\s*)(=)(\\s*)("true"|"false"|"contextual")'},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy","text","string.quoted.single.soy"],regex:"\\b(autoescape)(\\s*)(=)(\\s*)('true'|'false'|'contextual')"},{defaultToken:"meta.tag.template.soy"}]}],"#variable":[{token:"variable.other.soy",regex:"\\$[\\w\\.]+"}]};for(var t in e)this.$rules[t]?this.$rules[t].unshift.apply(this.$rules[t],e[t]):this.$rules[t]=e[t];this.normalizeRules()};s.metaData={comment:"SoyTemplate",fileTypes:["soy"],firstLineMatch:"\\{\\s*namespace\\b",foldingStartMarker:"\\{\\s*template\\s+[^\\}]*\\}",foldingStopMarker:"\\{\\s*/\\s*template\\s*\\}",name:"SoyTemplate",scopeName:"source.soy"},r.inherits(s,i),t.SoyTemplateHighlightRules=s}),define("ace/mode/soy_template",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/soy_template_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./soy_template_highlight_rules").SoyTemplateHighlightRules,o=function(){i.call(this),this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/soy_template"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/soy_template"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-space.js b/www/js/ace/mode-space.js deleted file mode 100644 index 5b01cc57a..000000000 --- a/www/js/ace/mode-space.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u|<=|>=|(?:^|!?\s)IN(?:!?\s|$)|(?:^|!?\s)NOT(?:!?\s|$)|-|\+|\*|\/|\!/}],"#owl-types":[{token:"support.type.datatype.owl.sparql",regex:/owl:[a-zA-Z]+/}],"#punctuation-operators":[{token:"keyword.operator.punctuation.sparql",regex:/;|,|\.|\(|\)|\{|\}|\|/}],"#qnames":[{token:"entity.name.other.qname.sparql",regex:/(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/}],"#rdf-schema-types":[{token:"support.type.datatype.rdf.schema.sparql",regex:/rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/}],"#relative-urls":[{token:"string.quoted.other.relative.url.sparql",regex://,next:"pop"},{defaultToken:"string.quoted.other.relative.url.sparql"}]}],"#string-datatype-suffixes":[{token:"keyword.operator.datatype.suffix.sparql",regex:/\^\^/}],"#string-language-suffixes":[{token:["keyword.operator.language.suffix.sparql","constant.language.suffix.sparql"],regex:/(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/}],"#strings":[{token:"string.quoted.triple.sparql",regex:/"""/,push:[{token:"string.quoted.triple.sparql",regex:/"""/,next:"pop"},{defaultToken:"string.quoted.triple.sparql"}]},{token:"string.quoted.double.sparql",regex:/"/,push:[{token:"string.quoted.double.sparql",regex:/"/,next:"pop"},{token:"invalid.string.newline",regex:/$/},{token:"constant.character.escape.sparql",regex:/\\./},{defaultToken:"string.quoted.double.sparql"}]}],"#variables":[{token:"variable.other.sparql",regex:/(?:\?|\$)[-_a-zA-Z0-9]+/}],"#xml-schema-types":[{token:"support.type.datatype.schema.sparql",regex:/xsd?:[a-z][a-zA-Z]+/}]},this.normalizeRules()};s.metaData={fileTypes:["rq","sparql"],name:"SPARQL",scopeName:"source.sparql"},r.inherits(s,i),t.SPARQLHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/sparql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sparql_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sparql_highlight_rules").SPARQLHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.$id="ace/mode/sparql"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/sparql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-sql.js b/www/js/ace/mode-sql.js deleted file mode 100644 index 83943db93..000000000 --- a/www/js/ace/mode-sql.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/sql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|when|then|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|foreign|not|references|default|null|inner|cross|natural|database|drop|grant|distinct|is|in|all|alter|any|array|at|authorization|between|both|cast|check|collate|column|commit|constraint|cube|current|current_date|current_time|current_timestamp|current_user|describe|escape|except|exists|external|extract|fetch|filter|for|full|function|global|grouping|intersect|interval|into|leading|like|local|no|of|only|out|overlaps|partition|position|range|revoke|rollback|rollup|row|rows|session_user|set|some|start|tablesample|time|to|trailing|truncate|unique|unknown|user|using|values|window|with",t="true|false",n="avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|coalesce|ifnull|isnull|nvl",r="int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|money|real|number|integer|string",i=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t,"storage.type":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"comment",start:"/\\*",end:"\\*/"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"string",regex:"`.*?`"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]},this.normalizeRules()};r.inherits(s,i),t.SqlHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/sql",["require","exports","module","ace/lib/oop","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./cstyle").FoldMode,s=t.FoldMode=function(){};r.inherits(s,i),function(){}.call(s.prototype)}),define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sql_highlight_rules","ace/mode/folding/sql"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sql_highlight_rules").SqlHighlightRules,o=e("./folding/sql").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/sql",this.snippetFileId="ace/snippets/sql"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/sql"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-sqlserver.js b/www/js/ace/mode-sqlserver.js deleted file mode 100644 index 708982aae..000000000 --- a/www/js/ace/mode-sqlserver.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/sqlserver_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="ALL|AND|ANY|BETWEEN|EXISTS|IN|LIKE|NOT|OR|SOME";e+="|NULL|IS|APPLY|INNER|OUTER|LEFT|RIGHT|JOIN|CROSS";var t="OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|AVG|CHECKSUM_AGG|COUNT|COUNT_BIG|GROUPING|GROUPING_ID|MAX|MIN|STDEV|STDEVP|SUM|VAR|VARP|DENSE_RANK|NTILE|RANK|ROW_NUMBER@@DATEFIRST|@@DBTS|@@LANGID|@@LANGUAGE|@@LOCK_TIMEOUT|@@MAX_CONNECTIONS|@@MAX_PRECISION|@@NESTLEVEL|@@OPTIONS|@@REMSERVER|@@SERVERNAME|@@SERVICENAME|@@SPID|@@TEXTSIZE|@@VERSION|CAST|CONVERT|PARSE|TRY_CAST|TRY_CONVERT|TRY_PARSE@@CURSOR_ROWS|@@FETCH_STATUS|CURSOR_STATUS|@@DATEFIRST|@@LANGUAGE|CURRENT_TIMESTAMP|DATEADD|DATEDIFF|DATEFROMPARTS|DATENAME|DATEPART|DATETIME2FROMPARTS|DATETIMEFROMPARTS|DATETIMEOFFSETFROMPARTS|DAY|EOMONTH|GETDATE|GETUTCDATE|ISDATE|MONTH|SET DATEFIRST|SET DATEFORMAT|SET LANGUAGE|SMALLDATETIMEFROMPARTS|SP_HELPLANGUAGE|SWITCHOFFSET|SYSDATETIME|SYSDATETIMEOFFSET|SYSUTCDATETIME|TIMEFROMPARTS|TODATETIMEOFFSET|YEAR|DATETRUNC|CHOOSE|IIF|ABS|ACOS|ASIN|ATAN|ATN2|CEILING|COS|COT|DEGREES|EXP|FLOOR|LOG|LOG10|PI|POWER|RADIANS|RAND|ROUND|SIGN|SIN|SQRT|SQUARE|TAN|@@PROCID|APPLOCK_MODE|APPLOCK_TEST|APP_NAME|ASSEMBLYPROPERTY|COLUMNPROPERTY|COL_LENGTH|COL_NAME|DATABASEPROPERTYEX|DATABASE_PRINCIPAL_ID|DB_ID|DB_NAME|FILEGROUPPROPERTY|FILEGROUP_ID|FILEGROUP_NAME|FILEPROPERTY|FILE_ID|FILE_IDEX|FILE_NAME|FULLTEXTCATALOGPROPERTY|FULLTEXTSERVICEPROPERTY|INDEXKEY_PROPERTY|INDEXPROPERTY|INDEX_COL|OBJECTPROPERTY|OBJECTPROPERTYEX|OBJECT_DEFINITION|OBJECT_ID|OBJECT_NAME|OBJECT_SCHEMA_NAME|ORIGINAL_DB_NAME|PARSENAME|SCHEMA_ID|SCHEMA_NAME|SCOPE_IDENTITY|SERVERPROPERTY|STATS_DATE|TYPEPROPERTY|TYPE_ID|TYPE_NAME|CERTENCODED|CERTPRIVATEKEY|CURRENT_USER|DATABASE_PRINCIPAL_ID|HAS_PERMS_BY_NAME|IS_MEMBER|IS_ROLEMEMBER|IS_SRVROLEMEMBER|ORIGINAL_LOGIN|PERMISSIONS|PWDCOMPARE|PWDENCRYPT|SCHEMA_ID|SCHEMA_NAME|SESSION_USER|SUSER_ID|SUSER_NAME|SUSER_SID|SUSER_SNAME|SYS.FN_BUILTIN_PERMISSIONS|SYS.FN_GET_AUDIT_FILE|SYS.FN_MY_PERMISSIONS|SYSTEM_USER|USER_ID|USER_NAME|ASCII|CHAR|CHARINDEX|CONCAT|DIFFERENCE|FORMAT|LEN|LOWER|LTRIM|NCHAR|PATINDEX|QUOTENAME|REPLACE|REPLICATE|REVERSE|RTRIM|SOUNDEX|SPACE|STR|STUFF|SUBSTRING|UNICODE|UPPER|$PARTITION|@@ERROR|@@IDENTITY|@@PACK_RECEIVED|@@ROWCOUNT|@@TRANCOUNT|BINARY_CHECKSUM|CHECKSUM|CONNECTIONPROPERTY|CONTEXT_INFO|CURRENT_REQUEST_ID|ERROR_LINE|ERROR_MESSAGE|ERROR_NUMBER|ERROR_PROCEDURE|ERROR_SEVERITY|ERROR_STATE|FORMATMESSAGE|GETANSINULL|GET_FILESTREAM_TRANSACTION_CONTEXT|HOST_ID|HOST_NAME|ISNULL|ISNUMERIC|MIN_ACTIVE_ROWVERSION|NEWID|NEWSEQUENTIALID|ROWCOUNT_BIG|XACT_STATE|@@CONNECTIONS|@@CPU_BUSY|@@IDLE|@@IO_BUSY|@@PACKET_ERRORS|@@PACK_RECEIVED|@@PACK_SENT|@@TIMETICKS|@@TOTAL_ERRORS|@@TOTAL_READ|@@TOTAL_WRITE|FN_VIRTUALFILESTATS|PATINDEX|TEXTPTR|TEXTVALID|GREATEST|LEAST|GENERATE_SERIES|DATE_BUCKET|JSON_ARRAY|JSON_OBJECT|JSON_PATH_EXISTS|ISJSON|FIRST_VALUE|LAST_VALUE|COALESCE|NULLIF",n="BIGINT|BINARY|BIT|CHAR|CURSOR|DATE|DATETIME|DATETIME2|DATETIMEOFFSET|DECIMAL|FLOAT|HIERARCHYID|IMAGE|INTEGER|INT|MONEY|NCHAR|NTEXT|NUMERIC|NVARCHAR|REAL|SMALLDATETIME|SMALLINT|SMALLMONEY|SQL_VARIANT|TABLE|TEXT|TIME|TIMESTAMP|TINYINT|UNIQUEIDENTIFIER|VARBINARY|VARCHAR|XML",r="sp_addextendedproc|sp_addextendedproperty|sp_addmessage|sp_addtype|sp_addumpdevice|sp_add_data_file_recover_suspect_db|sp_add_log_file_recover_suspect_db|sp_altermessage|sp_attach_db|sp_attach_single_file_db|sp_autostats|sp_bindefault|sp_bindrule|sp_bindsession|sp_certify_removable|sp_clean_db_file_free_space|sp_clean_db_free_space|sp_configure|sp_control_plan_guide|sp_createstats|sp_create_plan_guide|sp_create_plan_guide_from_handle|sp_create_removable|sp_cycle_errorlog|sp_datatype_info|sp_dbcmptlevel|sp_dbmmonitoraddmonitoring|sp_dbmmonitorchangealert|sp_dbmmonitorchangemonitoring|sp_dbmmonitordropalert|sp_dbmmonitordropmonitoring|sp_dbmmonitorhelpalert|sp_dbmmonitorhelpmonitoring|sp_dbmmonitorresults|sp_db_increased_partitions|sp_delete_backuphistory|sp_depends|sp_describe_first_result_set|sp_describe_undeclared_parameters|sp_detach_db|sp_dropdevice|sp_dropextendedproc|sp_dropextendedproperty|sp_dropmessage|sp_droptype|sp_execute|sp_executesql|sp_getapplock|sp_getbindtoken|sp_help|sp_helpconstraint|sp_helpdb|sp_helpdevice|sp_helpextendedproc|sp_helpfile|sp_helpfilegroup|sp_helpindex|sp_helplanguage|sp_helpserver|sp_helpsort|sp_helpstats|sp_helptext|sp_helptrigger|sp_indexoption|sp_invalidate_textptr|sp_lock|sp_monitor|sp_prepare|sp_prepexec|sp_prepexecrpc|sp_procoption|sp_recompile|sp_refreshview|sp_releaseapplock|sp_rename|sp_renamedb|sp_resetstatus|sp_sequence_get_range|sp_serveroption|sp_setnetname|sp_settriggerorder|sp_spaceused|sp_tableoption|sp_unbindefault|sp_unbindrule|sp_unprepare|sp_updateextendedproperty|sp_updatestats|sp_validname|sp_who|sys.sp_merge_xtp_checkpoint_files|sys.sp_xtp_bind_db_resource_pool|sys.sp_xtp_checkpoint_force_garbage_collection|sys.sp_xtp_control_proc_exec_stats|sys.sp_xtp_control_query_exec_stats|sys.sp_xtp_unbind_db_resource_pool",s="ABSOLUTE|ACTION|ADA|ADD|ADMIN|AFTER|AGGREGATE|ALIAS|ALL|ALLOCATE|ALTER|AND|ANY|ARE|ARRAY|AS|ASC|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|ATOMIC|AUTHORIZATION|BACKUP|BEFORE|BEGIN|BETWEEN|BIT_LENGTH|BLOB|BOOLEAN|BOTH|BREADTH|BREAK|BROWSE|BULK|BY|CALL|CALLED|CARDINALITY|CASCADE|CASCADED|CASE|CATALOG|CHARACTER|CHARACTER_LENGTH|CHAR_LENGTH|CHECK|CHECKPOINT|CLASS|CLOB|CLOSE|CLUSTERED|COALESCE|COLLATE|COLLATION|COLLECT|COLUMN|COMMIT|COMPLETION|COMPUTE|CONDITION|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONSTRUCTOR|CONTAINS|CONTAINSTABLE|CONTINUE|CORR|CORRESPONDING|COVAR_POP|COVAR_SAMP|CREATE|CROSS|CUBE|CUME_DIST|CURRENT|CURRENT_CATALOG|CURRENT_DATE|CURRENT_DEFAULT_TRANSFORM_GROUP|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TRANSFORM_GROUP_FOR_TYPE|CYCLE|DATA|DATABASE|DBCC|DEALLOCATE|DEC|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DENY|DEPTH|DEREF|DESC|DESCRIBE|DESCRIPTOR|DESTROY|DESTRUCTOR|DETERMINISTIC|DIAGNOSTICS|DICTIONARY|DISCONNECT|DISK|DISTINCT|DISTRIBUTED|DOMAIN|DOUBLE|DROP|DUMP|DYNAMIC|EACH|ELEMENT|ELSE|END|END-EXEC|EQUALS|ERRLVL|ESCAPE|EVERY|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXISTS|EXIT|EXTERNAL|EXTRACT|FETCH|FILE|FILLFACTOR|FILTER|FIRST|FOR|FOREIGN|FORTRAN|FOUND|FREE|FREETEXT|FREETEXTTABLE|FROM|FULL|FULLTEXTTABLE|FUNCTION|FUSION|GENERAL|GET|GLOBAL|GO|GOTO|GRANT|GROUP|HAVING|HOLD|HOLDLOCK|HOST|HOUR|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|IMMEDIATE|IN|INCLUDE|INDEX|INDICATOR|INITIALIZE|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INSERT|INTEGER|INTERSECT|INTERSECTION|INTERVAL|INTO|IS|ISOLATION|ITERATE|JOIN|KEY|KILL|LANGUAGE|LARGE|LAST|LATERAL|LEADING|LESS|LEVEL|LIKE|LIKE_REGEX|LIMIT|LINENO|LN|LOAD|LOCAL|LOCALTIME|LOCALTIMESTAMP|LOCATOR|MAP|MATCH|MEMBER|MERGE|METHOD|MINUTE|MOD|MODIFIES|MODIFY|MODULE|MULTISET|NAMES|NATIONAL|NATURAL|NCLOB|NEW|NEXT|NO|NOCHECK|NONCLUSTERED|NONE|NORMALIZE|NOT|NULL|NULLIF|OBJECT|OCCURRENCES_REGEX|OCTET_LENGTH|OF|OFF|OFFSETS|OLD|ON|ONLY|OPEN|OPERATION|OPTION|OR|ORDER|ORDINALITY|OUT|OUTER|OUTPUT|OVER|OVERLAPS|OVERLAY|PAD|PARAMETER|PARAMETERS|PARTIAL|PARTITION|PASCAL|PATH|PERCENT|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PIVOT|PLAN|POSITION|POSITION_REGEX|POSTFIX|PRECISION|PREFIX|PREORDER|PREPARE|PRESERVE|PRIMARY|PRINT|PRIOR|PRIVILEGES|PROC|PROCEDURE|PUBLIC|RAISERROR|RANGE|READ|READS|READTEXT|RECONFIGURE|RECURSIVE|REF|REFERENCES|REFERENCING|REGR_AVGX|REGR_AVGY|REGR_COUNT|REGR_INTERCEPT|REGR_R2|REGR_SLOPE|REGR_SXX|REGR_SXY|REGR_SYY|RELATIVE|RELEASE|REPLICATION|RESTORE|RESTRICT|RESULT|RETURN|RETURNS|REVERT|REVOKE|ROLE|ROLLBACK|ROLLUP|ROUTINE|ROW|ROWCOUNT|ROWGUIDCOL|ROWS|RULE|SAVE|SAVEPOINT|SCHEMA|SCOPE|SCROLL|SEARCH|SECOND|SECTION|SECURITYAUDIT|SELECT|SEMANTICKEYPHRASETABLE|SEMANTICSIMILARITYDETAILSTABLE|SEMANTICSIMILARITYTABLE|SENSITIVE|SEQUENCE|SESSION|SET|SETS|SETUSER|SHUTDOWN|SIMILAR|SIZE|SOME|SPECIFIC|SPECIFICTYPE|SQL|SQLCA|SQLCODE|SQLERROR|SQLEXCEPTION|SQLSTATE|SQLWARNING|START|STATE|STATEMENT|STATIC|STATISTICS|STDDEV_POP|STDDEV_SAMP|STRUCTURE|SUBMULTISET|SUBSTRING_REGEX|STRING_SPLIT|SYMMETRIC|SYSTEM|TABLESAMPLE|TEMPORARY|TERMINATE|TEXTSIZE|THAN|THEN|TIMEZONE_HOUR|TIMEZONE_MINUTE|TO|TOP|TRAILING|TRAN|TRANSACTION|TRANSLATE|TRANSLATE_REGEX|TRANSLATION|TREAT|TRIGGER|TRIM|TRUNCATE|TSEQUAL|UESCAPE|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNPIVOT|UPDATE|UPDATETEXT|USAGE|USE|USER|USING|VALUE|VALUES|VARIABLE|VARYING|VAR_POP|VAR_SAMP|VIEW|WAITFOR|WHEN|WHENEVER|WHERE|WHILE|WIDTH_BUCKET|WINDOW|WITH|WITHIN|WITHIN GROUP|WITHOUT|WORK|WRITE|WRITETEXT|XMLAGG|XMLATTRIBUTES|XMLBINARY|XMLCAST|XMLCOMMENT|XMLCONCAT|XMLDOCUMENT|XMLELEMENT|XMLEXISTS|XMLFOREST|XMLITERATE|XMLNAMESPACES|XMLPARSE|XMLPI|XMLQUERY|XMLSERIALIZE|XMLTABLE|XMLTEXT|XMLVALIDATE|ZONE";s+="|KEEPIDENTITY|KEEPDEFAULTS|IGNORE_CONSTRAINTS|IGNORE_TRIGGERS|XLOCK|FORCESCAN|FORCESEEK|HOLDLOCK|NOLOCK|NOWAIT|PAGLOCK|READCOMMITTED|READCOMMITTEDLOCK|READPAST|READUNCOMMITTED|REPEATABLEREAD|ROWLOCK|SERIALIZABLE|SNAPSHOT|SPATIAL_WINDOW_MAX_CELLS|TABLOCK|TABLOCKX|UPDLOCK|XLOCK|IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX|EXPAND|VIEWS|FAST|FORCE|KEEP|KEEPFIXED|MAXDOP|MAXRECURSION|OPTIMIZE|PARAMETERIZATION|SIMPLE|FORCED|RECOMPILE|ROBUST|PLAN|SPATIAL_WINDOW_MAX_CELLS|NOEXPAND|HINT",s+="|LOOP|HASH|MERGE|REMOTE",s+="|TRY|CATCH|THROW",s+="|TYPE",s=s.split("|"),s=s.filter(function(r,i,s){return e.split("|").indexOf(r)===-1&&t.split("|").indexOf(r)===-1&&n.split("|").indexOf(r)===-1}),s=s.sort().join("|");var o=this.createKeywordMapper({"constant.language":e,"storage.type":n,"support.function":t,"support.storedprocedure":r,keyword:s},"identifier",!0),u="SET ANSI_DEFAULTS|SET ANSI_NULLS|SET ANSI_NULL_DFLT_OFF|SET ANSI_NULL_DFLT_ON|SET ANSI_PADDING|SET ANSI_WARNINGS|SET ARITHABORT|SET ARITHIGNORE|SET CONCAT_NULL_YIELDS_NULL|SET CURSOR_CLOSE_ON_COMMIT|SET DATEFIRST|SET DATEFORMAT|SET DEADLOCK_PRIORITY|SET FIPS_FLAGGER|SET FMTONLY|SET FORCEPLAN|SET IDENTITY_INSERT|SET IMPLICIT_TRANSACTIONS|SET LANGUAGE|SET LOCK_TIMEOUT|SET NOCOUNT|SET NOEXEC|SET NUMERIC_ROUNDABORT|SET OFFSETS|SET PARSEONLY|SET QUERY_GOVERNOR_COST_LIMIT|SET QUOTED_IDENTIFIER|SET REMOTE_PROC_TRANSACTIONS|SET ROWCOUNT|SET SHOWPLAN_ALL|SET SHOWPLAN_TEXT|SET SHOWPLAN_XML|SET STATISTICS IO|SET STATISTICS PROFILE|SET STATISTICS TIME|SET STATISTICS XML|SET TEXTSIZE|SET XACT_ABORT".split("|"),a="READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SNAPSHOP|SERIALIZABLE".split("|");for(var f=0;f|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=|\\*"},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"punctuation",regex:",|;"},{token:"text",regex:"\\s+"}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}]};for(var f=0;ff)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/sqlserver",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./cstyle").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/(\bCASE\b|\bBEGIN\b)|^\s*(\/\*)/i,this.startRegionRe=/^\s*(\/\*|--)#?region\b/,this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.getBeginEndBlock(e,n,o,s[1]);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;return},this.getBeginEndBlock=function(e,t,n,r){var s={row:t,column:n+r.length},o=e.getLength(),u,a=1,f=/(\bCASE\b|\bBEGIN\b)|(\bEND\b)/i;while(++ts.row)return new i(s.row,s.column,c,u.length)}}.call(o.prototype)}),define("ace/mode/sqlserver",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sqlserver_highlight_rules","ace/mode/folding/sqlserver"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sqlserver_highlight_rules").SqlHighlightRules,o=e("./folding/sqlserver").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment={start:"/*",end:"*/"},this.getCompletions=function(e,t,n,r){return t.$mode.$highlightRules.completions},this.$id="ace/mode/sqlserver",this.snippetFileId="ace/snippets/sqlserver"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/sqlserver"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-stylus.js b/www/js/ace/mode-stylus.js deleted file mode 100644 index 4fb0b7b60..000000000 --- a/www/js/ace/mode-stylus.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/stylus_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./css_highlight_rules"),o=function(){var e=this.createKeywordMapper({"support.type":s.supportType,"support.function":s.supportFunction,"support.constant":s.supportConstant,"support.constant.color":s.supportConstantColor,"support.constant.fonts":s.supportConstantFonts},"text",!0);this.$rules={start:[{token:"comment",regex:/\/\/.*$/},{token:"comment",regex:/\/\*/,next:"comment"},{token:["entity.name.function.stylus","text"],regex:"^([-a-zA-Z_][-\\w]*)?(\\()"},{token:["entity.other.attribute-name.class.stylus"],regex:"\\.-?[_a-zA-Z]+[_a-zA-Z0-9-]*"},{token:["entity.language.stylus"],regex:"^ *&"},{token:["variable.language.stylus"],regex:"(arguments)"},{token:["keyword.stylus"],regex:"@[-\\w]+"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:s.pseudoElements},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:s.pseudoClasses},{token:["entity.name.tag.stylus"],regex:"(?:\\b)(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(?:h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)(?:\\b)"},{token:"constant.numeric",regex:"#[a-fA-F0-9]{6}"},{token:"constant.numeric",regex:"#[a-fA-F0-9]{3}"},{token:["punctuation.definition.entity.stylus","entity.other.attribute-name.id.stylus"],regex:"(#)([a-zA-Z][a-zA-Z0-9_-]*)"},{token:"meta.vendor-prefix.stylus",regex:"-webkit-|-moz\\-|-ms-|-o-"},{token:"keyword.control.stylus",regex:"(?:!important|for|in|return|true|false|null|if|else|unless|return)\\b"},{token:"keyword.operator.stylus",regex:"!|~|\\+|-|(?:\\*)?\\*|\\/|%|(?:\\.)\\.\\.|<|>|(?:=|:|\\?|\\+|-|\\*|\\/|%|<|>)?=|!="},{token:"keyword.operator.stylus",regex:"(?:in|is(?:nt)?|not)\\b"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:s.numRe},{token:"keyword",regex:"(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\\b"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"}],qstring:[{token:"string",regex:"[^'\\\\]+"},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"}]}};r.inherits(o,i),t.StylusHighlightRules=o}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value==="-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o"},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/xml_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/xml"}.call(l.prototype),t.Mode=l}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/javascript",["require","exports","module","ace/lib/oop","ace/token_iterator","ace/mode/behaviour/cstyle","ace/mode/behaviour/xml"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../token_iterator").TokenIterator,s=e("../behaviour/cstyle").CstyleBehaviour,o=e("../behaviour/xml").XmlBehaviour,u=function(){var e=(new o({closeCurlyBraces:!0})).getBehaviours();this.addBehaviours(e),this.inherit(s),this.add("autoclosing-fragment","insertion",function(e,t,n,r,s){if(s==">"){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/svg_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=e("./xml_highlight_rules").XmlHighlightRules,o=function(){s.call(this),this.embedTagRules(i,"js-","script"),this.normalizeRules()};r.inherits(o,s),t.SvgHighlightRules=o}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/svg",["require","exports","module","ace/lib/oop","ace/mode/xml","ace/mode/javascript","ace/mode/svg_highlight_rules","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./xml").Mode,s=e("./javascript").Mode,o=e("./svg_highlight_rules").SvgHighlightRules,u=e("./folding/mixed").FoldMode,a=e("./folding/xml").FoldMode,f=e("./folding/cstyle").FoldMode,l=function(){i.call(this),this.HighlightRules=o,this.createModeDelegates({"js-":s}),this.foldingRules=new u(new a,{"js-":new f})};r.inherits(l,i),function(){this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.$id="ace/mode/svg"}.call(l.prototype),t.Mode=l}); (function() { - window.require(["ace/mode/svg"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-swift.js b/www/js/ace/mode-swift.js deleted file mode 100644 index ea645a7da..000000000 --- a/www/js/ace/mode-swift.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/swift_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){function t(e,t){var n=t.nestable||t.interpolation,r=t.interpolation&&t.interpolation.nextState||"start",s={regex:e+(t.multiline?"":"(?=.)"),token:"string.start"},o=[t.escape&&{regex:t.escape,token:"character.escape"},t.interpolation&&{token:"paren.quasi.start",regex:i.escapeRegExp(t.interpolation.lead+t.interpolation.open),push:r},t.error&&{regex:t.error,token:"error.invalid"},{regex:e+(t.multiline?"":"|$"),token:"string.end",next:n?"pop":"start"},{defaultToken:"string"}].filter(Boolean);n?s.push=o:s.next=o;if(!t.interpolation)return s;var u=t.interpolation.open,a=t.interpolation.close,f={regex:"["+i.escapeRegExp(u+a)+"]",onMatch:function(e,t,n){this.next=e==u?this.nextState:"";if(e==u&&n.length)return n.unshift("start",t),"paren";if(e==a&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e==u?"paren.lparen":"paren.rparen"},nextState:r};return[f,s]}function n(){return[{token:"comment",regex:/\/\//,next:[s.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}]},s.getStartRule("doc-start"),{token:"comment.start",regex:/\/\*/,stateName:"nested_comment",push:[s.getTagRule(),{token:"comment.start",regex:/\/\*/,push:"nested_comment"},{token:"comment.end",regex:"\\*\\/",next:"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var e=this.createKeywordMapper({"variable.language":"",keyword:"__COLUMN__|__FILE__|__FUNCTION__|__LINE__|as|associativity|break|case|class|continue|default|deinit|didSet|do|dynamicType|else|enum|extension|fallthrough|for|func|get|if|import|in|infix|init|inout|is|left|let|let|mutating|new|none|nonmutating|operator|override|postfix|precedence|prefix|protocol|return|right|safe|Self|self|set|struct|subscript|switch|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|convenience|dynamic|final|infix|lazy|mutating|nonmutating|optional|override|postfix|prefix|required|static|guard|defer","storage.type":"bool|double|Double|extension|float|Float|int|Int|open|internal|fileprivate|private|public|string|String","constant.language":"false|Infinity|NaN|nil|no|null|null|off|on|super|this|true|undefined|yes","support.function":""},"identifier");this.$rules={start:[t('"""',{escape:/\\(?:[0\\tnr"']|u{[a-fA-F1-9]{0,8}})/,interpolation:{lead:"\\",open:"(",close:")"},error:/\\./,multiline:!0}),t('"',{escape:/\\(?:[0\\tnr"']|u{[a-fA-F1-9]{0,8}})/,interpolation:{lead:"\\",open:"(",close:")"},error:/\\./,multiline:!1}),n(),{regex:/@[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/,token:"variable.parameter"},{regex:/[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/,token:e},{token:"constant.numeric",regex:/[+-]?(?:0(?:b[01]+|o[0-7]+|x[\da-fA-F])|\d+(?:(?:\.\d*)?(?:[PpEe][+-]?\d+)?)\b)/},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.normalizeRules()};r.inherits(u,o),t.HighlightRules=u,t.SwiftHighlightRules=u}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/swift",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/swift_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./swift_highlight_rules").HighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/",nestable:!0},this.$id="ace/mode/swift"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/swift"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-tcl.js b/www/js/ace/mode-tcl.js deleted file mode 100644 index 11dbb0658..000000000 --- a/www/js/ace/mode-tcl.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/tcl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:"#.*\\\\$",next:"commentfollow"},{token:"comment",regex:"#.*$"},{token:"support.function",regex:"[\\\\]$",next:"splitlineStart"},{token:"text",regex:/\\(?:["{}\[\]$\\])/},{token:"text",regex:"^|[^{][;][^}]|[/\r/]",next:"commandItem"},{token:"string",regex:'[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'[ ]*["]',next:"qqstring"},{token:"variable.instance",regex:"[$]",next:"variable"},{token:"support.function",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::"},{token:"identifier",regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"paren.lparen",regex:"[[{]",next:"commandItem"},{token:"paren.lparen",regex:"[(]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],commandItem:[{token:"comment",regex:"#.*\\\\$",next:"commentfollow"},{token:"comment",regex:"#.*$",next:"start"},{token:"string",regex:'[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"variable.instance",regex:"[$]",next:"variable"},{token:"support.function",regex:"(?:[:][:])[a-zA-Z0-9_/]+(?:[:][:])",next:"commandItem"},{token:"support.function",regex:"[a-zA-Z0-9_/]+(?:[:][:])",next:"commandItem"},{token:"support.function",regex:"(?:[:][:])",next:"commandItem"},{token:"paren.rparen",regex:"[\\])}]"},{token:"paren.lparen",regex:"[[({]"},{token:"support.function",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::"},{token:"keyword",regex:"[a-zA-Z0-9_/]+",next:"start"}],commentfollow:[{token:"comment",regex:".*\\\\$",next:"commentfollow"},{token:"comment",regex:".+",next:"start"}],splitlineStart:[{token:"text",regex:"^.",next:"start"}],variable:[{token:"variable.instance",regex:"[a-zA-Z_\\d]+(?:[(][a-zA-Z_\\d]+[)])?",next:"start"},{token:"variable.instance",regex:"{?[a-zA-Z_\\d]+}?",next:"start"}],qqstring:[{token:"string",regex:'(?:[^\\\\]|\\\\.)*?["]',next:"start"},{token:"string",regex:".+"}]}};r.inherits(s,i),t.TclHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/tcl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/folding/cstyle","ace/mode/tcl_highlight_rules","ace/mode/matching_brace_outdent","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./folding/cstyle").FoldMode,o=e("./tcl_highlight_rules").TclHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../range").Range,f=function(){this.HighlightRules=o,this.$outdent=new u,this.foldingRules=new s,this.$behaviour=this.$defaultBehaviour};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/tcl",this.snippetFileId="ace/snippets/tcl"}.call(f.prototype),t.Mode=f}); (function() { - window.require(["ace/mode/tcl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-terraform.js b/www/js/ace/mode-terraform.js deleted file mode 100644 index c87979c0b..000000000 --- a/www/js/ace/mode-terraform.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/terraform_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["storage.function.terraform"],regex:"\\b(output|resource|data|variable|module|export)\\b"},{token:"variable.terraform",regex:"\\$\\s",push:[{token:"keyword.terraform",regex:"(-var-file|-var)"},{token:"variable.terraform",regex:"\\n|$",next:"pop"},{include:"strings"},{include:"variables"},{include:"operators"},{defaultToken:"text"}]},{token:"language.support.class",regex:"\\b(timeouts|provider|connection|provisioner|lifecycleprovider|atlas)\\b"},{token:"singleline.comment.terraform",regex:"#.*$"},{token:"singleline.comment.terraform",regex:"//.*$"},{token:"multiline.comment.begin.terraform",regex:/\/\*/,push:"blockComment"},{token:"storage.function.terraform",regex:"^\\s*(locals|terraform)\\s*{"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{include:"constants"},{include:"strings"},{include:"operators"},{include:"variables"}],blockComment:[{regex:/\*\//,token:"multiline.comment.end.terraform",next:"pop"},{defaultToken:"comment"}],constants:[{token:"constant.language.terraform",regex:"\\b(true|false|yes|no|on|off|EOF)\\b"},{token:"constant.numeric.terraform",regex:"(\\b([0-9]+)([kKmMgG]b?)?\\b)|(\\b(0x[0-9A-Fa-f]+)([kKmMgG]b?)?\\b)"}],variables:[{token:["variable.assignment.terraform","keyword.operator"],regex:"\\b([a-zA-Z_]+)(\\s*=)"}],interpolated_variables:[{token:"variable.terraform",regex:"\\b(var|self|count|path|local)\\b(?:\\.*[a-zA-Z_-]*)?"}],strings:[{token:"punctuation.quote.terraform",regex:"'",push:[{token:"punctuation.quote.terraform",regex:"'",next:"pop"},{include:"escaped_chars"},{defaultToken:"string"}]},{token:"punctuation.quote.terraform",regex:'"',push:[{token:"punctuation.quote.terraform",regex:'"',next:"pop"},{include:"interpolation"},{include:"escaped_chars"},{defaultToken:"string"}]}],escaped_chars:[{token:"constant.escaped_char.terraform",regex:"\\\\."}],operators:[{token:"keyword.operator",regex:"\\?|:|==|!=|>|<|>=|<=|&&|\\|\\||!|%|&|\\*|\\+|\\-|/|="}],interpolation:[{token:"punctuation.interpolated.begin.terraform",regex:"\\$?\\$\\{",push:[{token:"punctuation.interpolated.end.terraform",regex:"\\}",next:"pop"},{include:"interpolated_variables"},{include:"operators"},{include:"constants"},{include:"strings"},{include:"functions"},{include:"parenthesis"},{defaultToken:"punctuation"}]}],functions:[{token:"keyword.function.terraform",regex:"\\b(abs|basename|base64decode|base64encode|base64gzip|base64sha256|base64sha512|bcrypt|ceil|chomp|chunklist|cidrhost|cidrnetmask|cidrsubnet|coalesce|coalescelist|compact|concat|contains|dirname|distinct|element|file|floor|flatten|format|formatlist|indent|index|join|jsonencode|keys|length|list|log|lookup|lower|map|matchkeys|max|merge|min|md5|pathexpand|pow|replace|rsadecrypt|sha1|sha256|sha512|signum|slice|sort|split|substr|timestamp|timeadd|title|transpose|trimspace|upper|urlencode|uuid|values|zipmap)\\b"}],parenthesis:[{token:"paren.lparen",regex:"\\["},{token:"paren.rparen",regex:"\\]"}]},this.normalizeRules()};r.inherits(s,i),t.TerraformHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/terraform",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/terraform_highlight_rules","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./terraform_highlight_rules").TerraformHighlightRules,o=e("./folding/cstyle").FoldMode,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=function(){i.call(this),this.HighlightRules=s,this.$outdent=new u,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new o};r.inherits(a,i),function(){this.lineCommentStart=["#","//"],this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/terraform"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/terraform"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-tex.js b/www/js/ace/mode-tex.js deleted file mode 100644 index 5253e46af..000000000 --- a/www/js/ace/mode-tex.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(e){e||(e="text"),this.$rules={start:[{token:"comment",regex:"%.*$"},{token:e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b",next:"nospell"},{token:"keyword",regex:"\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:e,regex:"\\s+"}],nospell:[{token:"comment",regex:"%.*$",next:"start"},{token:"nospell."+e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b"},{token:"keyword",regex:"\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])",next:"start"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])]"},{token:"paren.keyword.operator",regex:"}",next:"start"},{token:"nospell."+e,regex:"\\s+"},{token:"nospell."+e,regex:"\\w+"}]}};r.inherits(o,s),t.TexHighlightRules=o}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/tex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=e("./tex_highlight_rules").TexHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=function(e){e?this.HighlightRules=s:this.HighlightRules=o,this.$outdent=new u,this.$behaviour=this.$defaultBehaviour};r.inherits(a,i),function(){this.lineCommentStart="%",this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.allowAutoInsert=function(){return!1},this.$id="ace/mode/tex",this.snippetFileId="ace/snippets/tex"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/tex"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-text.js b/www/js/ace/mode-text.js deleted file mode 100644 index fa24e3be6..000000000 --- a/www/js/ace/mode-text.js +++ /dev/null @@ -1,8 +0,0 @@ -; (function() { - window.require(["ace/mode/text"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-textile.js b/www/js/ace/mode-textile.js deleted file mode 100644 index 04db82aab..000000000 --- a/www/js/ace/mode-textile.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/textile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:function(e){return e.charAt(0)=="h"?"markup.heading."+e.charAt(1):"markup.heading"},regex:"h1|h2|h3|h4|h5|h6|bq|p|bc|pre",next:"blocktag"},{token:"keyword",regex:"[\\*]+|[#]+"},{token:"text",regex:".+"}],blocktag:[{token:"keyword",regex:"\\. ",next:"start"},{token:"keyword",regex:"\\(",next:"blocktagproperties"}],blocktagproperties:[{token:"keyword",regex:"\\)",next:"blocktag"},{token:"string",regex:"[a-zA-Z0-9\\-_]+"},{token:"keyword",regex:"#"}]}};r.inherits(s,i),t.TextileHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/textile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/textile_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./textile_highlight_rules").TextileHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){return e=="intag"?n:""},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/textile",this.snippetFileId="ace/snippets/textile"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/textile"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-toml.js b/www/js/ace/mode-toml.js deleted file mode 100644 index 2123bfc8b..000000000 --- a/www/js/ace/mode-toml.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/toml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"constant.language.boolean":"true|false"},"identifier"),t="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";this.$rules={start:[{token:"comment.toml",regex:/#.*$/},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:["variable.keygroup.toml"],regex:"(?:^\\s*)(\\[\\[([^\\]]+)\\]\\])"},{token:["variable.keygroup.toml"],regex:"(?:^\\s*)(\\[([^\\]]+)\\])"},{token:e,regex:t},{token:"support.date.toml",regex:"\\d{4}-\\d{2}-\\d{2}(T)\\d{2}:\\d{2}:\\d{2}(Z)"},{token:"constant.numeric.toml",regex:"-?\\d+(\\.?\\d+)?"}],qqstring:[{token:"string",regex:"\\\\$",next:"qqstring"},{token:"constant.language.escape",regex:'\\\\[0tnr"\\\\]'},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.TomlHighlightRules=s}),define("ace/mode/folding/ini",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/^\s*\[([^\])]*)]\s*(?:$|[;#])/,this.getFoldWidgetRange=function(e,t,n){var r=this.foldingStartMarker,s=e.getLine(n),o=s.match(r);if(!o)return;var u=o[1]+".",a=s.length,f=e.getLength(),l=n,c=n;while(++nl){var h=e.getLine(c).length;return new i(l,a,c,h)}}}.call(o.prototype)}),define("ace/mode/toml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/toml_highlight_rules","ace/mode/folding/ini"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./toml_highlight_rules").TomlHighlightRules,o=e("./folding/ini").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/toml"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/toml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-tsv.js b/www/js/ace/mode-tsv.js deleted file mode 100644 index 16e82660d..000000000 --- a/www/js/ace/mode-tsv.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/csv_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){i.call(this)};r.inherits(s,i),t.CsvHighlightRules=s}),define("ace/mode/csv",["require","exports","module","ace/lib/oop","ace/mode/text","ace/lib/lang","ace/mode/csv_highlight_rules"],function(e,t,n){"use strict";function f(e,t,n){var r=[],i=e.split(n.separatorRegex),s=n.spliter,o=n.quote||'"',u=(t||"start").split("-"),f=parseInt(u[1])||0,l=u[0]=="string",c=!l;for(var h=0;h-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/typescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=function(e){var t=[{token:["storage.type","text","entity.name.function.ts"],regex:"(function)(\\s+)([a-zA-Z0-9$_\u00a1-\uffff][a-zA-Z0-9d$_\u00a1-\uffff]*)"},{token:"keyword",regex:"(?:\\b(constructor|declare|interface|as|AS|public|private|extends|export|super|readonly|module|namespace|abstract|implements)\\b)"},{token:["keyword","storage.type.variable.ts"],regex:"(class|type)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*)"},{token:"keyword",regex:"\\b(?:super|export|import|keyof|infer)\\b"},{token:["storage.type.variable.ts"],regex:"(?:\\b(this\\.|string\\b|bool\\b|boolean\\b|number\\b|true\\b|false\\b|undefined\\b|any\\b|null\\b|(?:unique )?symbol\\b|object\\b|never\\b|enum\\b))"}],n=(new i({jsx:(e&&e.jsx)==1})).getRules();n.no_regex=t.concat(n.no_regex),this.$rules=n};r.inherits(s,i),t.TypeScriptHighlightRules=s}),define("ace/mode/typescript",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/typescript_highlight_rules","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./typescript_highlight_rules").TypeScriptHighlightRules,o=e("./folding/cstyle").FoldMode,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=function(){this.HighlightRules=s,this.$outdent=new u,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new o};r.inherits(a,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/typescript"}.call(a.prototype),t.Mode=a}),define("ace/mode/tsx",["require","exports","module","ace/lib/oop","ace/mode/behaviour/javascript","ace/mode/folding/javascript","ace/mode/typescript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./behaviour/javascript").JavaScriptBehaviour,s=e("./folding/javascript").FoldMode,o=e("./typescript").Mode,u=function(){o.call(this),this.$highlightRuleConfig={jsx:!0},this.foldingRules=new s,this.$behaviour=new i};r.inherits(u,o),function(){this.$id="ace/mode/tsx"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/tsx"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-turtle.js b/www/js/ace/mode-turtle.js deleted file mode 100644 index 64b89cd5c..000000000 --- a/www/js/ace/mode-turtle.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/turtle_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#comments"},{include:"#strings"},{include:"#base-prefix-declarations"},{include:"#string-language-suffixes"},{include:"#string-datatype-suffixes"},{include:"#relative-urls"},{include:"#xml-schema-types"},{include:"#rdf-schema-types"},{include:"#owl-types"},{include:"#qnames"},{include:"#punctuation-operators"}],"#base-prefix-declarations":[{token:"keyword.other.prefix.turtle",regex:/@(?:base|prefix)/}],"#comments":[{token:["punctuation.definition.comment.turtle","comment.line.hash.turtle"],regex:/(#)(.*$)/}],"#owl-types":[{token:"support.type.datatype.owl.turtle",regex:/owl:[a-zA-Z]+/}],"#punctuation-operators":[{token:"keyword.operator.punctuation.turtle",regex:/;|,|\.|\(|\)|\[|\]/}],"#qnames":[{token:"entity.name.other.qname.turtle",regex:/(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/}],"#rdf-schema-types":[{token:"support.type.datatype.rdf.schema.turtle",regex:/rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/}],"#relative-urls":[{token:"string.quoted.other.relative.url.turtle",regex://,next:"pop"},{defaultToken:"string.quoted.other.relative.url.turtle"}]}],"#string-datatype-suffixes":[{token:"keyword.operator.datatype.suffix.turtle",regex:/\^\^/}],"#string-language-suffixes":[{token:["keyword.operator.language.suffix.turtle","constant.language.suffix.turtle"],regex:/(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/}],"#strings":[{token:"string.quoted.triple.turtle",regex:/"""/,push:[{token:"string.quoted.triple.turtle",regex:/"""/,next:"pop"},{defaultToken:"string.quoted.triple.turtle"}]},{token:"string.quoted.double.turtle",regex:/"/,push:[{token:"string.quoted.double.turtle",regex:/"/,next:"pop"},{token:"invalid.string.newline",regex:/$/},{token:"constant.character.escape.turtle",regex:/\\./},{defaultToken:"string.quoted.double.turtle"}]}],"#xml-schema-types":[{token:"support.type.datatype.xml.schema.turtle",regex:/xsd?:[a-z][a-zA-Z]+/}]},this.normalizeRules()};s.metaData={fileTypes:["ttl","nt"],name:"Turtle",scopeName:"source.turtle"},r.inherits(s,i),t.TurtleHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/turtle",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/turtle_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./turtle_highlight_rules").TurtleHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.$id="ace/mode/turtle"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/turtle"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-twig.js b/www/js/ace/mode-twig.js deleted file mode 100644 index 225b361d0..000000000 --- a/www/js/ace/mode-twig.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/twig_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./html_highlight_rules").HtmlHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){s.call(this);var e="autoescape|block|do|embed|extends|filter|flush|for|from|if|import|include|macro|sandbox|set|spaceless|use|verbatim";e=e+"|end"+e.replace(/\|/g,"|end");var t="abs|batch|capitalize|convert_encoding|date|date_modify|default|e|escape|first|format|join|json_encode|keys|last|length|lower|merge|nl2br|number_format|raw|replace|reverse|slice|sort|split|striptags|title|trim|upper|url_encode",n="attribute|constant|cycle|date|dump|parent|random|range|template_from_string",r="constant|divisibleby|sameas|defined|empty|even|iterable|odd",i="null|none|true|false",o="b-and|b-xor|b-or|in|is|and|or|not",u=this.createKeywordMapper({"keyword.control.twig":e,"support.function.twig":[t,n,r].join("|"),"keyword.operator.twig":o,"constant.language.twig":i},"identifier");for(var a in this.$rules)this.$rules[a].unshift({token:"variable.other.readwrite.local.twig",regex:"\\{\\{-?",push:"twig-start"},{token:"meta.tag.twig",regex:"\\{%-?",push:"twig-start"},{token:"comment.block.twig",regex:"\\{#-?",push:"twig-comment"});this.$rules["twig-comment"]=[{token:"comment.block.twig",regex:".*-?#\\}",next:"pop"}],this.$rules["twig-start"]=[{token:"variable.other.readwrite.local.twig",regex:"-?\\}\\}",next:"pop"},{token:"meta.tag.twig",regex:"-?%\\}",next:"pop"},{token:"string",regex:"'",next:"twig-qstring"},{token:"string",regex:'"',next:"twig-qqstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator.assignment",regex:"=|~"},{token:"keyword.operator.comparison",regex:"==|!=|<|>|>=|<=|==="},{token:"keyword.operator.arithmetic",regex:"\\+|-|/|%|//|\\*|\\*\\*"},{token:"keyword.operator.other",regex:"\\.\\.|\\|"},{token:"punctuation.operator",regex:/\?|:|,|;|\./},{token:"paren.lparen",regex:/[\[\({]/},{token:"paren.rparen",regex:/[\])}]/},{token:"text",regex:"\\s+"}],this.$rules["twig-qqstring"]=[{token:"constant.language.escape",regex:/\\[\\"$#ntr]|#{[^"}]*}/},{token:"string",regex:'"',next:"twig-start"},{defaultToken:"string"}],this.$rules["twig-qstring"]=[{token:"constant.language.escape",regex:/\\[\\'ntr]}/},{token:"string",regex:"'",next:"twig-start"},{defaultToken:"string"}],this.normalizeRules()};r.inherits(u,o),t.TwigHighlightRules=u}),define("ace/mode/twig",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/twig_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./twig_highlight_rules").TwigHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=function(){i.call(this),this.HighlightRules=s,this.$outdent=new o};r.inherits(u,i),function(){this.blockComment={start:"{#",end:"#}"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/twig"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/twig"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-typescript.js b/www/js/ace/mode-typescript.js deleted file mode 100644 index 525bf705f..000000000 --- a/www/js/ace/mode-typescript.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/typescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=function(e){var t=[{token:["storage.type","text","entity.name.function.ts"],regex:"(function)(\\s+)([a-zA-Z0-9$_\u00a1-\uffff][a-zA-Z0-9d$_\u00a1-\uffff]*)"},{token:"keyword",regex:"(?:\\b(constructor|declare|interface|as|AS|public|private|extends|export|super|readonly|module|namespace|abstract|implements)\\b)"},{token:["keyword","storage.type.variable.ts"],regex:"(class|type)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*)"},{token:"keyword",regex:"\\b(?:super|export|import|keyof|infer)\\b"},{token:["storage.type.variable.ts"],regex:"(?:\\b(this\\.|string\\b|bool\\b|boolean\\b|number\\b|true\\b|false\\b|undefined\\b|any\\b|null\\b|(?:unique )?symbol\\b|object\\b|never\\b|enum\\b))"}],n=(new i({jsx:(e&&e.jsx)==1})).getRules();n.no_regex=t.concat(n.no_regex),this.$rules=n};r.inherits(s,i),t.TypeScriptHighlightRules=s}),define("ace/mode/typescript",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/typescript_highlight_rules","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./typescript_highlight_rules").TypeScriptHighlightRules,o=e("./folding/cstyle").FoldMode,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=function(){this.HighlightRules=s,this.$outdent=new u,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new o};r.inherits(a,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/typescript"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/typescript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-vala.js b/www/js/ace/mode-vala.js deleted file mode 100644 index cd659a82e..000000000 --- a/www/js/ace/mode-vala.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/vala_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["meta.using.vala","keyword.other.using.vala","meta.using.vala","storage.modifier.using.vala","meta.using.vala","punctuation.terminator.vala"],regex:"^(\\s*)(using)\\b(?:(\\s*)([^ ;$]+)(\\s*)((?:;)?))?"},{include:"#code"}],"#all-types":[{include:"#primitive-arrays"},{include:"#primitive-types"},{include:"#object-types"}],"#annotations":[{token:["storage.type.annotation.vala","punctuation.definition.annotation-arguments.begin.vala"],regex:"(@[^ (]+)(\\()",push:[{token:"punctuation.definition.annotation-arguments.end.vala",regex:"\\)",next:"pop"},{token:["constant.other.key.vala","text","keyword.operator.assignment.vala"],regex:"(\\w*)(\\s*)(=)"},{include:"#code"},{token:"punctuation.seperator.property.vala",regex:","},{defaultToken:"meta.declaration.annotation.vala"}]},{token:"storage.type.annotation.vala",regex:"@\\w*"}],"#anonymous-classes-and-new":[{token:"keyword.control.new.vala",regex:"\\bnew\\b",push_disabled:[{token:"text",regex:"(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)",next:"pop"},{token:["storage.type.vala","text"],regex:"(\\w+)(\\s*)(?=\\[)",push:[{token:"text",regex:"}|(?=;|\\))",next:"pop"},{token:"text",regex:"\\[",push:[{token:"text",regex:"\\]",next:"pop"},{include:"#code"}]},{token:"text",regex:"{",push:[{token:"text",regex:"(?=})",next:"pop"},{include:"#code"}]}]},{token:"text",regex:"(?=\\w.*\\()",push:[{token:"text",regex:"(?<=\\))",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<=\\))",next:"pop"},{include:"#object-types"},{token:"text",regex:"\\(",push:[{token:"text",regex:"\\)",next:"pop"},{include:"#code"}]}]},{token:"meta.inner-class.vala",regex:"{",push:[{token:"meta.inner-class.vala",regex:"}",next:"pop"},{include:"#class-body"},{defaultToken:"meta.inner-class.vala"}]}]}],"#assertions":[{token:["keyword.control.assert.vala","meta.declaration.assertion.vala"],regex:"\\b(assert|requires|ensures)(\\s)",push:[{token:"meta.declaration.assertion.vala",regex:"$",next:"pop"},{token:"keyword.operator.assert.expression-seperator.vala",regex:":"},{include:"#code"},{defaultToken:"meta.declaration.assertion.vala"}]}],"#class":[{token:"meta.class.vala",regex:"(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum|struct|namespace)\\s+\\w+)",push:[{token:"paren.vala",regex:"}",next:"pop"},{include:"#storage-modifiers"},{include:"#comments"},{token:["storage.modifier.vala","meta.class.identifier.vala","entity.name.type.class.vala"],regex:"(class|(?:@)?interface|enum|struct|namespace)(\\s+)([\\w\\.]+)"},{token:"storage.modifier.extends.vala",regex:":",push:[{token:"meta.definition.class.inherited.classes.vala",regex:"(?={|,)",next:"pop"},{include:"#object-types-inherited"},{include:"#comments"},{defaultToken:"meta.definition.class.inherited.classes.vala"}]},{token:["storage.modifier.implements.vala","meta.definition.class.implemented.interfaces.vala"],regex:"(,)(\\s)",push:[{token:"meta.definition.class.implemented.interfaces.vala",regex:"(?=\\{)",next:"pop"},{include:"#object-types-inherited"},{include:"#comments"},{defaultToken:"meta.definition.class.implemented.interfaces.vala"}]},{token:"paren.vala",regex:"{",push:[{token:"paren.vala",regex:"(?=})",next:"pop"},{include:"#class-body"},{defaultToken:"meta.class.body.vala"}]},{defaultToken:"meta.class.vala"}],comment:"attempting to put namespace in here."}],"#class-body":[{include:"#comments"},{include:"#class"},{include:"#enums"},{include:"#methods"},{include:"#annotations"},{include:"#storage-modifiers"},{include:"#code"}],"#code":[{include:"#comments"},{include:"#class"},{token:"text",regex:"{",push:[{token:"text",regex:"}",next:"pop"},{include:"#code"}]},{include:"#assertions"},{include:"#parens"},{include:"#constants-and-special-vars"},{include:"#anonymous-classes-and-new"},{include:"#keywords"},{include:"#storage-modifiers"},{include:"#strings"},{include:"#all-types"}],"#comments":[{token:"punctuation.definition.comment.vala",regex:"/\\*\\*/"},{include:"text.html.javadoc"},{include:"#comments-inline"}],"#comments-inline":[{token:"punctuation.definition.comment.vala",regex:"/\\*",push:[{token:"punctuation.definition.comment.vala",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.vala"}]},{token:["text","punctuation.definition.comment.vala","comment.line.double-slash.vala"],regex:"(\\s*)(//)(.*$)"}],"#constants-and-special-vars":[{token:"constant.language.vala",regex:"\\b(?:true|false|null)\\b"},{token:"variable.language.vala",regex:"\\b(?:this|base)\\b"},{token:"constant.numeric.vala",regex:"\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\\b"},{token:["keyword.operator.dereference.vala","constant.other.vala"],regex:"((?:\\.)?)\\b([A-Z][A-Z0-9_]+)(?!<|\\.class|\\s*\\w+\\s*=)\\b"}],"#enums":[{token:"text",regex:"^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))",push:[{token:"text",regex:"(?=;|})",next:"pop"},{token:"constant.other.enum.vala",regex:"\\w+",push:[{token:"meta.enum.vala",regex:"(?=,|;|})",next:"pop"},{include:"#parens"},{token:"text",regex:"{",push:[{token:"text",regex:"}",next:"pop"},{include:"#class-body"}]},{defaultToken:"meta.enum.vala"}]}]}],"#keywords":[{token:"keyword.control.catch-exception.vala",regex:"\\b(?:try|catch|finally|throw)\\b"},{token:"keyword.control.vala",regex:"\\?|:|\\?\\?"},{token:"keyword.control.vala",regex:"\\b(?:return|break|case|continue|default|do|while|for|foreach|switch|if|else|in|yield|get|set|value)\\b"},{token:"keyword.operator.vala",regex:"\\b(?:typeof|is|as)\\b"},{token:"keyword.operator.comparison.vala",regex:"==|!=|<=|>=|<>|<|>"},{token:"keyword.operator.assignment.vala",regex:"="},{token:"keyword.operator.increment-decrement.vala",regex:"\\-\\-|\\+\\+"},{token:"keyword.operator.arithmetic.vala",regex:"\\-|\\+|\\*|\\/|%"},{token:"keyword.operator.logical.vala",regex:"!|&&|\\|\\|"},{token:"keyword.operator.dereference.vala",regex:"\\.(?=\\S)",originalRegex:"(?<=\\S)\\.(?=\\S)"},{token:"punctuation.terminator.vala",regex:";"},{token:"keyword.operator.ownership",regex:"owned|unowned"}],"#methods":[{token:"meta.method.vala",regex:"(?!new)(?=\\w.*\\s+)(?=[^=]+\\()",push:[{token:"paren.vala",regex:"}|(?=;)",next:"pop"},{include:"#storage-modifiers"},{token:["entity.name.function.vala","meta.method.identifier.vala"],regex:"([\\~\\w\\.]+)(\\s*\\()",push:[{token:"meta.method.identifier.vala",regex:"\\)",next:"pop"},{include:"#parameters"},{defaultToken:"meta.method.identifier.vala"}]},{token:"meta.method.return-type.vala",regex:"(?=\\w.*\\s+\\w+\\s*\\()",push:[{token:"meta.method.return-type.vala",regex:"(?=\\w+\\s*\\()",next:"pop"},{include:"#all-types"},{defaultToken:"meta.method.return-type.vala"}]},{include:"#throws"},{token:"paren.vala",regex:"{",push:[{token:"paren.vala",regex:"(?=})",next:"pop"},{include:"#code"},{defaultToken:"meta.method.body.vala"}]},{defaultToken:"meta.method.vala"}]}],"#namespace":[{token:"text",regex:"^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))",push:[{token:"text",regex:"(?=;|})",next:"pop"},{token:"constant.other.namespace.vala",regex:"\\w+",push:[{token:"meta.namespace.vala",regex:"(?=,|;|})",next:"pop"},{include:"#parens"},{token:"text",regex:"{",push:[{token:"text",regex:"}",next:"pop"},{include:"#code"}]},{defaultToken:"meta.namespace.vala"}]}],comment:"This is not quite right. See the class grammar right now"}],"#object-types":[{token:"storage.type.generic.vala",regex:"\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<",push:[{token:"storage.type.generic.vala",regex:">|[^\\w\\s,\\?<\\[()\\]]",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:">|[^\\w\\s,\\?<\\[(?:[,]+)\\]]",next:"pop"},{include:"#object-types"},{token:"storage.type.generic.vala",regex:"<",push:[{token:"storage.type.generic.vala",regex:">|[^\\w\\s,\\[\\]<]",next:"pop"},{defaultToken:"storage.type.generic.vala"}],comment:"This is just to support <>'s with no actual type prefix"},{defaultToken:"storage.type.generic.vala"}]},{token:"storage.type.object.array.vala",regex:"\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*(?=\\[)",push:[{token:"storage.type.object.array.vala",regex:"(?=[^\\]\\s])",next:"pop"},{token:"text",regex:"\\[",push:[{token:"text",regex:"\\]",next:"pop"},{include:"#code"}]},{defaultToken:"storage.type.object.array.vala"}]},{token:["storage.type.vala","keyword.operator.dereference.vala","storage.type.vala"],regex:"\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*\\b)"}],"#object-types-inherited":[{token:"entity.other.inherited-class.vala",regex:"\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<",push:[{token:"entity.other.inherited-class.vala",regex:">|[^\\w\\s,<]",next:"pop"},{include:"#object-types"},{token:"storage.type.generic.vala",regex:"<",push:[{token:"storage.type.generic.vala",regex:">|[^\\w\\s,<]",next:"pop"},{defaultToken:"storage.type.generic.vala"}],comment:"This is just to support <>'s with no actual type prefix"},{defaultToken:"entity.other.inherited-class.vala"}]},{token:["entity.other.inherited-class.vala","keyword.operator.dereference.vala","entity.other.inherited-class.vala"],regex:"\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*)"}],"#parameters":[{token:"storage.modifier.vala",regex:"final"},{include:"#primitive-arrays"},{include:"#primitive-types"},{include:"#object-types"},{token:"variable.parameter.vala",regex:"\\w+"}],"#parens":[{token:"text",regex:"\\(",push:[{token:"text",regex:"\\)",next:"pop"},{include:"#code"}]}],"#primitive-arrays":[{token:"storage.type.primitive.array.vala",regex:"\\b(?:bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|int8|int16|int32|int64|uint8|uint16|uint32|uint64)(?:\\[\\])*\\b"}],"#primitive-types":[{token:"storage.type.primitive.vala",regex:"\\b(?:var|bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|signal|int8|int16|int32|int64|uint8|uint16|uint32|uint64)\\b",comment:"var is not really a primitive, but acts like one in most cases"}],"#storage-modifiers":[{token:"storage.modifier.vala",regex:"\\b(?:public|private|protected|internal|static|final|sealed|virtual|override|abstract|readonly|volatile|dynamic|async|unsafe|out|ref|weak|owned|unowned|const)\\b",comment:"Not sure about unsafe and readonly"}],"#strings":[{token:"punctuation.definition.string.begin.vala",regex:'@"',push:[{token:"punctuation.definition.string.end.vala",regex:'"',next:"pop"},{token:"constant.character.escape.vala",regex:"\\\\.|%[\\w\\.\\-]+|\\$(?:\\w+|\\([\\w\\s\\+\\-\\*\\/]+\\))"},{defaultToken:"string.quoted.interpolated.vala"}]},{token:"punctuation.definition.string.begin.vala",regex:'"',push:[{token:"punctuation.definition.string.end.vala",regex:'"',next:"pop"},{token:"constant.character.escape.vala",regex:"\\\\."},{token:"constant.character.escape.vala",regex:"%[\\w\\.\\-]+"},{defaultToken:"string.quoted.double.vala"}]},{token:"punctuation.definition.string.begin.vala",regex:"'",push:[{token:"punctuation.definition.string.end.vala",regex:"'",next:"pop"},{token:"constant.character.escape.vala",regex:"\\\\."},{defaultToken:"string.quoted.single.vala"}]},{token:"punctuation.definition.string.begin.vala",regex:'"""',push:[{token:"punctuation.definition.string.end.vala",regex:'"""',next:"pop"},{token:"constant.character.escape.vala",regex:"%[\\w\\.\\-]+"},{defaultToken:"string.quoted.triple.vala"}]}],"#throws":[{token:"storage.modifier.vala",regex:"throws",push:[{token:"meta.throwables.vala",regex:"(?={|;)",next:"pop"},{include:"#object-types"},{defaultToken:"meta.throwables.vala"}]}],"#values":[{include:"#strings"},{include:"#object-types"},{include:"#constants-and-special-vars"}]},this.normalizeRules()};s.metaData={comment:"Based heavily on the Java bundle's language syntax. TODO:\n* Closures\n* Delegates\n* Properties: Better support for properties.\n* Annotations\n* Error domains\n* Named arguments\n* Array slicing, negative indexes, multidimensional\n* construct blocks\n* lock blocks?\n* regex literals\n* DocBlock syntax highlighting. (Currently importing javadoc)\n* Folding rule for comments.\n",fileTypes:["vala"],foldingStartMarker:"(\\{\\s*(//.*)?$|^\\s*// \\{\\{\\{)",foldingStopMarker:"^\\s*(\\}|// \\}\\}\\}$)",name:"Vala",scopeName:"source.vala"},r.inherits(s,i),t.ValaHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/vala",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vala_highlight_rules","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./vala_highlight_rules").ValaHighlightRules,o=e("./folding/cstyle").FoldMode,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=function(){this.HighlightRules=s,this.$outdent=new u,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new o};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/vala",this.snippetFileId="ace/snippets/vala"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/vala"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-vbscript.js b/www/js/ace/mode-vbscript.js deleted file mode 100644 index 4f75d8fba..000000000 --- a/www/js/ace/mode-vbscript.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/vbscript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"keyword.control.asp":"If|Then|Else|ElseIf|End|While|Wend|For|To|Each|Case|Select|Return|Continue|Do|Until|Loop|Next|With|Exit|Function|Property|Type|Enum|Sub|IIf|Class","storage.type.asp":"Dim|Call|Const|Redim|Set|Let|Get|New|Randomize|Option|Explicit|Preserve|Erase|Execute|ExecuteGlobal","storage.modifier.asp":"Private|Public|Default","keyword.operator.asp":"Mod|And|Not|Or|Xor|As|Eqv|Imp|Is","constant.language.asp":"Empty|False|Nothing|Null|True","variable.language.vb.asp":"Me","support.class.vb.asp":"RegExp","support.class.asp":"Application|ObjectContext|Request|Response|Server|Session","support.class.collection.asp":"Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables","support.constant.asp":"TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout","support.function.asp":"Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog|BinaryWrite|Clear|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex","support.function.event.asp":"Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart","support.function.vb.asp":"Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year|AscB|AscW|ChrB|ChrW|InStrB|LeftB|LenB|MidB|RightB|Abs|GetUILanguage","support.type.vb.asp":"vbTrue|vbFalse|vbCr|vbCrLf|vbFormFeed|vbLf|vbNewLine|vbNullChar|vbNullString|vbTab|vbVerticalTab|vbBinaryCompare|vbTextCompare|vbSunday|vbMonday|vbTuesday|vbWednesday|vbThursday|vbFriday|vbSaturday|vbUseSystemDayOfWeek|vbFirstJan1|vbFirstFourDays|vbFirstFullWeek|vbGeneralDate|vbLongDate|vbShortDate|vbLongTime|vbShortTime|vbObjectError|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray|vbOKOnly|vbOKCancel|vbAbortRetryIgnore|vbYesNoCancel|vbYesNo|vbRetryCancel|vbCritical|vbQuestion|vbExclamation|vbInformation|vbDefaultButton1|vbDefaultButton2|vbDefaultButton3|vbDefaultButton4|vbApplicationModal|vbSystemModal|vbOK|vbCancel|vbAbort|vbRetry|vbIgnore|vbYes|vbNo|vbUseDefault"},"identifier",!0);this.$rules={start:[{token:["meta.ending-space"],regex:"$"},{token:[null],regex:"^(?=\\t)",next:"state_3"},{token:[null],regex:"^(?= )",next:"state_4"},{token:["text","storage.type.function.asp","text","entity.name.function.asp","text","punctuation.definition.parameters.asp","variable.parameter.function.asp","punctuation.definition.parameters.asp"],regex:"^(\\s*)(Function|Sub)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()([^)]*)(\\))"},{token:"punctuation.definition.comment.asp",regex:"'|REM(?=\\s|$)",next:"comment",caseInsensitive:!0},{token:"storage.type.asp",regex:"On\\s+Error\\s+(?:Resume\\s+Next|GoTo)\\b",caseInsensitive:!0},{token:"punctuation.definition.string.begin.asp",regex:'"',next:"string"},{token:["punctuation.definition.variable.asp"],regex:"(\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b\\s*"},{token:"constant.numeric.asp",regex:"-?\\b(?:(?:0(?:x|X)[0-9a-fA-F]*)|(?:(?:[0-9]+\\.?[0-9]*)|(?:\\.[0-9]+))(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b"},{regex:"\\w+",token:e},{token:["entity.name.function.asp"],regex:"(?:(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b)(?=\\(\\)?))"},{token:["keyword.operator.asp"],regex:"\\-|\\+|\\*|\\/|\\>|\\<|\\=|\\&|\\\\|\\^"}],state_3:[{token:["meta.odd-tab.tabs","meta.even-tab.tabs"],regex:"(\\t)(\\t)?"},{token:"meta.leading-space",regex:"(?=[^\\t])",next:"start"},{token:"meta.leading-space",regex:".",next:"state_3"}],state_4:[{token:["meta.odd-tab.spaces","meta.even-tab.spaces"],regex:"( )( )?"},{token:"meta.leading-space",regex:"(?=[^ ])",next:"start"},{defaultToken:"meta.leading-space"}],comment:[{token:"comment.line.apostrophe.asp",regex:"$",next:"start"},{defaultToken:"comment.line.apostrophe.asp"}],string:[{token:"constant.character.escape.apostrophe.asp",regex:'""'},{token:"string.quoted.double.asp",regex:'"',next:"start"},{defaultToken:"string.quoted.double.asp"}]}};r.inherits(s,i),t.VBScriptHighlightRules=s}),define("ace/mode/folding/vbscript",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.indentKeywords={"class":1,"function":1,sub:1,"if":1,select:1,"do":1,"for":1,"while":1,"with":1,property:1,"else":1,elseif:1,end:-1,loop:-1,next:-1,wend:-1},this.foldingStartMarker=/(?:\s|^)(class|function|sub|if|select|do|for|while|with|property|else|elseif)\b/i,this.foldingStopMarker=/\b(end|loop|next|wend)\b/i,this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarker.test(r),s=this.foldingStopMarker.test(r);if(i||s){var o=s?this.foldingStopMarker.exec(r):this.foldingStartMarker.exec(r),u=o&&o[1].toLowerCase();if(u){var a=e.getTokenAt(n,o.index+2).type;if(a==="keyword.control.asp"||a==="storage.type.function.asp")return this.vbsBlock(e,n,o.index+2)}}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarker.test(r),s=this.foldingStopMarker.test(r);if(i&&!s){var o=this.foldingStartMarker.exec(r),u=o&&o[1].toLowerCase();if(u){var a=e.getTokenAt(n,o.index+2).type;if(a=="keyword.control.asp"||a=="storage.type.function.asp")return u=="if"&&!/then\s*('|$)/i.test(r)?"":"start"}}return""},this.vbsBlock=function(e,t,n,r){var i=new o(e,t,n),u={"class":1,"function":1,sub:1,"if":1,select:1,"with":1,property:1,"else":1,elseif:1},a=i.getCurrentToken();if(!a||a.type!="keyword.control.asp"&&a.type!="storage.type.function.asp")return;var f=a.value.toLowerCase(),l=a.value.toLowerCase(),c=[l],h=this.indentKeywords[l];if(!h)return;var p=i.getCurrentTokenRange();switch(l){case"property":case"sub":case"function":case"if":case"select":case"do":case"for":case"class":case"while":case"with":var d=e.getLine(t),v=/^\s*If\s+.*\s+Then(?!')\s+(?!')\S/i.test(d);if(v)return;var m=new RegExp("(?:^|\\s)"+l,"i"),g=/^\s*End\s(If|Sub|Select|Function|Class|With|Property)\s*/i.test(d);if(!m.test(d)&&!g)return;if(g){var r=i.getCurrentTokenRange();i.step=i.stepBackward,i.step(),i.step(),a=i.getCurrentToken(),a&&(l=a.value.toLowerCase(),l=="end"&&(p=i.getCurrentTokenRange(),p=new s(p.start.row,p.start.column,r.start.row,r.end.column))),h=-1}break;case"end":var y=i.getCurrentTokenPosition();p=i.getCurrentTokenRange(),i.step=i.stepForward,i.step(),i.step(),a=i.getCurrentToken();if(a){l=a.value.toLowerCase();if(l in u){f=l;var b=i.getCurrentTokenPosition(),w=b.column+l.length;p=new s(y.row,y.column,b.row,w)}}i.step=i.stepBackward,i.step(),i.step()}var E=h===-1?e.getLine(t-1).length:e.getLine(t).length,S=t,x=[];x.push(p),i.step=h===-1?i.stepBackward:i.stepForward;while(a=i.step()){var T=null,N=!1;if(a.type!="keyword.control.asp"&&a.type!="storage.type.function.asp")continue;l=a.value.toLowerCase();var C=h*this.indentKeywords[l];switch(l){case"property":case"sub":case"function":case"if":case"select":case"do":case"for":case"class":case"while":case"with":var d=e.getLine(i.getCurrentTokenRow()),v=/^\s*If\s+.*\s+Then(?!')\s+(?!')\S/i.test(d);v&&(C=0,N=!0);var m=new RegExp("^\\s* end\\s+"+l,"i");m.test(d)&&(C=0,N=!0);break;case"elseif":case"else":C=0,f!="elseif"&&(N=!0)}if(C>0)c.unshift(l);else if(C<=0&&N===!1){c.shift();if(!c.length){switch(l){case"end":var y=i.getCurrentTokenPosition();T=i.getCurrentTokenRange(),i.step(),i.step(),a=i.getCurrentToken();if(a){l=a.value.toLowerCase();if(l in u){f=="else"||f=="elseif"?l!=="if"&&x.shift():l!=f&&x.shift();var b=i.getCurrentTokenPosition(),w=b.column+l.length;T=new s(y.row,y.column,b.row,w)}else x.shift()}else x.shift();i.step=i.stepBackward,i.step(),i.step(),a=i.getCurrentToken(),l=a.value.toLowerCase();break;case"select":case"sub":case"if":case"function":case"class":case"with":case"property":l!=f&&x.shift();break;case"do":f!="loop"&&x.shift();break;case"loop":f!="do"&&x.shift();break;case"for":f!="next"&&x.shift();break;case"next":f!="for"&&x.shift();break;case"while":f!="wend"&&x.shift();break;case"wend":f!="while"&&x.shift()}break}C===0&&c.unshift(l)}}if(!a)return null;if(r)return T?x.push(T):x.push(i.getCurrentTokenRange()),x;var t=i.getCurrentTokenRow();if(h===-1){var w=e.getLine(t).length;return new s(t,w,S-1,E)}return new s(S,E,t-1,e.getLine(t-1).length)}}.call(u.prototype)}),define("ace/mode/vbscript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vbscript_highlight_rules","ace/mode/folding/vbscript","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./vbscript_highlight_rules").VBScriptHighlightRules,o=e("./folding/vbscript").FoldMode,u=e("../range").Range,a=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour,this.indentKeywords=this.foldingRules.indentKeywords};r.inherits(a,i),function(){function t(e,t,n){var r=0;for(var i=0;i0?1:0}this.lineCommentStart=["'","REM"];var e=["else","elseif","end","loop","next","wend"];this.getNextLineIndent=function(e,n,r){var i=this.$getIndent(n),s=0,o=this.getTokenizer().getLineTokens(n,e),u=o.tokens;return e=="start"&&(s=t(u,n,this.indentKeywords)),s>0?i+r:s<0&&i.substr(i.length-r.length)==r&&!this.checkOutdent(e,n,"\n")?i.substr(0,i.length-r.length):i},this.checkOutdent=function(t,n,r){if(r!="\n"&&r!="\r"&&r!="\r\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i||!i.length)return!1;var s=i[0].value.toLowerCase();return(i[0].type=="keyword.control.asp"||i[0].type=="storage.type.function.asp")&&e.indexOf(s)!=-1},this.getMatching=function(e,t,n,r){if(t==undefined){var i=e.selection.lead;n=i.column,t=i.row}r==undefined&&(r=!0);var s=e.getTokenAt(t,n);if(s){var o=s.value.toLowerCase();if(o in this.indentKeywords)return this.foldingRules.vbsBlock(e,t,n,r)}},this.autoOutdent=function(e,t,n){var r=t.getLine(n),i=r.match(/^\s*/)[0].length;if(!i||!n)return;var s=this.getMatching(t,n,i+1,!1);if(!s||s.start.row==n)return;var o=this.$getIndent(t.getLine(s.start.row));o.length!=i&&(t.replace(new u(n,0,n,i),o),t.outdentRows(new u(n+1,0,n+1,0)))},this.$id="ace/mode/vbscript"}.call(a.prototype),t.Mode=a}); (function() { - window.require(["ace/mode/vbscript"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-velocity.js b/www/js/ace/mode-velocity.js deleted file mode 100644 index 36a20503e..000000000 --- a/www/js/ace/mode-velocity.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/velocity_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./html_highlight_rules").HtmlHighlightRules,u=function(){o.call(this);var e=i.arrayToMap("true|false|null".split("|")),t=i.arrayToMap("_DateTool|_DisplayTool|_EscapeTool|_FieldTool|_MathTool|_NumberTool|_SerializerTool|_SortTool|_StringTool|_XPathTool".split("|")),n=i.arrayToMap("$contentRoot|$foreach".split("|")),r=i.arrayToMap("#set|#macro|#include|#parse|#if|#elseif|#else|#foreach|#break|#end|#stop".split("|"));this.$rules.start.push({token:"comment",regex:"##.*$"},{token:"comment.block",regex:"#\\*",next:"vm_comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:function(i){return r.hasOwnProperty(i)?"keyword":e.hasOwnProperty(i)?"constant.language":n.hasOwnProperty(i)?"variable.language":t.hasOwnProperty(i)||t.hasOwnProperty(i.substring(1))?"support.function":i=="debugger"?"invalid.deprecated":i.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*)$/)?"variable":"identifier"},regex:"[a-zA-Z$#][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}),this.$rules.vm_comment=[{token:"comment",regex:"\\*#|-->",next:"start"},{defaultToken:"comment"}],this.$rules.vm_start=[{token:"variable",regex:"}",next:"pop"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:function(i){return r.hasOwnProperty(i)?"keyword":e.hasOwnProperty(i)?"constant.language":n.hasOwnProperty(i)?"variable.language":t.hasOwnProperty(i)||t.hasOwnProperty(i.substring(1))?"support.function":i=="debugger"?"invalid.deprecated":i.match(/^(\$[a-zA-Z_$][a-zA-Z0-9_]*)$/)?"variable":"identifier"},regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}];for(var s in this.$rules)this.$rules[s].unshift({token:"variable",regex:"\\${",push:"vm_start"});this.normalizeRules()};r.inherits(u,s),t.VelocityHighlightRules=u}),define("ace/mode/folding/velocity",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="##")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++nl){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]},this.normalizeRules()};r.inherits(s,i),t.VerilogHighlightRules=s}),define("ace/mode/verilog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/verilog_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./verilog_highlight_rules").VerilogHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"'},this.$id="ace/mode/verilog"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/verilog"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-vhdl.js b/www/js/ace/mode-vhdl.js deleted file mode 100644 index 4b7c6385c..000000000 --- a/www/js/ace/mode-vhdl.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/vhdl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="access|after|alias|all|architecture|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|context|disconnect|downto|else|elsif|end|entity|exit|file|for|force|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|new|next|of|on|or|open|others|out|package|parameter|port|postponed|procedure|process|protected|pure|range|record|register|reject|release|report|return|select|severity|shared|signal|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with",t="bit|bit_vector|boolean|character|integer|line|natural|positive|real|register|signed|std_logic|std_logic_vector|string||text|time|unsigned",n="array|constant",r="abs|and|mod|nand|nor|not|rem|rol|ror|sla|sll|srasrl|xnor|xor",i="true|false|null",s=this.createKeywordMapper({"keyword.operator":r,keyword:e,"constant.language":i,"storage.modifier":n,"storage.type":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"keyword",regex:"\\s*(?:library|package|use)\\b"},{token:s,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"&|\\*|\\+|\\-|\\/|<|=|>|\\||=>|\\*\\*|:=|\\/=|>=|<=|<>"},{token:"punctuation.operator",regex:"\\'|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[(]"},{token:"paren.rparen",regex:"[\\])]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.VHDLHighlightRules=s}),define("ace/mode/vhdl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vhdl_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./vhdl_highlight_rules").VHDLHighlightRules,o=function(){this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.lineCommentStart="--",this.$id="ace/mode/vhdl"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/vhdl"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-visualforce.js b/www/js/ace/mode-visualforce.js deleted file mode 100644 index 74aaac02f..000000000 --- a/www/js/ace/mode-visualforce.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/visualforce_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";function s(e){return{token:e.token+".start",regex:e.start,push:[{token:"constant.language.escape",regex:e.escape},{token:e.token+".end",regex:e.start,next:"pop"},{defaultToken:e.token}]}}var r=e("../lib/oop"),i=e("../mode/html_highlight_rules").HtmlHighlightRules,o=function(){var e=this.createKeywordMapper({"variable.language":"$Action|$Api|$Component|$ComponentLabel|$CurrentPage|$FieldSet|$Label|$Label|$ObjectType|$Organization|$Page|$Permission|$Profile|$Resource|$SControl|$Setup|$Site|$System.OriginDateTime|$User|$UserRole|Site|UITheme|UIThemeDisplayed",keyword:"","storage.type":"","constant.language":"true|false|null|TRUE|FALSE|NULL","support.function":"DATE|DATEVALUE|DATETIMEVALUE|DAY|MONTH|NOW|TODAY|YEAR|BLANKVALUE|ISBLANK|NULLVALUE|PRIORVALUE|AND|CASE|IF|ISCHANGED|ISNEW|ISNUMBER|NOT|OR|ABS|CEILING|EXP|FLOOR|LN|LOG|MAX|MIN|MOD|ROUND|SQRT|BEGINS|BR|CASESAFEID|CONTAINS|FIND|GETSESSIONID|HTMLENCODE|ISPICKVAL|JSENCODE|JSINHTMLENCODE|LEFT|LEN|LOWER|LPAD|MID|RIGHT|RPAD|SUBSTITUTE|TEXT|TRIM|UPPER|URLENCODE|VALUE|GETRECORDIDS|INCLUDE|LINKTO|REGEX|REQUIRESCRIPT|URLFOR|VLOOKUP|HTMLENCODE|JSENCODE|JSINHTMLENCODE|URLENCODE"},"identifier");i.call(this);var t={token:"keyword.start",regex:"{!",push:"Visualforce"};for(var n in this.$rules)this.$rules[n].unshift(t);this.$rules.Visualforce=[s({start:'"',escape:/\\[btnfr"'\\]/,token:"string",multiline:!0}),s({start:"'",escape:/\\[btnfr"'\\]/,token:"string",multiline:!0}),{token:"comment.start",regex:"\\/\\*",push:[{token:"comment.end",regex:"\\*\\/|(?=})",next:"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"keyword.end",regex:"}",next:"pop"},{token:e,regex:/[a-zA-Z$_\u00a1-\uffff][a-zA-Z\d$_\u00a1-\uffff]*\b/},{token:"keyword.operator",regex:/==|<>|!=|<=|>=|&&|\|\||[+\-*/^()=<>&]/},{token:"punctuation.operator",regex:/[?:,;.]/},{token:"paren.lparen",regex:/[\[({]/},{token:"paren.rparen",regex:/[\])}]/}],this.normalizeRules()};r.inherits(o,i),t.VisualforceHighlightRules=o}),define("ace/mode/visualforce",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/visualforce_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html"],function(e,t,n){"use strict";function a(){i.call(this),this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=new o}var r=e("../lib/oop"),i=e("./html").Mode,s=e("./visualforce_highlight_rules").VisualforceHighlightRules,o=e("./behaviour/xml").XmlBehaviour,u=e("./folding/html").FoldMode;r.inherits(a,i),a.prototype.emmetConfig={profile:"xhtml"},t.Mode=a}); (function() { - window.require(["ace/mode/visualforce"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-vue.js b/www/js/ace/mode-vue.js deleted file mode 100644 index 6d26b4f18..000000000 --- a/www/js/ace/mode-vue.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value==="-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/javascript",["require","exports","module","ace/lib/oop","ace/token_iterator","ace/mode/behaviour/cstyle","ace/mode/behaviour/xml"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../token_iterator").TokenIterator,s=e("../behaviour/cstyle").CstyleBehaviour,o=e("../behaviour/xml").XmlBehaviour,u=function(){var e=(new o({closeCurlyBraces:!0})).getBehaviours();this.addBehaviours(e),this.inherit(s),this.add("autoclosing-fragment","insertion",function(e,t,n,r,s){if(s==">"){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column),s=/\([^)]*$/.test(i);return s&&(i=i.substr(i.lastIndexOf("(")+1)),/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r,s)}return[]},this.getPropertyCompletions=function(e,t,n,i,s){s=s||!1;var o=Object.keys(r);return o.map(function(e){return{caption:e,snippet:e+": $0"+(s?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html",this.snippetFileId="ace/snippets/html"}.call(v.prototype),t.Mode=v}),define("ace/mode/typescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=function(e){var t=[{token:["storage.type","text","entity.name.function.ts"],regex:"(function)(\\s+)([a-zA-Z0-9$_\u00a1-\uffff][a-zA-Z0-9d$_\u00a1-\uffff]*)"},{token:"keyword",regex:"(?:\\b(constructor|declare|interface|as|AS|public|private|extends|export|super|readonly|module|namespace|abstract|implements)\\b)"},{token:["keyword","storage.type.variable.ts"],regex:"(class|type)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*)"},{token:"keyword",regex:"\\b(?:super|export|import|keyof|infer)\\b"},{token:["storage.type.variable.ts"],regex:"(?:\\b(this\\.|string\\b|bool\\b|boolean\\b|number\\b|true\\b|false\\b|undefined\\b|any\\b|null\\b|(?:unique )?symbol\\b|object\\b|never\\b|enum\\b))"}],n=(new i({jsx:(e&&e.jsx)==1})).getRules();n.no_regex=t.concat(n.no_regex),this.$rules=n};r.inherits(s,i),t.TypeScriptHighlightRules=s}),define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function s(){var e="[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",t="this|throw|then|try|typeof|super|switch|return|break|by|continue|catch|class|in|instanceof|is|isnt|if|else|extends|for|own|finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|or|on|unless|until|and|yes|yield|export|import|default",n="true|false|null|undefined|NaN|Infinity",r="case|const|function|var|void|with|enum|implements|interface|let|package|private|protected|public|static",i="Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray",s="Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|encodeURIComponent|decodeURI|decodeURIComponent|String|",o="window|arguments|prototype|document",u=this.createKeywordMapper({keyword:t,"constant.language":n,"invalid.illegal":r,"language.support.class":i,"language.support.function":s,"variable.language":o},"identifier"),a={token:["paren.lparen","variable.parameter","paren.rparen","text","storage.type"],regex:/(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source},f=/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/;this.$rules={start:[{token:"constant.numeric",regex:"(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)"},{stateName:"qdoc",token:"string",regex:"'''",next:[{token:"string",regex:"'''",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqdoc",token:"string",regex:'"""',next:[{token:"string",regex:'"""',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qstring",token:"string",regex:"'",next:[{token:"string",regex:"'",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqstring",token:"string.start",regex:'"',next:[{token:"string.end",regex:'"',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"js",token:"string",regex:"`",next:[{token:"string",regex:"`",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{regex:"[{}]",onMatch:function(e,t,n){this.next="";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift()||"";if(this.next.indexOf("string")!=-1)return"paren.string"}return"paren"}},{token:"string.regex",regex:"///",next:"heregex"},{token:"string.regex",regex:/(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/},{token:"comment",regex:"###(?!#)",next:"comment"},{token:"comment",regex:"#.*"},{token:["punctuation.operator","text","identifier"],regex:"(\\.)(\\s*)("+r+")"},{token:"punctuation.operator",regex:"\\.{1,3}"},{token:["keyword","text","language.support.class","text","keyword","text","language.support.class"],regex:"(class)(\\s+)("+e+")(?:(\\s+)(extends)(\\s+)("+e+"))?"},{token:["entity.name.function","text","keyword.operator","text"].concat(a.token),regex:"("+e+")(\\s*)([=:])(\\s*)"+a.regex},a,{token:"variable",regex:"@(?:"+e+")?"},{token:u,regex:e},{token:"punctuation.operator",regex:"\\,|\\."},{token:"storage.type",regex:"[\\-=]>"},{token:"keyword.operator",regex:"(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])"},{token:"paren.lparen",regex:"[({[]"},{token:"paren.rparen",regex:"[\\]})]"},{token:"text",regex:"\\s+"}],heregex:[{token:"string.regex",regex:".*?///[imgy]{0,4}",next:"start"},{token:"comment.regex",regex:"\\s+(?:#.*)?"},{token:"string.regex",regex:"\\S+"}],comment:[{token:"comment",regex:"###",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules;r.inherits(s,i),t.CoffeeHighlightRules=s}),define("ace/mode/stylus_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./css_highlight_rules"),o=function(){var e=this.createKeywordMapper({"support.type":s.supportType,"support.function":s.supportFunction,"support.constant":s.supportConstant,"support.constant.color":s.supportConstantColor,"support.constant.fonts":s.supportConstantFonts},"text",!0);this.$rules={start:[{token:"comment",regex:/\/\/.*$/},{token:"comment",regex:/\/\*/,next:"comment"},{token:["entity.name.function.stylus","text"],regex:"^([-a-zA-Z_][-\\w]*)?(\\()"},{token:["entity.other.attribute-name.class.stylus"],regex:"\\.-?[_a-zA-Z]+[_a-zA-Z0-9-]*"},{token:["entity.language.stylus"],regex:"^ *&"},{token:["variable.language.stylus"],regex:"(arguments)"},{token:["keyword.stylus"],regex:"@[-\\w]+"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:s.pseudoElements},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:s.pseudoClasses},{token:["entity.name.tag.stylus"],regex:"(?:\\b)(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(?:h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)(?:\\b)"},{token:"constant.numeric",regex:"#[a-fA-F0-9]{6}"},{token:"constant.numeric",regex:"#[a-fA-F0-9]{3}"},{token:["punctuation.definition.entity.stylus","entity.other.attribute-name.id.stylus"],regex:"(#)([a-zA-Z][a-zA-Z0-9_-]*)"},{token:"meta.vendor-prefix.stylus",regex:"-webkit-|-moz\\-|-ms-|-o-"},{token:"keyword.control.stylus",regex:"(?:!important|for|in|return|true|false|null|if|else|unless|return)\\b"},{token:"keyword.operator.stylus",regex:"!|~|\\+|-|(?:\\*)?\\*|\\/|%|(?:\\.)\\.\\.|<|>|(?:=|:|\\?|\\+|-|\\*|\\/|%|<|>)?=|!="},{token:"keyword.operator.stylus",regex:"(?:in|is(?:nt)?|not)\\b"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:s.numRe},{token:"keyword",regex:"(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\\b"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"}],qstring:[{token:"string",regex:"[^'\\\\]+"},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"}]}};r.inherits(o,i),t.StylusHighlightRules=o}),define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./css_highlight_rules"),u=function(){var e=i.arrayToMap(o.supportType.split("|")),t=i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unquote".split("|")),n=i.arrayToMap(o.supportConstant.split("|")),r=i.arrayToMap(o.supportConstantColor.split("|")),s=i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),u=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),a="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:a+"(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:a},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:function(i){return e.hasOwnProperty(i.toLowerCase())?"support.type":s.hasOwnProperty(i)?"keyword":n.hasOwnProperty(i)?"constant.language":t.hasOwnProperty(i)?"support.function":r.hasOwnProperty(i.toLowerCase())?"support.constant.color":u.hasOwnProperty(i.toLowerCase())?"variable.language":"text"},regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable",regex:"[a-z_\\-$][a-z0-9_\\-$]*\\b"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]}};r.inherits(u,s),t.ScssHighlightRules=u}),define("ace/mode/sass_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/scss_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./scss_highlight_rules").ScssHighlightRules,o=function(){s.call(this);var e=this.$rules.start;e[1].token=="comment"&&(e.splice(1,1,{onMatch:function(e,t,n){return n.unshift(this.next,-1,e.length-2,t),"comment"},regex:/^\s*\/\*/,next:"comment"},{token:"error.invalid",regex:"/\\*|[{;}]"},{token:"support.type",regex:/^\s*:[\w\-]+\s/}),this.$rules.comment=[{regex:/^\s*/,onMatch:function(e,t,n){return n[1]===-1&&(n[1]=Math.max(n[2],e.length-1)),e.length<=n[1]?(n.shift(),n.shift(),n.shift(),this.next=n.shift(),"text"):(this.next="","comment")},next:"start"},{defaultToken:"comment"}])};r.inherits(o,s),t.SassHighlightRules=o}),define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./css_highlight_rules"),o=function(){var e="@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|or|and|when|not",t=e.split("|"),n=s.supportType.split("|"),r=this.createKeywordMapper({"support.constant":s.supportConstant,keyword:e,"support.constant.color":s.supportConstantColor,"support.constant.fonts":s.supportConstantFonts},"identifier",!0),i="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+i+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:i},{token:["support.function","paren.lparen","string","paren.rparen"],regex:"(url)(\\()(.*)(\\))"},{token:["support.function","paren.lparen"],regex:"(:extend|[a-z0-9_\\-]+)(\\()"},{token:function(e){return t.indexOf(e.toLowerCase())>-1?"keyword":"variable"},regex:"[@\\$][a-z0-9_\\-@\\$]*\\b"},{token:"variable",regex:"[@\\$]\\{[a-z0-9_\\-@\\$]*\\}"},{token:function(e,t){return n.indexOf(e.toLowerCase())>-1?["support.type.property","text"]:["support.type.unknownProperty","text"]},regex:"([a-z0-9-_]+)(\\s*:)"},{token:"keyword",regex:"&"},{token:r,regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z_][a-z0-9-_]*"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|=|!=|-|%|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()};r.inherits(o,i),t.LessHighlightRules=o}),define("ace/mode/slim_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../config").$modes,i=e("../lib/oop"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{token:"keyword",regex:/^(\s*)(\w+):\s*/,onMatch:function(e,t,n,r){var i=/^\s*/.exec(r)[0],s=e.match(/^(\s*)(\w+):/),o=s[2];return/^(javascript|ruby|coffee|markdown|css|scss|sass|less)$/.test(o)||(o=""),n.unshift("language-embed",[],[i,o],t),this.token},stateName:"language-embed",next:[{token:"string",regex:/^(\s*)/,onMatch:function(e,t,n,r){var i=n[2][0];return i.length>=e.length?(n.splice(0,3),this.next=n.shift(),this.token):(this.next="",[{type:"text",value:i}])},next:""},{token:"string",regex:/.+/,onMatch:function(e,t,n,i){var s=n[2][0],o=n[2][1],u=n[1];if(r[o]){var a=r[o].getTokenizer().getLineTokens(i.slice(s.length),u.slice(0));return n[1]=a.state,a.tokens}return this.token}}]},{token:"constant.begin.javascript.filter.slim",regex:"^(\\s*)():$"},{token:"constant.begin..filter.slim",regex:"^(\\s*)(ruby):$"},{token:"constant.begin.coffeescript.filter.slim",regex:"^(\\s*)():$"},{token:"constant.begin..filter.slim",regex:"^(\\s*)(markdown):$"},{token:"constant.begin.css.filter.slim",regex:"^(\\s*)():$"},{token:"constant.begin.scss.filter.slim",regex:"^(\\s*)():$"},{token:"constant.begin..filter.slim",regex:"^(\\s*)(sass):$"},{token:"constant.begin..filter.slim",regex:"^(\\s*)(less):$"},{token:"constant.begin..filter.slim",regex:"^(\\s*)(erb):$"},{token:"keyword.html.tags.slim",regex:"^(\\s*)((:?\\*(\\w)+)|doctype html|abbr|acronym|address|applet|area|article|aside|audio|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dialog|dfn|dir|div|dl|dt|embed|fieldset|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|link|li|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|source|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|xmp|b|u|s|em|a)(?:([.#](\\w|\\.)+)+\\s?)?\\b"},{token:"keyword.slim",regex:"^(\\s*)(?:([.#](\\w|\\.)+)+\\s?)"},{token:"string",regex:/^(\s*)('|\||\/|(\/!))\s*/,onMatch:function(e,t,n,r){var i=/^\s*/.exec(r)[0];return n.length<1?n.push(this.next):n[0]="mlString",n.length<2?n.push(i.length):n[1]=i.length,this.token},next:"mlString"},{token:"keyword.control.slim",regex:"^(\\s*)(\\-|==|=)",push:[{token:"control.end.slim",regex:"$",next:"pop"},{include:"rubyline"},{include:"misc"}]},{token:"paren",regex:"\\(",push:[{token:"paren",regex:"\\)",next:"pop"},{include:"misc"}]},{token:"paren",regex:"\\[",push:[{token:"paren",regex:"\\]",next:"pop"},{include:"misc"}]},{include:"misc"}],mlString:[{token:"indent",regex:/^\s*/,onMatch:function(e,t,n){var r=n[1];return r>=e.length?(this.next="start",n.splice(0)):this.next="mlString",this.token},next:"start"},{defaultToken:"string"}],rubyline:[{token:"keyword.operator.ruby.embedded.slim",regex:"(==|=)(<>|><|<'|'<|<|>)?|-"},{token:"list.ruby.operators.slim",regex:"(\\b)(for|in|do|if|else|elsif|unless|while|yield|not|and|or)\\b"},{token:"string",regex:"['](.)*?[']"},{token:"string",regex:'["](.)*?["]'}],misc:[{token:"class.variable.slim",regex:"\\@([a-zA-Z_][a-zA-Z0-9_]*)\\b"},{token:"list.meta.slim",regex:"(\\b)(true|false|nil)(\\b)"},{token:"keyword.operator.equals.slim",regex:"="},{token:"string",regex:"['](.)*?[']"},{token:"string",regex:'["](.)*?["]'}]},this.normalizeRules()};i.inherits(o,s),t.SlimHighlightRules=o}),define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../config").$modes,i=e("../lib/oop"),s=e("../lib/lang"),o=e("./text_highlight_rules").TextHighlightRules,u=e("./html_highlight_rules").HtmlHighlightRules,a=function(e){return"(?:[^"+s.escapeRegExp(e)+"\\\\]|\\\\.)*"},f=function(){u.call(this);var e={token:"support.function",regex:/^\s*(```+[^`]*|~~~+[^~]*)$/,onMatch:function(e,t,n,i){var s=e.match(/^(\s*)([`~]+)(.*)/),o=/[\w-]+|$/.exec(s[3])[0];return r[o]||(o=""),n.unshift("githubblock",[],[s[1],s[2],o],t),this.token},next:"githubblock"},t=[{token:"support.function",regex:".*",onMatch:function(e,t,n,i){var s=n[1],o=n[2][0],u=n[2][1],a=n[2][2],f=/^(\s*)(`+|~+)\s*$/.exec(e);if(f&&f[1].length=u.length&&f[2][0]==u[0])return n.splice(0,3),this.next=n.shift(),this.token;this.next="";if(a&&r[a]){var l=r[a].getTokenizer().getLineTokens(e,s.slice(0));return n[1]=l.state,l.tokens}return this.token}}];this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s|$)/,next:"header"},e,{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+a("]")+")(\\]\\s*\\[)("+a("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\!?\\[)("+a("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+a('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty_line",regex:"^$",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},e,{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:t}),this.normalizeRules()};i.inherits(f,o),t.MarkdownHighlightRules=f}),define("ace/mode/jade_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/markdown_highlight_rules","ace/mode/scss_highlight_rules","ace/mode/less_highlight_rules","ace/mode/coffee_highlight_rules","ace/mode/javascript_highlight_rules"],function(e,t,n){"use strict";function l(e,t){return{token:"entity.name.function.jade",regex:"^\\s*\\:"+e,next:t+"start"}}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./markdown_highlight_rules").MarkdownHighlightRules,o=e("./scss_highlight_rules").ScssHighlightRules,u=e("./less_highlight_rules").LessHighlightRules,a=e("./coffee_highlight_rules").CoffeeHighlightRules,f=e("./javascript_highlight_rules").JavaScriptHighlightRules,c=function(){var e="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={start:[{token:"keyword.control.import.include.jade",regex:"\\s*\\binclude\\b"},{token:"keyword.other.doctype.jade",regex:"^!!!\\s*(?:[a-zA-Z0-9-_]+)?"},{onMatch:function(e,t,n){return n.unshift(this.next,e.length-2,t),"comment"},regex:/^\s*\/\//,next:"comment_block"},l("markdown","markdown-"),l("sass","sass-"),l("less","less-"),l("coffee","coffee-"),{token:["storage.type.function.jade","entity.name.function.jade","punctuation.definition.parameters.begin.jade","variable.parameter.function.jade","punctuation.definition.parameters.end.jade"],regex:"^(\\s*mixin)( [\\w\\-]+)(\\s*\\()(.*?)(\\))"},{token:["storage.type.function.jade","entity.name.function.jade"],regex:"^(\\s*mixin)( [\\w\\-]+)"},{token:"source.js.embedded.jade",regex:"^\\s*(?:-|=|!=)",next:"js-start"},{token:"string.interpolated.jade",regex:"[#!]\\{[^\\}]+\\}"},{token:"meta.tag.any.jade",regex:/^\s*(?!\w+:)(?:[\w-]+|(?=\.|#)])/,next:"tag_single"},{token:"suport.type.attribute.id.jade",regex:"#\\w+"},{token:"suport.type.attribute.class.jade",regex:"\\.\\w+"},{token:"punctuation",regex:"\\s*(?:\\()",next:"tag_attributes"}],comment_block:[{regex:/^\s*(?:\/\/)?/,onMatch:function(e,t,n){return e.length<=n[1]?e.slice(-1)=="/"?(n[1]=e.length-2,this.next="","comment"):(n.shift(),n.shift(),this.next=n.shift(),"text"):(this.next="","comment")},next:"start"},{defaultToken:"comment"}],tag_single:[{token:"entity.other.attribute-name.class.jade",regex:"\\.[\\w-]+"},{token:"entity.other.attribute-name.id.jade",regex:"#[\\w-]+"},{token:["text","punctuation"],regex:"($)|((?!\\.|#|=|-))",next:"start"}],tag_attributes:[{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:["entity.other.attribute-name.jade","punctuation"],regex:"([a-zA-Z:\\.-]+)(=)?",next:"attribute_strings"},{token:"punctuation",regex:"\\)",next:"start"}],attribute_strings:[{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"string",regex:"(?=\\S)",next:"tag_attributes"}],qqstring:[{token:"constant.language.escape",regex:e},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"tag_attributes"}],qstring:[{token:"constant.language.escape",regex:e},{token:"string",regex:"[^'\\\\]+"},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"tag_attributes"}]},this.embedRules(f,"js-",[{token:"text",regex:".$",next:"start"}])};r.inherits(c,i),t.JadeHighlightRules=c}),define("ace/mode/vue_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/css_highlight_rules","ace/mode/typescript_highlight_rules","ace/mode/coffee_highlight_rules","ace/mode/html_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/stylus_highlight_rules","ace/mode/sass_highlight_rules","ace/mode/scss_highlight_rules","ace/mode/less_highlight_rules","ace/tokenizer","ace/mode/slim_highlight_rules","ace/mode/jade_highlight_rules","ace/mode/javascript"],function(e,t,n){"use strict";var r=this&&this.__read||function(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),i,s=[],o;try{while((t===void 0||t-->0)&&!(i=r.next()).done)s.push(i.value)}catch(u){o={error:u}}finally{try{i&&!i.done&&(n=r["return"])&&n.call(r)}finally{if(o)throw o.error}}return s},i=this&&this.__spreadArray||function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,s;r]*"+r+"\\s*=\\s*['\"]"+n+"['\"]))":"(?=\\s|>|$))";this.$rules.start.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+t+".tag-name.xml"],regex:"(<)("+t+i,next:[{token:"meta.tag.punctuation.tag-close."+t+".xml",regex:"/?>",next:n+"-start"},{include:"attributes"}]}),this.$rules[t+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,n+"-",[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+t+".tag-name.xml"],regex:"(|$))",next:t+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])};var t=[{include:"vue-interpolations"}],n=(new f).getRules();n.start=t.concat(n.start),n["vue-interpolations"]=[{token:"punctuation",regex:/\{\{\{?/,next:"js-interpolation-start"}];var s=this;n.tag_stuff.unshift({token:"string",regex:/(?:\b(v-)|(:|@))(\[?[a-zA-Z\-.]+\]?)(?:(\:\[?[a-zA-Z\-]+\]?))?((?:\.[a-zA-Z\-]+)*)(\s*)(=)(\s*)(["'])/,onMatch:function(e,t,n){var r=e[e.length-1];n.unshift(r,t);var i=(new RegExp(this.regex)).exec(e);if(!i)return"text";var s=[],o=["entity.other.attribute-name.xml","punctuation.separator.key-value.xml","entity.other.attribute-name.xml","entity.other.attribute-name.xml","entity.other.attribute-name.xml","text","punctuation.separator.key-value.xml","text","string"];for(var u=0,a=o.length;u1){n.shift();var l=n.shift(),c=(new v(s.$rules)).getLineTokens(a.slice(1).join(u),l);c.tokens.unshift({type:"string",value:u}),this.next=Array.isArray(c.state)?c.state[c.state.length-1]:c.state}var h=(new y).getTokenizer().getLineTokens(f,"start"),p=h.tokens;return c&&p.push.apply(p,i([],r(c.tokens),!1)),p}}]},{token:"string",regex:'"',next:[{token:"string",regex:'"|$',next:"tag_stuff"},{include:"vue-interpolations"},{defaultToken:"string"}]},{token:"string",regex:"'",next:[{token:"string",regex:"'|$",next:"tag_stuff"},{include:"vue-interpolations"},{defaultToken:"string"}]}),this.$rules=n,this.embedRules(l,"js-interpolation-",[{token:"punctuation",regex:/\}\}\}?/,next:"start"}]),this.embedLangRules(o,"style","css"),this.embedLangRules(c,"style","stylus","lang"),this.embedLangRules(h,"style","sass","lang"),this.embedLangRules(p,"style","scss","lang"),this.embedLangRules(d,"style","less","lang"),this.embedLangRules(u,"script","ts","lang"),this.embedLangRules(a,"script","coffee","lang"),this.embedLangRules(m,"template","slm","lang"),this.embedLangRules(g,"template","jade","lang"),this.embedLangRules(c,"template","stylus","lang"),this.normalizeRules()};s.inherits(b,f),t.VueHighlightRules=b}),define("ace/mode/vue",["require","exports","module","ace/lib/oop","ace/mode/folding/html","ace/lib/lang","ace/mode/behaviour/xml","ace/mode/html_completions","ace/mode/html","ace/mode/vue_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./folding/html").FoldMode,s=e("../lib/lang"),o=e("./behaviour/xml").XmlBehaviour,u=e("./html_completions").HtmlCompletions,a=e("./html").Mode,f=e("./vue_highlight_rules").VueHighlightRules,l=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],c=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],h=function(){this.HighlightRules=f,this.foldingRules=new i(this.voidElements,s.arrayToMap(c)),this.$behaviour=new o,this.$completer=new u};r.inherits(h,a),function(){this.blockComment={start:""},this.voidElements=s.arrayToMap(l),this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.$id="ace/mode/vue"}.call(h.prototype),t.Mode=h}); (function() { - window.require(["ace/mode/vue"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-wollok.js b/www/js/ace/mode-wollok.js deleted file mode 100644 index 5e13e128b..000000000 --- a/www/js/ace/mode-wollok.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.JsDocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(t);var n={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[n,t,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},n=this.createKeywordMapper(t,"identifier"),r="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",u="(function)(\\s*)(\\*?)",l={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(t).join("|")+"\\b)"+o+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),l,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+u+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+r+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:n,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:u+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[f("function_arguments"),{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+o+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var o=n.getSelectionRange().start,u=new i(r,o.row,o.column),a=u.getCurrentToken()||u.stepBackward();if(!a)return;if(a.value=="<")return{text:">",selection:[1,1]}}})};r.inherits(u,s),t.JavaScriptBehaviour=u}),define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";function a(e,t){return e&&e.type&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;of)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./xml").FoldMode,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end))),this.xmlFoldMode=new i};r.inherits(o,s),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);return r?r:this.xmlFoldMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n,r){var i=this.getFoldWidgetRangeBase(e,t,n,r);return i?i:this.xmlFoldMode.getFoldWidgetRange(e,t,n)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/javascript").JavaScriptBehaviour,f=e("./folding/javascript").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start")if(o=="start"||o=="no_regex")return"";return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},s.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/wollok_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="test|describe|package|inherits|false|import|else|or|class|and|not|native|override|program|self|try|const|var|catch|object|super|throw|if|null|return|true|new|constructor|method|mixin",t="null|assert|console",n="Object|Pair|String|Boolean|Number|Integer|Double|Collection|Set|List|Exception|Range|StackTraceElement",r=this.createKeywordMapper({"variable.language":"self",keyword:e,"constant.language":t,"support.function":n},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"===|&&|\\*=|\\.\\.|\\*\\*|#|!|%|\\*|\\?:|\\+|\\/|,|\\+=|\\-|\\.\\.<|!==|:|\\/=|\\?\\.|\\+\\+|>|=|<|>=|=>|==|\\]|\\[|\\-=|\\->|\\||\\-\\-|<>|!=|%=|\\|"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.WollokHighlightRules=o}),define("ace/mode/wollok",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/wollok_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./wollok_highlight_rules").WollokHighlightRules,o=function(){i.call(this),this.HighlightRules=s,this.$behaviour=this.$defaultBehaviour};r.inherits(o,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/wollok",this.snippetFileId="ace/snippets/wollok"}.call(o.prototype),t.Mode=o}); (function() { - window.require(["ace/mode/wollok"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-xml.js b/www/js/ace/mode-xml.js deleted file mode 100644 index 81a650345..000000000 --- a/www/js/ace/mode-xml.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value==="-1}var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e,t){s.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(o,s);var u=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t==="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(a(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o"},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/xml_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/xml"}.call(l.prototype),t.Mode=l}); (function() { - window.require(["ace/mode/xml"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-xquery.js b/www/js/ace/mode-xquery.js deleted file mode 100644 index 359bdb02e..000000000 --- a/www/js/ace/mode-xquery.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/xquery/xquery_lexer",["require","exports","module"],function(e,t,n){n.exports=function r(t,n,i){function o(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&&f)return f(u,!0);if(s)return s(u,!0);var l=new Error("Cannot find module '"+u+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[u]={exports:{}};t[u][0].call(c.exports,function(e){var n=t[u][1][e];return o(n?n:e)},c,c.exports,r,t,n,i)}return n[u].exports}var s=typeof e=="function"&&e;for(var u=0;ux?x:w),m=b,g=w,y=0):d(b,w,0,y,e)}function l(){g!=b&&(m=g,g=b,E.whitespace(m,g))}function c(e){var t;for(;;){t=C(e);if(t!=28)break}return t}function h(e){y==0&&(y=c(e),b=T,w=N)}function p(e){y==0&&(y=C(e),b=T,w=N)}function d(e,t,r,i,s){throw new n.ParseException(e,t,r,i,s)}function C(e){var t=!1;T=N;var n=N,r=i.INITIAL[e],s=0;for(var o=r&4095;o!=0;){var u,a=n>4;u=i.MAP1[(a&15)+i.MAP1[(f&31)+i.MAP1[f>>5]]]}else{if(a<56320){var f=n=56320&&f<57344&&(++n,a=((a&1023)<<10)+(f&1023)+65536,t=!0)}var l=0,c=5;for(var h=3;;h=c+l>>1){if(i.MAP2[h]>a)c=h-1;else{if(!(i.MAP2[6+h]c){u=0;break}}}s=o;var p=(u<<12)+o-1;o=i.TRANSITION[(p&15)+i.TRANSITION[p>>4]],o>4095&&(r=o,o&=4095,N=n)}r>>=12;if(r==0){N=n-1;var f=N=56320&&f<57344&&--N,d(T,N,s,-1,-1)}if(t)for(var v=r>>9;v>0;--v){--N;var f=N=56320&&f<57344&&--N}else N-=r>>9;return(r&511)-1}r(e,t);var n=this;this.ParseException=function(e,t,n,r,i){var s=e,o=t,u=n,a=r,f=i;this.getBegin=function(){return s},this.getEnd=function(){return o},this.getState=function(){return u},this.getExpected=function(){return f},this.getOffending=function(){return a},this.getMessage=function(){return a<0?"lexical analysis failed":"syntax error"}},this.getInput=function(){return S},this.getOffendingToken=function(e){var t=e.getOffending();return t>=0?i.TOKEN[t]:null},this.getExpectedTokenSet=function(e){var t;return e.getExpected()<0?t=i.getTokenSet(-e.getState()):t=[i.TOKEN[e.getExpected()]],t},this.getErrorMessage=function(e){var t=this.getExpectedTokenSet(e),n=this.getOffendingToken(e),r=S.substring(0,e.getBegin()),i=r.split("\n"),s=i.length,o=i[s-1].length+1,u=e.getEnd()-e.getBegin();return e.getMessage()+(n==null?"":", found "+n)+"\nwhile expecting "+(t.length==1?t[0]:"["+t.join(", ")+"]")+"\n"+(u==0||n!=null?"":"after successfully scanning "+u+" characters beginning ")+"at line "+s+", column "+o+":\n..."+S.substring(e.getBegin(),Math.min(S.length,e.getBegin()+64))+"..."},this.parse_start=function(){E.startNonterminal("start",g),h(14);switch(y){case 55:f(55);break;case 54:f(54);break;case 56:f(56);break;case 40:f(40);break;case 42:f(42);break;case 41:f(41);break;case 35:f(35);break;case 38:f(38);break;case 274:f(274);break;case 271:f(271);break;case 39:f(39);break;case 43:f(43);break;case 49:f(49);break;case 62:f(62);break;case 63:f(63);break;case 46:f(46);break;case 48:f(48);break;case 53:f(53);break;case 51:f(51);break;case 34:f(34);break;case 273:f(273);break;case 2:f(2);break;case 1:f(1);break;case 3:f(3);break;case 12:f(12);break;case 13:f(13);break;case 15:f(15);break;case 16:f(16);break;case 17:f(17);break;case 5:f(5);break;case 6:f(6);break;case 4:f(4);break;case 33:f(33);break;default:o()}E.endNonterminal("start",g)},this.parse_StartTag=function(){E.startNonterminal("StartTag",g),h(8);switch(y){case 58:f(58);break;case 50:f(50);break;case 27:f(27);break;case 57:f(57);break;case 35:f(35);break;case 38:f(38);break;default:f(33)}E.endNonterminal("StartTag",g)},this.parse_TagContent=function(){E.startNonterminal("TagContent",g),p(11);switch(y){case 23:f(23);break;case 6:f(6);break;case 7:f(7);break;case 55:f(55);break;case 54:f(54);break;case 18:f(18);break;case 29:f(29);break;case 272:f(272);break;case 275:f(275);break;case 271:f(271);break;default:f(33)}E.endNonterminal("TagContent",g)},this.parse_AposAttr=function(){E.startNonterminal("AposAttr",g),p(10);switch(y){case 20:f(20);break;case 25:f(25);break;case 18:f(18);break;case 29:f(29);break;case 272:f(272);break;case 275:f(275);break;case 271:f(271);break;case 38:f(38);break;default:f(33)}E.endNonterminal("AposAttr",g)},this.parse_QuotAttr=function(){E.startNonterminal("QuotAttr",g),p(9);switch(y){case 19:f(19);break;case 24:f(24);break;case 18:f(18);break;case 29:f(29);break;case 272:f(272);break;case 275:f(275);break;case 271:f(271);break;case 35:f(35);break;default:f(33)}E.endNonterminal("QuotAttr",g)},this.parse_CData=function(){E.startNonterminal("CData",g),p(1);switch(y){case 11:f(11);break;case 64:f(64);break;default:f(33)}E.endNonterminal("CData",g)},this.parse_XMLComment=function(){E.startNonterminal("XMLComment",g),p(0);switch(y){case 9:f(9);break;case 47:f(47);break;default:f(33)}E.endNonterminal("XMLComment",g)},this.parse_PI=function(){E.startNonterminal("PI",g),p(3);switch(y){case 10:f(10);break;case 59:f(59);break;case 60:f(60);break;default:f(33)}E.endNonterminal("PI",g)},this.parse_Pragma=function(){E.startNonterminal("Pragma",g),p(2);switch(y){case 8:f(8);break;case 36:f(36);break;case 37:f(37);break;default:f(33)}E.endNonterminal("Pragma",g)},this.parse_Comment=function(){E.startNonterminal("Comment",g),p(4);switch(y){case 52:f(52);break;case 41:f(41);break;case 30:f(30);break;default:f(33)}E.endNonterminal("Comment",g)},this.parse_CommentDoc=function(){E.startNonterminal("CommentDoc",g),p(5);switch(y){case 31:f(31);break;case 32:f(32);break;case 52:f(52);break;case 41:f(41);break;default:f(33)}E.endNonterminal("CommentDoc",g)},this.parse_QuotString=function(){E.startNonterminal("QuotString",g),p(6);switch(y){case 18:f(18);break;case 29:f(29);break;case 19:f(19);break;case 21:f(21);break;case 35:f(35);break;default:f(33)}E.endNonterminal("QuotString",g)},this.parse_AposString=function(){E.startNonterminal("AposString",g),p(7);switch(y){case 18:f(18);break;case 29:f(29);break;case 20:f(20);break;case 22:f(22);break;case 38:f(38);break;default:f(33)}E.endNonterminal("AposString",g)},this.parse_Prefix=function(){E.startNonterminal("Prefix",g),h(13),l(),a(),E.endNonterminal("Prefix",g)},this.parse__EQName=function(){E.startNonterminal("_EQName",g),h(12),l(),o(),E.endNonterminal("_EQName",g)};var v,m,g,y,b,w,E,S,x,T,N};r.getTokenSet=function(e){var t=[],n=e<0?-e:INITIAL[e]&4095;for(var i=0;i<276;i+=32){var s=i,o=(i>>5)*2062+n-1,u=o>>2,a=u>>2,f=r.EXPECTED[(o&3)+r.EXPECTED[(u&3)+r.EXPECTED[(a&3)+r.EXPECTED[a>>2]]]];for(;f!=0;f>>>=1,++s)(f&1)!=0&&t.push(r.TOKEN[s])}return t},r.MAP0=[66,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18,18,18,18,18,18,18,18,19,20,21,22,23,24,25,26,27,28,29,30,27,31,31,31,31,31,31,31,31,31,31,32,31,31,33,31,31,31,31,31,31,34,35,36,35,31,35,37,38,39,40,41,42,43,44,45,31,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,31,61,62,63,64,35],r.MAP1=[108,124,214,214,214,214,214,214,214,214,214,214,214,214,214,214,156,181,181,181,181,181,214,215,213,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,247,261,277,293,309,347,363,379,416,416,416,408,331,323,331,323,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,433,433,433,433,433,433,433,316,331,331,331,331,331,331,331,331,394,416,416,417,415,416,416,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,330,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,416,66,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18,18,18,18,18,18,18,18,19,20,21,22,23,24,25,26,27,28,29,30,27,31,31,31,31,31,31,31,31,31,31,31,31,31,31,35,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,32,31,31,33,31,31,31,31,31,31,34,35,36,35,31,35,37,38,39,40,41,42,43,44,45,31,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,31,61,62,63,64,35,35,35,35,35,35,35,35,35,35,35,35,31,31,35,35,35,35,35,35,35,65,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65],r.MAP2=[57344,63744,64976,65008,65536,983040,63743,64975,65007,65533,983039,1114111,35,31,35,31,31,35],r.INITIAL=[1,2,36867,45060,5,6,7,8,9,10,11,12,13,14,15],r.TRANSITION=[17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22908,18836,17152,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,17365,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,17470,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,18157,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,17848,17880,18731,17918,36551,17292,17934,17979,18727,18023,36545,18621,18039,18056,18072,18117,18143,18173,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17687,18805,18421,18437,18101,17393,18489,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,18579,21711,17152,19008,19233,20367,19008,28684,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,17365,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,17470,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,18157,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,17848,17880,18731,17918,36551,17292,17934,17979,18727,18023,36545,18621,18039,18056,18072,18117,18143,18173,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17687,18805,18421,18437,18101,17393,18489,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,20116,18836,18637,19008,19233,21267,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,18763,18778,18794,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,18821,22923,18906,19008,19233,17431,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18937,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,19054,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,18953,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21843,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21696,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22429,20131,18720,19008,19233,20367,19008,17173,23559,36437,17330,17349,18921,17189,17208,17281,20355,18087,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,21242,19111,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,19024,18836,18609,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,19081,22444,18987,19008,19233,20367,19008,19065,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21992,22007,18987,19008,19233,20367,19008,18690,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22414,18836,18987,19008,19233,30651,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,19138,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,19280,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,19172,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21783,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,19218,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21651,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,19249,19265,19307,18888,27857,30536,24401,31444,23357,18888,19351,18888,18890,27211,19370,27211,27211,19392,24401,31911,24401,24401,25467,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,19440,24401,24401,24401,24401,24036,17994,24060,18888,18888,18888,18890,19468,27211,27211,27211,27211,19484,35367,19520,24401,24401,24401,19628,18888,29855,18888,18888,23086,27211,19538,27211,27211,30756,24012,24401,19560,24401,24401,26750,18888,18888,19327,27855,27211,27211,19580,17590,24017,24401,24401,19600,25665,18888,18888,28518,27211,27212,24016,19620,19868,28435,25722,18889,19644,27211,32888,35852,19868,31018,19694,19376,19717,22215,19735,22098,19751,35203,19776,19797,19817,19840,25783,31738,24135,19701,19856,31015,23516,31008,28311,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21768,18836,19307,18888,27857,27904,24401,29183,28015,18888,18888,18888,18890,27211,27211,27211,27211,19888,24401,24401,24401,24401,22953,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,19440,24401,24401,24401,24401,24036,18881,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22399,18836,19918,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21666,18836,19307,18888,27857,27525,24401,29183,21467,18888,18888,18888,18890,27211,27211,27211,27211,19946,24401,24401,24401,24401,32382,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,19998,24401,24401,24401,24401,31500,18467,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,20021,24401,24401,24401,24401,24401,34271,18888,18888,18888,18888,23086,27211,27211,27211,27211,32926,29908,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,20050,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,20101,19039,20191,20412,20903,17569,20309,20872,25633,20623,20505,20218,20242,17189,17208,17281,20355,20265,20306,20328,20383,22490,20796,20619,21354,20654,20410,20956,21232,20765,17421,20535,17192,18127,22459,20312,25531,22470,20309,20428,18964,20466,20491,21342,21070,20521,20682,17714,18326,17543,17559,17585,22497,20559,19504,20279,20575,20290,20475,20604,20639,20226,20670,17661,21190,17703,21176,17730,19494,20698,20711,22480,21046,21116,18971,21130,20727,20755,17675,17753,17832,17590,25518,20394,20781,20831,20202,20847,21401,17292,17934,17979,18549,20863,20588,25542,20888,20919,18072,18117,20935,20972,21032,21062,21086,18239,21102,18563,21146,21162,21206,18351,20949,20902,18340,21222,21258,21283,18360,20249,17405,21295,21311,21327,20739,20343,21370,21386,21417,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21977,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,21452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,21504,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,36501,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,28674,21946,17617,36473,18223,17237,17477,19152,17860,17892,17675,17753,17832,21575,21534,17481,19156,17864,18731,17918,36551,17292,17934,21560,30628,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21798,18836,21612,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21636,18836,18987,19008,19233,17902,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21753,19096,21903,19008,19233,20367,19008,19291,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,17379,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,21931,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,18280,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21962,18594,18987,19008,19233,22043,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21681,21858,18987,19008,19233,20367,19008,21544,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,32319,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,22231,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,31678,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,33588,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,35019,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22248,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22324,18836,22059,18888,27857,30501,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,34365,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22354,18836,18987,19008,19233,20367,19008,17173,27086,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,19930,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21828,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22309,22513,18987,19008,19233,20367,19008,19122,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,22544,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22608,18836,22988,23004,27585,23020,23036,23067,22087,18888,18888,18888,23083,27211,27211,27211,23102,22121,24401,24401,24401,23122,31386,26154,19674,18888,28119,28232,19424,23705,27211,27211,23142,23173,23189,23212,24401,24401,23246,34427,31693,23262,18888,23290,23308,27783,27620,23327,35263,35107,33383,23346,18193,23393,32748,23968,24401,23414,35153,23463,18888,33913,23442,23482,27211,27211,23532,23552,21431,23575,24401,24401,23604,26095,23635,23657,18888,33482,23685,33251,27211,22187,18851,23721,35536,24401,18887,23750,32641,27211,23769,23787,20080,33012,24384,25659,18888,18889,27211,27211,19719,23889,23803,31018,18890,27211,31833,19406,19447,23086,23330,19828,28224,31826,23823,26917,34978,23850,26493,25782,23878,23914,23516,31008,22105,19419,27963,19659,29781,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22623,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,28909,25783,27211,27211,27211,34048,23933,22164,24401,24401,24401,28409,23949,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,26583,18888,18888,18888,35585,23984,27211,27211,27211,24005,22201,24033,24401,24401,24401,24052,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,26496,24076,24126,24151,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22638,18836,22059,19678,27857,24185,24401,24201,24217,26592,18888,18888,18890,24252,24268,27211,27211,22121,24287,24303,24401,24401,30613,19781,35432,36007,32649,18888,25783,24322,28966,23771,27211,35072,22164,24358,32106,26829,24400,31500,31693,18888,18888,18888,24801,18890,27211,27211,27211,27211,24418,19484,24401,24401,24401,24401,20167,31181,18888,18888,18888,27833,23086,27211,27211,33540,27211,30756,21431,24401,24401,22972,24401,26095,18888,36131,18888,27855,27211,24440,27211,22187,22968,24401,24459,24401,31699,28454,18888,34528,34570,35779,24478,24402,24494,25659,18888,36228,27211,27211,24515,30981,23734,31018,18890,27211,31833,19406,19447,23086,23330,24538,31017,27856,31741,30059,23377,24563,19837,25782,19760,31015,23516,25374,22105,19419,29793,24579,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22653,18836,22059,25756,19982,34097,23196,29183,24614,24110,23641,24673,26103,24697,24443,24713,28558,22121,24748,24462,24764,23398,30613,18888,18888,18888,18888,24798,25783,27211,27211,27211,34232,35072,22164,24401,24401,24401,33302,31500,22559,24106,24232,18888,18888,34970,24817,30411,27211,27211,32484,19484,29750,35127,24401,24401,19872,31181,24852,18888,18888,24871,29221,27211,27211,32072,27211,30756,34441,24401,24401,31571,24401,26095,33141,27802,27011,27855,25295,25607,24888,22187,22968,19195,34593,24906,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,33663,27211,27211,24924,24947,23588,31018,18890,27211,31833,22135,19447,23086,23330,19828,30904,31042,24972,19840,25e3,31738,30898,25782,19760,31015,23516,31008,22105,19419,25016,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22668,18836,25041,25057,31320,25073,25089,25105,22087,34796,24236,36138,34870,34125,25121,23106,35497,22248,36613,25137,30671,27365,30613,25153,26447,25199,25233,22574,23274,25249,25265,25281,25318,25344,25360,25400,25428,25452,26731,25504,31693,23669,25558,27407,25575,28599,25934,25599,27211,28180,27304,25623,25839,25649,24401,34820,25681,25698,22586,27775,30190,25745,25778,25799,25817,28995,33569,30756,21518,33443,25837,25855,25893,26095,31254,26677,30136,27855,25930,25950,27211,22187,22968,25966,25986,24401,23428,27763,36330,26959,26002,26029,26045,26085,26119,26170,26203,26222,26239,30527,26372,26274,28404,31018,33757,27211,34262,26316,36729,26345,26366,35337,31017,26388,26407,30954,26350,33861,26434,26463,26479,26512,23516,33189,26531,26547,27963,31293,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22683,18836,26568,26181,26608,34097,26643,29183,22087,26669,18888,18888,18890,26693,27211,27211,27211,22121,26720,24401,24401,24401,30613,18888,18888,18888,18888,26774,25783,27211,27211,27211,26619,35072,22164,24401,24401,24401,21596,31500,31693,18888,18888,33978,18888,18890,27211,27211,25801,27211,27211,19484,24401,24401,24401,26792,24401,31181,18888,18888,18888,35464,23086,27211,27211,27211,26809,30756,21431,24401,24401,24401,26828,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,31948,18889,35707,27211,19719,26845,19868,31018,18890,27211,31833,19406,19447,23086,23330,26905,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,24984,31088,19419,26945,27651,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22698,18836,26999,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,23051,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,27033,24401,24401,24401,24401,24036,31693,18888,18888,27056,18888,18890,27211,27211,30320,27211,27211,27075,24401,24401,29032,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,33986,27855,27211,27211,27102,17590,24017,24401,24401,27123,27144,36254,27162,27210,27228,28500,18187,34842,33426,27244,35980,27277,27302,27320,36048,34013,20999,31882,21478,27895,27356,30287,27381,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,26329,30087,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,27406,27423,27445,35294,27461,22087,18888,18888,30140,18890,27211,27211,27989,27211,22121,24401,24401,25682,24401,18866,18888,18888,18888,18888,18888,34042,27211,27211,27211,27211,29700,22164,24401,24401,24401,24401,27128,31693,27477,18888,18888,18888,18890,27194,27211,27211,27211,27211,19484,35299,24401,24401,24401,24401,19628,18888,18888,18888,27059,23086,27211,27211,27211,33366,30756,24012,24401,24401,24401,35044,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,20815,27211,30818,19960,33969,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22713,18836,22059,27496,27516,27541,35231,27557,22087,29662,26292,23292,27573,24836,27601,27211,27636,22121,35544,27686,24401,27721,18866,18888,27799,18888,27818,22071,27853,32260,27211,26013,27873,27920,22164,29419,24401,29946,33413,26742,27751,26881,18888,18888,27261,36776,27936,27211,27211,27211,27988,28005,28031,28052,24401,24401,28069,28088,28135,25488,28152,26069,28167,27211,28340,24657,28196,30756,31523,24401,28212,34176,36174,24956,28248,28266,28290,21488,33077,28327,28356,17590,20986,23126,28391,28425,28102,28451,28470,28490,28516,28534,20034,33728,25868,25659,18888,18889,27211,27211,19719,23889,19868,30241,28274,28553,28574,19406,28590,23086,23330,19828,19452,28615,28660,26147,25783,31738,19837,25782,19760,29613,35958,29276,22105,19419,27963,23157,28700,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,22528,18888,18888,18888,18888,18890,27333,27211,27211,27211,27211,19484,30853,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22728,18836,28747,28782,28817,28841,28857,28880,28896,24161,28943,32011,36261,27340,28961,29492,28982,29011,24522,29027,25436,29048,23051,27500,29090,29110,30713,18888,23512,29130,25183,27211,29155,28927,27033,29173,23230,24401,29199,35373,31693,18888,18888,25583,32629,29218,27211,27211,31461,30692,29237,27075,24401,24401,24401,29262,29302,19628,18888,34329,18888,18888,23086,27211,29329,27211,27211,30756,24012,35933,24401,24401,24401,27705,31612,18888,18888,29346,29374,27211,35650,17590,21436,29393,24401,25970,18887,33895,18888,27211,32528,27212,24016,32769,19868,25659,18888,26889,27211,27211,29412,23889,24371,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31768,19840,25783,31738,19837,29435,29508,31102,29550,29606,22105,30300,29462,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22743,18836,22059,29629,29473,34097,33285,29183,29651,27254,18888,29678,33329,32535,27211,29694,29716,22121,19202,24401,32742,29741,18866,26776,33921,28474,18888,18888,25783,29766,27211,29809,27211,35072,22164,35825,24401,29828,24401,24036,36769,25217,18888,18888,29848,18890,27211,29871,27211,26258,27211,29894,24401,29929,24401,36587,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,29725,29962,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18473,18888,18888,19584,27211,27212,24016,29982,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19902,19447,32052,19544,19828,29998,30097,30031,19840,25783,30047,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,30075,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22758,18836,30121,30156,30206,30257,30273,30336,22087,35624,32837,25762,18890,29878,34934,26812,27211,22121,24931,23223,29202,24401,18866,34373,30352,18888,18888,18888,23447,24828,27211,27211,27211,35072,30370,35052,24401,24401,24401,24036,29523,18888,18888,27146,18888,31308,30386,27211,27211,30405,30558,19484,30427,24401,24401,29938,35686,19628,28766,30447,34506,35614,23086,28731,30482,30517,30552,30756,24012,20156,30574,30598,30667,26283,33464,28945,27670,30687,32915,33504,25328,17590,23963,20450,33837,21016,32397,26300,30708,30729,27885,30748,21588,36373,30779,26653,24628,33220,32514,30806,31835,25412,25906,26515,18890,28825,31833,26133,19447,28304,31730,23834,26057,30869,30885,32181,30920,30942,32797,25782,30970,31015,23516,31008,30997,31034,27963,19659,29450,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22773,18836,31058,31074,32463,31125,31141,31197,22087,18888,29534,35471,36738,27211,24342,31213,24424,22121,24401,20175,31229,31917,27736,31245,34334,27175,18888,29094,27286,27211,31278,31336,27211,31355,31371,24401,31402,31418,24401,31437,31693,18888,31619,32841,18888,18890,27211,27211,31460,31477,27211,19484,24401,24401,31497,36581,24401,33020,18888,18888,18888,18888,30007,27211,27211,27211,27211,31516,32310,24401,24401,24401,24401,31539,18888,28762,18888,24651,35740,27211,27211,28644,31565,35796,24401,24401,19318,32188,18888,24334,28366,27212,29966,29832,19868,25659,18888,18889,27211,27211,19719,31587,19868,31635,32435,33693,30105,31663,20005,31715,31757,31784,31812,30015,31851,31878,25783,31898,19837,25782,19760,31015,23516,31008,22105,19419,27963,31933,30221,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22788,18836,22059,25729,30466,31968,24306,31984,32e3,32807,35160,27017,29590,34941,19801,29377,33700,22121,27040,30431,29396,28864,29565,18888,18888,18888,32027,18888,25783,27211,27211,23698,27211,35072,22164,24401,24401,30845,24401,24036,32045,18888,26929,18888,18888,18890,27211,31481,32068,27211,27211,32088,24401,33058,32122,24401,24401,33736,18888,18888,33162,18888,23086,27211,27211,29484,27211,28375,32144,24401,24401,33831,24401,26750,18888,18888,18888,27855,27211,27211,27211,36704,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,33107,22171,33224,24271,32169,31017,27856,31741,19840,25783,31738,30234,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,32204,32232,32252,32677,33295,29074,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,23619,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,32276,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,32299,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,33886,18889,36065,27211,19719,35326,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22803,18836,32335,31647,34666,32351,32367,32417,22087,18888,32433,19335,32451,27211,32479,27107,32500,22121,24401,32551,20085,32572,18866,22287,23753,18888,18888,32602,32665,27211,32693,27211,26972,32713,32729,24401,32764,24401,25877,32785,34768,18888,27390,32823,24594,24855,32857,24890,32878,32904,27211,32942,32977,24401,33e3,29313,24401,30790,26206,27666,33904,18888,23086,36353,27211,33036,27211,30756,24012,32153,24401,33056,24401,35861,18888,18888,30354,27972,27211,27211,33800,17590,20145,24401,24401,34638,20811,18888,18888,33074,27211,27212,36167,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,34616,24169,33093,33123,33157,27856,31741,23862,26552,34302,19837,25782,19760,31015,23516,31008,33178,19973,27963,23497,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22818,18836,33205,28113,33240,34097,33275,29183,22087,33318,35438,18888,18890,33345,26391,33382,27211,22121,33399,28072,33442,24401,18866,22232,18888,33459,18888,18888,33480,33498,25175,27211,27211,26704,22164,24775,35239,24401,24401,25914,29580,18888,18888,31109,25211,33520,33539,27211,27211,33556,36284,19484,33585,24401,24401,33604,32556,19628,18888,18888,31262,33658,23086,27211,27211,33679,27211,30756,24012,24401,24401,33716,24401,26854,27480,18888,33752,27855,33259,34701,27211,17590,32102,24782,23807,24401,18887,18888,18888,27211,27211,27212,33773,36105,19868,25659,18888,23368,27211,29157,19719,23889,34454,29286,18890,33794,25302,33816,19447,34079,33853,31862,31017,27856,31741,33877,28920,33937,19837,30461,34002,22276,36041,34029,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22833,18836,34064,32616,34113,34141,34157,34192,34208,32216,36013,31549,31952,34224,34248,34287,29330,34350,34389,34413,34481,26793,18866,26187,29635,22293,18888,36654,25783,34522,34544,34566,25821,35072,22164,34586,34609,34632,19604,24036,36644,36674,24681,18888,32401,34654,31339,34682,34698,27211,34717,34753,28053,34812,34836,24401,33619,19628,34858,32236,34906,24598,33523,27612,34890,34922,24732,29246,36717,33634,34465,32984,34168,26750,34957,18888,18888,34994,35010,27211,33040,17590,29913,35035,24401,36304,25482,30171,35883,35068,35088,26627,20441,31173,35123,35143,35176,24640,30492,29358,19719,35192,35219,25384,28801,35255,35279,32586,34496,23086,23330,29061,31017,27856,31741,19840,25783,31738,24547,25164,35315,31796,35353,34316,22105,19419,27963,24091,28630,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22848,18836,22059,34782,34088,35389,21008,35405,35421,35454,18888,18888,23466,35487,27211,27211,27211,35513,31154,24401,24401,24401,35560,18888,26863,36664,35601,24872,25783,30389,23536,26250,35647,35666,22164,19522,19564,30582,35682,27697,35575,29114,18888,18888,18888,18890,27211,35702,27211,27211,27211,35723,24401,35527,24401,24401,24401,19628,30184,18888,18888,18888,23086,35739,27211,27211,27211,29139,22938,24401,24401,24401,24401,23898,35756,18888,18888,25025,35778,27211,27211,17590,20064,35795,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,23917,18890,34550,31833,22262,19447,23086,23330,26418,31017,27856,31741,19840,25783,35812,19837,27187,35841,33135,23516,31008,22105,22148,28712,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22863,18836,22059,35877,28723,34097,31164,29183,22087,26758,18888,22592,18890,23989,27211,29812,27211,22121,33778,24401,31421,24401,18866,18888,18888,26872,18888,18888,25783,27211,30732,27211,27211,35072,22164,24401,24908,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22878,18836,22059,27837,27857,35899,24401,35915,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31602,18888,18888,18888,18888,26223,27211,27211,27211,27211,27211,19484,35931,24401,24401,24401,24401,19628,18888,28136,18888,18888,35949,27211,32862,27211,32697,30756,24012,24401,32283,24401,32128,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22893,18836,22059,35974,34882,34097,33960,29183,35996,18888,23311,18888,36029,27211,27211,36064,36081,22121,24401,24401,36104,33950,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,36121,18888,25559,18888,18888,18890,27211,27211,30313,27211,27211,36154,24401,24401,34397,24401,24401,19628,28250,18888,18888,18888,23086,30926,27211,27211,27211,26983,24012,33642,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,19354,27857,36190,24401,36206,22087,18888,18888,18888,18007,27211,27211,27211,24724,22121,24401,24401,24401,30827,18866,18888,36222,18888,28795,18888,25783,35100,27211,27429,27211,35072,22164,30836,24401,24499,24401,24036,31693,18888,36244,18888,18888,18890,27211,36088,27211,27211,27211,19484,24401,28036,24401,24401,24401,19628,18888,18888,35631,18888,35762,27211,27211,36277,27211,34730,24012,24401,24401,36300,24401,36320,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,25712,18888,18888,36346,27211,27212,19184,24402,19868,25659,32029,18889,27211,33359,19719,23889,36369,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22384,18836,36389,19008,19233,20367,36434,17173,17595,36437,17330,17349,18921,17189,17208,17281,20355,36453,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,20362,21726,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22369,18836,18987,19008,19233,20367,19008,21737,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21813,18836,36489,19008,19233,20367,19008,17173,17737,36437,17330,17349,18921,17189,17208,17281,20355,17768,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,20543,22022,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21828,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,36517,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21828,18836,19307,18888,27857,30756,24401,29183,28015,18888,18888,18888,18890,27211,27211,27211,27211,36567,24401,24401,24401,24401,22953,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,36603,24401,24401,24401,24401,24036,18881,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,36629,36690,18720,19008,19233,20367,19008,17454,17595,36437,17330,17349,18921,17189,17208,17281,20355,17223,17308,17327,17346,18918,36754,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,20362,21726,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,0,94242,0,118820,0,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2482176,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,24,27,27,27,2207744,2404352,2412544,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3104768,2605056,2207744,2207744,2207744,2207744,2207744,2207744,2678784,2207744,2695168,2207744,2703360,2207744,2711552,2752512,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,0,2158592,2158592,3170304,3174400,2158592,0,139,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,2748416,2756608,2777088,2801664,2158592,2158592,2158592,2863104,2891776,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3104768,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2785280,2207744,2809856,2207744,2207744,2842624,2207744,2207744,2207744,2899968,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2473984,2207744,2207744,2494464,2207744,2207744,2207744,2523136,2158592,2404352,2412544,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2564096,2158592,2158592,2605056,2158592,2158592,2158592,2158592,2158592,2158592,2678784,2158592,2695168,2158592,2703360,2158592,2711552,2752512,2158592,2158592,2785280,2158592,2158592,2785280,2158592,2809856,2158592,2158592,2842624,2158592,2158592,2158592,2899968,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,18,0,0,0,0,0,0,0,2211840,0,0,641,0,2158592,0,0,0,0,0,0,0,0,2211840,0,0,32768,0,2158592,0,2158592,2158592,2158592,2383872,2158592,2158592,2158592,2158592,3006464,2383872,2207744,2207744,2207744,2207744,2158877,2158877,2158877,2158877,0,0,0,2158877,2572573,2158877,2158877,0,2207744,2207744,2596864,2207744,2207744,2207744,2207744,2207744,2207744,2641920,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,167936,0,0,2162688,0,0,3104768,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,0,0,0,2146304,2146304,2224128,2224128,2232320,2232320,2232320,641,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2531328,2158592,2158592,2158592,2158592,2158592,2617344,2158592,2158592,2158592,2158592,2441216,2445312,2158592,2158592,2158592,2158592,2158592,2158592,2502656,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2580480,2158592,2158592,2158592,2158592,2621440,2158592,2580480,2158592,2158592,2158592,2158592,2621440,2158592,2158592,2158592,2158592,2158592,2158592,2699264,2158592,2158592,2158592,2158592,2158592,2748416,2756608,2777088,2801664,2207744,2863104,2891776,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3018752,2207744,3043328,2207744,2207744,2207744,2207744,3080192,2207744,2207744,3112960,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,172310,279,0,2162688,0,0,2207744,2207744,2207744,3186688,2207744,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2158592,2158592,2158592,2404352,2412544,2158592,2510848,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2584576,2158592,2609152,2158592,2158592,2629632,2158592,2158592,2158592,2686976,2158592,2715648,2158592,2158592,3121152,2158592,2158592,2158592,3149824,2158592,2158592,3170304,3174400,2158592,2367488,2207744,2207744,2207744,2207744,2158592,2158592,2158592,2158592,0,0,0,2158592,2572288,2158592,2158592,0,2207744,2207744,2207744,2433024,2207744,2453504,2461696,2207744,2207744,2207744,2207744,2207744,2207744,2510848,2207744,2207744,2207744,2207744,2207744,2531328,2207744,2207744,2207744,2207744,2207744,2617344,2207744,2207744,2207744,2207744,2158592,2158592,2158592,2158592,0,0,0,2158592,2572288,2158592,2158592,1508,2715648,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2867200,2207744,2904064,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2580480,2207744,2207744,2207744,2207744,2621440,2207744,2207744,2207744,3149824,2207744,2207744,3170304,3174400,2207744,0,0,0,0,0,0,0,0,0,0,138,2158592,2158592,2158592,2404352,2412544,2707456,2732032,2207744,2207744,2207744,2822144,2826240,2207744,2895872,2207744,2207744,2924544,2207744,2207744,2973696,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,285,2158592,2158592,3112960,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3186688,2158592,2207744,2207744,2158592,2158592,2158592,2158592,2158592,0,0,0,2158592,2158592,2158592,2158592,0,0,2535424,2543616,2158592,2158592,2158592,0,0,0,2158592,2158592,2158592,2990080,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2572288,2981888,2207744,2207744,3002368,2207744,3047424,3063808,3076096,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3203072,2708960,2732032,2158592,2158592,2158592,2822144,2827748,2158592,2895872,2158592,2158592,2924544,2158592,2158592,2973696,2158592,2981888,2158592,2158592,3002368,2158592,3047424,3063808,3076096,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3203072,2981888,2158592,2158592,3003876,2158592,3047424,3063808,3076096,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3203072,2207744,2207744,2207744,2207744,2207744,2424832,2207744,2207744,2207744,2207744,2207744,2207744,2207744,20480,0,0,0,0,0,2162688,20480,0,2523136,2527232,2158592,2158592,2576384,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2908160,2527232,2207744,2207744,2576384,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2908160,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,286,2158592,2158592,0,0,2158592,2158592,2158592,2158592,2633728,2658304,0,0,2740224,2744320,0,2834432,2207744,2207744,2977792,2207744,2207744,2207744,2207744,3039232,2207744,2207744,2207744,2207744,2207744,2207744,3158016,0,0,29315,0,0,0,0,45,45,45,45,45,933,45,45,45,45,442,45,45,45,45,45,45,45,45,45,67,67,2494464,2158592,2158592,2158592,2524757,2527232,2158592,2158592,2576384,2158592,2158592,2158592,2158592,2158592,2158592,1504,2158592,2498560,2158592,2158592,2158592,2158592,2568192,2158592,2592768,2625536,2158592,2158592,2674688,2736128,2158592,2158592,0,2158592,2912256,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3108864,2158592,2158592,3133440,3145728,3153920,2375680,2379776,2207744,2207744,2420736,2207744,2449408,2207744,2207744,2207744,2498560,2207744,2207744,2207744,2207744,2568192,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,551,2158592,2158592,2158592,2158592,2207744,2506752,2207744,2207744,2207744,2207744,2207744,2158592,2506752,0,2020,2158592,2592768,2625536,2207744,2207744,2674688,2736128,2207744,2207744,2207744,2912256,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,542,0,544,2207744,3108864,2207744,2207744,3133440,3145728,3153920,2375680,2379776,2158592,2158592,2420736,2158592,2449408,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,641,0,0,0,0,0,0,2367488,2158592,2498560,2158592,2158592,1621,2158592,2158592,2568192,2158592,2592768,2625536,2158592,2158592,2674688,0,0,0,0,0,1608,97,97,97,97,97,97,97,97,97,97,1107,97,97,1110,97,97,3133440,3145728,3153920,2158592,2408448,2416640,2158592,2465792,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3014656,2158592,2158592,3051520,2158592,2158592,3100672,2158592,2158592,3121152,2158592,2158592,2158592,3149824,2416640,2207744,2465792,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2633728,2658304,2740224,2744320,2834432,2949120,2158592,2985984,2158592,2998272,2158592,2158592,2158592,3129344,2207744,2408448,2949120,2207744,2985984,2207744,2998272,2207744,2207744,2207744,3129344,2158592,2408448,2416640,2158592,2465792,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,32768,0,0,0,0,0,0,2367488,2949120,2158592,2985984,2158592,2998272,2158592,2158592,2158592,3129344,2158592,2158592,2478080,2158592,2158592,2158592,2535424,2543616,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3117056,2207744,2207744,2478080,2207744,2207744,2207744,2207744,2699264,2207744,2207744,2207744,2207744,2207744,2748416,2756608,2777088,2801664,2207744,2207744,2158877,2158877,2158877,2158877,2158877,0,0,0,2158877,2158877,2158877,2158877,0,0,2535709,2543901,2158877,2158877,2158877,0,0,0,2158877,2158877,2158877,2990365,2158877,2158877,2158730,2158730,2158730,2158730,2158730,2572426,2207744,2535424,2543616,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3117056,2158592,2158592,2478080,2207744,2207744,2990080,2207744,2207744,2158592,2158592,2482176,2158592,2158592,0,0,0,2158592,2158592,2158592,0,2158592,2908160,2158592,2158592,2158592,2977792,2158592,2158592,2158592,2158592,3039232,2158592,2158592,3010560,2207744,2428928,2207744,2514944,2207744,2588672,2207744,2838528,2207744,2207744,2207744,3010560,2158592,2428928,2158592,2514944,0,0,2158592,2588672,2158592,0,2838528,2158592,2158592,2158592,3010560,2158592,2506752,2158592,18,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,0,0,29315,922,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,1539,45,3006464,2383872,0,2020,2158592,2158592,2158592,2158592,3006464,2158592,2637824,2953216,2158592,2207744,2637824,2953216,2207744,0,0,2158592,2637824,2953216,2158592,2539520,2158592,2539520,2207744,0,0,2539520,2158592,2158592,2158592,2158592,2207744,2506752,2207744,2207744,2207744,2207744,2207744,2158592,2506752,0,0,2158592,2207744,0,2158592,2158592,2207744,0,2158592,2158592,2207744,0,2158592,2965504,2965504,2965504,0,0,0,0,0,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2474269,2158877,2158877,0,0,2158877,2158877,2158877,2158877,2634013,2658589,0,0,2740509,2744605,0,2834717,40976,18,36884,45078,24,28,90143,94242,118820,102439,106538,98347,118820,118820,118820,40976,18,18,36884,0,0,0,24,24,24,27,27,27,27,90143,0,0,86016,0,0,2211840,102439,0,0,0,98347,0,2158592,2158592,2158592,2158592,2158592,3158016,0,2375680,2379776,2158592,2158592,2420736,2158592,2449408,2158592,2158592,0,94242,0,0,0,2211840,102439,0,0,106538,98347,135,2158592,2158592,2158592,2158592,2158592,2158592,2564096,2158592,2158592,2158592,2158592,2158592,2596864,2158592,2158592,2158592,2158592,2158592,2158592,2641920,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2781184,2793472,2494464,2158592,2158592,2158592,2523136,2527232,2158592,2158592,2576384,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,0,27,27,0,2158592,2498560,2158592,2158592,0,2158592,2158592,2568192,2158592,2592768,2625536,2158592,2158592,2674688,0,0,0,0,0,2211840,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2473984,2158592,2158592,2494464,2158592,2158592,2158592,3006464,2383872,0,0,2158592,2158592,2158592,2158592,3006464,2158592,2637824,2953216,2158592,2207744,2637824,2953216,40976,18,36884,45078,24,27,147488,94242,147456,147488,106538,98347,0,0,147456,40976,18,18,36884,0,45078,0,24,24,24,27,27,27,27,0,81920,0,94242,0,0,0,2211840,0,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2158592,2428928,2158592,2514944,2158592,2588672,2158592,2838528,2158592,2158592,40976,18,151573,45078,24,27,90143,94242,0,102439,106538,98347,0,0,0,40976,18,18,36884,0,45078,0,24,24,24,27,27,27,27,90143,0,0,1315,0,97,97,97,97,97,97,97,97,97,97,1487,97,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,0,0,29315,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,130,94242,0,0,0,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2158592,3096576,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2207744,2158592,18,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,644,2207744,2207744,2207744,3186688,2207744,0,1080,0,1084,0,1088,0,0,0,0,0,0,0,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2531466,2158730,2158730,2158730,2158730,2158730,2617482,0,94242,0,0,0,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2781184,2793472,2158592,2818048,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,40976,18,36884,45078,24,27,90143,159779,159744,102439,159779,98347,0,0,159744,40976,18,18,36884,0,45078,0,2224253,172032,2224253,2232448,2232448,172032,2232448,90143,0,0,2170880,0,0,550,829,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,124,124,127,127,127,40976,18,36884,45078,25,29,90143,94242,0,102439,106538,98347,0,0,163931,40976,18,18,36884,0,45078,249856,24,24,24,27,27,27,27,90143,0,0,2170880,0,0,827,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,4243810,4243810,24,24,27,27,27,2207744,0,0,0,0,0,0,2166784,0,0,0,0,57344,286,2158592,2158592,2158592,2158592,2707456,2732032,2158592,2158592,2158592,2822144,2826240,2158592,2895872,2158592,2158592,2924544,2158592,2158592,2973696,2158592,2207744,2207744,2207744,3186688,2207744,0,0,0,0,0,0,53248,0,0,0,0,0,97,97,97,97,97,1613,97,97,97,97,97,97,1495,97,97,97,97,97,97,97,97,97,566,97,97,97,97,97,97,2207744,0,0,0,0,0,0,2166784,546,0,0,0,0,286,2158592,2158592,2158592,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,17,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,20480,120,121,18,18,36884,0,45078,0,24,24,24,27,27,27,27,90143,0,0,2170880,0,53248,550,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,196608,18,266240,24,24,27,27,27,0,94242,0,0,0,38,102439,0,0,106538,98347,0,45,45,45,45,45,45,45,1535,45,45,45,45,45,45,45,1416,45,45,45,45,45,45,45,45,424,45,45,45,45,45,45,45,45,45,405,45,45,45,45,45,45,45,45,45,45,45,45,45,199,45,45,67,67,67,67,67,491,67,67,67,67,67,67,67,67,67,67,67,1766,67,67,67,1767,67,24850,24850,12564,12564,0,0,2166784,546,0,53531,53531,0,286,97,97,0,0,97,97,97,97,97,97,0,0,97,97,0,97,97,97,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,743,57889,0,2170880,0,0,550,0,97,97,97,97,97,97,97,97,97,45,45,45,45,45,45,45,45,1856,45,1858,1859,67,67,67,1009,67,67,67,67,67,67,67,67,67,67,67,1021,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,0,0,0,0,0,2367773,2158877,2158877,2158877,2158877,2158877,2158877,2699549,2158877,2158877,2158877,2158877,2158877,2748701,2756893,2777373,2801949,97,1115,97,97,97,97,97,97,97,97,97,97,97,97,97,97,857,97,67,67,67,67,67,1258,67,67,67,67,67,67,67,67,67,67,67,1826,67,97,97,97,97,97,97,1338,97,97,97,97,97,97,97,97,97,97,97,97,97,870,97,97,67,67,67,1463,67,67,67,67,67,67,67,67,67,67,67,67,67,1579,67,67,97,97,97,1518,97,97,97,97,97,97,97,97,97,97,97,97,97,904,905,97,97,97,97,1620,97,97,97,97,97,97,97,97,97,97,97,0,921,0,0,0,0,0,0,45,1679,67,67,67,1682,67,67,67,67,67,67,67,67,67,1690,67,0,0,97,97,97,97,45,45,67,67,0,0,97,97,45,45,45,669,45,45,45,45,45,45,45,45,45,45,45,45,189,45,45,45,1748,45,45,45,1749,1750,45,45,45,45,45,45,45,45,67,67,67,67,1959,67,67,67,67,1768,67,67,67,67,67,67,67,67,97,97,97,97,97,97,97,97,97,1791,97,97,97,97,97,97,97,97,45,45,45,45,45,45,1802,67,1817,67,67,67,67,67,67,1823,67,67,67,67,97,97,97,97,0,0,0,97,97,97,97,0,97,97,97,97,1848,45,45,45,45,45,45,45,45,45,45,45,659,45,45,45,45,45,45,45,1863,67,67,67,67,67,67,67,67,67,67,67,67,495,67,67,67,67,67,1878,97,97,97,97,0,0,0,97,97,97,97,0,0,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,45,45,45,45,45,67,67,67,67,97,97,97,97,0,0,0,1973,97,97,97,0,97,97,97,97,97,97,97,97,97,97,97,97,97,1165,97,1167,67,24850,24850,12564,12564,0,0,2166784,0,0,53531,53531,0,286,97,97,0,0,97,97,97,97,97,97,0,0,97,97,1789,97,0,94242,0,0,0,2211840,102439,0,0,106538,98347,136,2158592,2158592,2158592,2158592,2158592,3158016,229376,2375680,2379776,2158592,2158592,2420736,2158592,2449408,2158592,2158592,67,24850,24850,12564,12564,0,0,280,547,0,53531,53531,0,286,97,97,0,0,97,97,97,97,97,97,0,1788,97,97,0,97,2024,97,45,45,45,45,45,45,67,67,67,67,67,67,67,67,235,67,67,67,67,67,57889,547,547,0,0,550,0,97,97,97,97,97,97,97,97,97,45,45,45,1799,45,45,45,67,67,67,67,67,25398,0,13112,0,54074,0,0,1092,0,0,0,0,0,97,97,97,97,1612,97,97,97,97,1616,97,1297,1472,0,0,0,0,1303,1474,0,0,0,0,1309,1476,0,0,0,0,97,97,97,1481,97,97,97,97,97,97,1488,97,0,1474,0,1476,0,97,97,97,97,97,97,97,97,97,97,97,607,97,97,97,97,40976,18,36884,45078,26,30,90143,94242,0,102439,106538,98347,0,0,213080,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,143448,40976,18,18,36884,0,45078,0,24,24,24,27,27,27,27,0,0,0,0,97,97,97,97,1482,97,1483,97,97,97,97,97,97,1326,97,97,1329,1330,97,97,97,97,97,97,1159,1160,97,97,97,97,97,97,97,97,590,97,97,97,97,97,97,97,0,94242,0,0,0,2211974,102439,0,0,106538,98347,0,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2474122,2158730,2158730,2494602,2158730,2158730,2158730,2809994,2158730,2158730,2842762,2158730,2158730,2158730,2900106,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3014794,2158730,2158730,3051658,2158730,2158730,3100810,2158730,2158730,2158730,2158730,3096714,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2207744,2207744,2207744,2207744,2207744,2572288,2207744,2207744,2207744,2207744,541,541,543,543,0,0,2166784,0,548,549,549,0,286,2158877,2158877,2158877,2863389,2892061,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3186973,2158877,0,0,0,0,0,0,0,0,2367626,2158877,2404637,2412829,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2564381,2158877,2158877,2605341,2158877,2158877,2158877,2158877,2158877,2158877,2679069,2158877,2695453,2158877,2703645,2158877,2711837,2752797,2158877,0,2158877,2158877,2158877,2384010,2158730,2158730,2158730,2158730,3006602,2383872,2207744,2207744,2207744,2207744,2207744,2207744,3096576,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,0,0,2158877,2785565,2158877,2810141,2158877,2158877,2842909,2158877,2158877,2158877,2900253,2158877,2158877,2158877,2158877,2158877,2531613,2158877,2158877,2158877,2158877,2158877,2617629,2158877,2158877,2158877,2158877,2158730,2818186,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3105053,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,0,0,0,0,0,97,97,97,1611,97,97,97,97,97,97,97,1496,97,97,1499,97,97,97,97,97,2441354,2445450,2158730,2158730,2158730,2158730,2158730,2158730,2502794,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2433162,2158730,2453642,2461834,2158730,2158730,2158730,2158730,2158730,2158730,2580618,2158730,2158730,2158730,2158730,2621578,2158730,2158730,2158730,2158730,2158730,2158730,2699402,2158730,2158730,2158730,2158730,2678922,2158730,2695306,2158730,2703498,2158730,2711690,2752650,2158730,2158730,2785418,2158730,2158730,2158730,3113098,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3186826,2158730,2207744,2207744,2207744,2207744,2781184,2793472,2207744,2818048,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,541,0,543,2158877,2502941,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2580765,2158877,2158877,2158877,2158877,2621725,2158877,3019037,2158877,3043613,2158877,2158877,2158877,2158877,3080477,2158877,2158877,3113245,2158877,2158877,2158877,2158877,0,2158877,2908445,2158877,2158877,2158877,2978077,2158877,2158877,2158877,2158877,3039517,2158877,2158730,2510986,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2584714,2158730,2609290,2158730,2158730,2629770,2158730,2158730,2158730,2388106,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2605194,2158730,2158730,2158730,2158730,2687114,2158730,2715786,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2867338,2158730,2904202,2158730,2158730,2158730,2642058,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2781322,2793610,2158730,3121290,2158730,2158730,2158730,3149962,2158730,2158730,3170442,3174538,2158730,2367488,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2441216,2445312,2207744,2207744,2207744,2207744,2207744,2207744,2502656,2158877,2433309,2158877,2453789,2461981,2158877,2158877,2158877,2158877,2158877,2158877,2511133,2158877,2158877,2158877,2158877,2584861,2158877,2609437,2158877,2158877,2629917,2158877,2158877,2158877,2687261,2158877,2715933,2158877,2158730,2158730,2973834,2158730,2982026,2158730,2158730,3002506,2158730,3047562,3063946,3076234,2158730,2158730,2158730,2158730,2207744,2506752,2207744,2207744,2207744,2207744,2207744,2158877,2507037,0,0,2158877,2158730,2158730,2158730,3203210,2207744,2207744,2207744,2207744,2207744,2424832,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2564096,2207744,2207744,2207744,2707741,2732317,2158877,2158877,2158877,2822429,2826525,2158877,2896157,2158877,2158877,2924829,2158877,2158877,2973981,2158877,18,0,0,0,0,0,0,0,2211840,0,0,642,0,2158592,0,45,1529,45,45,45,45,45,45,45,45,45,45,45,45,45,1755,45,67,67,2982173,2158877,2158877,3002653,2158877,3047709,3064093,3076381,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3203357,2523274,2527370,2158730,2158730,2576522,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2908298,2494749,2158877,2158877,2158877,2523421,2527517,2158877,2158877,2576669,2158877,2158877,2158877,2158877,2158877,2158877,0,40976,0,18,18,4321280,2224253,2232448,4329472,2232448,2158730,2498698,2158730,2158730,2158730,2158730,2568330,2158730,2592906,2625674,2158730,2158730,2674826,2736266,2158730,2158730,2158730,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2158730,2912394,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3109002,2158730,2158730,3133578,3145866,3154058,2375680,2207744,3108864,2207744,2207744,3133440,3145728,3153920,2375965,2380061,2158877,2158877,2421021,2158877,2449693,2158877,2158877,2158877,3117341,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3104906,2158730,2158730,2158730,2158730,2158730,2158730,2158877,2498845,2158877,2158877,0,2158877,2158877,2568477,2158877,2593053,2625821,2158877,2158877,2674973,0,0,0,0,97,97,1480,97,97,97,97,97,1485,97,97,97,0,97,97,1729,97,1731,97,97,97,97,97,97,97,311,97,97,97,97,97,97,97,97,1520,97,97,1523,97,97,1526,97,2736413,2158877,2158877,0,2158877,2912541,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3109149,2158877,2158877,3014941,2158877,2158877,3051805,2158877,2158877,3100957,2158877,2158877,3121437,2158877,2158877,2158877,3150109,3133725,3146013,3154205,2158730,2408586,2416778,2158730,2465930,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3018890,2158730,3043466,2158730,2158730,2158730,2158730,3080330,2633866,2658442,2740362,2744458,2834570,2949258,2158730,2986122,2158730,2998410,2158730,2158730,2158730,3129482,2207744,2408448,2949120,2207744,2985984,2207744,2998272,2207744,2207744,2207744,3129344,2158877,2408733,2416925,2158877,2466077,2158877,2158877,3170589,3174685,2158877,0,0,0,2158730,2158730,2158730,2158730,2158730,2424970,2158730,2158730,2158730,2158730,2707594,2732170,2158730,2158730,2158730,2822282,2826378,2158730,2896010,2158730,2158730,2924682,2949405,2158877,2986269,2158877,2998557,2158877,2158877,2158877,3129629,2158730,2158730,2478218,2158730,2158730,2158730,2535562,2543754,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3117194,2207744,2207744,2478080,2207744,2207744,2207744,2207744,3014656,2207744,2207744,3051520,2207744,2207744,3100672,2207744,2207744,3121152,2207744,2207744,2207744,2207744,2207744,2584576,2207744,2609152,2207744,2207744,2629632,2207744,2207744,2207744,2686976,2207744,2207744,2535424,2543616,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3117056,2158877,2158877,2478365,0,2158877,2158877,2158877,2158877,2158877,2158877,2158730,2158730,2482314,2158730,2158730,2158730,2158730,2158730,2158730,2207744,2207744,2207744,2387968,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,823,0,825,2158730,2158730,2158730,2990218,2158730,2158730,2207744,2207744,2482176,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,135,0,2207744,2207744,2990080,2207744,2207744,2158877,2158877,2482461,2158877,2158877,0,0,0,2158877,2158877,2158877,2158877,2158877,2158730,2429066,2158730,2515082,2158730,2588810,2158730,2838666,2158730,2158730,2158730,3010698,2207744,2428928,2207744,2514944,2207744,2588672,2207744,2838528,2207744,2207744,2207744,3010560,2158877,2429213,2158877,2515229,0,0,2158877,2588957,2158877,0,2838813,2158877,2158877,2158877,3010845,2158730,2506890,2158730,2158730,2158730,2748554,2756746,2777226,2801802,2158730,2158730,2158730,2863242,2891914,2158730,2158730,2158730,2158730,2158730,2158730,2564234,2158730,2158730,2158730,2158730,2158730,2597002,2158730,2158730,2158730,3006464,2384157,0,0,2158877,2158877,2158877,2158877,3006749,2158730,2637962,2953354,2158730,2207744,2637824,2953216,2207744,0,0,2158877,2638109,2953501,2158877,2539658,2158730,2539520,2207744,0,0,2539805,2158877,2158730,2158730,2158730,2977930,2158730,2158730,2158730,2158730,3039370,2158730,2158730,2158730,2158730,2158730,2158730,3158154,2207744,0,2158877,2158730,2207744,0,2158877,2158730,2207744,0,2158877,2965642,2965504,2965789,0,0,0,0,1315,0,0,0,0,97,97,97,97,97,97,97,1484,97,97,97,97,2158592,18,0,122880,0,0,0,77824,0,2211840,0,0,0,0,2158592,0,356,0,0,0,0,0,0,28809,0,139,45,45,45,45,45,45,1751,45,45,45,45,45,45,45,67,67,1427,67,67,67,67,67,1432,67,67,67,3104768,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,122880,0,0,0,0,1315,0,0,0,0,97,97,97,97,97,97,1322,550,0,286,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,24,4329472,27,27,2207744,2207744,2977792,2207744,2207744,2207744,2207744,3039232,2207744,2207744,2207744,2207744,2207744,2207744,3158016,542,0,0,0,542,0,544,0,0,0,544,0,550,0,0,0,0,0,97,97,1610,97,97,97,97,97,97,97,97,898,97,97,97,97,97,97,97,0,94242,0,0,0,2211840,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,2158592,2158592,2158592,40976,18,36884,45078,24,27,90143,94242,237568,102439,106538,98347,0,0,20480,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,192512,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,94,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,96,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,12378,40976,18,18,36884,0,45078,0,24,24,24,126,126,126,126,90143,0,0,2170880,0,0,0,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,20480,40976,0,18,18,24,24,27,27,27,40976,18,36884,45078,24,27,90143,94242,241664,102439,106538,98347,0,0,20568,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,200797,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,20480,40976,18,36884,45078,24,27,90143,94242,0,0,0,44,0,0,20575,40976,18,36884,45078,24,27,90143,94242,0,41,41,41,0,0,1126400,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,0,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,89,40976,18,18,36884,0,45078,0,24,24,24,27,131201,27,27,90143,0,0,2170880,0,0,550,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2441216,2445312,2158592,2158592,2158592,2158592,2158592,0,94242,0,0,208896,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,0,0,0,0,0,0,0,2367488,32768,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2433024,2158592,2453504,2461696,2158592,2158592,2158592,2158592,2158592,2158592,2510848,2158592,2158592,2158592,2158592,40976,18,36884,245783,24,27,90143,94242,0,102439,106538,98347,0,0,20480,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,221184,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,180224,40976,18,18,36884,155648,45078,0,24,24,217088,27,27,27,217088,90143,0,0,2170880,0,0,828,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2207744,2207744,2387968,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,233472,0,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,45,45,718,45,45,45,45,45,45,45,45,45,727,131427,0,0,0,0,362,0,365,28809,367,139,45,45,45,45,45,45,1808,45,45,45,45,67,67,67,67,67,67,67,97,97,0,0,97,67,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,97,97,0,0,97,97,97,97,97,97,1787,0,97,97,0,97,97,97,45,45,45,45,2029,45,67,67,67,67,2033,57889,0,0,54074,54074,550,0,97,97,97,97,97,97,97,97,97,45,1798,45,45,1800,45,45,0,1472,0,0,0,0,0,1474,0,0,0,0,0,1476,0,0,0,0,1315,0,0,0,0,97,97,97,97,1320,97,97,0,0,97,97,97,97,1786,97,0,0,97,97,0,1790,1527,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,663,67,24850,24850,12564,12564,0,57889,281,0,0,53531,53531,367,286,97,97,0,0,97,97,97,1785,97,97,0,0,97,97,0,97,97,1979,97,97,45,45,1983,45,1984,45,45,45,45,45,652,45,45,45,45,45,45,45,45,45,45,690,45,45,694,45,45,40976,19,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,262144,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,46,67,98,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,45,67,97,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,258048,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,1122423,40976,18,36884,45078,24,27,90143,94242,0,1114152,1114152,1114152,0,0,1114112,40976,18,36884,45078,24,27,90143,94242,37,102439,106538,98347,0,0,204800,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,57436,40976,18,36884,45078,24,27,33,33,0,33,33,33,0,0,0,40976,18,18,36884,0,45078,0,124,124,124,127,127,127,127,90143,0,0,2170880,0,0,550,0,2158877,2158877,2158877,2388253,2158877,2158877,2158877,2158877,2158877,2781469,2793757,2158877,2818333,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2867485,2158877,2904349,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3096861,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2441501,2445597,2158877,2158877,2158877,2158877,2158877,40976,122,123,36884,0,45078,0,24,24,24,27,27,27,27,90143,0,921,29315,0,0,0,0,45,45,45,45,45,45,45,45,936,2158592,4243810,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,0,921,29315,0,0,0,0,45,45,45,45,45,45,45,935,45,45,45,715,45,45,45,45,45,45,45,723,45,45,45,45,45,1182,45,45,45,45,45,45,45,45,45,45,430,45,45,45,45,45,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,47,68,99,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,48,69,100,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,49,70,101,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,50,71,102,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,51,72,103,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,52,73,104,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,53,74,105,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,54,75,106,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,55,76,107,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,56,77,108,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,57,78,109,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,58,79,110,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,59,80,111,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,60,81,112,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,61,82,113,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,62,83,114,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,63,84,115,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,64,85,116,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,65,86,117,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,66,87,118,40976,18,36884,45078,24,27,90143,94242,118820,102439,106538,98347,118820,118820,118820,40976,18,18,0,0,45078,0,24,24,24,27,27,27,27,90143,0,0,1314,0,0,0,0,0,0,97,97,97,97,97,1321,97,18,131427,0,0,0,0,0,0,362,0,0,365,0,367,0,0,1315,0,97,97,97,97,97,97,97,97,97,97,97,97,97,1360,97,97,131,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,145,149,45,45,45,45,45,174,45,179,45,185,45,188,45,45,202,67,255,67,67,269,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,292,296,97,97,97,97,97,321,97,326,97,332,97,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,646,335,97,97,349,97,97,0,40976,0,18,18,24,24,27,27,27,437,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,523,67,67,67,67,67,67,67,67,67,67,67,67,511,67,67,67,97,97,97,620,97,97,97,97,97,97,97,97,97,97,97,97,97,1501,1502,97,793,67,67,796,67,67,67,67,67,67,67,67,67,67,808,67,0,0,97,97,97,97,45,45,67,67,0,0,97,97,2052,67,67,67,67,813,67,67,67,67,67,67,67,25398,542,13112,544,57889,0,0,54074,54074,550,830,97,97,97,97,97,97,97,97,97,315,97,97,97,97,97,97,841,97,97,97,97,97,97,97,97,97,854,97,97,97,97,97,97,589,97,97,97,97,97,97,97,97,97,867,97,97,97,97,97,97,97,891,97,97,894,97,97,97,97,97,97,97,97,97,97,906,45,937,45,45,940,45,45,45,45,45,45,948,45,45,45,45,45,734,735,67,737,67,738,67,740,67,67,67,45,967,45,45,45,45,45,45,45,45,45,45,45,45,45,45,435,45,45,45,980,45,45,45,45,45,45,45,45,45,45,45,45,45,415,45,45,67,67,1024,67,67,67,67,67,67,67,67,67,67,67,67,67,97,97,97,67,67,67,67,67,25398,1081,13112,1085,54074,1089,0,0,0,0,0,0,363,0,28809,0,139,45,45,45,45,45,45,1674,45,45,45,45,45,45,45,45,67,1913,67,1914,67,67,67,1918,67,67,97,97,97,97,1118,97,97,97,97,97,97,97,97,97,97,97,630,97,97,97,97,97,1169,97,97,97,97,97,0,921,0,1175,0,0,0,0,45,45,45,45,45,45,1534,45,45,45,45,45,1538,45,45,45,45,1233,45,45,45,45,45,45,67,67,67,67,67,67,67,67,742,67,45,45,1191,45,45,45,45,45,45,45,45,45,45,45,45,45,454,67,67,67,67,1243,67,67,67,67,67,67,67,67,67,67,67,1251,67,0,0,97,97,97,97,45,45,67,67,2050,0,97,97,45,45,45,732,45,45,67,67,67,67,67,67,67,67,67,67,67,67,97,97,67,67,67,1284,67,67,67,67,67,67,67,67,67,67,67,67,772,67,67,67,1293,67,67,67,67,67,67,0,0,0,0,0,0,0,0,0,0,368,2158592,2158592,2158592,2404352,2412544,1323,97,97,97,97,97,97,97,97,97,97,97,1331,97,97,97,0,97,97,97,97,97,97,97,97,97,97,97,1737,97,1364,97,97,97,97,97,97,97,97,97,97,97,97,1373,97,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,647,45,45,1387,45,45,1391,45,45,45,45,45,45,45,45,45,45,410,45,45,45,45,45,1400,45,45,45,45,45,45,45,45,45,45,1407,45,45,45,45,45,941,45,943,45,45,45,45,45,45,951,45,67,1438,67,67,67,67,67,67,67,67,67,67,1447,67,67,67,67,67,67,782,67,67,67,67,67,67,67,67,67,756,67,67,67,67,67,67,97,1491,97,97,97,97,97,97,97,97,97,97,1500,97,97,97,0,97,97,97,97,97,97,97,97,97,97,1736,97,45,45,1541,45,45,45,45,45,45,45,45,45,45,45,45,45,677,45,45,67,1581,67,67,67,67,67,67,67,67,67,67,67,67,67,67,791,792,67,67,67,67,1598,67,1600,67,67,67,67,67,67,67,67,1472,97,97,97,1727,97,97,97,97,97,97,97,97,97,97,97,97,97,1513,97,97,67,67,97,1879,97,1881,97,0,1884,0,97,97,97,97,0,0,97,97,97,97,97,0,0,0,1842,97,97,67,67,67,67,67,97,97,97,97,1928,0,0,0,97,97,97,97,97,97,45,45,45,45,45,1903,45,45,45,67,67,67,67,97,97,97,97,1971,0,0,97,97,97,97,0,97,97,97,97,97,97,97,97,97,0,0,0,45,45,45,1381,45,45,45,45,1976,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,45,45,1747,809,67,67,67,67,67,67,67,67,67,67,67,25398,542,13112,544,97,907,97,97,97,97,97,97,97,97,97,97,97,638,0,0,0,0,1478,97,97,97,97,97,97,97,97,97,97,97,1150,97,97,97,97,67,67,67,67,1244,67,67,67,67,67,67,67,67,67,67,67,477,67,67,67,67,67,67,1294,67,67,67,67,0,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1324,97,97,97,97,97,97,97,97,97,97,97,97,97,0,0,0,1374,97,97,97,97,0,1175,0,45,45,45,45,45,45,45,45,945,45,45,45,45,45,45,45,45,1908,45,45,1910,45,67,67,67,67,67,67,67,67,1919,67,0,0,97,97,97,97,45,2048,67,2049,0,0,97,2051,45,45,45,939,45,45,45,45,45,45,45,45,45,45,45,45,397,45,45,45,1921,67,67,1923,67,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,1947,45,1935,0,0,0,97,1939,97,97,1941,97,45,45,45,45,45,45,382,389,45,45,45,45,45,45,45,45,1810,45,45,1812,67,67,67,67,67,256,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,336,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,0,0,362,0,365,28809,367,139,45,45,371,373,45,45,45,955,45,45,45,45,45,45,45,45,45,45,45,45,413,45,45,45,457,459,67,67,67,67,67,67,67,67,473,67,478,67,67,482,67,67,485,67,67,67,67,67,67,67,67,67,67,67,67,67,97,1828,97,554,556,97,97,97,97,97,97,97,97,570,97,575,97,97,579,97,97,582,97,97,97,97,97,97,97,97,97,97,97,97,97,330,97,97,67,746,67,67,67,67,67,67,67,67,67,758,67,67,67,67,67,67,67,1575,67,67,67,67,67,67,67,67,493,67,67,67,67,67,67,67,97,97,844,97,97,97,97,97,97,97,97,97,856,97,97,97,0,97,97,97,97,97,97,97,97,1735,97,97,97,0,97,97,97,97,97,97,97,1642,97,1644,97,97,890,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,67,67,67,67,1065,1066,67,67,67,67,67,67,67,67,67,67,532,67,67,67,67,67,67,67,1451,67,67,67,67,67,67,67,67,67,67,67,67,67,496,67,67,97,97,1505,97,97,97,97,97,97,97,97,97,97,97,97,97,593,97,97,0,1474,0,1476,0,97,97,97,97,97,97,97,97,97,97,1617,97,97,1635,0,1637,97,97,97,97,97,97,97,97,97,97,97,885,97,97,97,97,67,67,1704,67,67,67,67,97,97,97,97,97,97,97,97,97,565,572,97,97,97,97,97,97,97,97,1832,0,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,1946,45,45,67,67,67,67,67,97,1926,97,1927,97,0,0,0,97,97,1934,2043,0,0,97,97,97,2047,45,45,67,67,0,1832,97,97,45,45,45,981,45,45,45,45,45,45,45,45,45,45,45,45,1227,45,45,45,131427,0,0,0,0,362,0,365,28809,367,139,45,45,372,45,45,45,45,1661,1662,45,45,45,45,45,1666,45,45,45,45,45,1673,45,1675,45,45,45,45,45,45,45,67,1426,67,67,67,67,67,67,67,67,67,67,1275,67,67,67,67,67,45,418,45,45,420,45,45,423,45,45,45,45,45,45,45,45,959,45,45,962,45,45,45,45,458,67,67,67,67,67,67,67,67,67,67,67,67,67,67,483,67,67,67,67,504,67,67,506,67,67,509,67,67,67,67,67,67,67,528,67,67,67,67,67,67,67,67,1287,67,67,67,67,67,67,67,555,97,97,97,97,97,97,97,97,97,97,97,97,97,97,580,97,97,97,97,601,97,97,603,97,97,606,97,97,97,97,97,97,848,97,97,97,97,97,97,97,97,97,1498,97,97,97,97,97,97,45,45,714,45,45,45,45,45,45,45,45,45,45,45,45,45,989,990,45,67,67,67,67,67,1011,67,67,67,67,1015,67,67,67,67,67,67,67,753,67,67,67,67,67,67,67,67,467,67,67,67,67,67,67,67,45,45,1179,45,45,45,45,45,45,45,45,45,45,45,45,45,1003,1004,67,1217,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,728,67,1461,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1034,67,97,1516,97,97,97,97,97,97,97,97,97,97,97,97,97,97,871,97,67,67,67,1705,67,67,67,97,97,97,97,97,97,97,97,97,567,97,97,97,97,97,97,97,97,97,97,1715,97,97,97,97,97,97,97,97,97,0,0,0,45,45,1380,45,45,45,45,45,67,67,97,97,97,97,97,0,0,0,97,1887,97,97,0,0,97,97,97,0,97,97,97,97,97,2006,45,45,1907,45,45,45,45,45,67,67,67,67,67,67,67,67,67,1920,67,97,0,2035,97,97,97,97,97,45,45,45,45,67,67,67,1428,67,67,67,67,67,67,1435,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,146,45,152,45,45,165,45,175,45,180,45,45,187,190,195,45,203,254,257,262,67,270,67,67,0,24850,12564,0,0,0,281,28809,53531,97,97,97,293,97,299,97,97,312,97,322,97,327,97,97,334,337,342,97,350,97,97,0,40976,0,18,18,24,24,27,27,27,67,484,67,67,67,67,67,67,67,67,67,67,67,67,67,499,97,581,97,97,97,97,97,97,97,97,97,97,97,97,97,596,648,45,650,45,651,45,653,45,45,45,657,45,45,45,45,45,45,1954,67,67,67,1958,67,67,67,67,67,67,67,768,67,67,67,67,67,67,67,67,769,67,67,67,67,67,67,67,680,45,45,45,45,45,45,45,45,688,689,691,45,45,45,45,45,983,45,45,45,45,45,45,45,45,45,45,947,45,45,45,45,952,45,45,698,699,45,45,702,703,45,45,45,45,45,45,45,711,744,67,67,67,67,67,67,67,67,67,757,67,67,67,67,761,67,67,67,67,765,67,767,67,67,67,67,67,67,67,67,775,776,778,67,67,67,67,67,67,785,786,67,67,789,790,67,67,67,67,67,67,1442,67,67,67,67,67,67,67,67,67,97,97,97,1775,97,97,97,67,67,67,67,67,798,67,67,67,802,67,67,67,67,67,67,67,67,1465,67,67,1468,67,67,1471,67,67,810,67,67,67,67,67,67,67,67,67,821,25398,542,13112,544,57889,0,0,54074,54074,550,0,833,97,835,97,836,97,838,97,97,0,0,97,97,97,2002,97,97,97,97,97,45,45,45,45,45,1740,45,45,45,1744,45,45,45,97,842,97,97,97,97,97,97,97,97,97,855,97,97,97,97,0,1717,1718,97,97,97,97,97,1722,97,0,0,859,97,97,97,97,863,97,865,97,97,97,97,97,97,97,97,604,97,97,97,97,97,97,97,873,874,876,97,97,97,97,97,97,883,884,97,97,887,888,97,18,131427,0,0,0,0,0,0,362,225280,0,365,0,367,0,45,45,45,1531,45,45,45,45,45,45,45,45,45,45,45,1199,45,45,45,45,45,97,97,908,97,97,97,97,97,97,97,97,97,919,638,0,0,0,0,2158877,2158877,2158877,2158877,2158877,2425117,2158877,2158877,2158877,2158877,2158877,2158877,2597149,2158877,2158877,2158877,2158877,2158877,2158877,2642205,2158877,2158877,2158877,2158877,2158877,3158301,0,2375818,2379914,2158730,2158730,2420874,2158730,2449546,2158730,2158730,953,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,965,978,45,45,45,45,45,45,985,45,45,45,45,45,45,45,45,971,45,45,45,45,45,45,45,67,67,67,67,67,1027,67,1029,67,67,67,67,67,67,67,67,67,1455,67,67,67,67,67,67,67,1077,1078,67,67,25398,0,13112,0,54074,0,0,0,0,0,0,0,0,366,0,139,2158730,2158730,2158730,2404490,2412682,1113,97,97,97,97,97,97,1121,97,1123,97,97,97,97,97,97,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1540,1155,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,615,1168,97,97,1171,1172,97,97,0,921,0,1175,0,0,0,0,45,45,45,45,45,1533,45,45,45,45,45,45,45,45,45,1663,45,45,45,45,45,45,45,45,45,183,45,45,45,45,201,45,45,45,1219,45,45,45,45,45,45,45,1226,45,45,45,45,45,168,45,45,45,45,45,45,45,45,45,45,427,45,45,45,45,45,45,45,1231,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,1242,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1046,67,67,1254,67,1256,67,67,67,67,67,67,67,67,67,67,67,67,806,807,67,67,97,1336,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1111,97,97,97,97,97,1351,97,97,97,1354,97,97,97,1359,97,97,97,0,97,97,97,97,1640,97,97,97,97,97,97,97,897,97,97,97,902,97,97,97,97,97,97,97,97,1366,97,97,97,97,97,97,97,1371,97,97,97,0,97,97,97,1730,97,97,97,97,97,97,97,97,915,97,97,97,97,0,360,0,67,67,67,1440,67,67,67,67,67,67,67,67,67,67,67,67,1017,67,1019,67,67,67,67,67,1453,67,67,67,67,67,67,67,67,67,67,1459,97,97,97,1493,97,97,97,97,97,97,97,97,97,97,97,97,97,1525,97,97,97,97,97,97,1507,97,97,97,97,97,97,97,97,97,97,1514,67,67,67,67,1584,67,67,67,67,67,1590,67,67,67,67,67,67,67,783,67,67,67,788,67,67,67,67,67,67,67,67,67,1599,1601,67,67,67,1604,67,1606,1607,67,1472,0,1474,0,1476,0,97,97,97,97,97,97,1614,97,97,97,97,45,45,1850,45,45,45,45,1855,45,45,45,45,45,1222,45,45,45,45,45,45,45,45,45,1229,97,1618,97,97,97,97,97,97,97,1625,97,97,97,97,97,0,1175,0,45,45,45,45,45,45,45,45,447,45,45,45,45,45,67,67,1633,97,97,0,97,97,97,97,97,97,97,97,1643,1645,97,97,0,0,97,97,1784,97,97,97,0,0,97,97,0,97,1894,1895,97,1897,97,45,45,45,45,45,45,45,45,45,656,45,45,45,45,45,45,97,1648,97,1650,1651,97,0,45,45,45,1654,45,45,45,45,45,169,45,45,45,45,45,45,45,45,45,45,658,45,45,45,45,664,45,45,1659,45,45,45,45,45,45,45,45,45,45,45,45,45,1187,45,45,1669,45,45,45,45,45,45,45,45,45,45,45,45,45,45,67,1005,67,67,1681,67,67,67,67,67,67,67,1686,67,67,67,67,67,67,67,784,67,67,67,67,67,67,67,67,1055,67,67,67,67,1060,67,67,97,97,1713,97,0,97,97,97,97,97,97,97,97,97,0,0,0,1378,45,45,45,45,45,45,45,408,45,45,45,45,45,45,45,45,1547,45,1549,45,45,45,45,45,97,97,1780,0,97,97,97,97,97,97,0,0,97,97,0,97,97,97,45,45,2027,2028,45,45,67,67,2031,2032,67,45,45,1804,45,45,45,45,45,45,45,45,67,67,67,67,67,67,1917,67,67,67,67,67,67,67,1819,67,67,67,67,67,67,67,67,97,97,97,1708,97,97,97,97,97,45,45,1862,67,67,67,67,67,67,67,67,67,67,67,67,67,497,67,67,67,1877,97,97,97,97,97,0,0,0,97,97,97,97,0,0,97,97,97,97,97,1839,0,0,97,97,97,97,1936,0,0,97,97,97,97,97,97,1943,1944,1945,45,45,45,45,670,45,45,45,45,674,45,45,45,45,678,45,1948,45,1950,45,45,45,45,1955,1956,1957,67,67,67,1960,67,1962,67,67,67,67,1967,1968,1969,97,0,0,0,97,97,1974,97,0,1936,0,97,97,97,97,97,97,45,45,45,45,45,45,45,45,1906,0,1977,97,97,97,97,45,45,45,45,45,45,45,45,45,45,45,1746,45,45,45,45,2011,67,67,2013,67,67,67,2017,97,97,0,0,2021,97,8192,97,97,2025,45,45,45,45,45,45,67,67,67,67,67,1916,67,67,67,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,140,45,45,45,1180,45,45,45,45,1184,45,45,45,45,45,45,45,387,45,392,45,45,396,45,45,399,45,45,67,207,67,67,67,67,67,67,236,67,67,67,67,67,67,67,800,67,67,67,67,67,67,67,67,67,1603,67,67,67,67,67,0,97,97,287,97,97,97,97,97,97,316,97,97,97,97,97,97,0,45,45,45,45,45,45,45,1656,1657,45,376,45,45,45,45,45,388,45,45,45,45,45,45,45,45,1406,45,45,45,45,45,45,45,67,67,67,67,462,67,67,67,67,67,474,67,67,67,67,67,67,67,817,67,67,67,67,25398,542,13112,544,97,97,97,97,559,97,97,97,97,97,571,97,97,97,97,97,97,896,97,97,97,900,97,97,97,97,97,97,912,914,97,97,97,97,97,0,0,0,45,45,45,45,45,45,45,45,391,45,45,45,45,45,45,45,45,713,45,45,45,45,45,45,45,45,45,45,45,45,45,45,662,45,1140,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,636,67,67,1283,67,67,67,67,67,67,67,67,67,67,67,67,67,513,67,67,1363,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,889,97,97,97,1714,0,97,97,97,97,97,97,97,97,97,0,0,926,45,45,45,45,45,45,45,45,672,45,45,45,45,45,45,45,45,686,45,45,45,45,45,45,45,45,944,45,45,45,45,45,45,45,45,1676,45,45,45,45,45,45,67,97,97,97,1833,0,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,1902,45,45,45,45,45,957,45,45,45,45,961,45,963,45,45,45,67,97,2034,0,97,97,97,97,97,2040,45,45,45,2042,67,67,67,67,67,67,1574,67,67,67,67,67,1578,67,67,67,67,67,67,799,67,67,67,804,67,67,67,67,67,67,67,1298,0,0,0,1304,0,0,0,1310,132,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,45,45,1414,45,45,45,45,45,45,45,45,45,45,428,45,45,45,45,45,57889,0,0,54074,54074,550,831,97,97,97,97,97,97,97,97,97,568,97,97,97,97,578,97,45,45,968,45,45,45,45,45,45,45,45,45,45,45,45,45,1228,45,45,67,67,67,67,67,25398,1082,13112,1086,54074,1090,0,0,0,0,0,0,364,0,0,0,139,2158592,2158592,2158592,2404352,2412544,67,67,67,67,1464,67,67,67,67,67,67,67,67,67,67,67,510,67,67,67,67,97,97,97,97,1519,97,97,97,97,97,97,97,97,97,97,97,918,97,0,0,0,0,1528,45,45,45,45,45,45,45,45,45,45,45,45,45,45,976,45,1554,45,45,45,45,45,45,45,45,1562,45,45,1565,45,45,45,45,683,45,45,45,687,45,45,692,45,45,45,45,45,1953,45,67,67,67,67,67,67,67,67,67,1014,67,67,67,67,67,67,1568,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,0,67,67,67,67,67,1585,67,67,67,67,67,67,67,67,67,1594,97,97,1649,97,97,97,0,45,45,1653,45,45,45,45,45,45,383,45,45,45,45,45,45,45,45,45,986,45,45,45,45,45,45,45,45,1670,45,1672,45,45,45,45,45,45,45,45,45,45,67,736,67,67,67,67,67,741,67,67,67,1680,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1074,67,67,67,1692,67,67,67,67,67,67,67,1697,67,1699,67,67,67,67,67,67,1012,67,67,67,67,67,67,67,67,67,468,475,67,67,67,67,67,67,1769,67,67,67,67,67,67,67,97,97,97,97,97,97,97,624,97,97,97,97,97,97,634,97,97,1792,97,97,97,97,97,97,97,45,45,45,45,45,45,45,958,45,45,45,45,45,45,964,45,150,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,977,204,45,67,67,67,217,67,67,67,67,67,67,67,67,67,67,787,67,67,67,67,67,67,67,67,67,67,271,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,97,351,97,0,40976,0,18,18,24,24,27,27,27,45,45,938,45,45,45,45,45,45,45,45,45,45,45,45,45,1398,45,45,45,153,45,161,45,45,45,45,45,45,45,45,45,45,45,45,660,661,45,45,205,45,67,67,67,67,220,67,228,67,67,67,67,67,67,67,0,0,0,0,0,280,94,0,0,67,67,67,67,67,272,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,97,352,97,0,40976,0,18,18,24,24,27,27,27,45,439,45,45,45,45,45,445,45,45,45,452,45,45,67,67,212,216,67,67,67,67,67,241,67,246,67,252,67,67,486,67,67,67,67,67,67,67,494,67,67,67,67,67,67,67,1245,67,67,67,67,67,67,67,67,1013,67,67,1016,67,67,67,67,67,521,67,67,525,67,67,67,67,67,531,67,67,67,538,67,0,0,2046,97,97,97,45,45,67,67,0,0,97,97,45,45,45,1192,45,45,45,45,45,45,45,45,45,45,45,45,1418,45,45,1421,97,97,583,97,97,97,97,97,97,97,591,97,97,97,97,97,97,913,97,97,97,97,97,97,0,0,0,45,45,45,45,45,45,45,1384,97,618,97,97,622,97,97,97,97,97,628,97,97,97,635,97,18,131427,0,0,0,639,0,132,362,0,0,365,29315,367,0,921,29315,0,0,0,0,45,45,45,45,932,45,45,45,45,45,1544,45,45,45,45,45,1550,45,45,45,45,45,1194,45,1196,45,45,45,45,45,45,45,45,999,45,45,45,45,45,67,67,45,45,667,45,45,45,45,45,45,45,45,45,45,45,45,45,1408,45,45,45,696,45,45,45,701,45,45,45,45,45,45,45,45,710,45,45,45,1220,45,45,45,45,45,45,45,45,45,45,45,45,194,45,45,45,729,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,797,67,67,67,67,67,67,805,67,67,67,67,67,67,67,1587,67,1589,67,67,67,67,67,67,67,67,1763,67,67,67,67,67,67,67,0,0,0,0,0,0,2162968,0,0,67,67,67,67,67,814,816,67,67,67,67,67,25398,542,13112,544,67,67,1008,67,67,67,67,67,67,67,67,67,67,67,1020,67,0,97,45,67,0,97,45,67,0,97,45,67,97,0,0,97,97,97,97,97,45,45,45,45,67,67,67,67,1429,67,1430,67,67,67,67,67,1062,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,518,1076,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,0,0,0,0,28809,0,139,45,45,45,45,45,97,97,97,97,1102,97,97,97,97,97,97,97,97,97,97,97,1124,97,1126,97,97,1114,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1112,97,97,1156,97,97,97,97,97,97,97,97,97,97,97,97,97,594,97,97,97,97,1170,97,97,97,97,0,921,0,0,0,0,0,0,45,45,45,45,1532,45,45,45,45,1536,45,45,45,45,45,172,45,45,45,45,45,45,45,45,45,45,706,45,45,709,45,45,1177,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1202,45,1204,45,45,45,45,45,45,45,45,45,45,45,45,1215,45,45,45,1232,45,45,45,45,45,45,45,67,1237,67,67,67,67,67,67,1053,1054,67,67,67,67,67,67,1061,67,67,1282,67,67,67,67,67,67,67,67,67,1289,67,67,67,1292,97,97,97,97,1339,97,97,97,97,97,97,1344,97,97,97,97,45,1849,45,1851,45,45,45,45,45,45,45,45,721,45,45,45,45,45,726,45,1385,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1188,45,45,1401,1402,45,45,45,45,1405,45,45,45,45,45,45,45,45,1752,45,45,45,45,45,67,67,1410,45,45,45,1413,45,1415,45,45,45,45,45,45,1419,45,45,45,45,1806,45,45,45,45,45,45,67,67,67,67,67,67,67,97,97,2019,0,97,67,67,67,1452,67,67,67,67,67,67,67,67,1457,67,67,67,67,67,67,1259,67,67,67,67,67,67,1264,67,67,1460,67,1462,67,67,67,67,67,67,1466,67,67,67,67,67,67,67,67,1588,67,67,67,67,67,67,67,0,1300,0,0,0,1306,0,0,0,97,97,97,1506,97,97,97,97,97,97,97,97,1512,97,97,97,0,1728,97,97,97,97,97,97,97,97,97,97,97,901,97,97,97,97,1515,97,1517,97,97,97,97,97,97,1521,97,97,97,97,97,97,0,45,1652,45,45,45,1655,45,45,45,45,45,1542,45,45,45,45,45,45,45,45,45,45,45,45,45,1552,1553,45,45,45,1556,45,45,45,45,45,45,45,45,45,45,45,45,45,693,45,45,45,67,67,67,67,1572,67,67,67,67,1576,67,67,67,67,67,67,67,67,1602,67,67,1605,67,67,67,0,67,1582,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1580,67,67,1596,67,67,67,67,67,67,67,67,67,67,67,67,67,0,542,0,544,67,67,67,67,1759,67,67,67,67,67,67,67,67,67,67,67,533,67,67,67,67,67,67,67,1770,67,67,67,67,67,97,97,97,97,97,97,1777,97,97,97,1793,97,97,97,97,97,45,45,45,45,45,45,45,998,45,45,1001,1002,45,45,67,67,45,1861,45,67,67,67,67,67,67,67,67,1871,67,1873,1874,67,0,97,45,67,0,97,45,67,16384,97,45,67,97,0,0,0,1473,0,1082,0,0,0,1475,0,1086,0,0,0,1477,1876,67,97,97,97,97,97,1883,0,1885,97,97,97,1889,0,0,0,286,0,0,0,286,0,2367488,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,24,126,126,126,2053,0,2055,45,67,0,97,45,67,0,97,45,67,97,0,0,97,97,97,2039,97,45,45,45,45,67,67,67,67,67,226,67,67,67,67,67,67,67,67,1246,67,67,1249,1250,67,67,67,132,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,141,45,45,45,1403,45,45,45,45,45,45,45,45,45,45,45,45,1186,45,45,1189,45,45,155,45,45,45,45,45,45,45,45,45,191,45,45,45,45,700,45,45,45,45,45,45,45,45,45,45,45,1753,45,45,45,67,67,45,45,67,208,67,67,67,222,67,67,67,67,67,67,67,67,67,1764,67,67,67,67,67,67,67,258,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,288,97,97,97,302,97,97,97,97,97,97,97,97,97,627,97,97,97,97,97,97,338,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,0,0,362,0,365,28809,367,139,45,370,45,45,45,45,716,45,45,45,45,45,722,45,45,45,45,45,45,1912,67,67,67,67,67,67,67,67,67,819,67,67,25398,542,13112,544,45,403,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1409,45,67,67,67,67,489,67,67,67,67,67,67,67,67,67,67,67,771,67,67,67,67,520,67,67,67,67,67,67,67,67,67,67,67,534,67,67,67,67,67,67,1271,67,67,67,1274,67,67,67,1279,67,67,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,97,553,97,97,97,97,586,97,97,97,97,97,97,97,97,97,97,97,1138,97,97,97,97,617,97,97,97,97,97,97,97,97,97,97,97,631,97,97,97,0,1834,97,97,97,97,97,0,0,0,97,97,97,97,97,353,0,40976,0,18,18,24,24,27,27,27,45,45,668,45,45,45,45,45,45,45,45,45,45,45,45,45,724,45,45,45,45,45,682,45,45,45,45,45,45,45,45,45,45,45,45,45,949,45,45,45,67,67,747,748,67,67,67,67,755,67,67,67,67,67,67,67,0,0,0,1302,0,0,0,1308,0,67,794,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1701,67,97,97,97,845,846,97,97,97,97,853,97,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,97,97,892,97,97,97,97,97,97,97,97,97,97,97,97,97,610,97,97,45,992,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,1239,67,67,67,1063,67,67,67,67,67,1068,67,67,67,67,67,67,67,0,0,1301,0,0,0,1307,0,0,97,1141,97,97,97,97,97,97,97,97,97,97,97,1152,97,97,0,0,97,97,2001,0,97,2003,97,97,97,45,45,45,1739,45,45,45,1742,45,45,45,45,45,97,97,97,97,1157,97,97,97,97,97,1162,97,97,97,97,97,97,1145,97,97,97,97,97,1151,97,97,97,1253,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,539,45,1423,45,45,67,67,67,67,67,67,67,1431,67,67,67,67,67,67,67,1695,67,67,67,67,67,1700,67,1702,67,67,1439,67,67,67,67,67,67,67,67,67,67,67,67,67,514,67,67,97,97,1492,97,97,97,97,97,97,97,97,97,97,97,97,97,611,97,97,1703,67,67,67,67,67,67,97,97,97,97,97,97,97,97,97,852,97,97,97,97,97,97,45,1949,45,1951,45,45,45,67,67,67,67,67,67,67,1961,67,0,97,45,67,0,97,2060,2061,0,2062,45,67,97,0,0,2036,97,97,97,97,45,45,45,45,67,67,67,67,67,223,67,67,237,67,67,67,67,67,67,67,1272,67,67,67,67,67,67,67,67,507,67,67,67,67,67,67,67,1963,67,67,67,97,97,97,97,0,1972,0,97,97,97,1975,0,921,29315,0,0,0,0,45,45,45,931,45,45,45,45,45,407,45,45,45,45,45,45,45,45,45,417,45,45,1989,67,67,67,67,67,67,67,67,67,67,67,1996,97,18,131427,0,0,360,0,0,0,362,0,0,365,29315,367,0,921,29315,0,0,0,0,45,45,930,45,45,45,45,45,45,444,45,45,45,45,45,45,45,67,67,97,97,1998,0,97,97,97,0,97,97,97,97,97,45,45,45,45,45,45,1985,45,1986,45,45,45,156,45,45,170,45,45,45,45,45,45,45,45,45,45,675,45,45,45,45,679,131427,0,358,0,0,362,0,365,28809,367,139,45,45,45,45,45,381,45,45,45,45,45,45,45,45,45,400,45,45,419,45,45,45,45,45,45,45,45,45,45,45,45,436,67,67,67,67,67,505,67,67,67,67,67,67,67,67,67,67,820,67,25398,542,13112,544,67,67,522,67,67,67,67,67,529,67,67,67,67,67,67,67,0,1299,0,0,0,1305,0,0,0,97,97,619,97,97,97,97,97,626,97,97,97,97,97,97,97,1105,97,97,97,97,1109,97,97,97,67,67,67,67,749,67,67,67,67,67,67,67,67,67,760,67,0,97,45,67,2058,97,45,67,0,97,45,67,97,0,0,97,97,97,97,97,45,45,45,2041,67,67,67,67,67,780,67,67,67,67,67,67,67,67,67,67,67,67,67,516,67,67,97,97,97,878,97,97,97,97,97,97,97,97,97,97,97,97,97,1629,97,0,45,979,45,45,45,45,984,45,45,45,45,45,45,45,45,45,1198,45,45,45,45,45,45,67,1023,67,67,67,67,1028,67,67,67,67,67,67,67,67,67,470,67,67,67,67,67,67,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,1094,0,0,0,1092,1315,0,0,0,0,97,97,97,97,97,97,97,97,97,1486,97,1489,97,97,97,1117,97,97,97,97,1122,97,97,97,97,97,97,97,1146,97,97,97,97,97,97,97,97,881,97,97,97,886,97,97,97,1311,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,1615,97,97,97,97,97,1619,97,97,97,97,97,97,97,97,97,97,97,97,1631,97,97,1847,97,45,45,45,45,1852,45,45,45,45,45,45,45,1235,45,45,45,67,67,67,67,67,1868,67,67,67,1872,67,67,67,67,67,97,97,97,97,1882,0,0,0,97,97,97,97,0,1891,67,67,67,67,67,97,97,97,97,97,1929,0,0,97,97,97,97,97,97,45,1900,45,1901,45,45,45,1905,45,67,2054,97,45,67,0,97,45,67,0,97,45,67,97,0,0,97,2037,2038,97,97,45,45,45,45,67,67,67,67,1867,67,67,67,67,67,67,67,67,67,1774,97,97,97,97,97,97,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,142,45,45,45,1412,45,45,45,45,45,45,45,45,45,45,45,45,432,45,45,45,45,45,157,45,45,171,45,45,45,182,45,45,45,45,200,45,45,45,1543,45,45,45,45,45,45,45,45,1551,45,45,45,45,1181,45,45,45,45,45,45,45,45,45,45,45,1211,45,45,45,1214,45,45,45,67,209,67,67,67,224,67,67,238,67,67,67,249,67,0,97,2056,2057,0,2059,45,67,0,97,45,67,97,0,0,1937,97,97,97,97,97,97,45,45,45,45,45,45,1741,45,45,45,45,45,45,67,67,67,267,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,289,97,97,97,304,97,97,318,97,97,97,329,97,97,0,0,97,1783,97,97,97,97,0,0,97,97,0,97,97,97,45,2026,45,45,45,45,67,2030,67,67,67,67,67,67,1041,67,67,67,67,67,67,67,67,67,1044,67,67,67,67,67,67,97,97,347,97,97,97,0,40976,0,18,18,24,24,27,27,27,45,666,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1420,45,57889,0,0,54074,54074,550,0,97,97,97,97,97,97,97,97,840,67,1007,67,67,67,67,67,67,67,67,67,67,67,67,67,67,759,67,67,67,67,67,67,67,1052,67,67,67,67,67,67,67,67,67,67,1031,67,67,67,67,67,97,97,97,1101,97,97,97,97,97,97,97,97,97,97,97,97,592,97,97,97,1190,45,45,45,45,45,1195,45,1197,45,45,45,45,1201,45,45,45,45,1952,45,45,67,67,67,67,67,67,67,67,67,67,67,67,250,67,67,67,1255,67,1257,67,67,67,67,1261,67,67,67,67,67,67,67,67,1685,67,67,67,67,67,67,67,0,24851,12565,0,0,0,0,28809,53532,67,67,1267,67,67,67,67,67,67,1273,67,67,67,67,67,67,67,67,1696,67,67,67,67,67,67,67,0,0,0,0,0,0,2162688,0,0,1281,67,67,67,67,1285,67,67,67,67,67,67,67,67,67,67,1070,67,67,67,67,67,1335,97,1337,97,97,97,97,1341,97,97,97,97,97,97,97,97,882,97,97,97,97,97,97,97,1347,97,97,97,97,97,97,1353,97,97,97,97,97,97,1361,97,18,131427,0,638,0,0,0,0,362,0,0,365,29315,367,0,544,0,550,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2473984,2158592,2158592,2158592,2990080,2158592,2158592,2207744,2207744,2482176,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,0,53530,97,97,97,1365,97,97,97,97,97,97,97,97,97,97,97,97,608,97,97,97,45,45,1424,45,1425,67,67,67,67,67,67,67,67,67,67,67,1058,67,67,67,67,45,1555,45,45,1557,45,45,45,45,45,45,45,45,45,45,45,707,45,45,45,45,67,67,1570,67,67,67,67,67,67,67,67,67,67,67,67,67,773,67,67,1595,67,67,1597,67,67,67,67,67,67,67,67,67,67,67,0,0,0,0,0,0,0,0,0,0,139,2158592,2158592,2158592,2404352,2412544,97,97,97,1636,97,97,97,1639,97,97,1641,97,97,97,97,97,97,1173,0,921,0,0,0,0,0,0,45,67,67,67,1693,67,67,67,67,67,67,67,1698,67,67,67,67,67,67,67,1773,67,97,97,97,97,97,97,97,625,97,97,97,97,97,97,97,97,850,97,97,97,97,97,97,97,97,880,97,97,97,97,97,97,97,97,1106,97,97,97,97,97,97,97,1860,45,45,67,67,1865,67,67,67,67,1870,67,67,67,67,1875,67,67,97,97,1880,97,97,0,0,0,97,97,1888,97,0,0,0,1938,97,97,97,97,97,45,45,45,45,45,45,1854,45,45,45,45,45,45,45,1909,45,45,1911,67,67,67,67,67,67,67,67,67,67,1248,67,67,67,67,67,67,1922,67,67,1924,97,97,97,97,97,0,0,0,97,97,97,97,97,1898,45,45,45,45,45,45,1904,45,45,67,67,67,67,97,97,97,97,0,0,16384,97,97,97,97,0,97,97,97,97,97,97,97,97,97,0,1724,2008,2009,45,45,67,67,67,2014,2015,67,67,97,97,0,0,97,97,97,0,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,45,45,45,2022,0,2023,97,97,45,45,45,45,45,45,67,67,67,67,67,67,1869,67,67,67,67,67,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,147,151,154,45,162,45,45,176,178,181,45,45,45,192,196,45,45,45,45,2012,67,67,67,67,67,67,2018,97,0,0,97,1978,97,97,97,1982,45,45,45,45,45,45,45,45,45,972,973,45,45,45,45,45,67,259,263,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,294,298,301,97,309,97,97,323,325,328,97,97,97,97,97,560,97,97,97,569,97,97,97,97,97,97,306,97,97,97,97,97,97,97,97,97,1624,97,97,97,97,97,97,97,0,921,0,1175,0,0,0,0,45,339,343,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,67,67,503,67,67,67,67,67,67,67,67,67,512,67,67,519,97,97,600,97,97,97,97,97,97,97,97,97,609,97,97,616,45,649,45,45,45,45,45,654,45,45,45,45,45,45,45,45,1393,45,45,45,45,45,45,45,45,1209,45,45,45,45,45,45,45,67,763,67,67,67,67,67,67,67,67,770,67,67,67,774,67,0,2045,97,97,97,97,45,45,67,67,0,0,97,97,45,45,45,994,45,45,45,45,45,45,45,45,45,45,67,67,213,67,219,67,67,232,67,242,67,247,67,67,67,779,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1018,67,67,67,67,811,67,67,67,67,67,67,67,67,67,25398,542,13112,544,57889,0,0,54074,54074,550,0,97,834,97,97,97,97,97,839,97,18,131427,0,638,0,0,0,0,362,0,0,365,29315,367,645,97,97,861,97,97,97,97,97,97,97,97,868,97,97,97,872,97,97,877,97,97,97,97,97,97,97,97,97,97,97,97,97,613,97,97,97,97,97,909,97,97,97,97,97,97,97,97,97,0,0,0,18,18,24,24,27,27,27,1036,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1047,67,67,67,1050,67,67,67,67,67,67,67,67,67,67,67,67,1033,67,67,67,97,97,1130,97,97,97,97,97,97,97,97,97,97,97,97,97,638,0,0,67,67,67,1295,67,67,67,0,0,0,0,0,0,0,0,0,97,1317,97,97,97,97,97,97,1375,97,97,97,0,0,0,45,1379,45,45,45,45,45,45,422,45,45,45,429,431,45,45,45,45,0,1090,0,0,97,1479,97,97,97,97,97,97,97,97,97,97,1357,97,97,97,97,97,97,97,97,97,1716,97,97,97,97,97,97,97,97,97,1723,0,921,29315,0,0,0,0,45,929,45,45,45,45,45,45,45,1392,45,45,45,45,45,45,45,45,45,960,45,45,45,45,45,45,97,97,97,1738,45,45,45,45,45,45,45,1743,45,45,45,45,166,45,45,45,45,184,186,45,45,197,45,45,97,1779,0,0,97,97,97,97,97,97,0,0,97,97,0,97,18,131427,0,638,0,0,0,0,362,0,640,365,29315,367,0,921,29315,0,0,0,0,45,45,45,45,45,45,45,45,45,45,1537,45,45,45,45,45,1803,45,45,45,45,45,1809,45,45,45,67,67,67,1814,67,67,67,67,67,67,1821,67,67,67,67,67,67,97,97,97,97,97,0,0,0,97,97,97,97,0,0,67,67,67,1818,67,67,67,67,67,1824,67,67,67,97,97,97,97,97,0,0,0,97,97,97,97,1890,0,1829,97,97,0,0,97,97,1836,97,97,0,0,0,97,97,97,97,1981,45,45,45,45,45,45,45,45,45,1987,1845,97,97,97,45,45,45,45,45,1853,45,45,45,1857,45,45,45,67,1864,67,1866,67,67,67,67,67,67,67,67,67,97,97,97,97,97,97,97,1710,1711,67,67,97,97,97,97,97,0,0,0,1886,97,97,97,0,0,97,97,97,97,1838,0,0,0,97,1843,97,0,1893,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,1745,45,45,67,67,67,67,67,97,97,97,97,97,0,0,1931,97,97,97,97,97,588,97,97,97,97,97,97,97,97,97,97,629,97,97,97,97,97,67,2044,0,97,97,97,97,45,45,67,67,0,0,97,97,45,45,45,1660,45,45,45,45,45,45,45,45,45,45,45,45,453,45,455,67,67,67,67,268,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,348,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,359,0,0,362,0,365,28809,367,139,45,45,45,45,45,421,45,45,45,45,45,45,45,434,45,45,695,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1667,45,0,921,29315,0,925,0,0,45,45,45,45,45,45,45,45,45,1811,45,67,67,67,67,67,67,1037,67,1039,67,67,67,67,67,67,67,67,67,67,67,67,1277,67,67,67,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,1095,0,0,0,1096,97,97,97,97,97,97,97,97,97,97,97,97,869,97,97,97,97,97,97,1131,97,1133,97,97,97,97,97,97,97,97,97,97,1370,97,97,97,97,97,1312,0,0,0,0,1096,0,0,0,97,97,97,97,97,97,97,1327,97,97,97,97,97,1332,97,97,97,1830,97,0,0,97,97,97,97,97,0,0,0,97,97,97,1896,97,97,45,45,45,45,45,45,45,45,45,1548,45,45,45,45,45,45,133,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,45,380,45,45,45,45,45,45,45,45,45,45,401,45,45,158,45,45,45,45,45,45,45,45,45,45,45,45,45,1200,45,45,45,45,206,67,67,67,67,67,225,67,67,67,67,67,67,67,67,754,67,67,67,67,67,67,67,57889,0,0,54074,54074,550,832,97,97,97,97,97,97,97,97,97,1342,97,97,97,97,97,97,67,67,67,67,67,25398,1083,13112,1087,54074,1091,0,0,0,0,0,0,1316,0,831,97,97,97,97,97,97,97,1174,921,0,1175,0,0,0,0,45,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,148,67,67,264,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,295,97,97,97,97,313,97,97,97,97,331,333,97,18,131427,356,638,0,0,0,0,362,0,0,365,0,367,0,45,45,1530,45,45,45,45,45,45,45,45,45,45,45,45,988,45,45,45,97,344,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,402,404,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1756,67,438,45,45,45,45,45,45,45,45,449,450,45,45,45,67,67,214,218,221,67,229,67,67,243,245,248,67,67,67,67,67,488,490,67,67,67,67,67,67,67,67,67,67,67,1071,67,1073,67,67,67,67,67,524,67,67,67,67,67,67,67,67,535,536,67,67,67,67,67,67,1683,1684,67,67,67,67,1688,1689,67,67,67,67,67,67,1586,67,67,67,67,67,67,67,67,67,469,67,67,67,67,67,67,97,97,97,585,587,97,97,97,97,97,97,97,97,97,97,97,1163,97,97,97,97,97,97,97,621,97,97,97,97,97,97,97,97,632,633,97,97,0,0,1782,97,97,97,97,97,0,0,97,97,0,97,712,45,45,45,717,45,45,45,45,45,45,45,45,725,45,45,45,163,167,173,177,45,45,45,45,45,193,45,45,45,45,982,45,45,45,45,45,45,987,45,45,45,45,45,1558,45,1560,45,45,45,45,45,45,45,45,704,705,45,45,45,45,45,45,45,45,731,45,45,45,67,67,67,67,67,739,67,67,67,67,67,67,273,0,24850,12564,0,0,0,0,28809,53531,67,67,67,764,67,67,67,67,67,67,67,67,67,67,67,67,1290,67,67,67,67,67,67,812,67,67,67,67,818,67,67,67,25398,542,13112,544,57889,0,0,54074,54074,550,0,97,97,97,97,97,837,97,97,97,97,97,602,97,97,97,97,97,97,97,97,97,97,1137,97,97,97,97,97,97,97,97,97,862,97,97,97,97,97,97,97,97,97,97,97,1627,97,97,97,0,97,97,97,97,910,97,97,97,97,916,97,97,97,0,0,0,97,97,1940,97,97,1942,45,45,45,45,45,45,385,45,45,45,45,395,45,45,45,45,966,45,969,45,45,45,45,45,45,45,45,45,45,975,45,45,45,406,45,45,45,45,45,45,45,45,45,45,45,45,974,45,45,45,67,67,67,67,1010,67,67,67,67,67,67,67,67,67,67,67,1262,67,67,67,67,67,67,67,67,67,1040,67,1042,67,1045,67,67,67,67,67,67,67,97,1706,97,97,97,1709,97,97,97,67,67,67,67,1051,67,67,67,67,67,1057,67,67,67,67,67,67,67,1443,67,67,1446,67,67,67,67,67,67,67,1297,0,0,0,1303,0,0,0,1309,67,67,67,67,1079,25398,0,13112,0,54074,0,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2207744,2207744,2207744,2207744,2572288,2207744,2207744,2207744,1098,97,97,97,97,97,1104,97,97,97,97,97,97,97,97,97,1356,97,97,97,97,97,97,1128,97,97,97,97,97,97,1134,97,1136,97,1139,97,97,97,97,97,97,1622,97,97,97,97,97,97,97,97,0,921,0,0,0,1176,0,646,45,67,67,67,1268,67,67,67,67,67,67,67,67,67,67,67,67,1469,67,67,67,97,1348,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1127,97,67,1569,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1448,1449,67,1816,67,67,67,67,67,67,67,67,67,1825,67,67,1827,97,97,0,1781,97,97,97,97,97,97,0,0,97,97,0,97,97,97,1831,0,0,97,97,97,97,97,0,0,0,97,97,97,1980,97,45,45,45,45,45,45,45,45,45,45,1395,45,45,45,45,45,97,1846,97,97,45,45,45,45,45,45,45,45,45,45,45,45,1212,45,45,45,45,45,45,2010,45,67,67,67,67,67,2016,67,97,97,0,0,97,97,97,0,97,97,97,97,97,45,45,2007,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,143,45,45,45,1671,45,45,45,45,45,45,45,45,45,45,45,67,1813,67,67,1815,45,45,67,210,67,67,67,67,67,67,239,67,67,67,67,67,67,67,1454,67,67,67,67,67,67,67,67,67,1445,67,67,67,67,67,67,97,97,290,97,97,97,97,97,97,319,97,97,97,97,97,97,303,97,97,317,97,97,97,97,97,97,305,97,97,97,97,97,97,97,97,97,899,97,97,97,97,97,97,375,45,45,45,379,45,45,390,45,45,394,45,45,45,45,45,443,45,45,45,45,45,45,45,45,67,67,67,67,67,461,67,67,67,465,67,67,476,67,67,480,67,67,67,67,67,67,1694,67,67,67,67,67,67,67,67,67,1288,67,67,67,67,67,67,500,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1075,97,97,97,558,97,97,97,562,97,97,573,97,97,577,97,97,97,97,97,895,97,97,97,97,97,97,903,97,97,97,0,97,97,1638,97,97,97,97,97,97,97,97,1646,597,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1334,45,681,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1396,45,45,1399,45,45,730,45,45,45,45,67,67,67,67,67,67,67,67,67,67,1434,67,67,67,67,67,67,750,67,67,67,67,67,67,67,67,67,67,1456,67,67,67,67,67,45,45,993,45,45,45,45,45,45,45,45,45,45,45,67,67,1238,67,67,1006,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1280,1048,1049,67,67,67,67,67,67,67,67,67,67,1059,67,67,67,67,67,67,1286,67,67,67,67,67,67,67,1291,67,97,97,1100,97,97,97,97,97,97,97,97,97,97,97,97,97,638,0,920,97,97,1142,1143,97,97,97,97,97,97,97,97,97,97,1153,97,97,97,97,97,1158,97,97,97,1161,97,97,97,97,1166,97,97,97,97,97,1325,97,97,97,97,97,97,97,97,97,97,1328,97,97,97,97,97,97,97,45,1218,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1678,45,45,45,67,67,67,67,67,1269,67,67,67,67,67,67,67,67,1278,67,67,67,67,67,67,1761,67,67,67,67,67,67,67,67,67,530,67,67,67,67,67,67,97,97,1349,97,97,97,97,97,97,97,97,1358,97,97,97,97,97,97,1623,97,97,97,97,97,97,97,97,0,921,0,0,926,0,0,0,45,45,1411,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1754,45,45,67,67,1301,0,1307,0,1313,97,97,97,97,97,97,97,97,97,97,97,21054,97,97,97,97,67,1757,67,67,67,1760,67,67,67,67,67,67,67,67,67,67,1467,67,67,67,67,67,1778,97,0,0,97,97,97,97,97,97,0,0,97,97,0,97,97,97,97,97,1352,97,97,97,97,97,97,97,97,97,97,1511,97,97,97,97,97,67,67,67,67,67,1820,67,1822,67,67,67,67,67,97,97,97,97,97,0,0,0,97,1933,97,1892,97,97,97,97,97,97,1899,45,45,45,45,45,45,45,45,1664,45,45,45,45,45,45,45,45,1546,45,45,45,45,45,45,45,45,1208,45,45,45,45,45,45,45,45,1224,45,45,45,45,45,45,45,45,673,45,45,45,45,45,45,45,67,67,67,67,67,1925,97,97,97,97,0,0,0,97,97,97,97,97,623,97,97,97,97,97,97,97,97,97,97,307,97,97,97,97,97,97,97,97,97,1796,97,45,45,45,45,45,45,45,970,45,45,45,45,45,45,45,45,1417,45,45,45,45,45,45,45,67,1964,67,67,97,97,97,97,0,0,0,97,97,97,97,0,97,97,97,97,97,97,1721,97,97,0,0,1997,97,0,0,2e3,97,97,0,97,97,97,97,97,45,45,45,45,733,45,67,67,67,67,67,67,67,67,67,67,803,67,67,67,67,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,144,45,45,45,1805,45,1807,45,45,45,45,45,67,67,67,67,67,67,231,67,67,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,45,45,67,211,67,67,67,67,230,234,240,244,67,67,67,67,67,67,464,67,67,67,67,67,67,479,67,67,67,260,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,291,97,97,97,97,310,314,320,324,97,97,97,97,97,97,1367,97,97,97,97,97,97,97,97,97,1355,97,97,97,97,97,97,1362,340,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,360,0,362,0,365,28809,367,139,369,45,45,45,374,67,67,460,67,67,67,67,466,67,67,67,67,67,67,67,67,801,67,67,67,67,67,67,67,67,67,487,67,67,67,67,67,67,67,67,67,67,498,67,67,67,67,67,67,1772,67,67,97,97,97,97,97,97,97,0,921,922,1175,0,0,0,0,45,67,502,67,67,67,67,67,67,67,508,67,67,67,515,517,67,67,67,67,67,97,97,97,97,97,0,0,0,1932,97,97,0,1999,97,97,97,0,97,97,2004,2005,97,45,45,45,45,1193,45,45,45,45,45,45,45,45,45,45,45,676,45,45,45,45,67,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,552,97,97,97,97,97,1377,0,0,45,45,45,45,45,45,45,45,655,45,45,45,45,45,45,45,97,97,557,97,97,97,97,563,97,97,97,97,97,97,97,97,1135,97,97,97,97,97,97,97,97,97,584,97,97,97,97,97,97,97,97,97,97,595,97,97,97,97,97,911,97,97,97,97,97,97,97,638,0,0,0,0,1315,0,0,0,0,97,97,97,1319,97,97,97,0,97,97,97,97,97,97,1733,97,97,97,97,97,97,1340,97,97,97,1343,97,97,1345,97,1346,97,599,97,97,97,97,97,97,97,605,97,97,97,612,614,97,97,97,97,97,1794,97,97,97,45,45,45,45,45,45,45,1207,45,45,45,45,45,45,1213,45,45,745,67,67,67,67,751,67,67,67,67,67,67,67,67,67,67,1577,67,67,67,67,67,762,67,67,67,67,766,67,67,67,67,67,67,67,67,67,67,1765,67,67,67,67,67,777,67,67,781,67,67,67,67,67,67,67,67,67,67,67,67,1592,1593,67,67,97,843,97,97,97,97,849,97,97,97,97,97,97,97,97,97,1510,97,97,97,97,97,97,97,860,97,97,97,97,864,97,97,97,97,97,97,97,97,97,1797,45,45,45,45,1801,45,97,875,97,97,879,97,97,97,97,97,97,97,97,97,97,97,1522,97,97,97,97,97,991,45,45,45,45,996,45,45,45,45,45,45,45,45,67,67,215,67,67,67,67,233,67,67,67,67,251,253,1022,67,67,67,1026,67,67,67,67,67,67,67,67,67,67,1035,67,67,1038,67,67,67,67,67,67,67,67,67,67,67,67,67,1458,67,67,67,67,67,1064,67,67,67,1067,67,67,67,67,1072,67,67,67,67,67,67,1296,0,0,0,0,0,0,0,0,0,2367488,2158592,2158592,2158592,2158592,2158592,2158592,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,1096,0,921,29315,0,0,0,0,928,45,45,45,45,45,934,45,45,45,164,45,45,45,45,45,45,45,45,45,198,45,45,45,378,45,45,45,45,45,45,393,45,45,45,398,45,97,97,1116,97,97,97,1120,97,97,97,97,97,97,97,97,97,1147,1148,97,97,97,97,97,97,97,1129,97,97,1132,97,97,97,97,97,97,97,97,97,97,97,1626,97,97,97,97,0,45,1178,45,45,45,45,45,45,45,45,45,1185,45,45,45,45,441,45,45,45,45,45,45,451,45,45,67,67,67,67,67,227,67,67,67,67,67,67,67,67,1260,67,67,67,1263,67,67,1265,1203,45,45,1205,45,1206,45,45,45,45,45,45,45,45,45,1216,67,1266,67,67,67,67,67,67,67,67,67,1276,67,67,67,67,67,67,492,67,67,67,67,67,67,67,67,67,471,67,67,67,67,481,67,45,1386,45,1389,45,45,45,45,1394,45,45,45,1397,45,45,45,45,995,45,997,45,45,45,45,45,45,45,67,67,67,67,1915,67,67,67,67,67,1422,45,45,45,67,67,67,67,67,67,67,67,67,1433,67,1436,67,67,67,67,1441,67,67,67,1444,67,67,67,67,67,67,67,0,24850,12564,0,0,0,281,28809,53531,97,97,97,97,1494,97,97,97,1497,97,97,97,97,97,97,97,1368,97,97,97,97,97,97,97,97,851,97,97,97,97,97,97,97,67,67,67,1571,67,67,67,67,67,67,67,67,67,67,67,67,25398,542,13112,544,67,67,1583,67,67,67,67,67,67,67,67,1591,67,67,67,67,67,67,752,67,67,67,67,67,67,67,67,67,1056,67,67,67,67,67,67,97,1634,97,0,97,97,97,97,97,97,97,97,97,97,97,97,1125,97,97,97,1647,97,97,97,97,97,0,45,45,45,45,45,45,45,45,45,1183,45,45,45,45,45,45,45,45,45,409,45,45,45,45,45,45,1658,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1668,1712,97,97,97,0,97,97,97,97,97,97,97,97,97,0,0,1835,97,97,97,97,0,0,0,97,97,1844,97,97,1726,0,97,97,97,97,97,1732,97,1734,97,97,97,97,97,300,97,308,97,97,97,97,97,97,97,97,866,97,97,97,97,97,97,97,67,67,67,1758,67,67,67,1762,67,67,67,67,67,67,67,67,1043,67,67,67,67,67,67,67,67,67,67,67,67,1771,67,67,67,97,97,97,97,97,1776,97,97,97,97,297,97,97,97,97,97,97,97,97,97,97,97,1108,97,97,97,97,67,67,67,1966,97,97,97,1970,0,0,0,97,97,97,97,0,97,97,97,1720,97,97,97,97,97,0,0,97,97,97,1837,97,0,1840,1841,97,97,97,1988,45,67,67,67,67,67,67,67,67,67,1994,1995,67,97,97,97,97,97,1103,97,97,97,97,97,97,97,97,97,97,917,97,97,0,0,0,67,67,265,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,345,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,0,361,362,0,365,28809,367,139,45,45,45,45,45,671,45,45,45,45,45,45,45,45,45,45,411,45,45,414,45,45,45,45,377,45,45,45,386,45,45,45,45,45,45,45,45,45,1223,45,45,45,45,45,45,45,45,45,426,45,45,433,45,45,45,67,67,67,67,67,463,67,67,67,472,67,67,67,67,67,67,67,527,67,67,67,67,67,67,537,67,540,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,97,97,97,97,97,1119,97,97,97,97,97,97,97,97,97,97,1509,97,97,97,97,97,97,97,97,564,97,97,97,97,97,97,97,637,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,0,921,29315,0,0,0,927,45,45,45,45,45,45,45,45,45,1234,45,45,45,45,67,67,67,67,1240,45,697,45,45,45,45,45,45,45,45,45,45,708,45,45,45,45,1221,45,45,45,45,1225,45,45,45,45,45,45,384,45,45,45,45,45,45,45,45,45,1210,45,45,45,45,45,45,67,67,795,67,67,67,67,67,67,67,67,67,67,67,67,67,1470,67,67,67,67,67,67,67,815,67,67,67,67,67,67,25398,542,13112,544,97,97,97,893,97,97,97,97,97,97,97,97,97,97,97,97,1164,97,97,97,67,67,67,1025,67,67,67,67,67,67,67,67,67,67,67,67,1687,67,67,67,67,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,0,1097,1241,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1450,45,45,1388,45,1390,45,45,45,45,45,45,45,45,45,45,45,1236,67,67,67,67,67,1437,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1472,1490,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1503,67,67,67,67,67,97,97,97,97,97,0,1930,0,97,97,97,97,97,847,97,97,97,97,97,97,97,97,97,858,67,67,1965,67,97,97,97,97,0,0,0,97,97,97,97,0,97,97,1719,97,97,97,97,97,97,0,0,0,45,45,45,45,1382,45,1383,45,45,45,159,45,45,45,45,45,45,45,45,45,45,45,45,45,1563,45,45,45,45,45,67,261,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,341,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,97,1099,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1333,97,1230,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,1992,67,1993,67,67,67,97,97,45,45,160,45,45,45,45,45,45,45,45,45,45,45,45,45,1665,45,45,45,45,45,131427,357,0,0,0,362,0,365,28809,367,139,45,45,45,45,45,684,45,45,45,45,45,45,45,45,45,45,412,45,45,45,416,45,45,45,440,45,45,45,45,45,45,45,45,45,45,45,67,67,1990,67,1991,67,67,67,67,67,67,67,97,97,1707,97,97,97,97,97,97,501,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1691,67,67,67,67,67,526,67,67,67,67,67,67,67,67,67,67,1030,67,1032,67,67,67,67,598,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1632,0,921,29315,923,0,0,0,45,45,45,45,45,45,45,45,45,1404,45,45,45,45,45,45,45,45,45,425,45,45,45,45,45,45,67,67,67,67,67,25398,0,13112,0,54074,0,0,1093,0,0,0,0,0,97,1609,97,97,97,97,97,97,97,97,97,1369,97,97,97,1372,97,97,67,67,266,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,346,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,665,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1677,45,45,45,45,67,45,45,954,45,956,45,45,45,45,45,45,45,45,45,45,45,1545,45,45,45,45,45,45,45,45,45,448,45,45,45,45,67,456,67,67,67,67,67,1270,67,67,67,67,67,67,67,67,67,67,1069,67,67,67,67,67,67,97,97,97,1350,97,97,97,97,97,97,97,97,97,97,97,97,1524,97,97,97,97,97,97,97,1376,0,0,0,45,45,45,45,45,45,45,45,1559,1561,45,45,45,1564,45,1566,1567,45,67,67,67,67,67,1573,67,67,67,67,67,67,67,67,67,67,1247,67,67,67,67,67,1252,97,1725,97,0,97,97,97,97,97,97,97,97,97,97,97,97,1628,97,1630,0,0,94242,0,0,0,2211840,0,1118208,0,0,0,0,2158592,2158731,2158592,2158592,2158592,3117056,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3018752,2158592,3043328,2158592,2158592,2158592,2158592,3080192,2158592,2158592,3112960,2158592,2158592,2158592,2158592,2158592,2158878,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2605056,2158592,2158592,2207744,0,542,0,544,0,0,2166784,0,0,0,550,0,0,2158592,2158592,2686976,2158592,2715648,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2867200,2158592,2904064,2158592,2158592,2158592,2158592,2158592,2158592,2158592,0,94242,0,0,0,2211840,0,0,1130496,0,0,0,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,0,139,0,0,0,139,0,2367488,2207744,0,0,0,0,176128,0,2166784,0,0,0,0,0,286,2158592,2158592,3170304,3174400,2158592,0,0,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,1508,2158592,2908160,2158592,2158592,2158592,2977792,2158592,2158592,2158592,2158592,3039232,2158592,2158592,2158592,2158592,2158592,2158592,3158016,67,24850,24850,12564,12564,0,0,0,0,0,53531,53531,0,286,97,97,97,97,97,1144,97,97,97,97,97,97,97,97,97,97,1149,97,97,97,97,1154,57889,0,0,0,0,550,0,97,97,97,97,97,97,97,97,97,561,97,97,97,97,97,97,576,97,97,139264,139264,139264,139264,139264,139264,139264,139264,139264,139264,139264,139264,0,0,139264,0,921,29315,0,0,926,0,45,45,45,45,45,45,45,45,45,719,720,45,45,45,45,45,45,45,45,685,45,45,45,45,45,45,45,45,45,942,45,45,946,45,45,45,950,45,45,0,2146304,2146304,0,0,0,0,2224128,2224128,2224128,2232320,2232320,2232320,2232320,0,0,1301,0,0,0,0,0,1307,0,0,0,0,0,1313,0,0,0,0,0,0,0,97,97,1318,97,97,97,97,97,97,1795,97,97,45,45,45,45,45,45,45,446,45,45,45,45,45,45,67,67,2158592,2146304,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,0,921,29315,0,924,0,0,45,45,45,45,45,45,45,45,45,1e3,45,45,45,45,67,67],r.EXPECTED=[290,300,304,353,296,309,305,319,315,324,328,352,354,334,338,330,320,345,349,293,358,362,341,366,312,370,374,378,382,386,390,394,398,737,402,634,439,604,634,634,634,634,408,634,634,634,404,634,634,634,457,634,634,963,634,634,413,634,634,634,634,634,634,634,663,418,422,903,902,426,431,548,634,437,521,919,443,615,409,449,455,624,731,751,634,461,465,672,470,469,474,481,485,477,489,493,629,542,497,505,603,602,991,648,510,804,634,515,958,526,525,530,768,634,546,552,711,710,593,558,562,618,566,570,574,578,582,586,590,608,612,660,822,821,634,622,596,444,628,533,724,633,640,653,647,652,536,1008,451,450,445,657,670,676,685,689,693,697,701,704,707,715,719,798,815,634,723,762,996,634,728,969,730,735,908,634,741,679,889,511,747,634,750,755,499,666,499,501,759,772,776,780,634,787,784,797,802,809,808,427,814,1006,517,634,519,853,634,813,850,793,634,819,826,833,832,837,843,847,857,861,863,867,871,875,879,883,643,887,539,980,979,634,893,944,634,900,896,634,907,933,506,912,917,828,433,636,635,554,961,923,930,927,937,941,634,634,634,974,948,952,985,913,968,967,743,634,973,839,634,978,599,634,984,989,765,444,995,1e3,634,1003,790,955,1012,681,634,634,634,634,634,414,1016,1020,1024,1085,1027,1090,1090,1046,1080,1137,1108,1215,1049,1032,1039,1085,1085,1085,1085,1058,1062,1068,1085,1086,1090,1090,1091,1072,1064,1107,1090,1090,1090,1118,1123,1138,1078,1074,1084,1085,1085,1085,1087,1090,1062,1052,1060,1114,1062,1104,1085,1085,1090,1090,1028,1122,1063,1128,1139,1127,1158,1085,1085,1151,1090,1090,1090,1095,1090,1132,1073,1136,1143,1061,1150,1085,1155,1098,1101,1146,1162,1169,1101,1185,1151,1090,1110,1173,1054,1087,1109,1177,1165,1089,1204,1184,1107,1189,1193,1088,1197,1180,1201,1208,1042,1212,1219,1223,1227,1231,1235,1245,1777,1527,1686,1686,1238,1686,1254,1686,1686,1686,1294,1669,1686,1686,1686,1322,1625,1534,1268,1624,1275,1281,1443,1292,1300,1686,1686,1686,1350,1826,1306,1686,1686,1240,2032,1317,1321,1686,1686,1253,1686,1326,1686,1686,1686,1418,1709,1446,1686,1686,1686,1492,1686,1295,1447,1686,1686,1258,1686,1736,1686,1686,1520,1355,1686,1288,1348,1361,1686,1359,1686,1364,1498,1368,1302,1362,1381,1389,1395,1486,1686,1371,1377,1370,1686,1375,1382,1384,1402,1408,1385,1383,1619,1413,1423,1428,1433,1686,1686,1270,1686,1338,1686,1440,1686,1686,1686,1499,1465,1686,1686,1686,1639,1473,1884,1686,1686,1293,1864,1686,1686,1296,1321,1483,1686,1686,1686,1646,1686,1748,1496,1686,1418,1675,1686,1418,1702,1686,1418,1981,1686,1429,1409,1427,1504,1692,1686,1686,1313,1448,1651,1508,1686,1686,1340,1686,1903,1686,1686,1435,1513,1686,1283,1287,1519,1686,1524,1363,1568,1938,1539,1566,1579,1479,1533,1538,1553,1544,1552,1557,1563,1574,1557,1583,1589,1590,1759,1594,1603,1607,1611,1686,1436,1514,1686,1434,1656,1686,1434,1680,1686,1453,1686,1686,1686,1559,1617,1686,1770,1418,1623,1769,1629,1686,1515,1335,1686,1285,1686,1671,1921,1650,1686,1686,1344,1308,1666,1686,1686,1686,1659,1685,1686,1686,1686,1686,1241,1686,1686,1844,1691,1686,1630,1977,1970,1362,1686,1686,1686,1693,1698,1686,1686,1686,1697,1686,1764,1715,1686,1634,1638,1686,1599,1585,1686,1271,1686,1269,1686,1721,1686,1686,1354,1686,1801,1686,1799,1686,1640,1686,1686,1461,1686,1686,1732,1686,1944,1686,1740,1686,1746,1415,1396,1686,1598,1547,1417,1597,1416,1577,1546,1397,1577,1547,1548,1570,1398,1753,1686,1652,1509,1686,1686,1686,1757,1686,1419,1686,1763,1418,1768,1781,1686,1686,1686,1705,1686,2048,1792,1686,1686,1686,1735,1686,1797,1686,1686,1404,1686,1639,1815,1686,1686,1418,2017,1820,1686,1686,1803,1686,1686,1686,1736,1489,1686,1686,1825,1338,1260,1263,1686,1686,1785,1686,1686,1728,1686,1686,1749,1497,1830,1830,1262,1248,1261,1329,1260,1264,1329,1248,1249,1259,1540,1849,1842,1686,1686,1835,1686,1686,1816,1686,1686,1831,1882,1848,1686,1686,1686,1774,2071,1854,1686,1686,1469,1884,1686,1821,1859,1686,1686,1350,1883,1686,1686,1686,1781,1391,1875,1686,1686,1613,1644,1686,1686,1889,1686,1686,1662,1884,1686,1885,1890,1686,1686,1686,1894,1686,1686,1678,1686,1907,1686,1686,1529,1914,1686,1838,1686,1686,1881,1686,1686,1872,1876,1836,1919,1686,1837,1692,1910,1686,1925,1928,1742,1686,1811,1811,1930,1810,1929,1935,1928,1900,1942,1867,1868,1931,1035,1788,1948,1952,1956,1960,1964,1686,1976,1686,1686,1686,2065,1686,1992,2037,1686,1686,1998,2009,1972,2002,1686,1686,1686,2077,1300,2023,1686,1686,1686,1807,2031,1686,1686,1686,1860,1500,2032,1686,1686,1686,2083,1686,2036,1686,1277,1276,2042,1877,1686,1686,2041,1686,1686,2027,2037,2012,1686,2012,1855,1850,1686,2046,1686,1686,2054,1996,1686,1897,1309,2059,2052,1686,2058,1686,1686,2081,1686,1717,1477,1686,1331,1686,1686,1687,1686,1860,1681,1686,1686,1686,1966,1724,1686,1686,1686,1984,2015,1686,1686,1686,1988,1686,2063,1686,1686,1686,2005,1686,1727,1686,1686,1711,1457,2069,1686,1686,1686,2019,2075,1686,1686,1915,1686,1686,1793,1874,1686,1686,1491,1362,1449,1686,1686,1460,2098,2087,2091,2095,2184,2102,2113,2780,2117,2134,2142,2281,2146,2146,2146,2304,2296,2181,2639,2591,2872,2592,2873,2313,2195,2200,2281,2146,2273,2226,2204,2152,2219,2276,2167,2177,2276,2235,2276,2276,2230,2281,2276,2296,2276,2293,2276,2276,2276,2276,2234,2276,2311,2314,2210,2199,2217,2222,2276,2276,2276,2240,2276,2294,2276,2276,2173,2276,2198,2281,2281,2281,2281,2282,2146,2146,2146,2146,2205,2146,2204,2248,2276,2235,2276,2297,2276,2276,2276,2277,2256,2281,2283,2146,2146,2146,2275,2276,2295,2276,2276,2293,2146,2304,2264,2269,2221,2276,2276,2276,2293,2295,2276,2276,2276,2295,2263,2205,2268,2220,2172,2276,2276,2276,2296,2276,2276,2296,2294,2276,2276,2278,2281,2281,2280,2281,2281,2281,2283,2206,2223,2276,2276,2279,2281,2281,2146,2273,2276,2276,2281,2281,2281,2276,2292,2276,2298,2225,2276,2298,2169,2224,2292,2298,2171,2229,2281,2281,2171,2236,2281,2281,2281,2146,2275,2225,2292,2299,2276,2229,2281,2146,2276,2290,2297,2283,2146,2146,2274,2224,2227,2298,2225,2297,2276,2230,2170,2230,2282,2146,2147,2151,2156,2288,2276,2230,2303,2308,2236,2284,2228,2318,2318,2318,2326,2335,2339,2343,2349,2416,2693,2357,2592,2109,2592,2592,2162,2943,2823,2646,2592,2361,2592,2122,2592,2592,2122,2470,2592,2592,2592,2109,2107,2592,2592,2592,2123,2592,2592,2592,2125,2592,2413,2592,2592,2592,2127,2592,2592,2414,2592,2592,2592,2130,2952,2592,2594,2592,2592,2212,2609,2252,2592,2592,2592,2446,2434,2592,2592,2592,2212,2446,2450,2456,2431,2435,2592,2592,2243,2478,2448,2439,2946,2592,2592,2592,2368,2809,2813,2450,2441,2212,2812,2449,2440,2947,2592,2592,2592,2345,2451,2457,2948,2592,2124,2592,2592,2650,2823,2449,2455,2946,2592,2128,2592,2592,2649,2952,2592,2810,2448,2461,2991,2467,2592,2592,2329,2817,2474,2990,2466,2592,2592,2373,2447,2992,2469,2592,2592,2592,2373,2447,2477,2468,2592,2592,2353,2469,2592,2495,2592,2592,2415,2483,2592,2415,2496,2592,2592,2352,2592,2592,2352,2352,2469,2592,2592,2363,2331,2494,2592,2592,2592,2375,2592,2375,2415,2504,2592,2592,2367,2372,2503,2592,2592,2592,2389,2418,2415,2592,2592,2373,2592,2592,2592,2593,2732,2417,2415,2592,2417,2520,2592,2592,2592,2390,2521,2521,2592,2592,2592,2401,2599,2585,2526,2531,2120,2592,2212,2426,2450,2463,2948,2592,2592,2592,2213,2389,2527,2532,2121,2542,2551,2105,2592,2213,2592,2592,2592,2558,2538,2544,2553,2557,2537,2543,2552,2421,2572,2576,2546,2543,2547,2592,2592,2373,2615,2575,2545,2105,2592,2244,2479,2592,2129,2592,2592,2628,2690,2469,2562,2566,2592,2592,2592,2415,2928,2934,2401,2570,2574,2564,2572,2585,2590,2592,2592,2585,2965,2592,2592,2592,2445,2251,2592,2592,2592,2474,2592,2609,2892,2592,2362,2592,2592,2138,2851,2159,2592,2592,2592,2509,2888,2892,2592,2592,2592,2490,2418,2891,2592,2592,2376,2592,2592,2374,2592,2889,2388,2592,2373,2373,2890,2592,2592,2387,2592,2887,2505,2892,2592,2373,2610,2388,2592,2592,2376,2373,2592,2887,2891,2592,2374,2592,2592,2608,2159,2614,2620,2592,2592,2394,2594,2887,2399,2592,2887,2397,2508,2374,2507,2592,2375,2592,2592,2592,2595,2508,2506,2592,2506,2505,2505,2592,2507,2637,2505,2592,2592,2401,2661,2592,2643,2592,2592,2417,2592,2655,2592,2592,2592,2510,2414,2656,2592,2592,2592,2516,2592,2593,2660,2665,2880,2592,2592,2592,2522,2767,2666,2881,2592,2592,2420,2571,2696,2592,2592,2592,2580,2572,2686,2632,2698,2592,2383,2514,2592,2163,2932,2465,2685,2631,2697,2592,2388,2592,2592,2212,2604,2671,2632,2678,2592,2401,2405,2409,2592,2592,2592,2679,2592,2592,2592,2592,2108,2677,2591,2592,2592,2592,2419,2592,2683,2187,2191,2469,2671,2189,2467,2592,2401,2629,2633,2702,2468,2592,2592,2421,2536,2703,2469,2592,2592,2422,2573,2593,2672,2467,2592,2402,2406,2592,2402,2979,2592,2592,2626,2673,2467,2592,2446,2259,2947,2592,2377,2709,2592,2592,2522,2862,2713,2468,2592,2592,2581,2572,2562,2374,2374,2592,2376,2721,2724,2592,2592,2624,2373,2731,2592,2592,2592,2626,2732,2592,2592,2592,2755,2656,2726,2736,2741,2592,2486,2593,2381,2592,2727,2737,2742,2715,2747,2753,2592,2498,2469,2873,2743,2592,2592,2592,2791,2759,2763,2592,2592,2627,2704,2592,2592,2522,2789,2593,2761,2753,2592,2498,2863,2592,2592,2767,2592,2592,2592,2792,2789,2592,2592,2592,2803,2126,2592,2592,2592,2811,2122,2592,2592,2592,2834,2777,2592,2592,2592,2848,2936,2591,2489,2797,2592,2592,2670,2631,2490,2798,2592,2592,2592,2963,2807,2592,2592,2592,2965,2838,2592,2592,2592,2975,2330,2818,2829,2592,2498,2939,2592,2498,2592,2791,2331,2819,2830,2592,2592,2592,2982,2834,2817,2828,2106,2592,2592,2592,2405,2405,2817,2828,2592,2592,2415,2849,2842,2592,2522,2773,2592,2522,2868,2592,2580,2600,2586,2137,2850,2843,2592,2592,2855,2937,2844,2592,2592,2592,2987,2936,2591,2592,2592,2684,2630,2592,2856,2938,2592,2592,2860,2939,2592,2592,2872,2592,2861,2591,2592,2592,2887,2616,2592,2867,2592,2592,2708,2592,2498,2469,2498,2497,2785,2773,2499,2783,2770,2877,2877,2877,2772,2592,2592,2345,2885,2592,2592,2592,2715,2762,2515,2896,2592,2592,2715,2917,2516,2897,2592,2592,2592,2901,2906,2911,2592,2592,2956,2960,2715,2902,2907,2912,2593,2916,2920,2820,2922,2822,2592,2592,2715,2927,2921,2821,2106,2592,2592,2974,2408,2321,2821,2106,2592,2592,2983,2592,2593,2404,2408,2592,2592,2717,2749,2716,2928,2322,2822,2593,2926,2919,2820,2934,2823,2592,2592,2592,2651,2824,2592,2592,2592,2130,2952,2592,2592,2592,2592,2964,2592,2592,2716,2748,2592,2969,2592,2592,2716,2918,2368,2970,2592,2592,2592,2403,2407,2592,2592,2787,2211,2404,2409,2592,2592,2802,2837,2987,2592,2592,2592,2809,2427,2592,2793,2592,2592,2809,2447,1073741824,2147483648,539754496,542375936,402653184,554434560,571736064,545521856,268451840,335544320,268693630,512,2048,256,1024,0,1024,0,1073741824,2147483648,0,0,0,8388608,0,0,1073741824,1073741824,0,2147483648,537133056,4194304,1048576,268435456,-1073741824,0,0,0,1048576,0,0,0,1572864,0,0,0,4194304,0,134217728,16777216,0,0,32,64,98304,0,33554432,8388608,192,67108864,67108864,67108864,67108864,16,32,4,0,8192,196608,196608,229376,80,4096,524288,8388608,0,0,32,128,256,24576,24600,24576,24576,2,24576,24576,24576,24584,24592,24576,24578,24576,24578,24576,24576,16,512,2048,2048,256,4096,32768,1048576,4194304,67108864,134217728,268435456,262144,134217728,0,128,128,64,16384,16384,16384,67108864,32,32,4,4,4096,262144,134217728,0,0,0,2,0,8192,131072,131072,4096,4096,4096,4096,24576,24576,24576,8,8,24576,24576,16384,16384,16384,24576,24584,24576,24576,24576,16384,24576,536870912,262144,0,0,32,2048,8192,4,4096,4096,4096,786432,8388608,16777216,0,128,16384,16384,16384,32768,65536,2097152,32,32,32,32,4,4,4,4,4,4096,67108864,67108864,67108864,24576,24576,24576,24576,0,16384,16384,16384,16384,67108864,67108864,8,67108864,24576,8,8,8,24576,24576,24576,24578,24576,24576,24576,2,2,2,16384,67108864,67108864,67108864,32,67108864,8,8,24576,2048,2147483648,536870912,262144,262144,262144,67108864,8,24576,16384,32768,1048576,4194304,25165824,67108864,24576,32770,2,4,112,512,98304,524288,50,402653186,1049090,1049091,10,66,100925514,10,66,12582914,0,0,-1678194207,-1678194207,-1041543218,0,32768,0,0,32,65536,268435456,1,1,513,1048577,0,12582912,0,0,0,4,1792,0,0,0,7,29360128,0,0,0,8,0,0,0,12,1,1,0,0,-604102721,-604102721,4194304,8388608,0,0,0,31,925600,997981306,997981306,997981306,0,0,2048,8388608,0,0,1,2,4,32,64,512,8192,0,0,0,245760,997720064,0,0,0,32,0,0,0,3,12,16,32,8,112,3072,12288,16384,32768,65536,131072,7864320,16777216,973078528,0,0,65536,131072,3670016,4194304,16777216,33554432,2,8,48,2048,8192,16384,32768,65536,131072,524288,131072,524288,3145728,4194304,16777216,33554432,65536,131072,2097152,4194304,16777216,33554432,134217728,268435456,536870912,0,0,0,1024,0,8,48,2048,8192,65536,33554432,268435456,536870912,65536,268435456,536870912,0,0,32768,0,0,126,623104,65011712,0,32,65536,536870912,0,0,65536,524288,0,32,65536,0,0,0,2048,0,0,0,15482,245760,-604102721,0,0,0,18913,33062912,925600,-605028352,0,0,0,65536,31,8096,131072,786432,3145728,3145728,12582912,50331648,134217728,268435456,160,256,512,7168,131072,786432,131072,786432,1048576,2097152,12582912,16777216,268435456,1073741824,2147483648,12582912,16777216,33554432,268435456,1073741824,2147483648,3,12,16,160,256,7168,786432,1048576,12582912,16777216,268435456,1073741824,0,8,16,32,128,256,512,7168,786432,1048576,2097152,0,1,2,8,16,7168,786432,1048576,8388608,16777216,16777216,1073741824,0,0,0,0,1,0,0,8,32,128,256,7168,8,32,0,3072,0,8,32,3072,4096,524288,8,32,0,0,3072,4096,0,2048,524288,8388608,8,2048,0,0,1,12,256,4096,32768,262144,1048576,4194304,67108864,0,2048,0,2048,2048,1073741824,-58805985,-58805985,-58805985,0,0,262144,0,0,32,4194304,16777216,134217728,4382,172032,-58982400,0,0,2,28,256,4096,8192,8192,32768,131072,262144,524288,1,2,12,256,4096,0,0,4194304,67108864,134217728,805306368,1073741824,0,0,1,2,12,16,256,4096,1048576,67108864,134217728,268435456,0,512,1048576,4194304,201326592,1879048192,0,0,12,256,4096,134217728,268435456,536870912,12,256,268435456,536870912,0,12,256,0,0,1,32,64,512,0,0,205236961,205236961,0,0,0,1,96,640,1,10976,229376,204996608,0,640,2048,8192,229376,1572864,1572864,2097152,201326592,0,0,0,64,512,2048,229376,1572864,201326592,1572864,201326592,0,0,1,4382,0,1,32,2048,65536,131072,1572864,201326592,131072,1572864,134217728,0,0,524288,524288,0,0,0,-68582786,-68582786,-68582786,0,0,2097152,524288,0,524288,0,0,65536,131072,1572864,0,0,2,4,0,0,65011712,-134217728,0,0,0,0,2,4,120,512,-268435456,0,0,0,2,8,48,64,2048,8192,98304,524288,2097152,4194304,25165824,33554432,134217728,268435456,2147483648,0,0,25165824,33554432,134217728,1879048192,2147483648,0,0,4,112,512,622592,65011712,134217728,-268435456,16777216,33554432,134217728,1610612736,0,0,0,64,98304,524288,4194304,16777216,33554432,0,98304,524288,16777216,33554432,0,65536,524288,33554432,536870912,1073741824,0,65536,524288,536870912,1073741824,0,0,65536,524288,536870912,0,524288,0,524288,524288,1048576,2086666240,2147483648,0,-1678194207,0,0,0,8,32,2048,524288,8388608,0,0,33062912,436207616,2147483648,0,0,32,64,2432,16384,32768,32768,524288,3145728,4194304,25165824,25165824,167772160,268435456,2147483648,0,32,64,384,2048,16384,32768,1048576,2097152,4194304,25165824,32,64,128,256,2048,16384,2048,16384,1048576,4194304,16777216,33554432,134217728,536870912,1073741824,0,0,2048,16384,4194304,16777216,33554432,134217728,805306368,0,0,16777216,134217728,268435456,2147483648,0,622592,622592,622592,8807,8807,434791,0,0,16777216,0,0,0,7,608,8192,0,0,0,3,4,96,512,32,64,8192,0,0,16777216,134217728,0,0,2,4,8192,16384,65536,2097152,33554432,268435456],r.TOKEN=["(0)","ModuleDecl","Annotation","OptionDecl","Operator","Variable","Tag","EndTag","PragmaContents","DirCommentContents","DirPIContents","CDataSectionContents","AttrTest","Wildcard","EQName","IntegerLiteral","DecimalLiteral","DoubleLiteral","PredefinedEntityRef","'\"\"'","EscapeApos","QuotChar","AposChar","ElementContentChar","QuotAttrContentChar","AposAttrContentChar","NCName","QName","S","CharRef","CommentContents","DocTag","DocCommentContents","EOF","'!'","'\"'","'#'","'#)'","''''","'('","'(#'","'(:'","'(:~'","')'","'*'","'*'","','","'-->'","'.'","'/'","'/>'","':'","':)'","';'","'"),token:l,next:function(e){e.pop()}}],CData:[{name:"CDataSectionContents",token:a},{name:p("]]>"),token:a,next:function(e){e.pop()}}],PI:[{name:"DirPIContents",token:c},{name:p("?"),token:c},{name:p("?>"),token:c,next:function(e){e.pop()}}],AposString:[{name:p("''"),token:"string",next:function(e){e.pop()}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:"EscapeApos",token:"constant.language.escape"},{name:"AposChar",token:"string"}],QuotString:[{name:p('"'),token:"string",next:function(e){e.pop()}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:"EscapeQuot",token:"constant.language.escape"},{name:"QuotChar",token:"string"}]};n.XQueryLexer=function(){return new i(r,d)}},{"./XQueryTokenizer":"/node_modules/xqlint/lib/lexers/XQueryTokenizer.js","./lexer":"/node_modules/xqlint/lib/lexers/lexer.js"}]},{},["/node_modules/xqlint/lib/lexers/xquery_lexer.js"])}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getSelectionRange().start,a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(u.column/.test(r.getLine(u.row).slice(u.column)))return;while(!o(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==u.row&&(d=d.substring(0,u.column-p));if(this.voidElements&&this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var u=n.getCursorPosition(),a=r.getLine(u.row),f=new s(r,u.row,u.column),l=f.getCurrentToken();if(o(l,"")&&l.type.indexOf("tag-close")!==-1){if(l.value=="/>")return;while(l&&l.type.indexOf("tag-name")===-1)l=f.stepBackward();if(!l)return;var c=l.value,h=f.getCurrentTokenRow();l=f.stepBackward();if(!l||l.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[c]||!this.voidElements){var p=r.getTokenAt(u.row,u.column+1),a=r.getLine(h),d=this.$getIndent(a),v=d+r.getTabString();return p&&p.value===""){var s=n.getCursorPosition(),o=new u(r,s.row,s.column),f=o.getCurrentToken(),l=!1,e=JSON.parse(e).pop();if(f&&f.value===">"||e!=="StartTag")return;if(!f||!a(f,"meta.tag")&&(!a(f,"text")||!f.value.match("/"))){do f=o.stepBackward();while(f&&(a(f,"string")||a(f,"keyword.operator")||a(f,"entity.attribute-name")||a(f,"text")))}else l=!0;var c=o.stepBackward();if(!f||!a(f,"meta.tag")||c!==null&&c.value.match("/"))return;var h=f.value.substring(1);if(l)var h=h.substring(0,s.column-f.start);return{text:">",selection:[1,1]}}})};r.inherits(f,i),t.XQueryBehaviour=f}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/xquery",["require","exports","module","ace/worker/worker_client","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/xquery/xquery_lexer","ace/range","ace/mode/behaviour/xquery","ace/mode/folding/cstyle","ace/anchor"],function(e,t,n){"use strict";var r=e("../worker/worker_client").WorkerClient,i=e("../lib/oop"),s=e("./text").Mode,o=e("./text_highlight_rules").TextHighlightRules,u=e("./xquery/xquery_lexer").XQueryLexer,a=e("../range").Range,f=e("./behaviour/xquery").XQueryBehaviour,l=e("./folding/cstyle").FoldMode,c=e("../anchor").Anchor,h=function(){this.$tokenizer=new u,this.$behaviour=new f,this.foldingRules=new l,this.$highlightRules=new o};i.inherits(h,s),function(){this.completer={getCompletions:function(e,t,n,r,i){if(!t.$worker)return i();t.$worker.emit("complete",{data:{pos:n,prefix:r}}),t.$worker.on("complete",function(e){i(null,e.data)})}},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=t.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/);return i&&(r+=n),r},this.checkOutdent=function(e,t,n){return/^\s+$/.test(t)?/^\s*[\}\)]/.test(n):!1},this.autoOutdent=function(e,t,n){var r=t.getLine(n),i=r.match(/^(\s*[\}\)])/);if(!i)return 0;var s=i[1].length,o=t.findMatchingBracket({row:n,column:s});if(!o||o.row==n)return 0;var u=this.$getIndent(t.getLine(o.row));t.replace(new a(n,0,n,s-1),u)},this.toggleCommentLines=function(e,t,n,r){var i,s,o=!0,u=/^\s*\(:(.*):\)/;for(i=n;i<=r;i++)if(!u.test(t.getLine(i))){o=!1;break}var f=new a(0,0,0,0);for(i=n;i<=r;i++)s=t.getLine(i),f.start.row=i,f.end.row=i,f.end.column=s.length,t.replace(f,o?s.match(u)[1]:"(:"+s+":)")},this.createWorker=function(e){var t=new r(["ace"],"ace/mode/xquery_worker","XQueryWorker"),n=this;return t.attachToDocument(e.getDocument()),t.on("ok",function(t){e.clearAnnotations()}),t.on("markers",function(t){e.clearAnnotations(),n.addMarkers(t.data,e)}),t.on("highlight",function(t){n.$tokenizer.tokens=t.data.tokens,n.$tokenizer.lines=e.getDocument().getAllLines();var r=Object.keys(n.$tokenizer.tokens);for(var i=0;i][-+\d]*(?:$|\s+(?:$|#))/,onMatch:function(e,t,n,r){r=r.replace(/ #.*/,"");var i=/^ *((:\s*)?-(\s*[^|>])?)?/.exec(r)[0].replace(/\S\s*$/,"").length,s=parseInt(/\d+[\s+-]*$/.exec(r));return s?(i+=s-1,this.next="mlString"):this.next="mlStringPre",n.length?(n[0]=this.next,n[1]=i):(n.push(this.next),n.push(i)),this.token},next:"mlString"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:/(\b|[+\-\.])[\d_]+(?:(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)(?=[^\d-\w]|$)$/},{token:"constant.numeric",regex:/[+\-]?\.inf\b|NaN\b|0x[\dA-Fa-f_]+|0b[10_]+/},{token:"constant.language.boolean",regex:"\\b(?:true|false|TRUE|FALSE|True|False|yes|no)\\b"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:/[^\s,:\[\]\{\}]+/}],mlStringPre:[{token:"indent",regex:/^ *$/},{token:"indent",regex:/^ */,onMatch:function(e,t,n){var r=n[1];return r>=e.length?(this.next="start",n.shift(),n.shift()):(n[1]=e.length-1,this.next=n[0]="mlString"),this.token},next:"mlString"},{defaultToken:"string"}],mlString:[{token:"indent",regex:/^ *$/},{token:"indent",regex:/^ */,onMatch:function(e,t,n){var r=n[1];return r>=e.length?(this.next="start",n.splice(0)):this.next="mlString",this.token},next:"mlString"},{token:"string",regex:".+"}]},this.normalizeRules()};r.inherits(s,i),t.YamlHighlightRules=s}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.commentBlock=function(e,t){var n=/\S/,r=e.getLine(t),i=r.search(n);if(i==-1||r[i]!="#")return;var o=r.length,u=e.getLength(),a=t,f=t;while(++ta){var c=e.getLine(f).length;return new s(a,o,f,c)}},this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;r=this.commentBlock(e,n);if(r)return r},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&uc){var m=e.getLine(h).length;return new s(c,f,h,m)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/),f=r[i]==="-";if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u=|>/},{token:"keyword.operator",regex:/(&&)|(\|\|)|(!)/},{token:"keyword.operator",regex:/=|\+=|-=/},{token:"keyword.operator",regex:/\+\+|\+|--|-|\*|\/|%/},{token:"keyword.operator",regex:/&|\||\^|~/},{token:"keyword.operator",regex:/\b(?:in|as|is)\b/},{token:"punctuation.terminator",regex:/;/},{token:"punctuation.accessor",regex:/\??\$/},{token:"punctuation.accessor",regex:/::/},{token:"keyword.operator",regex:/\?/},{token:"punctuation.separator",regex:/:/},{token:"punctuation.separator",regex:/,/},{token:["keyword.other","meta.namespace","entity.name.namespace"],regex:/(module)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)/},{token:"keyword.other",regex:/\bexport\b/},{token:"keyword.control.conditional",regex:/\b(?:if|else)\b/},{token:"keyword.control",regex:/\b(?:for|while)\b/},{token:"keyword.control",regex:/\b(?:return|break|next|continue|fallthrough)\b/},{token:"keyword.control",regex:/\b(?:switch|default|case)\b/},{token:"keyword.other",regex:/\b(?:add|delete)\b/},{token:"keyword.other",regex:/\bprint\b/},{token:"keyword.control",regex:/\b(?:when|timeout|schedule)\b/},{token:["keyword.other","meta.struct.record","entity.name.struct.record","meta.struct.record","punctuation.separator","meta.struct.record","storage.type.struct.record"],regex:/\b(type)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(\s*)(:)(\s*\b)(record)\b/},{token:["keyword.other","meta.enum","entity.name.enum","meta.enum","punctuation.separator","meta.enum","storage.type.enum"],regex:/\b(type)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(\s*)(:)(\s*\b)(enum)\b/},{token:["keyword.other","meta.type","entity.name.type","meta.type","punctuation.separator"],regex:/\b(type)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(\s*)(:)/},{token:["keyword.other","meta.struct.record","storage.type.struct.record","meta.struct.record","entity.name.struct.record"],regex:/\b(redef)(\s+)(record)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)\b/},{token:["keyword.other","meta.enum","storage.type.enum","meta.enum","entity.name.enum"],regex:/\b(redef)(\s+)(enum)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)\b/},{token:["storage.type","text","entity.name.function.event"],regex:/\b(event)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(?=s*\()/},{token:["storage.type","text","entity.name.function.hook"],regex:/\b(hook)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(?=s*\()/},{token:["storage.type","text","entity.name.function"],regex:/\b(function)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(?=s*\()/},{token:"keyword.other",regex:/\bredef\b/},{token:"storage.type",regex:/\bany\b/},{token:"storage.type",regex:/\b(?:enum|record|set|table|vector)\b/},{token:["storage.type","text","keyword.operator","text","storage.type"],regex:/\b(opaque)(\s+)(of)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)\b/},{token:"keyword.operator",regex:/\bof\b/},{token:"storage.type",regex:/\b(?:addr|bool|count|double|file|int|interval|pattern|port|string|subnet|time)\b/},{token:"storage.type",regex:/\b(?:function|hook|event)\b/},{token:"storage.modifier",regex:/\b(?:global|local|const|option)\b/},{token:"entity.name.function.call",regex:/\b[A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*(?=s*\()/},{token:"punctuation.section.block.begin",regex:/\{/},{token:"punctuation.section.block.end",regex:/\}/},{token:"punctuation.section.brackets.begin",regex:/\[/},{token:"punctuation.section.brackets.end",regex:/\]/},{token:"punctuation.section.parens.begin",regex:/\(/},{token:"punctuation.section.parens.end",regex:/\)/}],"string-state":[{token:"constant.character.escape",regex:/\\./},{token:"string.double",regex:/"/,next:"start"},{token:"constant.other.placeholder",regex:/%-?[0-9]*(\.[0-9]+)?[DTdxsefg]/},{token:"string.double",regex:"."}],"pattern-state":[{token:"constant.character.escape",regex:/\\./},{token:"string.regexp",regex:"/",next:"start"},{token:"string.regexp",regex:"."}]},this.normalizeRules()};s.metaData={fileTypes:["bro","zeek"],name:"Zeek",scopeName:"source.zeek"},r.inherits(s,i),t.ZeekHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/zeek",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/zeek_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./zeek_highlight_rules").ZeekHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/zeek"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/zeek"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/mode-zig.js b/www/js/ace/mode-zig.js deleted file mode 100644 index 7edaeea18..000000000 --- a/www/js/ace/mode-zig.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/mode/zig_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#dummy_main"}],"#block":[{token:["storage.type.zig","text","punctuation.section.braces.begin.zig"],regex:/((?:[a-zA-Z_][\w.]*|@\".+\")?)(\s*)(\{)/,push:[{token:"punctuation.section.braces.end.zig",regex:/\}/,next:"pop"},{include:"#dummy_main"}]}],"#character_escapes":[{token:"constant.character.escape.newline.zig",regex:/\\n/},{token:"constant.character.escape.carrigereturn.zig",regex:/\\r/},{token:"constant.character.escape.tabulator.zig",regex:/\\t/},{token:"constant.character.escape.backslash.zig",regex:/\\\\/},{token:"constant.character.escape.single-quote.zig",regex:/\\'/},{token:"constant.character.escape.double-quote.zig",regex:/\\\"/},{token:"constant.character.escape.hexidecimal.zig",regex:/\\x[a-fA-F\d]{2}/},{token:"constant.character.escape.hexidecimal.zig",regex:/\\u\{[a-fA-F\d]{1,6}\}/}],"#comments":[{token:"comment.line.documentation.zig",regex:/\/\/[!\/](?=[^\/])/,push:[{token:"comment.line.documentation.zig",regex:/$/,next:"pop"},{include:"#commentContents"},{defaultToken:"comment.line.documentation.zig"}]},{token:"comment.line.double-slash.zig",regex:/\/\//,push:[{token:"comment.line.double-slash.zig",regex:/$/,next:"pop"},{include:"#commentContents"},{defaultToken:"comment.line.double-slash.zig"}]}],"#commentContents":[{token:"keyword.todo.zig",regex:/\b(?:TODO|FIXME|XXX|NOTE)\b:?/}],"#constants":[{token:"constant.language.zig",regex:/\b(?:null|undefined|true|false)\b/},{token:"constant.numeric.integer.zig",regex:/\b(?!\.)-?[\d_]+(?!\.)\b/},{token:"constant.numeric.integer.hexadecimal.zig",regex:/\b(?!\.)0x[a-fA-F\d_]+(?!\.)\b/},{token:"constant.numeric.integer.octal.zig",regex:/\b(?!\.)0o[0-7_]+(?!\.)\b/},{token:"constant.numeric.integer.binary.zig",regex:/\b(?!\.)0b[01_]+(?!\.)\b/},{token:"constant.numeric.float.zig",regex:/(?!\.)-?\b[\d_]+(?:\.[\d_]+)?(?:[eE][+-]?[\d_]+)?(?!\.)\b/},{token:"constant.numeric.float.hexadecimal.zig",regex:/(?!\.)-?\b0x[a-fA-F\d_]+(?:\.[a-fA-F\d_]+)?[pP]?(?:[+-]?[\d_]+)?(?!\.)\b/}],"#container_decl":[{token:"entity.name.union.zig",regex:/\b(?!\d)(?:[a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*union\s*[(\{])/},{token:"entity.name.struct.zig",regex:/\b(?!\d)(?:[a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*struct\s*[(\{])/},{token:"entity.name.enum.zig",regex:/\b(?!\d)(?:[a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*enum\s*[(\{])/},{token:"entity.name.error.zig",regex:/\b(?!\d)(?:[a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*error\s*[(\{])/},{token:["storage.type.error.zig","punctuation.accessor.zig","entity.name.error.zig"],regex:/\b(error)(\.)([a-zA-Z_]\w*|@\".+\")/}],"#dummy_main":[{include:"#label"},{include:"#function_type"},{include:"#function_def"},{include:"#punctuation"},{include:"#storage_modifier"},{include:"#container_decl"},{include:"#constants"},{include:"#comments"},{include:"#strings"},{include:"#storage"},{include:"#keywords"},{include:"#operators"},{include:"#support"},{include:"#field_decl"},{include:"#block"},{include:"#function_call"},{include:"#enum_literal"},{include:"#variables"}],"#enum_literal":[{token:"constant.language.enum",regex:/(?!\w|\)|\?|\}|\]|\*|\.)\.(?:[a-zA-Z_]\w*\b|@\"[^\"]*\")(?!\(|\s*=[^=>])/}],"#field_decl":[{token:["variable.other.member.zig","text","punctuation.separator.zig","text"],regex:/([a-zA-Z_]\w*|@\".+\")(\s*)(:)(\s*)/,push:[{token:["storage.type.zig","text","punctuation.separator.zig","keyword.operator.assignment.zig"],regex:/((?:[a-zA-Z_][\w.]*|@\".+\")?)(\s*)(?:(,)|(=)|$)/,next:"pop"},{include:"#dummy_main"}]}],"#function_call":[{token:"variable.function.zig",regex:/\b(?!fn)(?:[a-zA-Z_]\w*|@\".+\")(?=\s*\()/}],"#keywords":[{token:"keyword.control.zig",regex:/\b(?:while|for|break|return|continue|asm|defer|errdefer|unreachable)\b/},{token:"keyword.control.async.zig",regex:/\b(?:async|await|suspend|nosuspend|resume)\b/},{token:"keyword.control.conditional.zig",regex:/\b(?:if|else|switch|try|catch|orelse)\b/},{token:"keyword.control.import.zig",regex:/\b(?!\w)(?:@import|@cImport|@cInclude)\b/},{token:"keyword.other.usingnamespace.zig",regex:/\busingnamespace\b/}],"#label":[{token:["keyword.control.zig","text","entity.name.label.zig","entity.name.label.zig"],regex:/\b(break|continue)(\s*:\s*)([a-zA-Z_]\w*|@\".+\")\b|\b(?!\d)([a-zA-Z_]\w*|@\".+\")\b(?=\s*:\s*(?:\{|while\b))/}],"#operators":[{token:"keyword.operator.zig",regex:/\b!\b/},{token:"keyword.operator.logical.zig",regex:/==|(?:!|>|<)=?/},{token:"keyword.operator.word.zig",regex:/\b(?:and|or)\b/},{token:"keyword.operator.assignment.zig",regex:/(?:(?:\+|-|\*)\%?|\/|%|<<|>>|&|\|(?=[^\|])|\^)?=/},{token:"keyword.operator.arithmetic.zig",regex:/(?:\+|-|\*)\%?|\/(?!\/)|%/},{token:"keyword.operator.bitwise.zig",regex:/<<|>>|&(?=[a-zA-Z_]|@\")|\|(?=[^\|])|\^|~/},{token:"keyword.operator.other.zig",regex:/\+\+|\*\*|->|\.\?|\.\*|&(?=[a-zA-Z_]|@\")|\?|\|\||\.{2,3}/}],"#param_list":[{token:["variable.parameter.zig","text","punctuation.separator.zig","text"],regex:/([a-zA-Z_]\w*|@\".+\")(\s*)(:)(\s*)/,push:[{token:["storage.type.zig","text","punctuation.separator.zig","punctuation.section.parens.end.zig"],regex:/((?:[a-zA-Z_][\w.]*|@\".+\")?)(\s*)(?:(,)|(\)))/,next:"pop"},{include:"#dummy_main"},{token:"storage.type.zig",regex:/[a-zA-Z_][\w.]*|@\".+\"/}]}],"#punctuation":[{token:"punctuation.separator.zig",regex:/,/},{token:"punctuation.terminator.zig",regex:/;/},{token:"punctuation.section.parens.begin.zig",regex:/\(/},{token:"punctuation.section.parens.end.zig",regex:/\)/}],"#storage":[{token:"storage.type.zig",regex:/\b(?:bool|void|noreturn|type|anyerror|anytype)\b/},{token:"storage.type.integer.zig",regex:/\b(?!\.)(?:[iu]\d+|[iu]size|comptime_int)\b/},{token:"storage.type.float.zig",regex:/\b(?:f16|f32|f64|f128|comptime_float)\b/},{token:"storage.type.c_compat.zig",regex:/\b(?:c_short|c_ushort|c_int|c_uint|c_long|c_ulong|c_longlong|c_ulonglong|c_longdouble|c_void)\b/},{token:["storage.type.zig","text","keyword.operator.zig","text","storage.type.zig"],regex:/\b(anyframe)\b(\s*)((?:->)?)(\s*)(?:([a-zA-Z_][\w.]*|@\".+\")\b(?!\s*\())?/},{token:"storage.type.function.zig",regex:/\bfn\b/},{token:"storage.type.test.zig",regex:/\btest\b/},{token:"storage.type.struct.zig",regex:/\bstruct\b/},{token:"storage.type.enum.zig",regex:/\benum\b/},{token:"storage.type.union.zig",regex:/\bunion\b/},{token:"storage.type.error.zig",regex:/\berror\b/}],"#storage_modifier":[{token:"storage.modifier.zig",regex:/\b(?:const|var|extern|packed|export|pub|noalias|inline|noinline|comptime|volatile|align|linksection|threadlocal|allowzero)\b/}],"#strings":[{token:"string.quoted.single.zig",regex:/\'/,push:[{token:"string.quoted.single.zig",regex:/\'/,next:"pop"},{include:"#character_escapes"},{token:"invalid.illegal.character.zig",regex:/\\[^\'][^\']*?/},{defaultToken:"string.quoted.single.zig"}]},{token:"string.quoted.double.zig",regex:/c?\"/,push:[{token:"string.quoted.double.zig",regex:/\"/,next:"pop"},{include:"#character_escapes"},{token:"invalid.illegal.character.zig",regex:/\\[^\'][^\']*?/},{defaultToken:"string.quoted.double.zig"}]},{token:"string.quoted.other.zig",regex:/c?\\\\/,push:[{token:"string.quoted.other.zig",regex:/$/,next:"pop"},{defaultToken:"string.quoted.other.zig"}]}],"#function_type":[{token:["storage.type.function.zig","text","punctuation.section.parens.begin.zig"],regex:/\b(fn)(\s*)(\()/,push:[{token:["text","storage.type.zig","text","keyword.operator.zig","text","storage.type.zig"],regex:/(\s*)(?:([a-zA-Z_]\w*|@\".+\"))?(\s*)((?:!)?)(\s*)([a-zA-Z_]\w*|@\".+\")/,next:"pop"},{include:"#label"},{include:"#param_list"},{token:"storage.type.zig",regex:/[a-zA-Z_]\w*|@\".+\"/},{include:"#dummy_main"},{defaultToken:"meta.function.parameters.zig"}]}],"#function_def":[{token:["text","entity.name.function","punctuation.section.parens.begin.zig"],regex:/(?=fn\s+)(\s+)([a-zA-Z_]\w*|@\".+\")(\()/,push:[{token:["text","storage.type.zig","keyword.operator.zig","text","storage.type.zig"],regex:/(\s*)((?:[a-zA-Z_][\w.]*|@\".+\")?)((?:!)?)(\s*)(?:([a-zA-Z_][\w.]*|@\".+\")?)/,next:"pop"},{include:"#label"},{include:"#param_list"},{token:"storage.type.zig",regex:/[a-zA-Z_][\w.]*|@\".+\"/},{include:"#dummy_main"}]}],"#support":[{token:"support.function.zig",regex:/\b@(?!\w|\"|[0-9])[a-zA-Z_]\w*\b/}],"#variables":[{token:"variable.constant.zig",regex:/\b[_A-Z][_A-Z0-9]+\b/},{token:"entity.name.type.zig",regex:/\b[_a-zA-Z][_a-zA-Z0-9]*_t\b/},{token:"entity.name.type.zig",regex:/\b[A-Z][a-zA-Z0-9]*\b/},{token:"variable.zig",regex:/\b[_a-zA-Z][_a-zA-Z0-9]*\b/}]},this.normalizeRules()};s.metaData={fileTypes:["zig"],keyEquivalent:"^~Z",name:"Zig",scopeName:"source.zig"},r.inherits(s,i),t.ZigHighlightRules=s}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/zig",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/zig_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./zig_highlight_rules").ZigHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o,this.$behaviour=this.$defaultBehaviour};r.inherits(u,i),function(){this.lineCommentStart="//",this.$id="ace/mode/zig"}.call(u.prototype),t.Mode=u}); (function() { - window.require(["ace/mode/zig"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-ambiance.js b/www/js/ace/theme-ambiance.js deleted file mode 100644 index dde5bf3cc..000000000 --- a/www/js/ace/theme-ambiance.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/ambiance-css",["require","exports","module"],function(e,t,n){n.exports=".ace-ambiance .ace_gutter {\n background-color: #3d3d3d;\n background-image: linear-gradient(left, #3D3D3D, #333);\n background-repeat: repeat-x;\n border-right: 1px solid #4d4d4d;\n text-shadow: 0px 1px 1px #4d4d4d;\n color: #222;\n}\n\n.ace-ambiance .ace_gutter-layer {\n background: repeat left top;\n}\n\n.ace-ambiance .ace_gutter-active-line {\n background-color: #3F3F3F;\n}\n\n.ace-ambiance .ace_fold-widget {\n text-align: center;\n}\n\n.ace-ambiance .ace_fold-widget:hover {\n color: #777;\n}\n\n.ace-ambiance .ace_fold-widget.ace_start,\n.ace-ambiance .ace_fold-widget.ace_end,\n.ace-ambiance .ace_fold-widget.ace_closed{\n background: none !important;\n border: none;\n box-shadow: none;\n}\n\n.ace-ambiance .ace_fold-widget.ace_start:after {\n content: '\u25be'\n}\n\n.ace-ambiance .ace_fold-widget.ace_end:after {\n content: '\u25b4'\n}\n\n.ace-ambiance .ace_fold-widget.ace_closed:after {\n content: '\u2023'\n}\n\n.ace-ambiance .ace_print-margin {\n border-left: 1px dotted #2D2D2D;\n right: 0;\n background: #262626;\n}\n\n.ace-ambiance .ace_scroller {\n -webkit-box-shadow: inset 0 0 10px black;\n -moz-box-shadow: inset 0 0 10px black;\n -o-box-shadow: inset 0 0 10px black;\n box-shadow: inset 0 0 10px black;\n}\n\n.ace-ambiance {\n color: #E6E1DC;\n background-color: #202020;\n}\n\n.ace-ambiance .ace_cursor {\n border-left: 1px solid #7991E8;\n}\n\n.ace-ambiance .ace_overwrite-cursors .ace_cursor {\n border: 1px solid #FFE300;\n background: #766B13;\n}\n\n.ace-ambiance.normal-mode .ace_cursor-layer {\n z-index: 0;\n}\n \n.ace-ambiance .ace_marker-layer .ace_selection {\n background: rgba(221, 240, 255, 0.20);\n}\n\n.ace-ambiance .ace_marker-layer .ace_selected-word {\n border-radius: 4px;\n border: 8px solid #3f475d;\n box-shadow: 0 0 4px black;\n}\n\n.ace-ambiance .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174);\n}\n\n.ace-ambiance .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(255, 255, 255, 0.25);\n}\n\n.ace-ambiance .ace_marker-layer .ace_active-line {\n background: rgba(255, 255, 255, 0.031);\n}\n\n.ace-ambiance .ace_invisible {\n color: #333;\n}\n\n.ace-ambiance .ace_paren {\n color: #24C2C7;\n}\n\n.ace-ambiance .ace_keyword {\n color: #cda869;\n}\n\n.ace-ambiance .ace_keyword.ace_operator {\n color: #fa8d6a;\n}\n\n.ace-ambiance .ace_punctuation.ace_operator {\n color: #fa8d6a;\n}\n\n.ace-ambiance .ace_identifier {\n}\n\n.ace-ambiance .ace-statement {\n color: #cda869;\n}\n\n.ace-ambiance .ace_constant {\n color: #CF7EA9;\n}\n\n.ace-ambiance .ace_constant.ace_language {\n color: #CF7EA9;\n}\n\n.ace-ambiance .ace_constant.ace_library {\n \n}\n\n.ace-ambiance .ace_constant.ace_numeric {\n color: #78CF8A;\n}\n\n.ace-ambiance .ace_invalid {\n text-decoration: underline;\n}\n\n.ace-ambiance .ace_invalid.ace_illegal {\n color:#F8F8F8;\n background-color: rgba(86, 45, 86, 0.75);\n}\n\n.ace-ambiance .ace_invalid,\n.ace-ambiance .ace_deprecated {\n text-decoration: underline;\n font-style: italic;\n color: #D2A8A1;\n}\n\n.ace-ambiance .ace_support {\n color: #9B859D;\n}\n\n.ace-ambiance .ace_support.ace_function {\n color: #DAD085;\n}\n\n.ace-ambiance .ace_function.ace_buildin {\n color: #9b859d;\n}\n\n.ace-ambiance .ace_string {\n color: #8f9d6a;\n}\n\n.ace-ambiance .ace_string.ace_regexp {\n color: #DAD085;\n}\n\n.ace-ambiance .ace_comment {\n font-style: italic;\n color: #555;\n}\n\n.ace-ambiance .ace_comment.ace_doc {\n}\n\n.ace-ambiance .ace_comment.ace_doc.ace_tag {\n color: #666;\n font-style: normal;\n}\n\n.ace-ambiance .ace_definition,\n.ace-ambiance .ace_type {\n color: #aac6e3;\n}\n\n.ace-ambiance .ace_variable {\n color: #9999cc;\n}\n\n.ace-ambiance .ace_variable.ace_language {\n color: #9b859d;\n}\n\n.ace-ambiance .ace_xml-pe {\n color: #494949;\n}\n\n.ace-ambiance .ace_gutter-layer,\n.ace-ambiance .ace_text-layer {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC\");\n}\n\n.ace-ambiance .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC\") right repeat-y;\n}\n\n.ace-ambiance .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/ambiance",["require","exports","module","ace/theme/ambiance-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-ambiance",t.cssText=e("./ambiance-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/ambiance"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-chaos.js b/www/js/ace/theme-chaos.js deleted file mode 100644 index 66500c0c0..000000000 --- a/www/js/ace/theme-chaos.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/chaos-css",["require","exports","module"],function(e,t,n){n.exports=".ace-chaos .ace_gutter {\n background: #141414;\n color: #595959;\n border-right: 1px solid #282828;\n}\n.ace-chaos .ace_gutter-cell.ace_warning {\n background-image: none;\n background: #FC0;\n border-left: none;\n padding-left: 0;\n color: #000;\n}\n.ace-chaos .ace_gutter-cell.ace_error {\n background-position: -6px center;\n background-image: none;\n background: #F10;\n border-left: none;\n padding-left: 0;\n color: #000;\n}\n.ace-chaos .ace_print-margin {\n border-left: 1px solid #555;\n right: 0;\n background: #1D1D1D;\n}\n.ace-chaos {\n background-color: #161616;\n color: #E6E1DC;\n}\n\n.ace-chaos .ace_cursor {\n border-left: 2px solid #FFFFFF;\n}\n.ace-chaos .ace_cursor.ace_overwrite {\n border-left: 0px;\n border-bottom: 1px solid #FFFFFF;\n}\n.ace-chaos .ace_marker-layer .ace_selection {\n background: #494836;\n}\n.ace-chaos .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174);\n}\n.ace-chaos .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #FCE94F;\n}\n.ace-chaos .ace_marker-layer .ace_active-line {\n background: #333;\n}\n.ace-chaos .ace_gutter-active-line {\n background-color: #222;\n}\n.ace-chaos .ace_invisible {\n color: #404040;\n}\n.ace-chaos .ace_keyword {\n color:#00698F;\n}\n.ace-chaos .ace_keyword.ace_operator {\n color:#FF308F;\n}\n.ace-chaos .ace_constant {\n color:#1EDAFB;\n}\n.ace-chaos .ace_constant.ace_language {\n color:#FDC251;\n}\n.ace-chaos .ace_constant.ace_library {\n color:#8DFF0A;\n}\n.ace-chaos .ace_constant.ace_numeric {\n color:#58C554;\n}\n.ace-chaos .ace_invalid {\n color:#FFFFFF;\n background-color:#990000;\n}\n.ace-chaos .ace_invalid.ace_deprecated {\n color:#FFFFFF;\n background-color:#990000;\n}\n.ace-chaos .ace_support {\n color: #999;\n}\n.ace-chaos .ace_support.ace_function {\n color:#00AEEF;\n}\n.ace-chaos .ace_function {\n color:#00AEEF;\n}\n.ace-chaos .ace_string {\n color:#58C554;\n}\n.ace-chaos .ace_comment {\n color:#555;\n font-style:italic;\n padding-bottom: 0px;\n}\n.ace-chaos .ace_variable {\n color:#997744;\n}\n.ace-chaos .ace_meta.ace_tag {\n color:#BE53E6;\n}\n.ace-chaos .ace_entity.ace_other.ace_attribute-name {\n color:#FFFF89;\n}\n.ace-chaos .ace_markup.ace_underline {\n text-decoration: underline;\n}\n.ace-chaos .ace_fold-widget {\n text-align: center;\n}\n\n.ace-chaos .ace_fold-widget:hover {\n color: #777;\n}\n\n.ace-chaos .ace_fold-widget.ace_start,\n.ace-chaos .ace_fold-widget.ace_end,\n.ace-chaos .ace_fold-widget.ace_closed{\n background: none !important;\n border: none;\n box-shadow: none;\n}\n\n.ace-chaos .ace_fold-widget.ace_start:after {\n content: '\u25be'\n}\n\n.ace-chaos .ace_fold-widget.ace_end:after {\n content: '\u25b4'\n}\n\n.ace-chaos .ace_fold-widget.ace_closed:after {\n content: '\u2023'\n}\n\n.ace-chaos .ace_indent-guide {\n border-right:1px dotted #333333;\n margin-right:-1px;\n}\n\n.ace-chaos .ace_indent-guide-active {\n border-right:1px dotted #afafaf;\n margin-right:-1px;\n}\n\n.ace-chaos .ace_fold { \n background: #222; \n border-radius: 3px; \n color: #7AF; \n border: none; \n}\n.ace-chaos .ace_fold:hover {\n background: #CCC; \n color: #000;\n}\n"}),define("ace/theme/chaos",["require","exports","module","ace/theme/chaos-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-chaos",t.cssText=e("./chaos-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/chaos"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-chrome.js b/www/js/ace/theme-chrome.js deleted file mode 100644 index 716c38674..000000000 --- a/www/js/ace/theme-chrome.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/chrome-css",["require","exports","module"],function(e,t,n){n.exports='.ace-chrome .ace_gutter {\n background: #ebebeb;\n color: #333;\n overflow : hidden;\n}\n\n.ace-chrome .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-chrome {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-chrome .ace_cursor {\n color: black;\n}\n\n.ace-chrome .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-chrome .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-chrome .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-chrome .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-chrome .ace_invalid {\n background-color: rgb(153, 0, 0);\n color: white;\n}\n\n.ace-chrome .ace_fold {\n}\n\n.ace-chrome .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-chrome .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-chrome .ace_support.ace_type,\n.ace-chrome .ace_support.ace_class\n.ace-chrome .ace_support.ace_other {\n color: rgb(109, 121, 222);\n}\n\n.ace-chrome .ace_variable.ace_parameter {\n font-style:italic;\n color:#FD971F;\n}\n.ace-chrome .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-chrome .ace_comment {\n color: #236e24;\n}\n\n.ace-chrome .ace_comment.ace_doc {\n color: #236e24;\n}\n\n.ace-chrome .ace_comment.ace_doc.ace_tag {\n color: #236e24;\n}\n\n.ace-chrome .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-chrome .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-chrome .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-chrome .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-chrome .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-chrome .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-chrome .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-chrome .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-chrome .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-chrome .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-chrome .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-chrome .ace_gutter-active-line {\n background-color : #dcdcdc;\n}\n\n.ace-chrome .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-chrome .ace_storage,\n.ace-chrome .ace_keyword,\n.ace-chrome .ace_meta.ace_tag {\n color: rgb(147, 15, 128);\n}\n\n.ace-chrome .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-chrome .ace_string {\n color: #1A1AA6;\n}\n\n.ace-chrome .ace_entity.ace_other.ace_attribute-name {\n color: #994409;\n}\n\n.ace-chrome .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n \n.ace-chrome .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n}\n'}),define("ace/theme/chrome",["require","exports","module","ace/theme/chrome-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-chrome",t.cssText=e("./chrome-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/chrome"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-cloud9_day.js b/www/js/ace/theme-cloud9_day.js deleted file mode 100644 index 303e00bf7..000000000 --- a/www/js/ace/theme-cloud9_day.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/cloud9_day-css",["require","exports","module"],function(e,t,n){n.exports='.ace-cloud9-day .ace_gutter {\n background: #ECECEC;\n color: #333;\n}\n\n.ace-cloud9-day .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-cloud9-day .ace_fold {\n background-color: #6B72E6;\n}\n\n.ace-cloud9-day {\n background-color: #FBFBFB;\n color: black;\n}\n\n.ace-cloud9-day .ace_cursor {\n color: black;\n}\n\n.ace-cloud9-day .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-cloud9-day .ace_storage,\n.ace-cloud9-day .ace_keyword {\n color: rgb(24, 122, 234);\n}\n\n.ace-cloud9-day .ace_constant {\n color: rgb(197, 6, 11);\n}\n\n.ace-cloud9-day .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-cloud9-day .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-cloud9-day .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-cloud9-day .ace_invalid {\n background-color: rgba(255, 0, 0, 0.1);\n color: red;\n}\n\n.ace-cloud9-day .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-cloud9-day .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-cloud9-day .ace_support.ace_type,\n.ace-cloud9-day .ace_support.ace_class {\n color: rgb(109, 121, 222);\n}\n\n.ace-cloud9-day .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-cloud9-day .ace_string {\n color: rgb(3, 106, 7);\n}\n\n.ace-cloud9-day .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-cloud9-day .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-cloud9-day .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-cloud9-day .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-cloud9-day .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-cloud9-day .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-cloud9-day .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-cloud9-day .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-cloud9-day .ace_list {\n color: rgb(185, 6, 144);\n}\n\n.ace-cloud9-day .ace_meta.ace_tag {\n color: rgb(0, 22, 142);\n}\n\n.ace-cloud9-day .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-cloud9-day.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_step {\n background: rgb(247, 237, 137);\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_stack {\n background: #BAE0A0;\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-cloud9-day .ace_gutter-active-line {\n background-color: #E5E5E5;\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-cloud9-day .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n\n.ace-cloud9-day .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n} \n'}),define("ace/theme/cloud9_day",["require","exports","module","ace/theme/cloud9_day-css","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-cloud9-day",t.cssText=e("./cloud9_day-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}); (function() { - window.require(["ace/theme/cloud9_day"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-cloud9_night.js b/www/js/ace/theme-cloud9_night.js deleted file mode 100644 index 2be0c0cf5..000000000 --- a/www/js/ace/theme-cloud9_night.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/cloud9_night-css",["require","exports","module"],function(e,t,n){n.exports=".ace-cloud9-night .ace_gutter {\n background: #303130;\n color: #eee\n}\n\n.ace-cloud9-night .ace_print-margin {\n width: 1px;\n background: #222\n}\n\n.ace-cloud9-night {\n background-color: #181818;\n color: #EBEBEB\n}\n\n.ace-cloud9-night .ace_cursor {\n color: #9F9F9F\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_selection {\n background: #424242\n}\n\n.ace-cloud9-night.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #000000;\n border-radius: 2px\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #888888\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_highlight {\n border: 1px solid rgb(110, 119, 0);\n border-bottom: 0;\n box-shadow: inset 0 -1px rgb(110, 119, 0);\n margin: -1px 0 0 -1px;\n background: rgba(255, 235, 0, 0.1);\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_active-line {\n background: #292929\n}\n\n.ace-cloud9-night .ace_gutter-active-line {\n background-color: #3D3D3D\n}\n\n.ace-cloud9-night .ace_stack {\n background-color: rgb(66, 90, 44)\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_selected-word {\n border: 1px solid #888888\n}\n\n.ace-cloud9-night .ace_invisible {\n color: #343434\n}\n\n.ace-cloud9-night .ace_keyword,\n.ace-cloud9-night .ace_meta,\n.ace-cloud9-night .ace_storage,\n.ace-cloud9-night .ace_storage.ace_type,\n.ace-cloud9-night .ace_support.ace_type {\n color: #C397D8\n}\n\n.ace-cloud9-night .ace_keyword.ace_operator {\n color: #70C0B1\n}\n\n.ace-cloud9-night .ace_constant.ace_character,\n.ace-cloud9-night .ace_constant.ace_language,\n.ace-cloud9-night .ace_constant.ace_numeric,\n.ace-cloud9-night .ace_keyword.ace_other.ace_unit,\n.ace-cloud9-night .ace_support.ace_constant,\n.ace-cloud9-night .ace_variable.ace_parameter {\n color: #E78C45\n}\n\n.ace-cloud9-night .ace_constant.ace_other {\n color: #EEEEEE\n}\n\n.ace-cloud9-night .ace_invalid {\n color: #CED2CF;\n background-color: #DF5F5F\n}\n\n.ace-cloud9-night .ace_invalid.ace_deprecated {\n color: #CED2CF;\n background-color: #B798BF\n}\n\n.ace-cloud9-night .ace_fold {\n background-color: #7AA6DA;\n border-color: #DEDEDE\n}\n\n.ace-cloud9-night .ace_entity.ace_name.ace_function,\n.ace-cloud9-night .ace_support.ace_function,\n.ace-cloud9-night .ace_variable:not(.ace_parameter),\n.ace-cloud9-night .ace_constant:not(.ace_numeric) {\n color: #7AA6DA\n}\n\n.ace-cloud9-night .ace_support.ace_class,\n.ace-cloud9-night .ace_support.ace_type {\n color: #E7C547\n}\n\n.ace-cloud9-night .ace_heading,\n.ace-cloud9-night .ace_markup.ace_heading,\n.ace-cloud9-night .ace_string {\n color: #B9CA4A\n}\n\n.ace-cloud9-night .ace_entity.ace_name.ace_tag,\n.ace-cloud9-night .ace_entity.ace_other.ace_attribute-name,\n.ace-cloud9-night .ace_meta.ace_tag,\n.ace-cloud9-night .ace_string.ace_regexp,\n.ace-cloud9-night .ace_variable {\n color: #D54E53\n}\n\n.ace-cloud9-night .ace_comment {\n color: #969896\n}\n\n.ace-cloud9-night .ace_c9searchresults.ace_keyword {\n color: #C2C280;\n}\n\n.ace-cloud9-night .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-cloud9-night .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/cloud9_night",["require","exports","module","ace/theme/cloud9_night-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-cloud9-night",t.cssText=e("./cloud9_night-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}); (function() { - window.require(["ace/theme/cloud9_night"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-cloud9_night_low_color.js b/www/js/ace/theme-cloud9_night_low_color.js deleted file mode 100644 index 75381a3d0..000000000 --- a/www/js/ace/theme-cloud9_night_low_color.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/cloud9_night_low_color-css",["require","exports","module"],function(e,t,n){n.exports=".ace-cloud9-night-low-color .ace_gutter {\n background: #303130;\n color: #eee\n}\n\n.ace-cloud9-night-low-color .ace_print-margin {\n width: 1px;\n background: #222\n}\n\n.ace-cloud9-night-low-color {\n background-color: #181818;\n color: #EBEBEB\n}\n\n.ace-cloud9-night-low-color .ace_cursor {\n color: #9F9F9F\n}\n\n.ace-cloud9-night-low-color .ace_marker-layer .ace_selection {\n background: #424242\n}\n\n.ace-cloud9-night-low-color.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #000000;\n border-radius: 2px\n}\n\n.ace-cloud9-night-low-color .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-cloud9-night-low-color .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #888888\n}\n\n.ace-cloud9-night-low-color .ace_marker-layer .ace_highlight {\n border: 1px solid rgb(110, 119, 0);\n border-bottom: 0;\n box-shadow: inset 0 -1px rgb(110, 119, 0);\n margin: -1px 0 0 -1px;\n background: rgba(255, 235, 0, 0.1);\n}\n\n.ace-cloud9-night-low-color .ace_marker-layer .ace_active-line {\n background: #292929\n}\n\n.ace-cloud9-night-low-color .ace_gutter-active-line {\n background-color: #3D3D3D\n}\n\n.ace-cloud9-night-low-color .ace_stack {\n background-color: rgb(66, 90, 44)\n}\n\n.ace-cloud9-night-low-color .ace_marker-layer .ace_selected-word {\n border: 1px solid #888888\n}\n\n.ace-cloud9-night-low-color .ace_invisible {\n color: #343434\n}\n\n.ace-cloud9-night-low-color .ace_keyword,\n.ace-cloud9-night-low-color .ace_meta,\n.ace-cloud9-night-low-color .ace_storage {\n color: #C397D8\n}\n\n.ace-cloud9-night-low-color .ace_keyword.ace_operator {\n color: #70C0B1\n}\n\n.ace-cloud9-night-low-color .ace_constant.ace_character,\n.ace-cloud9-night-low-color .ace_constant.ace_language,\n.ace-cloud9-night-low-color .ace_constant.ace_numeric,\n.ace-cloud9-night-low-color .ace_keyword.ace_other.ace_unit {\n color: #DAA637\n}\n\n.ace-cloud9-night-low-color .ace_constant.ace_other {\n color: #EEEEEE\n}\n\n.ace-cloud9-night-low-color .ace_invalid {\n color: #CED2CF;\n background-color: #DF5F5F\n}\n\n.ace-cloud9-night-low-color .ace_invalid.ace_deprecated {\n color: #CED2CF;\n background-color: #B798BF\n}\n\n.ace-cloud9-night-low-color .ace_fold {\n background-color: #7AA6DA;\n border-color: #DEDEDE\n}\n\n.ace-cloud9-night-low-color .ace_entity.ace_name.ace_function,\n.ace-cloud9-night-low-color .ace_support.ace_function,\n.ace-cloud9-night-low-color .ace_variable:not(.ace_parameter),\n.ace-cloud9-night-low-color .ace_constant:not(.ace_numeric) {\n color: #7AA6DA\n}\n\n.ace-cloud9-night-low-color .ace_support.ace_class,\n.ace-cloud9-night-low-color .ace_support.ace_type {\n color: #E7C547\n}\n\n.ace-cloud9-night-low-color .ace_heading,\n.ace-cloud9-night-low-color .ace_markup.ace_heading,\n.ace-cloud9-night-low-color .ace_string {\n color: #B9CA4A\n}\n\n.ace-cloud9-night-low-color .ace_comment {\n color: #969896\n}\n\n.ace-cloud9-night-low-color .ace_c9searchresults.ace_keyword {\n color: #C2C280;\n}\n\n.ace-cloud9-night-low-color .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-cloud9-night-low-color .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/cloud9_night_low_color",["require","exports","module","ace/theme/cloud9_night_low_color-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-cloud9-night-low-color",t.cssText=e("./cloud9_night_low_color-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}); (function() { - window.require(["ace/theme/cloud9_night_low_color"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-cloud_editor.js b/www/js/ace/theme-cloud_editor.js deleted file mode 100644 index 0aa0b5291..000000000 --- a/www/js/ace/theme-cloud_editor.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/cloud_editor-css",["require","exports","module"],function(e,t,n){n.exports='\n.ace-cloud_editor .ace_gutter {\n background: #ffffff;\n color: #3a3a42;\n}\n\n.ace-cloud_editor .ace_tooltip-marker-error.ace_tooltip-marker {\n background-color: #d13212;\n}\n.ace-cloud_editor .ace_tooltip-marker-security.ace_tooltip-marker {\n background-color: #d13212;\n}\n.ace-cloud_editor .ace_tooltip-marker-warning.ace_tooltip-marker {\n background-color: #906806;\n}\n\n.ace-cloud_editor .ace_print-margin {\n width: 1px;\n background: #697077;\n}\n\n.ace-cloud_editor {\n background-color: #ffffff;\n color: #3a3a42;\n}\n\n.ace-cloud_editor .ace_cursor {\n color: #3a3a42;\n}\n\n.ace-cloud_editor .ace_marker-layer .ace_selection {\n background: #bfceff;\n}\n\n.ace-cloud_editor.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #ffffff;\n border-radius: 2px;\n}\n\n.ace-cloud_editor .ace_marker-layer .ace_step {\n background: #697077;\n}\n\n.ace-cloud_editor .ace_marker-layer .ace_bracket {\n margin: 0 0 0 -1px;\n border: 1px solid #697077;\n}\n\n.ace-cloud_editor .ace_gutter-active-line::before,\n.ace-cloud_editor .ace_marker-layer .ace_active-line {\n box-sizing: border-box;\n border-top: 1px solid #9191ac;\n border-bottom: 1px solid #9191ac;\n}\n\n.ace-cloud_editor .ace_gutter-active-line::before {\n content: "";\n position: absolute;\n height: 100%;\n width: 100%;\n left: 0;\n z-index: 1;\n pointer-events: none;\n}\n\n.ace-cloud_editor .ace_marker-layer .ace_selected-word {\n border: 1px solid #bfceff;\n}\n\n.ace-cloud_editor .ace_fold {\n background-color: #0E45B4;\n border-color: #3a3a42;\n}\n\n.ace-cloud_editor .ace_keyword {\n color: #9749d1;\n}\n\n.ace-cloud_editor .ace_meta.ace_tag {\n color: #0E45B4;\n}\n\n.ace-cloud_editor .ace_constant {\n color: #A16101;\n}\n\n.ace-cloud_editor .ace_constant.ace_numeric {\n color: #A16101;\n}\n\n.ace-cloud_editor .ace_constant.ace_character.ace_escape {\n color: #BD1880;\n}\n\n.ace-cloud_editor .ace_support.ace_function {\n color: #A81700;\n}\n\n.ace-cloud_editor .ace_support.ace_class {\n color: #A16101;\n}\n\n.ace-cloud_editor .ace_storage {\n color: #9749d1;\n}\n\n.ace-cloud_editor .ace_invalid.ace_illegal {\n color: #ffffff;\n background-color: #0E45B4;\n}\n\n.ace-cloud_editor .ace_invalid.ace_deprecated {\n color: #ffffff;\n background-color: #A16101;\n}\n\n.ace-cloud_editor .ace_string {\n color: #207A7F;\n}\n\n.ace-cloud_editor .ace_string.ace_regexp {\n color: #207A7F;\n}\n\n.ace-cloud_editor .ace_comment,\n.ace-cloud_editor .ace_ghost_text {\n color: #697077;\n opacity: 1;\n}\n\n.ace-cloud_editor .ace_variable {\n color: #0E45B4;\n}\n\n.ace-cloud_editor .ace_meta.ace_selector {\n color: #9749d1;\n}\n\n.ace-cloud_editor .ace_entity.ace_other.ace_attribute-name {\n color: #A16101;\n}\n\n.ace-cloud_editor .ace_entity.ace_name.ace_function {\n color: #A81700;\n}\n\n.ace-cloud_editor .ace_entity.ace_name.ace_tag {\n color: #0E45B4;\n}\n\n.ace-cloud_editor .ace_heading {\n color: #A81700;\n}\n\n.ace-cloud_editor .ace_xml-pe {\n color: #A16101;\n}\n.ace-cloud_editor .ace_doctype {\n color: #0E45B4;\n}\n\n.ace-cloud_editor .ace_tooltip {\n background-color: #ffffff;\n color: #3a3a42;\n}\n\n.ace-cloud_editor .ace_icon_svg.ace_error,\n.ace-cloud_editor .ace_icon_svg.ace_error_fold {\n background-color: #d13212;\n}\n.ace-cloud_editor .ace_icon_svg.ace_security,\n.ace-cloud_editor .ace_icon_svg.ace_security_fold {\n background-color: #d13212;\n}\n.ace-cloud_editor .ace_icon_svg.ace_warning,\n.ace-cloud_editor .ace_icon_svg.ace_warning_fold {\n background-color: #906806;\n}\n.ace-cloud_editor .ace_icon_svg.ace_info {\n background-color: #0073bb;\n}\n.ace-cloud_editor .ace_icon_svg.ace_hint {\n background-color: #0073bb;\n}\n.ace-cloud_editor .ace_highlight-marker {\n background: none;\n border: #0E45B4 1px solid;\n}\n.ace-cloud_editor .ace_tooltip.ace_hover-tooltip:focus > div {\n outline: 1px solid #0073bb;\n}\n.ace-cloud_editor .ace_snippet-marker {\n background-color: #CED6E0;\n border: 0;\n}\n\n.ace-cloud_editor.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #f2f3f3;\n border: #0F68AE 1.5px solid;\n}\n.ace-cloud_editor.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid #16191f;\n background: #f2f3f3;\n}\n.ace-cloud_editor.ace_editor.ace_autocomplete .ace_completion-meta {\n color: #545b64;\n opacity: 1;\n}\n.ace-cloud_editor.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #0F68AE;\n}\n.ace-cloud_editor.ace_editor.ace_autocomplete {\n box-shadow: 0 1px 1px 0 #001c244d, 1px 1px 1px 0 #001c2426, -1px 1px 1px 0 #001c2426;\n line-height: 1.5;\n border: 1px solid #eaeded;\n background: #ffffff;\n color: #16191f;\n}\n\n'}),define("ace/theme/cloud_editor",["require","exports","module","ace/theme/cloud_editor-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-cloud_editor",t.cssText=e("./cloud_editor-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/cloud_editor"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-cloud_editor_dark.js b/www/js/ace/theme-cloud_editor_dark.js deleted file mode 100644 index f9164a0ec..000000000 --- a/www/js/ace/theme-cloud_editor_dark.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/cloud_editor_dark-css",["require","exports","module"],function(e,t,n){n.exports='\n.ace-cloud_editor_dark .ace_gutter {\n background: #282c34;\n color: #8e96a9;\n}\n\n.ace-cloud_editor_dark.ace_dark .ace_tooltip-marker-error.ace_tooltip-marker {\n background-color: #ff5d64;\n}\n.ace-cloud_editor_dark.ace_dark .ace_tooltip-marker-security.ace_tooltip-marker {\n background-color: #ff5d64;\n}\n.ace-cloud_editor_dark.ace_dark .ace_tooltip-marker-warning.ace_tooltip-marker {\n background-color: #e0ca57;\n}\n\n.ace-cloud_editor_dark .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-cloud_editor_dark {\n background-color: #282c34;\n color: #dcdfe4;\n}\n\n.ace-cloud_editor_dark .ace_cursor {\n color: #66b2f0;\n}\n\n.ace-cloud_editor_dark .ace_marker-layer .ace_selection {\n background: #4376bd;\n}\n\n.ace-cloud_editor_dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #8e96a9;\n border-radius: 2px;\n}\n\n.ace-cloud_editor_dark .ace_marker-layer .ace_step {\n background: #6fb342;\n}\n\n.ace-cloud_editor_dark .ace_marker-layer .ace_bracket {\n margin: 0 0 0 -1px;\n border: 1px solid #e8e8e8;\n}\n\n.ace-cloud_editor_dark .ace_gutter-active-line::before,\n.ace-cloud_editor_dark .ace_marker-layer .ace_active-line {\n box-sizing: border-box;\n border-top: 1px solid #75777a;\n border-bottom: 1px solid #75777a;\n}\n\n.ace-cloud_editor_dark .ace_gutter-active-line::before {\n content: "";\n position: absolute;\n height: 100%;\n width: 100%;\n left: 0;\n z-index: 1;\n pointer-events: none;\n}\n\n.ace-cloud_editor_dark .ace_marker-layer .ace_selected-word {\n border: 1px solid #9bd0f7;\n}\n\n.ace-cloud_editor_dark .ace_fold {\n background-color: #66b2f0;\n border-color: #dcdfe4;\n}\n\n.ace-cloud_editor_dark .ace_keyword {\n color: #c674dc;\n}\n\n.ace-cloud_editor_dark .ace_constant {\n color: #e5c383;\n}\n\n.ace-cloud_editor_dark .ace_constant.ace_numeric {\n color: #e5c383;\n}\n\n.ace-cloud_editor_dark .ace_constant.ace_character.ace_escape {\n color: #71ccc7;\n}\n\n.ace-cloud_editor_dark .ace_support.ace_function {\n color: #e96a71;\n}\n\n.ace-cloud_editor_dark .ace_support.ace_class {\n color: #e5c383;\n}\n\n.ace-cloud_editor_dark .ace_storage {\n color: #c674dc;\n}\n\n.ace-cloud_editor_dark .ace_invalid.ace_illegal {\n color: #dcdfe4;\n background-color:#66b2f0;\n}\n\n.ace-cloud_editor_dark .ace_invalid.ace_deprecated {\n color: #dcdfe4;\n background-color: #e5c383;\n}\n\n.ace-cloud_editor_dark .ace_string {\n color: #6fb342;\n}\n\n.ace-cloud_editor_dark .ace_string.ace_regexp {\n color: #6fb342;\n}\n\n.ace-cloud_editor_dark .ace_comment,\n.ace-cloud_editor_dark .ace_ghost_text {\n color: #b5bac0;\n opacity: 1;\n}\n\n.ace-cloud_editor_dark .ace_variable {\n color:#66b2f0;\n}\n\n.ace-cloud_editor_dark .ace_meta.ace_selector {\n color: #c674dc;\n}\n\n.ace-cloud_editor_dark .ace_entity.ace_other.ace_attribute-name {\n color: #e5c383;\n}\n\n.ace-cloud_editor_dark .ace_entity.ace_name.ace_function {\n color: #e96a71;\n}\n\n.ace-cloud_editor_dark .ace_entity.ace_name.ace_tag {\n color:#66b2f0;\n}\n.ace-cloud_editor_dark .ace_heading {\n color: #e96a71;\n}\n\n.ace-cloud_editor_dark .ace_xml-pe {\n color: #e5c383;\n}\n.ace-cloud_editor_dark .ace_doctype {\n color:#66b2f0;\n}\n\n.ace-cloud_editor_dark .ace_entity.ace_name.ace_tag,\n.ace-cloud_editor_dark .ace_entity.ace_other.ace_attribute-name,\n.ace-cloud_editor_dark .ace_meta.ace_tag,\n.ace-cloud_editor_dark .ace_string.ace_regexp,\n.ace-cloud_editor_dark .ace_variable {\n color:#66b2f0;\n}\n\n.ace-cloud_editor_dark .ace_tooltip {\n background-color: #282c34;\n color: #dcdfe4;\n}\n\n.ace-cloud_editor_dark .ace_icon_svg.ace_error,\n.ace-cloud_editor_dark .ace_icon_svg.ace_error_fold {\n background-color: #ff5d64;\n}\n.ace-cloud_editor_dark .ace_icon_svg.ace_security,\n.ace-cloud_editor_dark .ace_icon_svg.ace_security_fold {\n background-color: #ff5d64;\n}\n.ace-cloud_editor_dark .ace_icon_svg.ace_warning,\n.ace-cloud_editor_dark .ace_icon_svg.ace_warning_fold {\n background-color: #e0ca57;\n}\n.ace-cloud_editor_dark .ace_icon_svg.ace_info {\n background-color: #44b9d6;\n}\n.ace-cloud_editor_dark .ace_icon_svg.ace_hint {\n background-color: #44b9d6;\n}\n.ace-cloud_editor_dark .ace_highlight-marker {\n background: none;\n border: #66b2f0 1px solid;\n}\n.ace-cloud_editor_dark .ace_tooltip.ace_hover-tooltip:focus > div {\n outline: 1px solid #44b9d6;\n}\n.ace-cloud_editor_dark .ace_snippet-marker {\n background-color: #434650;\n border: 0;\n}\n\n.ace-cloud_editor_dark.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #272A30;\n border: #299FBC 1.5px solid;\n}\n.ace-cloud_editor_dark.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid #d5dbdb;\n background: #272A30;\n}\n.ace-cloud_editor_dark.ace_dark.ace_editor.ace_autocomplete .ace_completion-meta {\n color: #95a5a6;\n opacity: 1;\n}\n.ace-cloud_editor_dark.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #2AA0BC;\n}\n.ace-cloud_editor_dark.ace_dark.ace_editor.ace_autocomplete {\n box-shadow: 0 1px 1px 0 #001c244d, 1px 1px 1px 0 #001c2426, -1px 1px 1px 0 #001c2426;\n line-height: 1.5;\n border: 1px solid #2a2e33;\n background: #050506;\n color: #ffffff;\n}\n\n'}),define("ace/theme/cloud_editor_dark",["require","exports","module","ace/theme/cloud_editor_dark-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-cloud_editor_dark",t.cssText=e("./cloud_editor_dark-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/cloud_editor_dark"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-clouds.js b/www/js/ace/theme-clouds.js deleted file mode 100644 index 660232630..000000000 --- a/www/js/ace/theme-clouds.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/clouds-css",["require","exports","module"],function(e,t,n){n.exports='.ace-clouds .ace_gutter {\n background: #ebebeb;\n color: #333\n}\n\n.ace-clouds .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-clouds {\n background-color: #FFFFFF;\n color: #000000\n}\n\n.ace-clouds .ace_cursor {\n color: #000000\n}\n\n.ace-clouds .ace_marker-layer .ace_selection {\n background: #BDD5FC\n}\n\n.ace-clouds.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #FFFFFF;\n}\n\n.ace-clouds .ace_marker-layer .ace_step {\n background: rgb(255, 255, 0)\n}\n\n.ace-clouds .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #BFBFBF\n}\n\n.ace-clouds .ace_marker-layer .ace_active-line {\n background: #FFFBD1\n}\n\n.ace-clouds .ace_gutter-active-line {\n background-color : #dcdcdc\n}\n\n.ace-clouds .ace_marker-layer .ace_selected-word {\n border: 1px solid #BDD5FC\n}\n\n.ace-clouds .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-clouds .ace_keyword,\n.ace-clouds .ace_meta,\n.ace-clouds .ace_support.ace_constant.ace_property-value {\n color: #AF956F\n}\n\n.ace-clouds .ace_keyword.ace_operator {\n color: #484848\n}\n\n.ace-clouds .ace_keyword.ace_other.ace_unit {\n color: #96DC5F\n}\n\n.ace-clouds .ace_constant.ace_language {\n color: #39946A\n}\n\n.ace-clouds .ace_constant.ace_numeric {\n color: #46A609\n}\n\n.ace-clouds .ace_constant.ace_character.ace_entity {\n color: #BF78CC\n}\n\n.ace-clouds .ace_invalid {\n background-color: #FF002A\n}\n\n.ace-clouds .ace_fold {\n background-color: #AF956F;\n border-color: #000000\n}\n\n.ace-clouds .ace_storage,\n.ace-clouds .ace_support.ace_class,\n.ace-clouds .ace_support.ace_function,\n.ace-clouds .ace_support.ace_other,\n.ace-clouds .ace_support.ace_type {\n color: #C52727\n}\n\n.ace-clouds .ace_string {\n color: #5D90CD\n}\n\n.ace-clouds .ace_comment {\n color: #BCC8BA\n}\n\n.ace-clouds .ace_entity.ace_name.ace_tag,\n.ace-clouds .ace_entity.ace_other.ace_attribute-name {\n color: #606060\n}\n\n.ace-clouds .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y\n}\n\n.ace-clouds .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n} \n'}),define("ace/theme/clouds",["require","exports","module","ace/theme/clouds-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-clouds",t.cssText=e("./clouds-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/clouds"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-clouds_midnight.js b/www/js/ace/theme-clouds_midnight.js deleted file mode 100644 index 95683c9be..000000000 --- a/www/js/ace/theme-clouds_midnight.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/clouds_midnight-css",["require","exports","module"],function(e,t,n){n.exports=".ace-clouds-midnight .ace_gutter {\n background: #232323;\n color: #929292\n}\n\n.ace-clouds-midnight .ace_print-margin {\n width: 1px;\n background: #232323\n}\n\n.ace-clouds-midnight {\n background-color: #191919;\n color: #929292\n}\n\n.ace-clouds-midnight .ace_cursor {\n color: #7DA5DC\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_selection {\n background: #000000\n}\n\n.ace-clouds-midnight.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #191919;\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #BFBFBF\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_active-line {\n background: rgba(215, 215, 215, 0.031)\n}\n\n.ace-clouds-midnight .ace_gutter-active-line {\n background-color: rgba(215, 215, 215, 0.031)\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_selected-word {\n border: 1px solid #000000\n}\n\n.ace-clouds-midnight .ace_invisible {\n color: #666\n}\n\n.ace-clouds-midnight .ace_keyword,\n.ace-clouds-midnight .ace_meta,\n.ace-clouds-midnight .ace_support.ace_constant.ace_property-value {\n color: #927C5D\n}\n\n.ace-clouds-midnight .ace_keyword.ace_operator {\n color: #4B4B4B\n}\n\n.ace-clouds-midnight .ace_keyword.ace_other.ace_unit {\n color: #366F1A\n}\n\n.ace-clouds-midnight .ace_constant.ace_language {\n color: #39946A\n}\n\n.ace-clouds-midnight .ace_constant.ace_numeric {\n color: #46A609\n}\n\n.ace-clouds-midnight .ace_constant.ace_character.ace_entity {\n color: #A165AC\n}\n\n.ace-clouds-midnight .ace_invalid {\n color: #FFFFFF;\n background-color: #E92E2E\n}\n\n.ace-clouds-midnight .ace_fold {\n background-color: #927C5D;\n border-color: #929292\n}\n\n.ace-clouds-midnight .ace_storage,\n.ace-clouds-midnight .ace_support.ace_class,\n.ace-clouds-midnight .ace_support.ace_function,\n.ace-clouds-midnight .ace_support.ace_other,\n.ace-clouds-midnight .ace_support.ace_type {\n color: #E92E2E\n}\n\n.ace-clouds-midnight .ace_string {\n color: #5D90CD\n}\n\n.ace-clouds-midnight .ace_comment {\n color: #3C403B\n}\n\n.ace-clouds-midnight .ace_entity.ace_name.ace_tag,\n.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name {\n color: #606060\n}\n\n.ace-clouds-midnight .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-clouds-midnight .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/clouds_midnight",["require","exports","module","ace/theme/clouds_midnight-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-clouds-midnight",t.cssText=e("./clouds_midnight-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/clouds_midnight"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-cobalt.js b/www/js/ace/theme-cobalt.js deleted file mode 100644 index 36c807224..000000000 --- a/www/js/ace/theme-cobalt.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/cobalt-css",["require","exports","module"],function(e,t,n){n.exports=".ace-cobalt .ace_gutter {\n background: #011e3a;\n color: rgb(128,145,160)\n}\n\n.ace-cobalt .ace_print-margin {\n width: 1px;\n background: #555555\n}\n\n.ace-cobalt {\n background-color: #002240;\n color: #FFFFFF\n}\n\n.ace-cobalt .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-cobalt .ace_marker-layer .ace_selection {\n background: rgba(179, 101, 57, 0.75)\n}\n\n.ace-cobalt.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #002240;\n}\n\n.ace-cobalt .ace_marker-layer .ace_step {\n background: rgb(127, 111, 19)\n}\n\n.ace-cobalt .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(255, 255, 255, 0.15)\n}\n\n.ace-cobalt .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.35)\n}\n\n.ace-cobalt .ace_gutter-active-line {\n background-color: rgba(0, 0, 0, 0.35)\n}\n\n.ace-cobalt .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(179, 101, 57, 0.75)\n}\n\n.ace-cobalt .ace_invisible {\n color: rgba(255, 255, 255, 0.15)\n}\n\n.ace-cobalt .ace_keyword,\n.ace-cobalt .ace_meta {\n color: #FF9D00\n}\n\n.ace-cobalt .ace_constant,\n.ace-cobalt .ace_constant.ace_character,\n.ace-cobalt .ace_constant.ace_character.ace_escape,\n.ace-cobalt .ace_constant.ace_other {\n color: #FF628C\n}\n\n.ace-cobalt .ace_invalid {\n color: #F8F8F8;\n background-color: #800F00\n}\n\n.ace-cobalt .ace_support {\n color: #80FFBB\n}\n\n.ace-cobalt .ace_support.ace_constant {\n color: #EB939A\n}\n\n.ace-cobalt .ace_fold {\n background-color: #FF9D00;\n border-color: #FFFFFF\n}\n\n.ace-cobalt .ace_support.ace_function {\n color: #FFB054\n}\n\n.ace-cobalt .ace_storage {\n color: #FFEE80\n}\n\n.ace-cobalt .ace_entity {\n color: #FFDD00\n}\n\n.ace-cobalt .ace_string {\n color: #3AD900\n}\n\n.ace-cobalt .ace_string.ace_regexp {\n color: #80FFC2\n}\n\n.ace-cobalt .ace_comment {\n font-style: italic;\n color: #0088FF\n}\n\n.ace-cobalt .ace_heading,\n.ace-cobalt .ace_markup.ace_heading {\n color: #C8E4FD;\n background-color: #001221\n}\n\n.ace-cobalt .ace_list,\n.ace-cobalt .ace_markup.ace_list {\n background-color: #130D26\n}\n\n.ace-cobalt .ace_variable {\n color: #CCCCCC\n}\n\n.ace-cobalt .ace_variable.ace_language {\n color: #FF80E1\n}\n\n.ace-cobalt .ace_meta.ace_tag {\n color: #9EFFFF\n}\n\n.ace-cobalt .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHCLSvkPAAP3AgSDTRd4AAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-cobalt .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/cobalt",["require","exports","module","ace/theme/cobalt-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-cobalt",t.cssText=e("./cobalt-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/cobalt"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-crimson_editor.js b/www/js/ace/theme-crimson_editor.js deleted file mode 100644 index d5d6d5f97..000000000 --- a/www/js/ace/theme-crimson_editor.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/crimson_editor-css",["require","exports","module"],function(e,t,n){n.exports='.ace-crimson-editor .ace_gutter {\n background: #ebebeb;\n color: #333;\n overflow : hidden;\n}\n\n.ace-crimson-editor .ace_gutter-layer {\n width: 100%;\n text-align: right;\n}\n\n.ace-crimson-editor .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-crimson-editor {\n background-color: #FFFFFF;\n color: rgb(64, 64, 64);\n}\n\n.ace-crimson-editor .ace_cursor {\n color: black;\n}\n\n.ace-crimson-editor .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-crimson-editor .ace_identifier {\n color: black;\n}\n\n.ace-crimson-editor .ace_keyword {\n color: blue;\n}\n\n.ace-crimson-editor .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-crimson-editor .ace_constant.ace_language {\n color: rgb(255, 156, 0);\n}\n\n.ace-crimson-editor .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-crimson-editor .ace_invalid {\n text-decoration: line-through;\n color: rgb(224, 0, 0);\n}\n\n.ace-crimson-editor .ace_fold {\n}\n\n.ace-crimson-editor .ace_support.ace_function {\n color: rgb(192, 0, 0);\n}\n\n.ace-crimson-editor .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-crimson-editor .ace_support.ace_type,\n.ace-crimson-editor .ace_support.ace_class {\n color: rgb(109, 121, 222);\n}\n\n.ace-crimson-editor .ace_keyword.ace_operator {\n color: rgb(49, 132, 149);\n}\n\n.ace-crimson-editor .ace_string {\n color: rgb(128, 0, 128);\n}\n\n.ace-crimson-editor .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-crimson-editor .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-crimson-editor .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-crimson-editor .ace_constant.ace_numeric {\n color: rgb(0, 0, 64);\n}\n\n.ace-crimson-editor .ace_variable {\n color: rgb(0, 64, 128);\n}\n\n.ace-crimson-editor .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-crimson-editor .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-crimson-editor .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-crimson-editor .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-crimson-editor .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-crimson-editor .ace_marker-layer .ace_active-line {\n background: rgb(232, 242, 254);\n}\n\n.ace-crimson-editor .ace_gutter-active-line {\n background-color : #dcdcdc;\n}\n\n.ace-crimson-editor .ace_meta.ace_tag {\n color:rgb(28, 2, 255);\n}\n\n.ace-crimson-editor .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-crimson-editor .ace_string.ace_regex {\n color: rgb(192, 0, 192);\n}\n\n.ace-crimson-editor .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n\n.ace-crimson-editor .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n} \n'}),define("ace/theme/crimson_editor",["require","exports","module","ace/theme/crimson_editor-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssText=e("./crimson_editor-css"),t.cssClass="ace-crimson-editor";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/crimson_editor"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-dawn.js b/www/js/ace/theme-dawn.js deleted file mode 100644 index ee13e6626..000000000 --- a/www/js/ace/theme-dawn.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/dawn-css",["require","exports","module"],function(e,t,n){n.exports='.ace-dawn .ace_gutter {\n background: #ebebeb;\n color: #333\n}\n\n.ace-dawn .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-dawn {\n background-color: #F9F9F9;\n color: #080808\n}\n\n.ace-dawn .ace_cursor {\n color: #000000\n}\n\n.ace-dawn .ace_marker-layer .ace_selection {\n background: rgba(39, 95, 255, 0.30)\n}\n\n.ace-dawn.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #F9F9F9;\n}\n\n.ace-dawn .ace_marker-layer .ace_step {\n background: rgb(255, 255, 0)\n}\n\n.ace-dawn .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(75, 75, 126, 0.50)\n}\n\n.ace-dawn .ace_marker-layer .ace_active-line {\n background: rgba(36, 99, 180, 0.12)\n}\n\n.ace-dawn .ace_gutter-active-line {\n background-color : #dcdcdc\n}\n\n.ace-dawn .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(39, 95, 255, 0.30)\n}\n\n.ace-dawn .ace_invisible {\n color: rgba(75, 75, 126, 0.50)\n}\n\n.ace-dawn .ace_keyword,\n.ace-dawn .ace_meta {\n color: #794938\n}\n\n.ace-dawn .ace_constant,\n.ace-dawn .ace_constant.ace_character,\n.ace-dawn .ace_constant.ace_character.ace_escape,\n.ace-dawn .ace_constant.ace_other {\n color: #811F24\n}\n\n.ace-dawn .ace_invalid.ace_illegal {\n text-decoration: underline;\n font-style: italic;\n color: #F8F8F8;\n background-color: #B52A1D\n}\n\n.ace-dawn .ace_invalid.ace_deprecated {\n text-decoration: underline;\n font-style: italic;\n color: #B52A1D\n}\n\n.ace-dawn .ace_support {\n color: #691C97\n}\n\n.ace-dawn .ace_support.ace_constant {\n color: #B4371F\n}\n\n.ace-dawn .ace_fold {\n background-color: #794938;\n border-color: #080808\n}\n\n.ace-dawn .ace_list,\n.ace-dawn .ace_markup.ace_list,\n.ace-dawn .ace_support.ace_function {\n color: #693A17\n}\n\n.ace-dawn .ace_storage {\n font-style: italic;\n color: #A71D5D\n}\n\n.ace-dawn .ace_string {\n color: #0B6125\n}\n\n.ace-dawn .ace_string.ace_regexp {\n color: #CF5628\n}\n\n.ace-dawn .ace_comment {\n font-style: italic;\n color: #5A525F\n}\n\n.ace-dawn .ace_heading,\n.ace-dawn .ace_markup.ace_heading {\n color: #19356D\n}\n\n.ace-dawn .ace_variable {\n color: #234A97\n}\n\n.ace-dawn .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLh/5+x/AAizA4hxNNsZAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-dawn .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n} \n'}),define("ace/theme/dawn",["require","exports","module","ace/theme/dawn-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-dawn",t.cssText=e("./dawn-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/dawn"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-dracula.js b/www/js/ace/theme-dracula.js deleted file mode 100644 index 12b0992c4..000000000 --- a/www/js/ace/theme-dracula.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/dracula-css",["require","exports","module"],function(e,t,n){n.exports='/*\n * Copyright \u00a9 2017 Zeno Rocha \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \u201cSoftware\u201d), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \u201cAS IS\u201d, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n.ace-dracula .ace_gutter {\n background: #282a36;\n color: rgb(144,145,148)\n}\n\n.ace-dracula .ace_print-margin {\n width: 1px;\n background: #44475a\n}\n\n.ace-dracula {\n background-color: #282a36;\n color: #f8f8f2\n}\n\n.ace-dracula .ace_cursor {\n color: #f8f8f0\n}\n\n.ace-dracula .ace_marker-layer .ace_selection {\n background: #44475a\n}\n\n.ace-dracula.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #282a36;\n border-radius: 2px\n}\n\n.ace-dracula .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174)\n}\n\n.ace-dracula .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #a29709\n}\n\n.ace-dracula .ace_marker-layer .ace_active-line {\n background: #44475a\n}\n\n.ace-dracula .ace_gutter-active-line {\n background-color: #44475a\n}\n\n.ace-dracula .ace_marker-layer .ace_selected-word {\n box-shadow: 0px 0px 0px 1px #a29709;\n border-radius: 3px;\n}\n\n.ace-dracula .ace_fold {\n background-color: #50fa7b;\n border-color: #f8f8f2\n}\n\n.ace-dracula .ace_keyword {\n color: #ff79c6\n}\n\n.ace-dracula .ace_constant.ace_language {\n color: #bd93f9\n}\n\n.ace-dracula .ace_constant.ace_numeric {\n color: #bd93f9\n}\n\n.ace-dracula .ace_constant.ace_character {\n color: #bd93f9\n}\n\n.ace-dracula .ace_constant.ace_character.ace_escape {\n color: #ff79c6\n}\n\n.ace-dracula .ace_constant.ace_other {\n color: #bd93f9\n}\n\n.ace-dracula .ace_support.ace_function {\n color: #8be9fd\n}\n\n.ace-dracula .ace_support.ace_constant {\n color: #6be5fd\n}\n\n.ace-dracula .ace_support.ace_class {\n font-style: italic;\n color: #66d9ef\n}\n\n.ace-dracula .ace_support.ace_type {\n font-style: italic;\n color: #66d9ef\n}\n\n.ace-dracula .ace_storage {\n color: #ff79c6\n}\n\n.ace-dracula .ace_storage.ace_type {\n font-style: italic;\n color: #8be9fd\n}\n\n.ace-dracula .ace_invalid {\n color: #F8F8F0;\n background-color: #ff79c6\n}\n\n.ace-dracula .ace_invalid.ace_deprecated {\n color: #F8F8F0;\n background-color: #bd93f9\n}\n\n.ace-dracula .ace_string {\n color: #f1fa8c\n}\n\n.ace-dracula .ace_comment {\n color: #6272a4\n}\n\n.ace-dracula .ace_variable {\n color: #50fa7b\n}\n\n.ace-dracula .ace_variable.ace_parameter {\n font-style: italic;\n color: #ffb86c\n}\n\n.ace-dracula .ace_entity.ace_other.ace_attribute-name {\n color: #50fa7b\n}\n\n.ace-dracula .ace_entity.ace_name.ace_function {\n color: #50fa7b\n}\n\n.ace-dracula .ace_entity.ace_name.ace_tag {\n color: #ff79c6\n}\n.ace-dracula .ace_invisible {\n color: #626680;\n}\n\n.ace-dracula .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-dracula .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACAQMAAACjTyRkAAAABlBMVEUAAADCwsK76u2xAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjYGBoAAAAhACBGFbxzQAAAABJRU5ErkJggg==") right repeat-y;\n}\n'}),define("ace/theme/dracula",["require","exports","module","ace/theme/dracula-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-dracula",t.cssText=e("./dracula-css"),t.$selectionColorConflict=!0;var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/dracula"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-dreamweaver.js b/www/js/ace/theme-dreamweaver.js deleted file mode 100644 index 99c0a6f92..000000000 --- a/www/js/ace/theme-dreamweaver.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/dreamweaver-css",["require","exports","module"],function(e,t,n){n.exports='.ace-dreamweaver .ace_gutter {\n background: #e8e8e8;\n color: #333;\n}\n\n.ace-dreamweaver .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-dreamweaver {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-dreamweaver .ace_fold {\n background-color: #757AD8;\n}\n\n.ace-dreamweaver .ace_cursor {\n color: black;\n}\n \n.ace-dreamweaver .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-dreamweaver .ace_storage,\n.ace-dreamweaver .ace_keyword {\n color: blue;\n}\n\n.ace-dreamweaver .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-dreamweaver .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-dreamweaver .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-dreamweaver .ace_invalid {\n background-color: rgb(153, 0, 0);\n color: white;\n}\n\n.ace-dreamweaver .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-dreamweaver .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-dreamweaver .ace_support.ace_type,\n.ace-dreamweaver .ace_support.ace_class {\n color: #009;\n}\n\n.ace-dreamweaver .ace_support.ace_php_tag {\n color: #f00;\n}\n\n.ace-dreamweaver .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-dreamweaver .ace_string {\n color: #00F;\n}\n\n.ace-dreamweaver .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-dreamweaver .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-dreamweaver .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-dreamweaver .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-dreamweaver .ace_variable {\n color: #06F\n}\n\n.ace-dreamweaver .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-dreamweaver .ace_entity.ace_name.ace_function {\n color: #00F;\n}\n\n\n.ace-dreamweaver .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-dreamweaver .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-dreamweaver .ace_gutter-active-line {\n background-color : #DCDCDC;\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-dreamweaver .ace_meta.ace_tag {\n color:#009;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_anchor {\n color:#060;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_form {\n color:#F90;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_image {\n color:#909;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_script {\n color:#900;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_style {\n color:#909;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_table {\n color:#099;\n}\n\n.ace-dreamweaver .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-dreamweaver .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n\n.ace-dreamweaver .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n} \n'}),define("ace/theme/dreamweaver",["require","exports","module","ace/theme/dreamweaver-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-dreamweaver",t.cssText=e("./dreamweaver-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/dreamweaver"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-eclipse.js b/www/js/ace/theme-eclipse.js deleted file mode 100644 index 3b692c865..000000000 --- a/www/js/ace/theme-eclipse.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/eclipse-css",["require","exports","module"],function(e,t,n){n.exports='.ace-eclipse .ace_gutter {\n background: #ebebeb;\n border-right: 1px solid rgb(159, 159, 159);\n color: rgb(136, 136, 136);\n}\n\n.ace-eclipse .ace_print-margin {\n width: 1px;\n background: #ebebeb;\n}\n\n.ace-eclipse {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-eclipse .ace_fold {\n background-color: rgb(60, 76, 114);\n}\n\n.ace-eclipse .ace_cursor {\n color: black;\n}\n\n.ace-eclipse .ace_storage,\n.ace-eclipse .ace_keyword,\n.ace-eclipse .ace_variable {\n color: rgb(127, 0, 85);\n}\n\n.ace-eclipse .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-eclipse .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-eclipse .ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-eclipse .ace_string {\n color: rgb(42, 0, 255);\n}\n\n.ace-eclipse .ace_comment {\n color: rgb(113, 150, 130);\n}\n\n.ace-eclipse .ace_comment.ace_doc {\n color: rgb(63, 95, 191);\n}\n\n.ace-eclipse .ace_comment.ace_doc.ace_tag {\n color: rgb(127, 159, 191);\n}\n\n.ace-eclipse .ace_constant.ace_numeric {\n color: darkblue;\n}\n\n.ace-eclipse .ace_tag {\n color: rgb(25, 118, 116);\n}\n\n.ace-eclipse .ace_type {\n color: rgb(127, 0, 127);\n}\n\n.ace-eclipse .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-eclipse .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-eclipse .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-eclipse .ace_meta.ace_tag {\n color:rgb(25, 118, 116);\n}\n\n.ace-eclipse .ace_invisible {\n color: #ddd;\n}\n\n.ace-eclipse .ace_entity.ace_other.ace_attribute-name {\n color:rgb(127, 0, 127);\n}\n.ace-eclipse .ace_marker-layer .ace_step {\n background: rgb(255, 255, 0);\n}\n\n.ace-eclipse .ace_active-line {\n background: rgb(232, 242, 254);\n}\n\n.ace-eclipse .ace_gutter-active-line {\n background-color : #DADADA;\n}\n\n.ace-eclipse .ace_marker-layer .ace_selected-word {\n border: 1px solid rgb(181, 213, 255);\n}\n\n.ace-eclipse .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n\n.ace-eclipse .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n} \n'}),define("ace/theme/eclipse",["require","exports","module","ace/theme/eclipse-css","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssText=e("./eclipse-css"),t.cssClass="ace-eclipse";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/eclipse"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-github.js b/www/js/ace/theme-github.js deleted file mode 100644 index 10c6ab5f9..000000000 --- a/www/js/ace/theme-github.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/github-css",["require","exports","module"],function(e,t,n){n.exports='/* CSS style content from github\'s default pygments highlighter template.\n Cursor and selection styles from textmate.css. */\n.ace-github .ace_gutter {\n background: #e8e8e8;\n color: #AAA;\n}\n\n.ace-github {\n background: #fff;\n color: #000;\n}\n\n.ace-github .ace_keyword {\n font-weight: bold;\n}\n\n.ace-github .ace_string {\n color: #D14;\n}\n\n.ace-github .ace_variable.ace_class {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_numeric {\n color: #099;\n}\n\n.ace-github .ace_constant.ace_buildin {\n color: #0086B3;\n}\n\n.ace-github .ace_support.ace_function {\n color: #0086B3;\n}\n\n.ace-github .ace_comment {\n color: #998;\n font-style: italic;\n}\n\n.ace-github .ace_variable.ace_language {\n color: #0086B3;\n}\n\n.ace-github .ace_paren {\n font-weight: bold;\n}\n\n.ace-github .ace_boolean {\n font-weight: bold;\n}\n\n.ace-github .ace_string.ace_regexp {\n color: #009926;\n font-weight: normal;\n}\n\n.ace-github .ace_variable.ace_instance {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_language {\n font-weight: bold;\n}\n\n.ace-github .ace_cursor {\n color: black;\n}\n\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\n background: rgb(255, 255, 204);\n}\n.ace-github .ace_marker-layer .ace_active-line {\n background: rgb(245, 245, 245);\n}\n\n.ace-github .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-github.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n/* bold keywords cause cursor issues for some fonts */\n/* this disables bold style for editor and keeps for static highlighter */\n.ace-github.ace_nobold .ace_line > span {\n font-weight: normal !important;\n}\n\n.ace-github .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-github .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-github .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-github .ace_gutter-active-line {\n background-color : rgba(0, 0, 0, 0.07);\n}\n\n.ace-github .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-github .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-github .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-github .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n\n.ace-github .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n}\n'}),define("ace/theme/github",["require","exports","module","ace/theme/github-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-github",t.cssText=e("./github-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/github"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-github_dark.js b/www/js/ace/theme-github_dark.js deleted file mode 100644 index aa8359aa8..000000000 --- a/www/js/ace/theme-github_dark.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/github_dark-css",["require","exports","module"],function(e,t,n){n.exports=".ace-github-dark .ace_gutter {\n background: #24292e;\n color: #7388b5\n}\n\n.ace-github-dark .ace_print-margin {\n width: 1px;\n background: #00204b\n}\n\n.ace-github-dark {\n background-color: #24292e;\n color: #FFFFFF\n}\n\n.ace-github-dark .ace_constant.ace_other,\n.ace-github-dark .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-github-dark .ace_marker-layer .ace_selection {\n background: #003F8E\n}\n\n.ace-github-dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #24292e;\n}\n\n.ace-github-dark .ace_marker-layer .ace_step {\n background: rgb(127, 111, 19)\n}\n\n.ace-github-dark .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404F7D\n}\n\n.ace-github-dark .ace_marker-layer .ace_active-line {\n background: #00346E\n}\n\n.ace-github-dark .ace_gutter-active-line {\n background-color: #24292e\n}\n\n.ace-github-dark .ace_marker-layer .ace_selected-word {\n border: 1px solid #003F8E\n}\n\n.ace-github-dark .ace_invisible {\n color: #404F7D\n}\n\n.ace-github-dark .ace_keyword,\n.ace-github-dark .ace_meta,\n.ace-github-dark .ace_storage,\n.ace-github-dark .ace_storage.ace_type,\n.ace-github-dark .ace_support.ace_type {\n color: #ff7b72\n}\n\n.ace-github-dark .ace_keyword.ace_operator {\n color: #79c0ff\n}\n\n.ace-github-dark .ace_constant.ace_character,\n.ace-github-dark .ace_constant.ace_language,\n.ace-github-dark .ace_constant.ace_numeric,\n.ace-github-dark .ace_keyword.ace_other.ace_unit,\n.ace-github-dark .ace_support.ace_constant,\n.ace-github-dark .ace_variable.ace_parameter {\n color: #FFC58F\n}\n\n.ace-github-dark .ace_invalid {\n color: #FFFFFF;\n background-color: #F99DA5\n}\n\n.ace-github-dark .ace_invalid.ace_deprecated {\n color: #FFFFFF;\n background-color: #ff7b72\n}\n\n.ace-github-dark .ace_fold {\n background-color: #BBDAFF;\n border-color: #FFFFFF\n}\n\n.ace-github-dark .ace_entity.ace_name.ace_function,\n.ace-github-dark .ace_support.ace_function,\n.ace-github-dark .ace_variable {\n color: #BBDAFF\n}\n\n.ace-github-dark .ace_support.ace_class,\n.ace-github-dark .ace_support.ace_type {\n color: #FFEEAD\n}\n\n.ace-github-dark .ace_heading,\n.ace-github-dark .ace_markup.ace_heading,\n.ace-github-dark .ace_string {\n color: #9fcef6\n}\n\n.ace-github-dark .ace_entity.ace_name.ace_tag,\n.ace-github-dark .ace_entity.ace_other.ace_attribute-name,\n.ace-github-dark .ace_meta.ace_tag,\n.ace-github-dark .ace_string.ace_regexp,\n.ace-github-dark .ace_variable {\n color: #FF9DA4\n}\n\n.ace-github-dark .ace_comment {\n color: #7285B7\n}\n\n.ace-github-dark .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYJDzqfwPAANXAeNsiA+ZAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-github-dark .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n\n.ace-github-dark .ace_constant.ace_buildin {\n color: #0086B3;\n}\n\n.ace-github-dark .ace_variable.ace_language {\n color: #ffffff;\n}\n "}),define("ace/theme/github_dark",["require","exports","module","ace/theme/github_dark-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-github-dark",t.cssText=e("./github_dark-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/github_dark"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-github_light_default.js b/www/js/ace/theme-github_light_default.js deleted file mode 100644 index 0f06db04a..000000000 --- a/www/js/ace/theme-github_light_default.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/github_light_default-css",["require","exports","module"],function(e,t,n){n.exports='.ace-github-light-default .ace_gutter {\n background: #ffffff;\n color: rgba(27, 31, 35, 0.3);\n}\n\n.ace-github-light-default .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-github-light-default {\n background-color: #FFFFFF;\n color: #24292E;\n}\n\n.ace-github-light-default .ace_cursor {\n color: #044289;\n background: none;\n}\n\n.ace-github-light-default .ace_marker-layer .ace_selection {\n background: rgba(3, 102, 214, 0.14);\n}\n\n.ace-github-light-default.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #FFFFFF;\n border-radius: 2px;\n}\n\n.ace-github-light-default .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174);\n}\n\n.ace-github-light-default .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(52, 208, 88, 0);\n background: rgba(52, 208, 88, 0.25);\n}\n\n.ace-github-light-default .ace_marker-layer .ace_active-line {\n background: #f6f8fa;\n border: 2px solid #eeeeee;\n}\n\n.ace-github-light-default .ace_gutter-active-line {\n background-color: #f6f8fa;\n color: #24292e\n}\n\n.ace-github-light-default .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(3, 102, 214, 0.14);\n}\n\n.ace-github-light-default .ace_fold {\n background-color: #D73A49;\n border-color: #24292E;\n}\n\n.ace_tooltip.ace-github-light-default {\n background-color: #f6f8fa !important;\n color: #444d56 !important;\n border: 1px solid #444d56\n}\n\n.ace-github-light-default .language_highlight_error {\n border-bottom: dotted 1px #cb2431;\n background: none;\n}\n\n.ace-github-light-default .language_highlight_warning {\n border-bottom: solid 1px #f9c513;\n background: none;\n}\n\n.ace-github-light-default .language_highlight_info {\n border-bottom: dotted 1px #1a85ff;\n background: none;\n}\n\n.ace-github-light-default .ace_keyword {\n color: #D73A49;\n}\n\n.ace-github-light-default .ace_constant {\n color: #005CC5;\n}\n\n.ace-github-light-default .ace_support {\n color: #005CC5;\n}\n\n.ace-github-light-default .ace_support.ace_constant {\n color: #005CC5;\n}\n\n.ace-github-light-default .ace_support.ace_type {\n color: #D73A49;\n}\n\n.ace-github-light-default .ace_storage {\n color: #D73A49;\n}\n\n.ace-github-light-default .ace_storage.ace_type {\n color: #D73A49;\n}\n\n.ace-github-light-default .ace_invalid.ace_illegal {\n font-style: italic;\n color: #B31D28;\n}\n\n.ace-github-light-default .ace_invalid.ace_deprecated {\n font-style: italic;\n color: #B31D28;\n}\n\n.ace-github-light-default .ace_string {\n color: #032F62;\n}\n\n.ace-github-light-default .ace_string.ace_regexp {\n color: #032F62;\n}\n\n.ace-github-light-default .ace_comment {\n color: #6A737D;\n}\n\n.ace-github-light-default .ace_variable {\n color: #E36209;\n}\n\n.ace-github-light-default .ace_variable.ace_language {\n color: #005CC5;\n}\n\n.ace-github-light-default .ace_entity.ace_name {\n color: #6F42C1;\n}\n\n.ace-github-light-default .ace_entity {\n color: #6F42C1;\n}\n\n.ace-github-light-default .ace_entity.ace_name.ace_tag {\n color: #22863A;\n}\n\n.ace-github-light-default .ace_meta.ace_tag {\n color: #22863A;\n}\n\n.ace-github-light-default .ace_markup.ace_heading {\n color: #005CC5;\n}\n\n.ace-github-light-default .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n\n.ace-github-light-default .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n}\n'}),define("ace/theme/github_light_default",["require","exports","module","ace/theme/github_light_default-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-github-light-default",t.cssText=e("./github_light_default-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/github_light_default"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-gob.js b/www/js/ace/theme-gob.js deleted file mode 100644 index 17a077342..000000000 --- a/www/js/ace/theme-gob.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/gob-css",["require","exports","module"],function(e,t,n){n.exports=".ace-gob .ace_gutter {\n background: #0B1818;\n color: #03EE03\n}\n\n.ace-gob .ace_print-margin {\n width: 1px;\n background: #131313\n}\n\n.ace-gob {\n background-color: #0B0B0B;\n color: #00FF00\n}\n\n.ace-gob .ace_cursor {\n border-color: rgba(16, 248, 255, 0.90);\n background-color: rgba(16, 240, 248, 0.70);\n opacity: 0.4;\n}\n\n.ace-gob .ace_marker-layer .ace_selection {\n background: rgba(221, 240, 255, 0.20)\n}\n\n.ace-gob.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #141414;\n}\n\n.ace-gob .ace_marker-layer .ace_step {\n background: rgb(16, 128, 0)\n}\n\n.ace-gob .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(64, 255, 255, 0.25)\n}\n\n.ace-gob .ace_marker-layer .ace_active-line {\n background: rgba(255, 255, 255, 0.04)\n}\n\n.ace-gob .ace_gutter-active-line {\n background-color: rgba(255, 255, 255, 0.04)\n}\n\n.ace-gob .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(192, 240, 255, 0.20)\n}\n\n.ace-gob .ace_invisible {\n color: rgba(255, 255, 255, 0.25)\n}\n\n.ace-gob .ace_keyword,\n.ace-gob .ace_meta {\n color: #10D8E8\n}\n\n.ace-gob .ace_constant,\n.ace-gob .ace_constant.ace_character,\n.ace-gob .ace_constant.ace_character.ace_escape,\n.ace-gob .ace_constant.ace_other,\n.ace-gob .ace_heading,\n.ace-gob .ace_markup.ace_heading,\n.ace-gob .ace_support.ace_constant {\n color: #10F0A0\n}\n\n.ace-gob .ace_invalid.ace_illegal {\n color: #F8F8F8;\n background-color: rgba(86, 45, 86, 0.75)\n}\n\n.ace-gob .ace_invalid.ace_deprecated {\n text-decoration: underline;\n font-style: italic;\n color: #20F8C0\n}\n\n.ace-gob .ace_support {\n color: #20E8B0\n}\n\n.ace-gob .ace_fold {\n background-color: #50B8B8;\n border-color: #70F8F8\n}\n\n.ace-gob .ace_support.ace_function {\n color: #00F800\n}\n\n.ace-gob .ace_list,\n.ace-gob .ace_markup.ace_list,\n.ace-gob .ace_storage {\n color: #10FF98\n}\n\n.ace-gob .ace_entity.ace_name.ace_function,\n.ace-gob .ace_meta.ace_tag,\n.ace-gob .ace_variable {\n color: #00F868\n}\n\n.ace-gob .ace_string {\n color: #10F060\n}\n\n.ace-gob .ace_string.ace_regexp {\n color: #20F090;\n}\n\n.ace-gob .ace_comment {\n font-style: italic;\n color: #00E060;\n}\n\n.ace-gob .ace_variable {\n color: #00F888;\n}\n\n.ace-gob .ace_xml-pe {\n color: #488858;\n}\n\n.ace-gob .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-gob .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/gob",["require","exports","module","ace/theme/gob-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-gob",t.cssText=e("./gob-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/gob"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-gruvbox.js b/www/js/ace/theme-gruvbox.js deleted file mode 100644 index fa2393e7d..000000000 --- a/www/js/ace/theme-gruvbox.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/gruvbox-css",["require","exports","module"],function(e,t,n){n.exports='.ace-gruvbox .ace_gutter-active-line {\n background-color: #3C3836;\n}\n\n.ace-gruvbox {\n color: #EBDAB4;\n background-color: #1D2021;\n}\n\n.ace-gruvbox .ace_invisible {\n color: #504945;\n}\n\n.ace-gruvbox .ace_marker-layer .ace_selection {\n background: rgba(179, 101, 57, 0.75)\n}\n\n.ace-gruvbox.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #002240;\n}\n\n.ace-gruvbox .ace_keyword {\n color: #8ec07c;\n}\n\n.ace-gruvbox .ace_comment {\n font-style: italic;\n color: #928375;\n}\n\n.ace-gruvbox .ace-statement {\n color: red;\n}\n\n.ace-gruvbox .ace_variable {\n color: #84A598;\n}\n\n.ace-gruvbox .ace_variable.ace_language {\n color: #D2879B;\n}\n\n.ace-gruvbox .ace_constant {\n color: #C2859A;\n}\n\n.ace-gruvbox .ace_constant.ace_language {\n color: #C2859A;\n}\n\n.ace-gruvbox .ace_constant.ace_numeric {\n color: #C2859A;\n}\n\n.ace-gruvbox .ace_string {\n color: #B8BA37;\n}\n\n.ace-gruvbox .ace_support {\n color: #F9BC41;\n}\n\n.ace-gruvbox .ace_support.ace_function {\n color: #F84B3C;\n}\n\n.ace-gruvbox .ace_storage {\n color: #8FBF7F;\n}\n\n.ace-gruvbox .ace_keyword.ace_operator {\n color: #EBDAB4;\n}\n\n.ace-gruvbox .ace_punctuation.ace_operator {\n color: yellow;\n}\n\n.ace-gruvbox .ace_marker-layer .ace_active-line {\n background: #3C3836;\n}\n\n.ace-gruvbox .ace_marker-layer .ace_selected-word {\n border-radius: 4px;\n border: 8px solid #3f475d;\n}\n\n.ace-gruvbox .ace_print-margin {\n width: 5px;\n background: #3C3836;\n}\n\n.ace-gruvbox .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC") right repeat-y;\n}\n\n.ace-gruvbox .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n'}),define("ace/theme/gruvbox",["require","exports","module","ace/theme/gruvbox-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-gruvbox",t.cssText=e("./gruvbox-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/gruvbox"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-gruvbox_dark_hard.js b/www/js/ace/theme-gruvbox_dark_hard.js deleted file mode 100644 index 377beb737..000000000 --- a/www/js/ace/theme-gruvbox_dark_hard.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/gruvbox_dark_hard-css",["require","exports","module"],function(e,t,n){n.exports=".ace-gruvbox-dark-hard .ace_gutter {\n background: #1d2021;\n color: rgb(132,126,106)\n}\n\n.ace-gruvbox-dark-hard .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-gruvbox-dark-hard {\n background-color: #1d2021;\n color: rgba(235, 219, 178, 0.50)\n}\n\n.ace-gruvbox-dark-hard .ace_cursor {\n color: #a89984\n}\n\n.ace-gruvbox-dark-hard .ace_marker-layer .ace_selection {\n background: #3c3836\n}\n\n.ace-gruvbox-dark-hard.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #1d2021;\n border-radius: 2px\n}\n\n.ace-gruvbox-dark-hard .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174)\n}\n\n.ace-gruvbox-dark-hard .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(235, 219, 178, 0.15)\n}\n\n.ace-gruvbox-dark-hard .ace_marker-layer .ace_active-line {\n background: #3c3836\n}\n\n.ace-gruvbox-dark-hard .ace_gutter-active-line {\n background-color: #3c3836\n}\n\n.ace-gruvbox-dark-hard .ace_marker-layer .ace_selected-word {\n border: 1px solid #3c3836\n}\n\n.ace-gruvbox-dark-hard .ace_fold {\n background-color: #b8bb26;\n border-color: rgba(235, 219, 178, 0.50)\n}\n\n.ace-gruvbox-dark-hard .ace_keyword {\n color: #fb4934\n}\n\n.ace-gruvbox-dark-hard .ace_keyword.ace_operator {\n color: #8ec07c\n}\n\n.ace-gruvbox-dark-hard .ace_keyword.ace_other.ace_unit {\n color: #b16286\n}\n\n.ace-gruvbox-dark-hard .ace_constant {\n color: #d3869b\n}\n\n.ace-gruvbox-dark-hard .ace_constant.ace_numeric {\n color: #d3869b\n}\n\n.ace-gruvbox-dark-hard .ace_constant.ace_character.ace_escape {\n color: #fb4934\n}\n\n.ace-gruvbox-dark-hard .ace_constant.ace_other {\n color: #d3869b\n}\n\n.ace-gruvbox-dark-hard .ace_support.ace_function {\n color: #8ec07c\n}\n\n.ace-gruvbox-dark-hard .ace_support.ace_constant {\n color: #d3869b\n}\n\n.ace-gruvbox-dark-hard .ace_support.ace_constant.ace_property-value {\n color: #f9f5d7\n}\n\n.ace-gruvbox-dark-hard .ace_support.ace_class {\n color: #fabd2f\n}\n\n.ace-gruvbox-dark-hard .ace_support.ace_type {\n color: #fabd2f\n}\n\n.ace-gruvbox-dark-hard .ace_storage {\n color: #fb4934\n}\n\n.ace-gruvbox-dark-hard .ace_invalid {\n color: #f9f5d7;\n background-color: #fb4934\n}\n\n.ace-gruvbox-dark-hard .ace_string {\n color: #b8bb26\n}\n\n.ace-gruvbox-dark-hard .ace_string.ace_regexp {\n color: #b8bb26\n}\n\n.ace-gruvbox-dark-hard .ace_comment {\n font-style: italic;\n color: #928374\n}\n\n.ace-gruvbox-dark-hard .ace_variable {\n color: #83a598\n}\n\n.ace-gruvbox-dark-hard .ace_variable.ace_language {\n color: #d3869b\n}\n\n.ace-gruvbox-dark-hard .ace_variable.ace_parameter {\n color: #f9f5d7\n}\n\n.ace-gruvbox-dark-hard .ace_meta.ace_tag {\n color: #f9f5d7\n}\n\n.ace-gruvbox-dark-hard .ace_entity.ace_other.ace_attribute-name {\n color: #fabd2f\n}\n\n.ace-gruvbox-dark-hard .ace_entity.ace_name.ace_function {\n color: #b8bb26\n}\n\n.ace-gruvbox-dark-hard .ace_entity.ace_name.ace_tag {\n color: #83a598\n}\n\n.ace-gruvbox-dark-hard .ace_markup.ace_heading {\n color: #b8bb26\n}\n\n.ace-gruvbox-dark-hard .ace_markup.ace_list {\n color: #83a598\n}\n\n.ace-gruvbox-dark-hard .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/gruvbox_dark_hard",["require","exports","module","ace/theme/gruvbox_dark_hard-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-gruvbox-dark-hard",t.cssText=e("./gruvbox_dark_hard-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}); (function() { - window.require(["ace/theme/gruvbox_dark_hard"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-gruvbox_light_hard.js b/www/js/ace/theme-gruvbox_light_hard.js deleted file mode 100644 index 64bdf9e68..000000000 --- a/www/js/ace/theme-gruvbox_light_hard.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/gruvbox_light_hard-css",["require","exports","module"],function(e,t,n){n.exports='.ace-gruvbox-light-hard .ace_gutter {\n background: #f9f5d7;\n color: rgb(155,151,135)\n}\n\n.ace-gruvbox-light-hard .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-gruvbox-light-hard {\n background-color: #f9f5d7;\n color: rgba(60, 56, 54, 0.50)\n}\n\n.ace-gruvbox-light-hard .ace_cursor {\n color: #7c6f64\n}\n\n.ace-gruvbox-light-hard .ace_marker-layer .ace_selection {\n background: #ebdbb2\n}\n\n.ace-gruvbox-light-hard.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #f9f5d7;\n border-radius: 2px\n}\n\n.ace-gruvbox-light-hard .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174)\n}\n\n.ace-gruvbox-light-hard .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(60, 56, 54, 0.15)\n}\n\n.ace-gruvbox-light-hard .ace_marker-layer .ace_active-line {\n background: #ebdbb2\n}\n\n.ace-gruvbox-light-hard .ace_gutter-active-line {\n background-color: #ebdbb2\n}\n\n.ace-gruvbox-light-hard .ace_marker-layer .ace_selected-word {\n border: 1px solid #ebdbb2\n}\n\n.ace-gruvbox-light-hard .ace_fold {\n background-color: #79740e;\n border-color: rgba(60, 56, 54, 0.50)\n}\n\n.ace-gruvbox-light-hard .ace_keyword {\n color: #9d0006\n}\n\n.ace-gruvbox-light-hard .ace_keyword.ace_operator {\n color: #427b58\n}\n\n.ace-gruvbox-light-hard .ace_keyword.ace_other.ace_unit {\n color: #b16286\n}\n\n.ace-gruvbox-light-hard .ace_constant {\n color: #8f3f71\n}\n\n.ace-gruvbox-light-hard .ace_constant.ace_numeric {\n color: #8f3f71\n}\n\n.ace-gruvbox-light-hard .ace_constant.ace_character.ace_escape {\n color: #9d0006\n}\n\n.ace-gruvbox-light-hard .ace_constant.ace_other {\n color: #8f3f71\n}\n\n.ace-gruvbox-light-hard .ace_support.ace_function {\n color: #427b58\n}\n\n.ace-gruvbox-light-hard .ace_support.ace_constant {\n color: #8f3f71\n}\n\n.ace-gruvbox-light-hard .ace_support.ace_constant.ace_property-value {\n color: #1d2021\n}\n\n.ace-gruvbox-light-hard .ace_support.ace_class {\n color: #b57614\n}\n\n.ace-gruvbox-light-hard .ace_support.ace_type {\n color: #b57614\n}\n\n.ace-gruvbox-light-hard .ace_storage {\n color: #9d0006\n}\n\n.ace-gruvbox-light-hard .ace_invalid {\n color: #1d2021;\n background-color: #9d0006\n}\n\n.ace-gruvbox-light-hard .ace_string {\n color: #79740e\n}\n\n.ace-gruvbox-light-hard .ace_string.ace_regexp {\n color: #79740e\n}\n\n.ace-gruvbox-light-hard .ace_comment {\n font-style: italic;\n color: #928374\n}\n\n.ace-gruvbox-light-hard .ace_variable {\n color: #076678\n}\n\n.ace-gruvbox-light-hard .ace_variable.ace_language {\n color: #8f3f71\n}\n\n.ace-gruvbox-light-hard .ace_variable.ace_parameter {\n color: #1d2021\n}\n\n.ace-gruvbox-light-hard .ace_meta.ace_tag {\n color: #1d2021\n}\n\n.ace-gruvbox-light-hard .ace_entity.ace_other.ace_attribute-name {\n color: #b57614\n}\n\n.ace-gruvbox-light-hard .ace_entity.ace_name.ace_function {\n color: #79740e\n}\n\n.ace-gruvbox-light-hard .ace_entity.ace_name.ace_tag {\n color: #076678\n}\n\n.ace-gruvbox-light-hard .ace_markup.ace_heading {\n color: #79740e\n}\n\n.ace-gruvbox-light-hard .ace_markup.ace_list {\n color: #076678\n}\n\n.ace-gruvbox-light-hard .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n\n.ace-gruvbox-light-hard .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n} \n'}),define("ace/theme/gruvbox_light_hard",["require","exports","module","ace/theme/gruvbox_light_hard-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-gruvbox-light-hard",t.cssText=e("./gruvbox_light_hard-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}); (function() { - window.require(["ace/theme/gruvbox_light_hard"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-idle_fingers.js b/www/js/ace/theme-idle_fingers.js deleted file mode 100644 index 449898cbe..000000000 --- a/www/js/ace/theme-idle_fingers.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/idle_fingers-css",["require","exports","module"],function(e,t,n){n.exports=".ace-idle-fingers .ace_gutter {\n background: #3b3b3b;\n color: rgb(153,153,153)\n}\n\n.ace-idle-fingers .ace_print-margin {\n width: 1px;\n background: #3b3b3b\n}\n\n.ace-idle-fingers {\n background-color: #323232;\n color: #FFFFFF\n}\n\n.ace-idle-fingers .ace_cursor {\n color: #91FF00\n}\n\n.ace-idle-fingers .ace_marker-layer .ace_selection {\n background: rgba(90, 100, 126, 0.88)\n}\n\n.ace-idle-fingers.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #323232;\n}\n\n.ace-idle-fingers .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-idle-fingers .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404040\n}\n\n.ace-idle-fingers .ace_marker-layer .ace_active-line {\n background: #353637\n}\n\n.ace-idle-fingers .ace_gutter-active-line {\n background-color: #353637\n}\n\n.ace-idle-fingers .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(90, 100, 126, 0.88)\n}\n\n.ace-idle-fingers .ace_invisible {\n color: #404040\n}\n\n.ace-idle-fingers .ace_keyword,\n.ace-idle-fingers .ace_meta {\n color: #CC7833\n}\n\n.ace-idle-fingers .ace_constant,\n.ace-idle-fingers .ace_constant.ace_character,\n.ace-idle-fingers .ace_constant.ace_character.ace_escape,\n.ace-idle-fingers .ace_constant.ace_other,\n.ace-idle-fingers .ace_support.ace_constant {\n color: #6C99BB\n}\n\n.ace-idle-fingers .ace_invalid {\n color: #FFFFFF;\n background-color: #FF0000\n}\n\n.ace-idle-fingers .ace_fold {\n background-color: #CC7833;\n border-color: #FFFFFF\n}\n\n.ace-idle-fingers .ace_support.ace_function {\n color: #B83426\n}\n\n.ace-idle-fingers .ace_variable.ace_parameter {\n font-style: italic\n}\n\n.ace-idle-fingers .ace_string {\n color: #A5C261\n}\n\n.ace-idle-fingers .ace_string.ace_regexp {\n color: #CCCC33\n}\n\n.ace-idle-fingers .ace_comment {\n font-style: italic;\n color: #BC9458\n}\n\n.ace-idle-fingers .ace_meta.ace_tag {\n color: #FFE5BB\n}\n\n.ace-idle-fingers .ace_entity.ace_name {\n color: #FFC66D\n}\n\n.ace-idle-fingers .ace_collab.ace_user1 {\n color: #323232;\n background-color: #FFF980\n}\n\n.ace-idle-fingers .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMwMjLyZYiPj/8PAAreAwAI1+g0AAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-idle-fingers .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/idle_fingers",["require","exports","module","ace/theme/idle_fingers-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-idle-fingers",t.cssText=e("./idle_fingers-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/idle_fingers"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-iplastic.js b/www/js/ace/theme-iplastic.js deleted file mode 100644 index d5175d591..000000000 --- a/www/js/ace/theme-iplastic.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/iplastic-css",["require","exports","module"],function(e,t,n){n.exports='.ace-iplastic .ace_gutter {\n background: #dddddd;\n color: #666666\n}\n\n.ace-iplastic .ace_print-margin {\n width: 1px;\n background: #bbbbbb\n}\n\n.ace-iplastic {\n background-color: #eeeeee;\n color: #333333\n}\n\n.ace-iplastic .ace_cursor {\n color: #333\n}\n\n.ace-iplastic .ace_marker-layer .ace_selection {\n background: #BAD6FD;\n}\n\n.ace-iplastic.ace_multiselect .ace_selection.ace_start {\n border-radius: 4px\n}\n\n.ace-iplastic .ace_marker-layer .ace_step {\n background: #444444\n}\n\n.ace-iplastic .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #49483E;\n background: #FFF799\n}\n\n.ace-iplastic .ace_marker-layer .ace_active-line {\n background: #e5e5e5\n}\n\n.ace-iplastic .ace_gutter-active-line {\n background-color: #eeeeee\n}\n\n.ace-iplastic .ace_marker-layer .ace_selected-word {\n border: 1px solid #555555;\n border-radius:4px\n}\n\n.ace-iplastic .ace_invisible {\n color: #999999\n}\n\n.ace-iplastic .ace_entity.ace_name.ace_tag,\n.ace-iplastic .ace_keyword,\n.ace-iplastic .ace_meta.ace_tag,\n.ace-iplastic .ace_storage {\n color: #0000FF\n}\n\n.ace-iplastic .ace_punctuation,\n.ace-iplastic .ace_punctuation.ace_tag {\n color: #000\n}\n\n.ace-iplastic .ace_constant {\n color: #333333;\n font-weight: 700\n}\n\n.ace-iplastic .ace_constant.ace_character,\n.ace-iplastic .ace_constant.ace_language,\n.ace-iplastic .ace_constant.ace_numeric,\n.ace-iplastic .ace_constant.ace_other {\n color: #0066FF;\n font-weight: 700\n}\n\n.ace-iplastic .ace_constant.ace_numeric{\n font-weight: 100\n}\n\n.ace-iplastic .ace_invalid {\n color: #F8F8F0;\n background-color: #F92672\n}\n\n.ace-iplastic .ace_invalid.ace_deprecated {\n color: #F8F8F0;\n background-color: #AE81FF\n}\n\n.ace-iplastic .ace_support.ace_constant,\n.ace-iplastic .ace_support.ace_function {\n color: #333333;\n font-weight: 700\n}\n\n.ace-iplastic .ace_fold {\n background-color: #464646;\n border-color: #F8F8F2\n}\n\n.ace-iplastic .ace_storage.ace_type,\n.ace-iplastic .ace_support.ace_class,\n.ace-iplastic .ace_support.ace_type {\n color: #3333fc;\n font-weight: 700\n}\n\n.ace-iplastic .ace_entity.ace_name.ace_function,\n.ace-iplastic .ace_entity.ace_other,\n.ace-iplastic .ace_entity.ace_other.ace_attribute-name,\n.ace-iplastic .ace_variable {\n color: #3366cc;\n font-style: italic\n}\n\n.ace-iplastic .ace_variable.ace_parameter {\n font-style: italic;\n color: #2469E0\n}\n\n.ace-iplastic .ace_string {\n color: #a55f03\n}\n\n.ace-iplastic .ace_comment {\n color: #777777;\n font-style: italic\n}\n\n.ace-iplastic .ace_fold-widget {\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==);\n}\n\n.ace-iplastic .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAABlJREFUeNpi+P//PwMzMzPzfwAAAAD//wMAGRsECSML/RIAAAAASUVORK5CYII=) right repeat-y\n}\n\n.ace-iplastic .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n}\n'}),define("ace/theme/iplastic",["require","exports","module","ace/theme/iplastic-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-iplastic",t.cssText=e("./iplastic-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/iplastic"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-katzenmilch.js b/www/js/ace/theme-katzenmilch.js deleted file mode 100644 index c85d633d0..000000000 --- a/www/js/ace/theme-katzenmilch.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/katzenmilch-css",["require","exports","module"],function(e,t,n){n.exports='.ace-katzenmilch .ace_gutter,\n/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: ) */\n\n.ace-katzenmilch .ace_gutter {\n background: #e8e8e8;\n color: #333\n}\n\n.ace-katzenmilch .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-katzenmilch {\n background-color: #f3f2f3;\n color: rgba(15, 0, 9, 1.0)\n}\n\n.ace-katzenmilch .ace_cursor {\n border-left: 2px solid #100011\n}\n\n.ace-katzenmilch .ace_overwrite-cursors .ace_cursor {\n border-left: 0px;\n border-bottom: 1px solid #100011\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_selection {\n background: rgba(100, 5, 208, 0.27)\n}\n\n.ace-katzenmilch.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #f3f2f3;\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174)\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(0, 0, 0, 0.33);\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_active-line {\n background: rgb(232, 242, 254)\n}\n\n.ace-katzenmilch .ace_gutter-active-line {\n background-color: rgb(232, 242, 254)\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(100, 5, 208, 0.27)\n}\n\n.ace-katzenmilch .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-katzenmilch .ace_fold {\n background-color: rgba(2, 95, 73, 0.97);\n border-color: rgba(15, 0, 9, 1.0)\n}\n\n.ace-katzenmilch .ace_keyword {\n color: #674Aa8;\n rbackground-color: rgba(163, 170, 216, 0.055)\n}\n\n.ace-katzenmilch .ace_constant.ace_language {\n color: #7D7e52;\n rbackground-color: rgba(189, 190, 130, 0.059)\n}\n\n.ace-katzenmilch .ace_constant.ace_numeric {\n color: rgba(79, 130, 123, 0.93);\n rbackground-color: rgba(119, 194, 187, 0.059)\n}\n\n.ace-katzenmilch .ace_constant.ace_character,\n.ace-katzenmilch .ace_constant.ace_other {\n color: rgba(2, 95, 105, 1.0);\n rbackground-color: rgba(127, 34, 153, 0.063)\n}\n\n.ace-katzenmilch .ace_support.ace_function {\n color: #9D7e62;\n rbackground-color: rgba(189, 190, 130, 0.039)\n}\n\n.ace-katzenmilch .ace_support.ace_class {\n color: rgba(239, 106, 167, 1.0);\n rbackground-color: rgba(239, 106, 167, 0.063)\n}\n\n.ace-katzenmilch .ace_storage {\n color: rgba(123, 92, 191, 1.0);\n rbackground-color: rgba(139, 93, 223, 0.051)\n}\n\n.ace-katzenmilch .ace_invalid {\n color: #DFDFD5;\n rbackground-color: #CC1B27\n}\n\n.ace-katzenmilch .ace_string {\n color: #5a5f9b;\n rbackground-color: rgba(170, 175, 219, 0.035)\n}\n\n.ace-katzenmilch .ace_comment {\n font-style: italic;\n color: rgba(64, 79, 80, 0.67);\n rbackground-color: rgba(95, 15, 255, 0.0078)\n}\n\n.ace-katzenmilch .ace_entity.ace_name.ace_function,\n.ace-katzenmilch .ace_variable {\n color: rgba(2, 95, 73, 0.97);\n rbackground-color: rgba(34, 255, 73, 0.12)\n}\n\n.ace-katzenmilch .ace_variable.ace_language {\n color: #316fcf;\n rbackground-color: rgba(58, 175, 255, 0.039)\n}\n\n.ace-katzenmilch .ace_variable.ace_parameter {\n font-style: italic;\n color: rgba(51, 150, 159, 0.87);\n rbackground-color: rgba(5, 214, 249, 0.043)\n}\n\n.ace-katzenmilch .ace_entity.ace_other.ace_attribute-name {\n color: rgba(73, 70, 194, 0.93);\n rbackground-color: rgba(73, 134, 194, 0.035)\n}\n\n.ace-katzenmilch .ace_entity.ace_name.ace_tag {\n color: #3976a2;\n rbackground-color: rgba(73, 166, 210, 0.039)\n}\n\n.ace-katzenmilch .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n\n.ace-katzenmilch .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n}\n'}),define("ace/theme/katzenmilch",["require","exports","module","ace/theme/katzenmilch-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-katzenmilch",t.cssText=e("./katzenmilch-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/katzenmilch"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-kr_theme.js b/www/js/ace/theme-kr_theme.js deleted file mode 100644 index 8a233c2e1..000000000 --- a/www/js/ace/theme-kr_theme.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/kr_theme-css",["require","exports","module"],function(e,t,n){n.exports=".ace-kr-theme .ace_gutter {\n background: #1c1917;\n color: #FCFFE0\n}\n\n.ace-kr-theme .ace_print-margin {\n width: 1px;\n background: #1c1917\n}\n\n.ace-kr-theme {\n background-color: #0B0A09;\n color: #FCFFE0\n}\n\n.ace-kr-theme .ace_cursor {\n color: #FF9900\n}\n\n.ace-kr-theme .ace_marker-layer .ace_selection {\n background: rgba(170, 0, 255, 0.45)\n}\n\n.ace-kr-theme.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #0B0A09;\n}\n\n.ace-kr-theme .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-kr-theme .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(255, 177, 111, 0.32)\n}\n\n.ace-kr-theme .ace_marker-layer .ace_active-line {\n background: #38403D\n}\n\n.ace-kr-theme .ace_gutter-active-line {\n background-color : #38403D\n}\n\n.ace-kr-theme .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(170, 0, 255, 0.45)\n}\n\n.ace-kr-theme .ace_invisible {\n color: rgba(255, 177, 111, 0.32)\n}\n\n.ace-kr-theme .ace_keyword,\n.ace-kr-theme .ace_meta {\n color: #949C8B\n}\n\n.ace-kr-theme .ace_constant,\n.ace-kr-theme .ace_constant.ace_character,\n.ace-kr-theme .ace_constant.ace_character.ace_escape,\n.ace-kr-theme .ace_constant.ace_other {\n color: rgba(210, 117, 24, 0.76)\n}\n\n.ace-kr-theme .ace_invalid {\n color: #F8F8F8;\n background-color: #A41300\n}\n\n.ace-kr-theme .ace_support {\n color: #9FC28A\n}\n\n.ace-kr-theme .ace_support.ace_constant {\n color: #C27E66\n}\n\n.ace-kr-theme .ace_fold {\n background-color: #949C8B;\n border-color: #FCFFE0\n}\n\n.ace-kr-theme .ace_support.ace_function {\n color: #85873A\n}\n\n.ace-kr-theme .ace_storage {\n color: #FFEE80\n}\n\n.ace-kr-theme .ace_string {\n color: rgba(164, 161, 181, 0.8)\n}\n\n.ace-kr-theme .ace_string.ace_regexp {\n color: rgba(125, 255, 192, 0.65)\n}\n\n.ace-kr-theme .ace_comment {\n font-style: italic;\n color: #706D5B\n}\n\n.ace-kr-theme .ace_variable {\n color: #D1A796\n}\n\n.ace-kr-theme .ace_list,\n.ace-kr-theme .ace_markup.ace_list {\n background-color: #0F0040\n}\n\n.ace-kr-theme .ace_variable.ace_language {\n color: #FF80E1\n}\n\n.ace-kr-theme .ace_meta.ace_tag {\n color: #BABD9C\n}\n\n.ace-kr-theme .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-kr-theme .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/kr_theme",["require","exports","module","ace/theme/kr_theme-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-kr-theme",t.cssText=e("./kr_theme-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/kr_theme"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-kuroir.js b/www/js/ace/theme-kuroir.js deleted file mode 100644 index c93dc4b8c..000000000 --- a/www/js/ace/theme-kuroir.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/kuroir-css",["require","exports","module"],function(e,t,n){n.exports='/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: 467560D0-6ACE-4409-82FD-4791420837AC) */\n\n.ace-kuroir .ace_gutter {\n background: #e8e8e8;\n color: #333;\n}\n\n.ace-kuroir .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-kuroir {\n background-color: #E8E9E8;\n color: #363636;\n}\n\n.ace-kuroir .ace_cursor {\n color: #202020;\n}\n\n.ace-kuroir .ace_marker-layer .ace_selection {\n background: rgba(245, 170, 0, 0.57);\n}\n\n.ace-kuroir.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #E8E9E8;\n}\n\n.ace-kuroir .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174);\n}\n\n.ace-kuroir .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(0, 0, 0, 0.29);\n}\n\n.ace-kuroir .ace_marker-layer .ace_active-line {\n background: rgba(203, 220, 47, 0.22);\n}\n\n.ace-kuroir .ace_gutter-active-line {\n background-color: rgba(203, 220, 47, 0.22);\n}\n\n.ace-kuroir .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(245, 170, 0, 0.57);\n}\n\n.ace-kuroir .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-kuroir .ace_fold {\n border-color: #363636;\n}\n\n\n\n\n\n.ace-kuroir .ace_constant{color:#CD6839;}.ace-kuroir .ace_constant.ace_numeric{color:#9A5925;}.ace-kuroir .ace_support{color:#104E8B;}.ace-kuroir .ace_support.ace_function{color:#005273;}.ace-kuroir .ace_support.ace_constant{color:#CF6A4C;}.ace-kuroir .ace_storage{color:#A52A2A;}.ace-kuroir .ace_invalid.ace_illegal{color:#FD1224;\nbackground-color:rgba(255, 6, 0, 0.15);}.ace-kuroir .ace_invalid.ace_deprecated{text-decoration:underline;\nfont-style:italic;\ncolor:#FD1732;\nbackground-color:#E8E9E8;}.ace-kuroir .ace_string{color:#639300;}.ace-kuroir .ace_string.ace_regexp{color:#417E00;\nbackground-color:#C9D4BE;}.ace-kuroir .ace_comment{color:rgba(148, 148, 148, 0.91);\nbackground-color:rgba(220, 220, 220, 0.56);}.ace-kuroir .ace_variable{color:#009ACD;}.ace-kuroir .ace_meta.ace_tag{color:#005273;}.ace-kuroir .ace_markup.ace_heading{color:#B8012D;\nbackground-color:rgba(191, 97, 51, 0.051);}.ace-kuroir .ace_markup.ace_list{color:#8F5B26;}\n\n.ace-kuroir .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n\n.ace-kuroir .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n} \n'}),define("ace/theme/kuroir",["require","exports","module","ace/theme/kuroir-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-kuroir",t.cssText=e("./kuroir-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/kuroir"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-merbivore.js b/www/js/ace/theme-merbivore.js deleted file mode 100644 index 392b8efe7..000000000 --- a/www/js/ace/theme-merbivore.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/merbivore-css",["require","exports","module"],function(e,t,n){n.exports=".ace-merbivore .ace_gutter {\n background: #202020;\n color: #E6E1DC\n}\n\n.ace-merbivore .ace_print-margin {\n width: 1px;\n background: #555651\n}\n\n.ace-merbivore {\n background-color: #161616;\n color: #E6E1DC\n}\n\n.ace-merbivore .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-merbivore .ace_marker-layer .ace_selection {\n background: #454545\n}\n\n.ace-merbivore.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #161616;\n}\n\n.ace-merbivore .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-merbivore .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404040\n}\n\n.ace-merbivore .ace_marker-layer .ace_active-line {\n background: #333435\n}\n\n.ace-merbivore .ace_gutter-active-line {\n background-color: #333435\n}\n\n.ace-merbivore .ace_marker-layer .ace_selected-word {\n border: 1px solid #454545\n}\n\n.ace-merbivore .ace_invisible {\n color: #404040\n}\n\n.ace-merbivore .ace_entity.ace_name.ace_tag,\n.ace-merbivore .ace_keyword,\n.ace-merbivore .ace_meta,\n.ace-merbivore .ace_meta.ace_tag,\n.ace-merbivore .ace_storage,\n.ace-merbivore .ace_support.ace_function {\n color: #FC6F09\n}\n\n.ace-merbivore .ace_constant,\n.ace-merbivore .ace_constant.ace_character,\n.ace-merbivore .ace_constant.ace_character.ace_escape,\n.ace-merbivore .ace_constant.ace_other,\n.ace-merbivore .ace_support.ace_type {\n color: #1EDAFB\n}\n\n.ace-merbivore .ace_constant.ace_character.ace_escape {\n color: #519F50\n}\n\n.ace-merbivore .ace_constant.ace_language {\n color: #FDC251\n}\n\n.ace-merbivore .ace_constant.ace_library,\n.ace-merbivore .ace_string,\n.ace-merbivore .ace_support.ace_constant {\n color: #8DFF0A\n}\n\n.ace-merbivore .ace_constant.ace_numeric {\n color: #58C554\n}\n\n.ace-merbivore .ace_invalid {\n color: #FFFFFF;\n background-color: #990000\n}\n\n.ace-merbivore .ace_fold {\n background-color: #FC6F09;\n border-color: #E6E1DC\n}\n\n.ace-merbivore .ace_comment {\n font-style: italic;\n color: #AD2EA4\n}\n\n.ace-merbivore .ace_entity.ace_other.ace_attribute-name {\n color: #FFFF89\n}\n\n.ace-merbivore .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQFxf3ZXB1df0PAAdsAmERTkEHAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-merbivore .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/merbivore",["require","exports","module","ace/theme/merbivore-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-merbivore",t.cssText=e("./merbivore-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/merbivore"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-merbivore_soft.js b/www/js/ace/theme-merbivore_soft.js deleted file mode 100644 index 9a3c6baf9..000000000 --- a/www/js/ace/theme-merbivore_soft.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/merbivore_soft-css",["require","exports","module"],function(e,t,n){n.exports=".ace-merbivore-soft .ace_gutter {\n background: #262424;\n color: #E6E1DC\n}\n\n.ace-merbivore-soft .ace_print-margin {\n width: 1px;\n background: #262424\n}\n\n.ace-merbivore-soft {\n background-color: #1C1C1C;\n color: #E6E1DC\n}\n\n.ace-merbivore-soft .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_selection {\n background: #494949\n}\n\n.ace-merbivore-soft.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #1C1C1C;\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404040\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_active-line {\n background: #333435\n}\n\n.ace-merbivore-soft .ace_gutter-active-line {\n background-color: #333435\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_selected-word {\n border: 1px solid #494949\n}\n\n.ace-merbivore-soft .ace_invisible {\n color: #404040\n}\n\n.ace-merbivore-soft .ace_entity.ace_name.ace_tag,\n.ace-merbivore-soft .ace_keyword,\n.ace-merbivore-soft .ace_meta,\n.ace-merbivore-soft .ace_meta.ace_tag,\n.ace-merbivore-soft .ace_storage {\n color: #FC803A\n}\n\n.ace-merbivore-soft .ace_constant,\n.ace-merbivore-soft .ace_constant.ace_character,\n.ace-merbivore-soft .ace_constant.ace_character.ace_escape,\n.ace-merbivore-soft .ace_constant.ace_other,\n.ace-merbivore-soft .ace_support.ace_type {\n color: #68C1D8\n}\n\n.ace-merbivore-soft .ace_constant.ace_character.ace_escape {\n color: #B3E5B4\n}\n\n.ace-merbivore-soft .ace_constant.ace_language {\n color: #E1C582\n}\n\n.ace-merbivore-soft .ace_constant.ace_library,\n.ace-merbivore-soft .ace_string,\n.ace-merbivore-soft .ace_support.ace_constant {\n color: #8EC65F\n}\n\n.ace-merbivore-soft .ace_constant.ace_numeric {\n color: #7FC578\n}\n\n.ace-merbivore-soft .ace_invalid,\n.ace-merbivore-soft .ace_invalid.ace_deprecated {\n color: #FFFFFF;\n background-color: #FE3838\n}\n\n.ace-merbivore-soft .ace_fold {\n background-color: #FC803A;\n border-color: #E6E1DC\n}\n\n.ace-merbivore-soft .ace_comment,\n.ace-merbivore-soft .ace_meta {\n font-style: italic;\n color: #AC4BB8\n}\n\n.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name {\n color: #EAF1A3\n}\n\n.ace-merbivore-soft .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQkpLyZfD09PwPAAfYAnaStpHRAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-merbivore-soft .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/merbivore_soft",["require","exports","module","ace/theme/merbivore_soft-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-merbivore-soft",t.cssText=e("./merbivore_soft-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/merbivore_soft"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-mono_industrial.js b/www/js/ace/theme-mono_industrial.js deleted file mode 100644 index 0adb1b391..000000000 --- a/www/js/ace/theme-mono_industrial.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/mono_industrial-css",["require","exports","module"],function(e,t,n){n.exports=".ace-mono-industrial .ace_gutter {\n background: #1d2521;\n color: #C5C9C9\n}\n\n.ace-mono-industrial .ace_print-margin {\n width: 1px;\n background: #555651\n}\n\n.ace-mono-industrial {\n background-color: #222C28;\n color: #FFFFFF\n}\n\n.ace-mono-industrial .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-mono-industrial .ace_marker-layer .ace_selection {\n background: rgba(145, 153, 148, 0.40)\n}\n\n.ace-mono-industrial.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #222C28;\n}\n\n.ace-mono-industrial .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-mono-industrial .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(102, 108, 104, 0.50)\n}\n\n.ace-mono-industrial .ace_marker-layer .ace_active-line {\n background: rgba(12, 13, 12, 0.25)\n}\n\n.ace-mono-industrial .ace_gutter-active-line {\n background-color: rgba(12, 13, 12, 0.25)\n}\n\n.ace-mono-industrial .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(145, 153, 148, 0.40)\n}\n\n.ace-mono-industrial .ace_invisible {\n color: rgba(102, 108, 104, 0.50)\n}\n\n.ace-mono-industrial .ace_string {\n background-color: #151C19;\n color: #FFFFFF\n}\n\n.ace-mono-industrial .ace_keyword,\n.ace-mono-industrial .ace_meta {\n color: #A39E64\n}\n\n.ace-mono-industrial .ace_constant,\n.ace-mono-industrial .ace_constant.ace_character,\n.ace-mono-industrial .ace_constant.ace_character.ace_escape,\n.ace-mono-industrial .ace_constant.ace_numeric,\n.ace-mono-industrial .ace_constant.ace_other {\n color: #E98800\n}\n\n.ace-mono-industrial .ace_entity.ace_name.ace_function,\n.ace-mono-industrial .ace_keyword.ace_operator,\n.ace-mono-industrial .ace_variable {\n color: #A8B3AB\n}\n\n.ace-mono-industrial .ace_invalid {\n color: #FFFFFF;\n background-color: rgba(153, 0, 0, 0.68)\n}\n\n.ace-mono-industrial .ace_support.ace_constant {\n color: #C87500\n}\n\n.ace-mono-industrial .ace_fold {\n background-color: #A8B3AB;\n border-color: #FFFFFF\n}\n\n.ace-mono-industrial .ace_support.ace_function {\n color: #588E60\n}\n\n.ace-mono-industrial .ace_entity.ace_name,\n.ace-mono-industrial .ace_support.ace_class,\n.ace-mono-industrial .ace_support.ace_type {\n color: #5778B6\n}\n\n.ace-mono-industrial .ace_storage {\n color: #C23B00\n}\n\n.ace-mono-industrial .ace_variable.ace_language,\n.ace-mono-industrial .ace_variable.ace_parameter {\n color: #648BD2\n}\n\n.ace-mono-industrial .ace_comment {\n color: #666C68;\n background-color: #151C19\n}\n\n.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name {\n color: #909993\n}\n\n.ace-mono-industrial .ace_entity.ace_name.ace_tag {\n color: #A65EFF\n}\n\n.ace-mono-industrial .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ1NbwZfALD/4PAAlTArlEC4r/AAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-mono-industrial .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/mono_industrial",["require","exports","module","ace/theme/mono_industrial-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-mono-industrial",t.cssText=e("./mono_industrial-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/mono_industrial"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-monokai.js b/www/js/ace/theme-monokai.js deleted file mode 100644 index a5f50405b..000000000 --- a/www/js/ace/theme-monokai.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/monokai-css",["require","exports","module"],function(e,t,n){n.exports=".ace-monokai .ace_gutter {\n background: #2F3129;\n color: #8F908A\n}\n\n.ace-monokai .ace_print-margin {\n width: 1px;\n background: #555651\n}\n\n.ace-monokai {\n background-color: #272822;\n color: #F8F8F2\n}\n\n.ace-monokai .ace_cursor {\n color: #F8F8F0\n}\n\n.ace-monokai .ace_marker-layer .ace_selection {\n background: #49483E\n}\n\n.ace-monokai.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #272822;\n}\n\n.ace-monokai .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-monokai .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #49483E\n}\n\n.ace-monokai .ace_marker-layer .ace_active-line {\n background: #202020\n}\n\n.ace-monokai .ace_gutter-active-line {\n background-color: #272727\n}\n\n.ace-monokai .ace_marker-layer .ace_selected-word {\n border: 1px solid #49483E\n}\n\n.ace-monokai .ace_invisible {\n color: #52524d\n}\n\n.ace-monokai .ace_entity.ace_name.ace_tag,\n.ace-monokai .ace_keyword,\n.ace-monokai .ace_meta.ace_tag,\n.ace-monokai .ace_storage {\n color: #F92672\n}\n\n.ace-monokai .ace_punctuation,\n.ace-monokai .ace_punctuation.ace_tag {\n color: #fff\n}\n\n.ace-monokai .ace_constant.ace_character,\n.ace-monokai .ace_constant.ace_language,\n.ace-monokai .ace_constant.ace_numeric,\n.ace-monokai .ace_constant.ace_other {\n color: #AE81FF\n}\n\n.ace-monokai .ace_invalid {\n color: #F8F8F0;\n background-color: #F92672\n}\n\n.ace-monokai .ace_invalid.ace_deprecated {\n color: #F8F8F0;\n background-color: #AE81FF\n}\n\n.ace-monokai .ace_support.ace_constant,\n.ace-monokai .ace_support.ace_function {\n color: #66D9EF\n}\n\n.ace-monokai .ace_fold {\n background-color: #A6E22E;\n border-color: #F8F8F2\n}\n\n.ace-monokai .ace_storage.ace_type,\n.ace-monokai .ace_support.ace_class,\n.ace-monokai .ace_support.ace_type {\n font-style: italic;\n color: #66D9EF\n}\n\n.ace-monokai .ace_entity.ace_name.ace_function,\n.ace-monokai .ace_entity.ace_other,\n.ace-monokai .ace_entity.ace_other.ace_attribute-name,\n.ace-monokai .ace_variable {\n color: #A6E22E\n}\n\n.ace-monokai .ace_variable.ace_parameter {\n font-style: italic;\n color: #FD971F\n}\n\n.ace-monokai .ace_string {\n color: #E6DB74\n}\n\n.ace-monokai .ace_comment {\n color: #75715E\n}\n\n.ace-monokai .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-monokai .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/monokai",["require","exports","module","ace/theme/monokai-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-monokai",t.cssText=e("./monokai-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/monokai"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-nord_dark.js b/www/js/ace/theme-nord_dark.js deleted file mode 100644 index 4eb6930d7..000000000 --- a/www/js/ace/theme-nord_dark.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/nord_dark-css",["require","exports","module"],function(e,t,n){n.exports=".ace-nord-dark .ace_gutter {\n color: #616e88;\n}\n\n.ace-nord-dark .ace_print-margin {\n width: 1px;\n background: #4c566a;\n}\n\n.ace-nord-dark {\n background-color: #2e3440;\n color: #d8dee9;\n}\n\n.ace-nord-dark .ace_entity.ace_other.ace_attribute-name,\n.ace-nord-dark .ace_storage {\n color: #d8dee9;\n}\n\n.ace-nord-dark .ace_cursor {\n color: #d8dee9;\n}\n\n.ace-nord-dark .ace_string.ace_regexp {\n color: #bf616a;\n}\n\n.ace-nord-dark .ace_marker-layer .ace_active-line {\n background: #434c5ecc;\n}\n.ace-nord-dark .ace_marker-layer .ace_selection {\n background: #434c5ecc;\n}\n\n.ace-nord-dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #2e3440;\n}\n\n.ace-nord-dark .ace_marker-layer .ace_step {\n background: #ebcb8b;\n}\n\n.ace-nord-dark .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #88c0d066;\n}\n\n.ace-nord-dark .ace_gutter-active-line {\n background-color: #434c5ecc;\n}\n\n.ace-nord-dark .ace_marker-layer .ace_selected-word {\n border: 1px solid #88c0d066;\n}\n\n.ace-nord-dark .ace_invisible {\n color: #4c566a;\n}\n\n.ace-nord-dark .ace_keyword,\n.ace-nord-dark .ace_meta,\n.ace-nord-dark .ace_support.ace_class,\n.ace-nord-dark .ace_support.ace_type {\n color: #81a1c1;\n}\n\n.ace-nord-dark .ace_constant.ace_character,\n.ace-nord-dark .ace_constant.ace_other {\n color: #d8dee9;\n}\n\n.ace-nord-dark .ace_constant.ace_language {\n color: #5e81ac;\n}\n\n.ace-nord-dark .ace_constant.ace_escape {\n color: #ebcB8b;\n}\n\n.ace-nord-dark .ace_constant.ace_numeric {\n color: #b48ead;\n}\n\n.ace-nord-dark .ace_fold {\n background-color: #4c566a;\n border-color: #d8dee9;\n}\n\n.ace-nord-dark .ace_entity.ace_name.ace_function,\n.ace-nord-dark .ace_entity.ace_name.ace_tag,\n.ace-nord-dark .ace_support.ace_function,\n.ace-nord-dark .ace_variable,\n.ace-nord-dark .ace_variable.ace_language {\n color: #8fbcbb;\n}\n\n.ace-nord-dark .ace_string {\n color: #a3be8c;\n}\n\n.ace-nord-dark .ace_comment {\n color: #616e88;\n}\n\n.ace-nord-dark .ace_indent-guide {\n box-shadow: inset -1px 0 0 0 #434c5eb3;\n}\n\n.ace-nord-dark .ace_indent-guide-active {\n box-shadow: inset -1px 0 0 0 #8395b8b3;\n}\n"}),define("ace/theme/nord_dark",["require","exports","module","ace/theme/nord_dark-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-nord-dark",t.cssText=e("./nord_dark-css"),t.$selectionColorConflict=!0;var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/nord_dark"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-one_dark.js b/www/js/ace/theme-one_dark.js deleted file mode 100644 index 9008211b5..000000000 --- a/www/js/ace/theme-one_dark.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/one_dark-css",["require","exports","module"],function(e,t,n){n.exports=".ace-one-dark .ace_gutter {\n background: #282c34;\n color: #6a6f7a\n}\n\n.ace-one-dark .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-one-dark {\n background-color: #282c34;\n color: #abb2bf\n}\n\n.ace-one-dark .ace_cursor {\n color: #528bff\n}\n\n.ace-one-dark .ace_marker-layer .ace_selection {\n background: #3d4350\n}\n\n.ace-one-dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0 #282c34;\n border-radius: 2px\n}\n\n.ace-one-dark .ace_marker-layer .ace_step {\n background: #c6dbae\n}\n\n.ace-one-dark .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #747369\n}\n\n.ace-one-dark .ace_marker-layer .ace_active-line {\n background: rgba(76, 87, 103, .19)\n}\n\n.ace-one-dark .ace_gutter-active-line {\n background-color: rgba(76, 87, 103, .19)\n}\n\n.ace-one-dark .ace_marker-layer .ace_selected-word {\n border: 1px solid #3d4350\n}\n\n.ace-one-dark .ace_fold {\n background-color: #61afef;\n border-color: #abb2bf\n}\n\n.ace-one-dark .ace_keyword {\n color: #c678dd\n}\n\n.ace-one-dark .ace_keyword.ace_operator {\n color: #c678dd\n}\n\n.ace-one-dark .ace_keyword.ace_other.ace_unit {\n color: #d19a66\n}\n\n.ace-one-dark .ace_constant.ace_language {\n color: #d19a66\n}\n\n.ace-one-dark .ace_constant.ace_numeric {\n color: #d19a66\n}\n\n.ace-one-dark .ace_constant.ace_character {\n color: #56b6c2\n}\n\n.ace-one-dark .ace_constant.ace_other {\n color: #56b6c2\n}\n\n.ace-one-dark .ace_support.ace_function {\n color: #61afef\n}\n\n.ace-one-dark .ace_support.ace_constant {\n color: #d19a66\n}\n\n.ace-one-dark .ace_support.ace_class {\n color: #e5c07b\n}\n\n.ace-one-dark .ace_support.ace_type {\n color: #e5c07b\n}\n\n.ace-one-dark .ace_storage {\n color: #c678dd\n}\n\n.ace-one-dark .ace_storage.ace_type {\n color: #c678dd\n}\n\n.ace-one-dark .ace_invalid {\n color: #fff;\n background-color: #f2777a\n}\n\n.ace-one-dark .ace_invalid.ace_deprecated {\n color: #272b33;\n background-color: #d27b53\n}\n\n.ace-one-dark .ace_string {\n color: #98c379\n}\n\n.ace-one-dark .ace_string.ace_regexp {\n color: #e06c75\n}\n\n.ace-one-dark .ace_comment {\n font-style: italic;\n color: #5c6370\n}\n\n.ace-one-dark .ace_variable {\n color: #e06c75\n}\n\n.ace-one-dark .ace_variable.ace_parameter {\n color: #d19a66\n}\n\n.ace-one-dark .ace_meta.ace_tag {\n color: #e06c75\n}\n\n.ace-one-dark .ace_entity.ace_other.ace_attribute-name {\n color: #e06c75\n}\n\n.ace-one-dark .ace_entity.ace_name.ace_function {\n color: #61afef\n}\n\n.ace-one-dark .ace_entity.ace_name.ace_tag {\n color: #e06c75\n}\n\n.ace-one-dark .ace_markup.ace_heading {\n color: #98c379\n}\n\n.ace-one-dark .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ09NrYAgMjP4PAAtGAwchHMyAAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-one-dark .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/one_dark",["require","exports","module","ace/theme/one_dark-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-one-dark",t.cssText=e("./one_dark-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/one_dark"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-pastel_on_dark.js b/www/js/ace/theme-pastel_on_dark.js deleted file mode 100644 index 15c2516b0..000000000 --- a/www/js/ace/theme-pastel_on_dark.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/pastel_on_dark-css",["require","exports","module"],function(e,t,n){n.exports=".ace-pastel-on-dark .ace_gutter {\n background: #353030;\n color: #8F938F\n}\n\n.ace-pastel-on-dark .ace_print-margin {\n width: 1px;\n background: #353030\n}\n\n.ace-pastel-on-dark {\n background-color: #2C2828;\n color: #8F938F\n}\n\n.ace-pastel-on-dark .ace_cursor {\n color: #A7A7A7\n}\n\n.ace-pastel-on-dark .ace_marker-layer .ace_selection {\n background: rgba(221, 240, 255, 0.20)\n}\n\n.ace-pastel-on-dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #2C2828;\n}\n\n.ace-pastel-on-dark .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-pastel-on-dark .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(255, 255, 255, 0.25)\n}\n\n.ace-pastel-on-dark .ace_marker-layer .ace_active-line {\n background: rgba(255, 255, 255, 0.031)\n}\n\n.ace-pastel-on-dark .ace_gutter-active-line {\n background-color: rgba(255, 255, 255, 0.031)\n}\n\n.ace-pastel-on-dark .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(221, 240, 255, 0.20)\n}\n\n.ace-pastel-on-dark .ace_invisible {\n color: rgba(255, 255, 255, 0.25)\n}\n\n.ace-pastel-on-dark .ace_keyword,\n.ace-pastel-on-dark .ace_meta {\n color: #757aD8\n}\n\n.ace-pastel-on-dark .ace_constant,\n.ace-pastel-on-dark .ace_constant.ace_character,\n.ace-pastel-on-dark .ace_constant.ace_character.ace_escape,\n.ace-pastel-on-dark .ace_constant.ace_other {\n color: #4FB7C5\n}\n\n.ace-pastel-on-dark .ace_keyword.ace_operator {\n color: #797878\n}\n\n.ace-pastel-on-dark .ace_constant.ace_character {\n color: #AFA472\n}\n\n.ace-pastel-on-dark .ace_constant.ace_language {\n color: #DE8E30\n}\n\n.ace-pastel-on-dark .ace_constant.ace_numeric {\n color: #CCCCCC\n}\n\n.ace-pastel-on-dark .ace_invalid,\n.ace-pastel-on-dark .ace_invalid.ace_illegal {\n color: #F8F8F8;\n background-color: rgba(86, 45, 86, 0.75)\n}\n\n.ace-pastel-on-dark .ace_invalid.ace_deprecated {\n text-decoration: underline;\n font-style: italic;\n color: #D2A8A1\n}\n\n.ace-pastel-on-dark .ace_fold {\n background-color: #757aD8;\n border-color: #8F938F\n}\n\n.ace-pastel-on-dark .ace_support.ace_function {\n color: #AEB2F8\n}\n\n.ace-pastel-on-dark .ace_string {\n color: #66A968\n}\n\n.ace-pastel-on-dark .ace_string.ace_regexp {\n color: #E9C062\n}\n\n.ace-pastel-on-dark .ace_comment {\n color: #A6C6FF\n}\n\n.ace-pastel-on-dark .ace_variable {\n color: #BEBF55\n}\n\n.ace-pastel-on-dark .ace_variable.ace_language {\n color: #C1C144\n}\n\n.ace-pastel-on-dark .ace_xml-pe {\n color: #494949\n}\n\n.ace-pastel-on-dark .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYIiPj/8PAARgAh2NTMh8AAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-pastel-on-dark .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/pastel_on_dark",["require","exports","module","ace/theme/pastel_on_dark-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-pastel-on-dark",t.cssText=e("./pastel_on_dark-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/pastel_on_dark"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-solarized_dark.js b/www/js/ace/theme-solarized_dark.js deleted file mode 100644 index bd6d1cc2e..000000000 --- a/www/js/ace/theme-solarized_dark.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/solarized_dark-css",["require","exports","module"],function(e,t,n){n.exports=".ace-solarized-dark .ace_gutter {\n background: #01313f;\n color: #d0edf7\n}\n\n.ace-solarized-dark .ace_print-margin {\n width: 1px;\n background: #33555E\n}\n\n.ace-solarized-dark {\n background-color: #002B36;\n color: #839496\n}\n\n.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name,\n.ace-solarized-dark .ace_storage {\n color: #839496\n}\n\n.ace-solarized-dark .ace_cursor,\n.ace-solarized-dark .ace_string.ace_regexp {\n color: #D30102\n}\n\n.ace-solarized-dark .ace_marker-layer .ace_active-line,\n.ace-solarized-dark .ace_marker-layer .ace_selection {\n background: rgba(255, 255, 255, 0.1)\n}\n\n.ace-solarized-dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #002B36;\n}\n\n.ace-solarized-dark .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-solarized-dark .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(147, 161, 161, 0.50)\n}\n\n.ace-solarized-dark .ace_gutter-active-line {\n background-color: #0d3440\n}\n\n.ace-solarized-dark .ace_marker-layer .ace_selected-word {\n border: 1px solid #073642\n}\n\n.ace-solarized-dark .ace_invisible {\n color: rgba(147, 161, 161, 0.50)\n}\n\n.ace-solarized-dark .ace_keyword,\n.ace-solarized-dark .ace_meta,\n.ace-solarized-dark .ace_support.ace_class,\n.ace-solarized-dark .ace_support.ace_type {\n color: #859900\n}\n\n.ace-solarized-dark .ace_constant.ace_character,\n.ace-solarized-dark .ace_constant.ace_other {\n color: #CB4B16\n}\n\n.ace-solarized-dark .ace_constant.ace_language {\n color: #B58900\n}\n\n.ace-solarized-dark .ace_constant.ace_numeric {\n color: #D33682\n}\n\n.ace-solarized-dark .ace_fold {\n background-color: #268BD2;\n border-color: #93A1A1\n}\n\n.ace-solarized-dark .ace_entity.ace_name.ace_function,\n.ace-solarized-dark .ace_entity.ace_name.ace_tag,\n.ace-solarized-dark .ace_support.ace_function,\n.ace-solarized-dark .ace_variable,\n.ace-solarized-dark .ace_variable.ace_language {\n color: #268BD2\n}\n\n.ace-solarized-dark .ace_string {\n color: #2AA198\n}\n\n.ace-solarized-dark .ace_comment {\n font-style: italic;\n color: #657B83\n}\n\n.ace-solarized-dark .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db1ZVCxc/sPAAd4AlUHlLenAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-solarized-dark .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/solarized_dark",["require","exports","module","ace/theme/solarized_dark-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-solarized-dark",t.cssText=e("./solarized_dark-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/solarized_dark"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-solarized_light.js b/www/js/ace/theme-solarized_light.js deleted file mode 100644 index b4b124f67..000000000 --- a/www/js/ace/theme-solarized_light.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/solarized_light-css",["require","exports","module"],function(e,t,n){n.exports='.ace-solarized-light .ace_gutter {\n background: #fbf1d3;\n color: #333\n}\n\n.ace-solarized-light .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-solarized-light {\n background-color: #FDF6E3;\n color: #586E75\n}\n\n.ace-solarized-light .ace_cursor {\n color: #000000\n}\n\n.ace-solarized-light .ace_marker-layer .ace_selection {\n background: rgba(7, 54, 67, 0.09)\n}\n\n.ace-solarized-light.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #FDF6E3;\n}\n\n.ace-solarized-light .ace_marker-layer .ace_step {\n background: rgb(255, 255, 0)\n}\n\n.ace-solarized-light .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(147, 161, 161, 0.50)\n}\n\n.ace-solarized-light .ace_marker-layer .ace_active-line {\n background: #EEE8D5\n}\n\n.ace-solarized-light .ace_gutter-active-line {\n background-color : #EDE5C1\n}\n\n.ace-solarized-light .ace_marker-layer .ace_selected-word {\n border: 1px solid #7f9390\n}\n\n.ace-solarized-light .ace_invisible {\n color: rgba(147, 161, 161, 0.50)\n}\n\n.ace-solarized-light .ace_keyword,\n.ace-solarized-light .ace_meta,\n.ace-solarized-light .ace_support.ace_class,\n.ace-solarized-light .ace_support.ace_type {\n color: #859900\n}\n\n.ace-solarized-light .ace_constant.ace_character,\n.ace-solarized-light .ace_constant.ace_other {\n color: #CB4B16\n}\n\n.ace-solarized-light .ace_constant.ace_language {\n color: #B58900\n}\n\n.ace-solarized-light .ace_constant.ace_numeric {\n color: #D33682\n}\n\n.ace-solarized-light .ace_fold {\n background-color: #268BD2;\n border-color: #586E75\n}\n\n.ace-solarized-light .ace_entity.ace_name.ace_function,\n.ace-solarized-light .ace_entity.ace_name.ace_tag,\n.ace-solarized-light .ace_support.ace_function,\n.ace-solarized-light .ace_variable,\n.ace-solarized-light .ace_variable.ace_language {\n color: #268BD2\n}\n\n.ace-solarized-light .ace_storage {\n color: #073642\n}\n\n.ace-solarized-light .ace_string {\n color: #2AA198\n}\n\n.ace-solarized-light .ace_string.ace_regexp {\n color: #D30102\n}\n\n.ace-solarized-light .ace_comment,\n.ace-solarized-light .ace_entity.ace_other.ace_attribute-name {\n color: #93A1A1\n}\n\n.ace-solarized-light .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHjy8NJ/AAjgA5fzQUmBAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-solarized-light .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n} \n'}),define("ace/theme/solarized_light",["require","exports","module","ace/theme/solarized_light-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-solarized-light",t.cssText=e("./solarized_light-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/solarized_light"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-sqlserver.js b/www/js/ace/theme-sqlserver.js deleted file mode 100644 index b9d11650a..000000000 --- a/www/js/ace/theme-sqlserver.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/sqlserver-css",["require","exports","module"],function(e,t,n){n.exports='.ace-sqlserver .ace_gutter {\n background: #ebebeb;\n color: #333;\n overflow: hidden;\n}\n\n.ace-sqlserver .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-sqlserver {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-sqlserver .ace_identifier {\n color: black;\n}\n\n.ace-sqlserver .ace_keyword {\n color: #0000FF;\n}\n\n.ace-sqlserver .ace_numeric {\n color: black;\n}\n\n.ace-sqlserver .ace_storage {\n color: #11B7BE;\n}\n\n.ace-sqlserver .ace_keyword.ace_operator,\n.ace-sqlserver .ace_lparen,\n.ace-sqlserver .ace_rparen,\n.ace-sqlserver .ace_punctuation {\n color: #808080;\n}\n\n.ace-sqlserver .ace_set.ace_statement {\n color: #0000FF;\n text-decoration: underline;\n}\n\n.ace-sqlserver .ace_cursor {\n color: black;\n}\n\n.ace-sqlserver .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-sqlserver .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-sqlserver .ace_constant.ace_language {\n color: #979797;\n}\n\n.ace-sqlserver .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-sqlserver .ace_invalid {\n background-color: rgb(153, 0, 0);\n color: white;\n}\n\n.ace-sqlserver .ace_support.ace_function {\n color: #FF00FF;\n}\n\n.ace-sqlserver .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-sqlserver .ace_class {\n color: #008080;\n}\n\n.ace-sqlserver .ace_support.ace_other {\n color: #6D79DE;\n}\n\n.ace-sqlserver .ace_variable.ace_parameter {\n font-style: italic;\n color: #FD971F;\n}\n\n.ace-sqlserver .ace_comment {\n color: #008000;\n}\n\n.ace-sqlserver .ace_constant.ace_numeric {\n color: black;\n}\n\n.ace-sqlserver .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-sqlserver .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-sqlserver .ace_support.ace_storedprocedure {\n color: #800000;\n}\n\n.ace-sqlserver .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-sqlserver .ace_list {\n color: rgb(185, 6, 144);\n}\n\n.ace-sqlserver .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-sqlserver .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-sqlserver .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-sqlserver .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-sqlserver .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-sqlserver .ace_gutter-active-line {\n background-color: #dcdcdc;\n}\n\n.ace-sqlserver .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-sqlserver .ace_meta.ace_tag {\n color: #0000FF;\n}\n\n.ace-sqlserver .ace_string.ace_regex {\n color: #FF0000;\n}\n\n.ace-sqlserver .ace_string {\n color: #FF0000;\n}\n\n.ace-sqlserver .ace_entity.ace_other.ace_attribute-name {\n color: #994409;\n}\n\n.ace-sqlserver .ace_indent-guide {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;\n}\n\n.ace-sqlserver .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n} \n'}),define("ace/theme/sqlserver",["require","exports","module","ace/theme/sqlserver-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-sqlserver",t.cssText=e("./sqlserver-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/sqlserver"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-terminal.js b/www/js/ace/theme-terminal.js deleted file mode 100644 index 0d2f231f9..000000000 --- a/www/js/ace/theme-terminal.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/terminal-css",["require","exports","module"],function(e,t,n){n.exports=".ace-terminal-theme .ace_gutter {\n background: #1a0005;\n color: steelblue\n}\n\n.ace-terminal-theme .ace_print-margin {\n width: 1px;\n background: #1a1a1a\n}\n\n.ace-terminal-theme {\n background-color: black;\n color: #DEDEDE\n}\n\n.ace-terminal-theme .ace_cursor {\n color: #9F9F9F\n}\n\n.ace-terminal-theme .ace_marker-layer .ace_selection {\n background: #424242\n}\n\n.ace-terminal-theme.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px black;\n}\n\n.ace-terminal-theme .ace_marker-layer .ace_step {\n background: rgb(0, 0, 0)\n}\n\n.ace-terminal-theme .ace_marker-layer .ace_bracket {\n background: #090;\n}\n\n.ace-terminal-theme .ace_marker-layer .ace_bracket-start {\n background: #090;\n}\n\n.ace-terminal-theme .ace_marker-layer .ace_bracket-unmatched {\n margin: -1px 0 0 -1px;\n border: 1px solid #900\n}\n\n.ace-terminal-theme .ace_marker-layer .ace_active-line {\n background: #2A2A2A\n}\n\n.ace-terminal-theme .ace_gutter-active-line {\n background-color: #2A112A\n}\n\n.ace-terminal-theme .ace_marker-layer .ace_selected-word {\n border: 1px solid #424242\n}\n\n.ace-terminal-theme .ace_invisible {\n color: #343434\n}\n\n.ace-terminal-theme .ace_keyword,\n.ace-terminal-theme .ace_meta,\n.ace-terminal-theme .ace_storage,\n.ace-terminal-theme .ace_storage.ace_type,\n.ace-terminal-theme .ace_support.ace_type {\n color: tomato\n}\n\n.ace-terminal-theme .ace_keyword.ace_operator {\n color: deeppink\n}\n\n.ace-terminal-theme .ace_constant.ace_character,\n.ace-terminal-theme .ace_constant.ace_language,\n.ace-terminal-theme .ace_constant.ace_numeric,\n.ace-terminal-theme .ace_keyword.ace_other.ace_unit,\n.ace-terminal-theme .ace_support.ace_constant,\n.ace-terminal-theme .ace_variable.ace_parameter {\n color: #E78C45\n}\n\n.ace-terminal-theme .ace_constant.ace_other {\n color: gold\n}\n\n.ace-terminal-theme .ace_invalid {\n color: yellow;\n background-color: red\n}\n\n.ace-terminal-theme .ace_invalid.ace_deprecated {\n color: #CED2CF;\n background-color: #B798BF\n}\n\n.ace-terminal-theme .ace_fold {\n background-color: #7AA6DA;\n border-color: #DEDEDE\n}\n\n.ace-terminal-theme .ace_entity.ace_name.ace_function,\n.ace-terminal-theme .ace_support.ace_function,\n.ace-terminal-theme .ace_variable {\n color: #7AA6DA\n}\n\n.ace-terminal-theme .ace_support.ace_class,\n.ace-terminal-theme .ace_support.ace_type {\n color: #E7C547\n}\n\n.ace-terminal-theme .ace_heading,\n.ace-terminal-theme .ace_string {\n color: #B9CA4A\n}\n\n.ace-terminal-theme .ace_entity.ace_name.ace_tag,\n.ace-terminal-theme .ace_entity.ace_other.ace_attribute-name,\n.ace-terminal-theme .ace_meta.ace_tag,\n.ace-terminal-theme .ace_string.ace_regexp,\n.ace-terminal-theme .ace_variable {\n color: #D54E53\n}\n\n.ace-terminal-theme .ace_comment {\n color: orangered\n}\n\n.ace-terminal-theme .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLBWV/8PAAK4AYnhiq+xAAAAAElFTkSuQmCC) right repeat-y;\n}\n\n.ace-terminal-theme .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/terminal",["require","exports","module","ace/theme/terminal-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-terminal-theme",t.cssText=e("./terminal-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/terminal"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-textmate.js b/www/js/ace/theme-textmate.js deleted file mode 100644 index b5622afdd..000000000 --- a/www/js/ace/theme-textmate.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/textmate",["require","exports","module","ace/theme/textmate-css","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText=e("./textmate-css"),t.$id="ace/theme/textmate";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/textmate"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-tomorrow.js b/www/js/ace/theme-tomorrow.js deleted file mode 100644 index f17469a06..000000000 --- a/www/js/ace/theme-tomorrow.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/tomorrow-css",["require","exports","module"],function(e,t,n){n.exports='.ace-tomorrow .ace_gutter {\n background: #f6f6f6;\n color: #4D4D4C\n}\n\n.ace-tomorrow .ace_print-margin {\n width: 1px;\n background: #f6f6f6\n}\n\n.ace-tomorrow {\n background-color: #FFFFFF;\n color: #4D4D4C\n}\n\n.ace-tomorrow .ace_cursor {\n color: #AEAFAD\n}\n\n.ace-tomorrow .ace_marker-layer .ace_selection {\n background: #D6D6D6\n}\n\n.ace-tomorrow.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #FFFFFF;\n}\n\n.ace-tomorrow .ace_marker-layer .ace_step {\n background: rgb(255, 255, 0)\n}\n\n.ace-tomorrow .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #D1D1D1\n}\n\n.ace-tomorrow .ace_marker-layer .ace_active-line {\n background: #EFEFEF\n}\n\n.ace-tomorrow .ace_gutter-active-line {\n background-color : #dcdcdc\n}\n\n.ace-tomorrow .ace_marker-layer .ace_selected-word {\n border: 1px solid #D6D6D6\n}\n\n.ace-tomorrow .ace_invisible {\n color: #D1D1D1\n}\n\n.ace-tomorrow .ace_keyword,\n.ace-tomorrow .ace_meta,\n.ace-tomorrow .ace_storage,\n.ace-tomorrow .ace_storage.ace_type,\n.ace-tomorrow .ace_support.ace_type {\n color: #8959A8\n}\n\n.ace-tomorrow .ace_keyword.ace_operator {\n color: #3E999F\n}\n\n.ace-tomorrow .ace_constant.ace_character,\n.ace-tomorrow .ace_constant.ace_language,\n.ace-tomorrow .ace_constant.ace_numeric,\n.ace-tomorrow .ace_keyword.ace_other.ace_unit,\n.ace-tomorrow .ace_support.ace_constant,\n.ace-tomorrow .ace_variable.ace_parameter {\n color: #F5871F\n}\n\n.ace-tomorrow .ace_constant.ace_other {\n color: #666969\n}\n\n.ace-tomorrow .ace_invalid {\n color: #FFFFFF;\n background-color: #C82829\n}\n\n.ace-tomorrow .ace_invalid.ace_deprecated {\n color: #FFFFFF;\n background-color: #8959A8\n}\n\n.ace-tomorrow .ace_fold {\n background-color: #4271AE;\n border-color: #4D4D4C\n}\n\n.ace-tomorrow .ace_entity.ace_name.ace_function,\n.ace-tomorrow .ace_support.ace_function,\n.ace-tomorrow .ace_variable {\n color: #4271AE\n}\n\n.ace-tomorrow .ace_support.ace_class,\n.ace-tomorrow .ace_support.ace_type {\n color: #C99E00\n}\n\n.ace-tomorrow .ace_heading,\n.ace-tomorrow .ace_markup.ace_heading,\n.ace-tomorrow .ace_string {\n color: #718C00\n}\n\n.ace-tomorrow .ace_entity.ace_name.ace_tag,\n.ace-tomorrow .ace_entity.ace_other.ace_attribute-name,\n.ace-tomorrow .ace_meta.ace_tag,\n.ace-tomorrow .ace_string.ace_regexp,\n.ace-tomorrow .ace_variable {\n color: #C82829\n}\n\n.ace-tomorrow .ace_comment {\n color: #8E908C\n}\n\n.ace-tomorrow .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y\n}\n\n.ace-tomorrow .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n} \n'}),define("ace/theme/tomorrow",["require","exports","module","ace/theme/tomorrow-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-tomorrow",t.cssText=e("./tomorrow-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/tomorrow"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-tomorrow_night.js b/www/js/ace/theme-tomorrow_night.js deleted file mode 100644 index a86f3260c..000000000 --- a/www/js/ace/theme-tomorrow_night.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/tomorrow_night-css",["require","exports","module"],function(e,t,n){n.exports=".ace-tomorrow-night .ace_gutter {\n background: #25282c;\n color: #C5C8C6\n}\n\n.ace-tomorrow-night .ace_print-margin {\n width: 1px;\n background: #25282c\n}\n\n.ace-tomorrow-night {\n background-color: #1D1F21;\n color: #C5C8C6\n}\n\n.ace-tomorrow-night .ace_cursor {\n color: #AEAFAD\n}\n\n.ace-tomorrow-night .ace_marker-layer .ace_selection {\n background: #373B41\n}\n\n.ace-tomorrow-night.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #1D1F21;\n}\n\n.ace-tomorrow-night .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-tomorrow-night .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #4B4E55\n}\n\n.ace-tomorrow-night .ace_marker-layer .ace_active-line {\n background: #282A2E\n}\n\n.ace-tomorrow-night .ace_gutter-active-line {\n background-color: #282A2E\n}\n\n.ace-tomorrow-night .ace_marker-layer .ace_selected-word {\n border: 1px solid #373B41\n}\n\n.ace-tomorrow-night .ace_invisible {\n color: #4B4E55\n}\n\n.ace-tomorrow-night .ace_keyword,\n.ace-tomorrow-night .ace_meta,\n.ace-tomorrow-night .ace_storage,\n.ace-tomorrow-night .ace_storage.ace_type,\n.ace-tomorrow-night .ace_support.ace_type {\n color: #B294BB\n}\n\n.ace-tomorrow-night .ace_keyword.ace_operator {\n color: #8ABEB7\n}\n\n.ace-tomorrow-night .ace_constant.ace_character,\n.ace-tomorrow-night .ace_constant.ace_language,\n.ace-tomorrow-night .ace_constant.ace_numeric,\n.ace-tomorrow-night .ace_keyword.ace_other.ace_unit,\n.ace-tomorrow-night .ace_support.ace_constant,\n.ace-tomorrow-night .ace_variable.ace_parameter {\n color: #DE935F\n}\n\n.ace-tomorrow-night .ace_constant.ace_other {\n color: #CED1CF\n}\n\n.ace-tomorrow-night .ace_invalid {\n color: #CED2CF;\n background-color: #DF5F5F\n}\n\n.ace-tomorrow-night .ace_invalid.ace_deprecated {\n color: #CED2CF;\n background-color: #B798BF\n}\n\n.ace-tomorrow-night .ace_fold {\n background-color: #81A2BE;\n border-color: #C5C8C6\n}\n\n.ace-tomorrow-night .ace_entity.ace_name.ace_function,\n.ace-tomorrow-night .ace_support.ace_function,\n.ace-tomorrow-night .ace_variable {\n color: #81A2BE\n}\n\n.ace-tomorrow-night .ace_support.ace_class,\n.ace-tomorrow-night .ace_support.ace_type {\n color: #F0C674\n}\n\n.ace-tomorrow-night .ace_heading,\n.ace-tomorrow-night .ace_markup.ace_heading,\n.ace-tomorrow-night .ace_string {\n color: #B5BD68\n}\n\n.ace-tomorrow-night .ace_entity.ace_name.ace_tag,\n.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name,\n.ace-tomorrow-night .ace_meta.ace_tag,\n.ace-tomorrow-night .ace_string.ace_regexp,\n.ace-tomorrow-night .ace_variable {\n color: #CC6666\n}\n\n.ace-tomorrow-night .ace_comment {\n color: #969896\n}\n\n.ace-tomorrow-night .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-tomorrow-night .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/tomorrow_night",["require","exports","module","ace/theme/tomorrow_night-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night",t.cssText=e("./tomorrow_night-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/tomorrow_night"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-tomorrow_night_blue.js b/www/js/ace/theme-tomorrow_night_blue.js deleted file mode 100644 index e2e4780c0..000000000 --- a/www/js/ace/theme-tomorrow_night_blue.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/tomorrow_night_blue-css",["require","exports","module"],function(e,t,n){n.exports=".ace-tomorrow-night-blue .ace_gutter {\n background: #00204b;\n color: #7388b5\n}\n\n.ace-tomorrow-night-blue .ace_print-margin {\n width: 1px;\n background: #00204b\n}\n\n.ace-tomorrow-night-blue {\n background-color: #002451;\n color: #FFFFFF\n}\n\n.ace-tomorrow-night-blue .ace_constant.ace_other,\n.ace-tomorrow-night-blue .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_selection {\n background: #003F8E\n}\n\n.ace-tomorrow-night-blue.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #002451;\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_step {\n background: rgb(127, 111, 19)\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404F7D\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_active-line {\n background: #00346E\n}\n\n.ace-tomorrow-night-blue .ace_gutter-active-line {\n background-color: #022040\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_selected-word {\n border: 1px solid #003F8E\n}\n\n.ace-tomorrow-night-blue .ace_invisible {\n color: #404F7D\n}\n\n.ace-tomorrow-night-blue .ace_keyword,\n.ace-tomorrow-night-blue .ace_meta,\n.ace-tomorrow-night-blue .ace_storage,\n.ace-tomorrow-night-blue .ace_storage.ace_type,\n.ace-tomorrow-night-blue .ace_support.ace_type {\n color: #EBBBFF\n}\n\n.ace-tomorrow-night-blue .ace_keyword.ace_operator {\n color: #99FFFF\n}\n\n.ace-tomorrow-night-blue .ace_constant.ace_character,\n.ace-tomorrow-night-blue .ace_constant.ace_language,\n.ace-tomorrow-night-blue .ace_constant.ace_numeric,\n.ace-tomorrow-night-blue .ace_keyword.ace_other.ace_unit,\n.ace-tomorrow-night-blue .ace_support.ace_constant,\n.ace-tomorrow-night-blue .ace_variable.ace_parameter {\n color: #FFC58F\n}\n\n.ace-tomorrow-night-blue .ace_invalid {\n color: #FFFFFF;\n background-color: #F99DA5\n}\n\n.ace-tomorrow-night-blue .ace_invalid.ace_deprecated {\n color: #FFFFFF;\n background-color: #EBBBFF\n}\n\n.ace-tomorrow-night-blue .ace_fold {\n background-color: #BBDAFF;\n border-color: #FFFFFF\n}\n\n.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function,\n.ace-tomorrow-night-blue .ace_support.ace_function,\n.ace-tomorrow-night-blue .ace_variable {\n color: #BBDAFF\n}\n\n.ace-tomorrow-night-blue .ace_support.ace_class,\n.ace-tomorrow-night-blue .ace_support.ace_type {\n color: #FFEEAD\n}\n\n.ace-tomorrow-night-blue .ace_heading,\n.ace-tomorrow-night-blue .ace_markup.ace_heading,\n.ace-tomorrow-night-blue .ace_string {\n color: #D1F1A9\n}\n\n.ace-tomorrow-night-blue .ace_entity.ace_name.ace_tag,\n.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name,\n.ace-tomorrow-night-blue .ace_meta.ace_tag,\n.ace-tomorrow-night-blue .ace_string.ace_regexp,\n.ace-tomorrow-night-blue .ace_variable {\n color: #FF9DA4\n}\n\n.ace-tomorrow-night-blue .ace_comment {\n color: #7285B7\n}\n\n.ace-tomorrow-night-blue .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYJDzqfwPAANXAeNsiA+ZAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-tomorrow-night-blue .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/tomorrow_night_blue",["require","exports","module","ace/theme/tomorrow_night_blue-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night-blue",t.cssText=e("./tomorrow_night_blue-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/tomorrow_night_blue"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-tomorrow_night_bright.js b/www/js/ace/theme-tomorrow_night_bright.js deleted file mode 100644 index f5bd17209..000000000 --- a/www/js/ace/theme-tomorrow_night_bright.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/tomorrow_night_bright-css",["require","exports","module"],function(e,t,n){n.exports=".ace-tomorrow-night-bright .ace_gutter {\n background: #1a1a1a;\n color: #DEDEDE\n}\n\n.ace-tomorrow-night-bright .ace_print-margin {\n width: 1px;\n background: #1a1a1a\n}\n\n.ace-tomorrow-night-bright {\n background-color: #000000;\n color: #DEDEDE\n}\n\n.ace-tomorrow-night-bright .ace_cursor {\n color: #9F9F9F\n}\n\n.ace-tomorrow-night-bright .ace_marker-layer .ace_selection {\n background: #424242\n}\n\n.ace-tomorrow-night-bright.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #000000;\n}\n\n.ace-tomorrow-night-bright .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-tomorrow-night-bright .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #888888\n}\n\n.ace-tomorrow-night-bright .ace_marker-layer .ace_highlight {\n border: 1px solid rgb(110, 119, 0);\n border-bottom: 0;\n box-shadow: inset 0 -1px rgb(110, 119, 0);\n margin: -1px 0 0 -1px;\n background: rgba(255, 235, 0, 0.1)\n}\n\n.ace-tomorrow-night-bright .ace_marker-layer .ace_active-line {\n background: #2A2A2A\n}\n\n.ace-tomorrow-night-bright .ace_gutter-active-line {\n background-color: #2A2A2A\n}\n\n.ace-tomorrow-night-bright .ace_stack {\n background-color: rgb(66, 90, 44)\n}\n\n.ace-tomorrow-night-bright .ace_marker-layer .ace_selected-word {\n border: 1px solid #888888\n}\n\n.ace-tomorrow-night-bright .ace_invisible {\n color: #343434\n}\n\n.ace-tomorrow-night-bright .ace_keyword,\n.ace-tomorrow-night-bright .ace_meta,\n.ace-tomorrow-night-bright .ace_storage,\n.ace-tomorrow-night-bright .ace_storage.ace_type,\n.ace-tomorrow-night-bright .ace_support.ace_type {\n color: #C397D8\n}\n\n.ace-tomorrow-night-bright .ace_keyword.ace_operator {\n color: #70C0B1\n}\n\n.ace-tomorrow-night-bright .ace_constant.ace_character,\n.ace-tomorrow-night-bright .ace_constant.ace_language,\n.ace-tomorrow-night-bright .ace_constant.ace_numeric,\n.ace-tomorrow-night-bright .ace_keyword.ace_other.ace_unit,\n.ace-tomorrow-night-bright .ace_support.ace_constant,\n.ace-tomorrow-night-bright .ace_variable.ace_parameter {\n color: #E78C45\n}\n\n.ace-tomorrow-night-bright .ace_constant.ace_other {\n color: #EEEEEE\n}\n\n.ace-tomorrow-night-bright .ace_invalid {\n color: #CED2CF;\n background-color: #DF5F5F\n}\n\n.ace-tomorrow-night-bright .ace_invalid.ace_deprecated {\n color: #CED2CF;\n background-color: #B798BF\n}\n\n.ace-tomorrow-night-bright .ace_fold {\n background-color: #7AA6DA;\n border-color: #DEDEDE\n}\n\n.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function,\n.ace-tomorrow-night-bright .ace_support.ace_function,\n.ace-tomorrow-night-bright .ace_variable {\n color: #7AA6DA\n}\n\n.ace-tomorrow-night-bright .ace_support.ace_class,\n.ace-tomorrow-night-bright .ace_support.ace_type {\n color: #E7C547\n}\n\n.ace-tomorrow-night-bright .ace_heading,\n.ace-tomorrow-night-bright .ace_markup.ace_heading,\n.ace-tomorrow-night-bright .ace_string {\n color: #B9CA4A\n}\n\n.ace-tomorrow-night-bright .ace_entity.ace_name.ace_tag,\n.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name,\n.ace-tomorrow-night-bright .ace_meta.ace_tag,\n.ace-tomorrow-night-bright .ace_string.ace_regexp,\n.ace-tomorrow-night-bright .ace_variable {\n color: #D54E53\n}\n\n.ace-tomorrow-night-bright .ace_comment {\n color: #969896\n}\n\n.ace-tomorrow-night-bright .ace_c9searchresults.ace_keyword {\n color: #C2C280\n}\n\n.ace-tomorrow-night-bright .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-tomorrow-night-bright .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/tomorrow_night_bright",["require","exports","module","ace/theme/tomorrow_night_bright-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night-bright",t.cssText=e("./tomorrow_night_bright-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/tomorrow_night_bright"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-tomorrow_night_eighties.js b/www/js/ace/theme-tomorrow_night_eighties.js deleted file mode 100644 index cd6304ba4..000000000 --- a/www/js/ace/theme-tomorrow_night_eighties.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/tomorrow_night_eighties-css",["require","exports","module"],function(e,t,n){n.exports=".ace-tomorrow-night-eighties .ace_gutter {\n background: #272727;\n color: #CCC\n}\n\n.ace-tomorrow-night-eighties .ace_print-margin {\n width: 1px;\n background: #272727\n}\n\n.ace-tomorrow-night-eighties {\n background-color: #2D2D2D;\n color: #CCCCCC\n}\n\n.ace-tomorrow-night-eighties .ace_constant.ace_other,\n.ace-tomorrow-night-eighties .ace_cursor {\n color: #CCCCCC\n}\n\n.ace-tomorrow-night-eighties .ace_marker-layer .ace_selection {\n background: #515151\n}\n\n.ace-tomorrow-night-eighties.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #2D2D2D;\n}\n\n.ace-tomorrow-night-eighties .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-tomorrow-night-eighties .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #6A6A6A\n}\n\n.ace-tomorrow-night-bright .ace_stack {\n background: rgb(66, 90, 44)\n}\n\n.ace-tomorrow-night-eighties .ace_marker-layer .ace_active-line {\n background: #393939\n}\n\n.ace-tomorrow-night-eighties .ace_gutter-active-line {\n background-color: #393939\n}\n\n.ace-tomorrow-night-eighties .ace_marker-layer .ace_selected-word {\n border: 1px solid #515151\n}\n\n.ace-tomorrow-night-eighties .ace_invisible {\n color: #6A6A6A\n}\n\n.ace-tomorrow-night-eighties .ace_keyword,\n.ace-tomorrow-night-eighties .ace_meta,\n.ace-tomorrow-night-eighties .ace_storage,\n.ace-tomorrow-night-eighties .ace_storage.ace_type,\n.ace-tomorrow-night-eighties .ace_support.ace_type {\n color: #CC99CC\n}\n\n.ace-tomorrow-night-eighties .ace_keyword.ace_operator {\n color: #66CCCC\n}\n\n.ace-tomorrow-night-eighties .ace_constant.ace_character,\n.ace-tomorrow-night-eighties .ace_constant.ace_language,\n.ace-tomorrow-night-eighties .ace_constant.ace_numeric,\n.ace-tomorrow-night-eighties .ace_keyword.ace_other.ace_unit,\n.ace-tomorrow-night-eighties .ace_support.ace_constant,\n.ace-tomorrow-night-eighties .ace_variable.ace_parameter {\n color: #F99157\n}\n\n.ace-tomorrow-night-eighties .ace_invalid {\n color: #CDCDCD;\n background-color: #F2777A\n}\n\n.ace-tomorrow-night-eighties .ace_invalid.ace_deprecated {\n color: #CDCDCD;\n background-color: #CC99CC\n}\n\n.ace-tomorrow-night-eighties .ace_fold {\n background-color: #6699CC;\n border-color: #CCCCCC\n}\n\n.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function,\n.ace-tomorrow-night-eighties .ace_support.ace_function,\n.ace-tomorrow-night-eighties .ace_variable {\n color: #6699CC\n}\n\n.ace-tomorrow-night-eighties .ace_support.ace_class,\n.ace-tomorrow-night-eighties .ace_support.ace_type {\n color: #FFCC66\n}\n\n.ace-tomorrow-night-eighties .ace_heading,\n.ace-tomorrow-night-eighties .ace_markup.ace_heading,\n.ace-tomorrow-night-eighties .ace_string {\n color: #99CC99\n}\n\n.ace-tomorrow-night-eighties .ace_comment {\n color: #999999\n}\n\n.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_tag,\n.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name,\n.ace-tomorrow-night-eighties .ace_meta.ace_tag,\n.ace-tomorrow-night-eighties .ace_variable {\n color: #F2777A\n}\n\n.ace-tomorrow-night-eighties .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ09NrYAgMjP4PAAtGAwchHMyAAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-tomorrow-night-eighties .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/tomorrow_night_eighties",["require","exports","module","ace/theme/tomorrow_night_eighties-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night-eighties",t.cssText=e("./tomorrow_night_eighties-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/tomorrow_night_eighties"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-twilight.js b/www/js/ace/theme-twilight.js deleted file mode 100644 index c4803c789..000000000 --- a/www/js/ace/theme-twilight.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/twilight-css",["require","exports","module"],function(e,t,n){n.exports=".ace-twilight .ace_gutter {\n background: #232323;\n color: #E2E2E2\n}\n\n.ace-twilight .ace_print-margin {\n width: 1px;\n background: #232323\n}\n\n.ace-twilight {\n background-color: #141414;\n color: #F8F8F8\n}\n\n.ace-twilight .ace_cursor {\n color: #A7A7A7\n}\n\n.ace-twilight .ace_marker-layer .ace_selection {\n background: rgba(221, 240, 255, 0.20)\n}\n\n.ace-twilight.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #141414;\n}\n\n.ace-twilight .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-twilight .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(255, 255, 255, 0.25)\n}\n\n.ace-twilight .ace_marker-layer .ace_active-line {\n background: rgba(255, 255, 255, 0.031)\n}\n\n.ace-twilight .ace_gutter-active-line {\n background-color: rgba(255, 255, 255, 0.031)\n}\n\n.ace-twilight .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(221, 240, 255, 0.20)\n}\n\n.ace-twilight .ace_invisible {\n color: rgba(255, 255, 255, 0.25)\n}\n\n.ace-twilight .ace_keyword,\n.ace-twilight .ace_meta {\n color: #CDA869\n}\n\n.ace-twilight .ace_constant,\n.ace-twilight .ace_constant.ace_character,\n.ace-twilight .ace_constant.ace_character.ace_escape,\n.ace-twilight .ace_constant.ace_other,\n.ace-twilight .ace_heading,\n.ace-twilight .ace_markup.ace_heading,\n.ace-twilight .ace_support.ace_constant {\n color: #CF6A4C\n}\n\n.ace-twilight .ace_invalid.ace_illegal {\n color: #F8F8F8;\n background-color: rgba(86, 45, 86, 0.75)\n}\n\n.ace-twilight .ace_invalid.ace_deprecated {\n text-decoration: underline;\n font-style: italic;\n color: #D2A8A1\n}\n\n.ace-twilight .ace_support {\n color: #9B859D\n}\n\n.ace-twilight .ace_fold {\n background-color: #AC885B;\n border-color: #F8F8F8\n}\n\n.ace-twilight .ace_support.ace_function {\n color: #DAD085\n}\n\n.ace-twilight .ace_list,\n.ace-twilight .ace_markup.ace_list,\n.ace-twilight .ace_storage {\n color: #F9EE98\n}\n\n.ace-twilight .ace_entity.ace_name.ace_function,\n.ace-twilight .ace_meta.ace_tag {\n color: #AC885B\n}\n\n.ace-twilight .ace_string {\n color: #8F9D6A\n}\n\n.ace-twilight .ace_string.ace_regexp {\n color: #E9C062\n}\n\n.ace-twilight .ace_comment {\n font-style: italic;\n color: #5F5A60\n}\n\n.ace-twilight .ace_variable {\n color: #7587A6\n}\n\n.ace-twilight .ace_xml-pe {\n color: #494949\n}\n\n.ace-twilight .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-twilight .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/twilight",["require","exports","module","ace/theme/twilight-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-twilight",t.cssText=e("./twilight-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/twilight"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-vibrant_ink.js b/www/js/ace/theme-vibrant_ink.js deleted file mode 100644 index 75a36cd40..000000000 --- a/www/js/ace/theme-vibrant_ink.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/vibrant_ink-css",["require","exports","module"],function(e,t,n){n.exports=".ace-vibrant-ink .ace_gutter {\n background: #1a1a1a;\n color: #BEBEBE\n}\n\n.ace-vibrant-ink .ace_print-margin {\n width: 1px;\n background: #1a1a1a\n}\n\n.ace-vibrant-ink {\n background-color: #0F0F0F;\n color: #FFFFFF\n}\n\n.ace-vibrant-ink .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-vibrant-ink .ace_marker-layer .ace_selection {\n background: #6699CC\n}\n\n.ace-vibrant-ink.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #0F0F0F;\n}\n\n.ace-vibrant-ink .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-vibrant-ink .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404040\n}\n\n.ace-vibrant-ink .ace_marker-layer .ace_active-line {\n background: #333333\n}\n\n.ace-vibrant-ink .ace_gutter-active-line {\n background-color: #333333\n}\n\n.ace-vibrant-ink .ace_marker-layer .ace_selected-word {\n border: 1px solid #6699CC\n}\n\n.ace-vibrant-ink .ace_invisible {\n color: #404040\n}\n\n.ace-vibrant-ink .ace_keyword,\n.ace-vibrant-ink .ace_meta {\n color: #FF6600\n}\n\n.ace-vibrant-ink .ace_constant,\n.ace-vibrant-ink .ace_constant.ace_character,\n.ace-vibrant-ink .ace_constant.ace_character.ace_escape,\n.ace-vibrant-ink .ace_constant.ace_other {\n color: #339999\n}\n\n.ace-vibrant-ink .ace_constant.ace_numeric {\n color: #99CC99\n}\n\n.ace-vibrant-ink .ace_invalid,\n.ace-vibrant-ink .ace_invalid.ace_deprecated {\n color: #CCFF33;\n background-color: #000000\n}\n\n.ace-vibrant-ink .ace_fold {\n background-color: #FFCC00;\n border-color: #FFFFFF\n}\n\n.ace-vibrant-ink .ace_entity.ace_name.ace_function,\n.ace-vibrant-ink .ace_support.ace_function,\n.ace-vibrant-ink .ace_variable {\n color: #FFCC00\n}\n\n.ace-vibrant-ink .ace_variable.ace_parameter {\n font-style: italic\n}\n\n.ace-vibrant-ink .ace_string {\n color: #66FF00\n}\n\n.ace-vibrant-ink .ace_string.ace_regexp {\n color: #44B4CC\n}\n\n.ace-vibrant-ink .ace_comment {\n color: #9933CC\n}\n\n.ace-vibrant-ink .ace_entity.ace_other.ace_attribute-name {\n font-style: italic;\n color: #99CC99\n}\n\n.ace-vibrant-ink .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYNDTc/oPAALPAZ7hxlbYAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-vibrant-ink .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"}),define("ace/theme/vibrant_ink",["require","exports","module","ace/theme/vibrant_ink-css","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-vibrant-ink",t.cssText=e("./vibrant_ink-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/vibrant_ink"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/ace/theme-xcode.js b/www/js/ace/theme-xcode.js deleted file mode 100644 index bc0ce8c02..000000000 --- a/www/js/ace/theme-xcode.js +++ /dev/null @@ -1,8 +0,0 @@ -define("ace/theme/xcode-css",["require","exports","module"],function(e,t,n){n.exports='/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: EE3AD170-2B7F-4DE1-B724-C75F13FE0085) */\n\n.ace-xcode .ace_gutter {\n background: #e8e8e8;\n color: #333\n}\n\n.ace-xcode .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-xcode {\n background-color: #FFFFFF;\n color: #000000\n}\n\n.ace-xcode .ace_cursor {\n color: #000000\n}\n\n.ace-xcode .ace_marker-layer .ace_selection {\n background: #B5D5FF\n}\n\n.ace-xcode.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #FFFFFF;\n}\n\n.ace-xcode .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174)\n}\n\n.ace-xcode .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #BFBFBF\n}\n\n.ace-xcode .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.071)\n}\n\n.ace-xcode .ace_gutter-active-line {\n background-color: rgba(0, 0, 0, 0.071)\n}\n\n.ace-xcode .ace_marker-layer .ace_selected-word {\n border: 1px solid #B5D5FF\n}\n\n.ace-xcode .ace_constant.ace_language,\n.ace-xcode .ace_keyword,\n.ace-xcode .ace_meta,\n.ace-xcode .ace_variable.ace_language {\n color: #C800A4\n}\n\n.ace-xcode .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-xcode .ace_constant.ace_character,\n.ace-xcode .ace_constant.ace_other {\n color: #275A5E\n}\n\n.ace-xcode .ace_constant.ace_numeric {\n color: #3A00DC\n}\n\n.ace-xcode .ace_entity.ace_other.ace_attribute-name,\n.ace-xcode .ace_support.ace_constant,\n.ace-xcode .ace_support.ace_function {\n color: #450084\n}\n\n.ace-xcode .ace_fold {\n background-color: #C800A4;\n border-color: #000000\n}\n\n.ace-xcode .ace_entity.ace_name.ace_tag,\n.ace-xcode .ace_support.ace_class,\n.ace-xcode .ace_support.ace_type {\n color: #790EAD\n}\n\n.ace-xcode .ace_storage {\n color: #C900A4\n}\n\n.ace-xcode .ace_string {\n color: #DF0002\n}\n\n.ace-xcode .ace_comment {\n color: #008E00\n}\n\n.ace-xcode .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y\n}\n\n.ace-xcode .ace_indent-guide-active {\n background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y;\n} \n'}),define("ace/theme/xcode",["require","exports","module","ace/theme/xcode-css","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-xcode",t.cssText=e("./xcode-css");var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() { - window.require(["ace/theme/xcode"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); - \ No newline at end of file diff --git a/www/js/emmet-core.js b/www/js/emmet-core.js deleted file mode 100644 index 071716ca0..000000000 --- a/www/js/emmet-core.js +++ /dev/null @@ -1,17599 +0,0 @@ -!function (e) { var val = e(); if ("object" == typeof exports && "undefined" != typeof module) module.exports = val; if ("function" == typeof define && define.amd) define("emmet", [], val); { var f; "undefined" != typeof window ? f = window : "undefined" != typeof global ? f = global : "undefined" != typeof self && (f = self), f.emmet = val } }(function () { - var define, module, exports; return (function outer(modules, cache, entry) { - // Save the require from previous bundle to this closure if any - var previousRequire = typeof require == "function" && require; - - function newRequire(name, jumped) { - if (!cache[name]) { - if (!modules[name]) { - // if we cannot find the the module within our internal map or - // cache jump to the current global require ie. the last bundle - // that was added to the page. - var currentRequire = typeof require == "function" && require; - if (!jumped && currentRequire) return currentRequire(name, true); - - // If there are other bundles on this page the require from the - // previous one is saved to 'previousRequire'. Repeat this as - // many times as there are bundles until the module is found or - // we exhaust the require chain. - if (previousRequire) return previousRequire(name, true); - var err = new Error('Cannot find module \'' + name + '\''); - err.code = 'MODULE_NOT_FOUND'; - throw err; - } - var m = cache[name] = { exports: {} }; - modules[name][0].call(m.exports, function (x) { - var id = modules[name][1][x]; - return newRequire(id ? id : x); - }, m, m.exports, outer, modules, cache, entry); - } - return cache[name].exports; - } - for (var i = 0; i < entry.length; i++) newRequire(entry[i]); - - // Override the current require with this new one - return newRequire; - }) - ({ - "./bundles/snippets.js": [function (require, module, exports) { - /** - * Bundler, used in builder script to statically - * include snippets.json into bundle - */ - var res = require('../lib/assets/resources'); - var snippets = require('../lib/snippets.json'); - res.setVocabulary(snippets, 'system'); - - }, { "../lib/assets/resources": "assets\\resources.js", "../lib/snippets.json": "snippets.json" }], "./lib/emmet.js": [function (require, module, exports) { - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var global = typeof self != 'undefined' ? self : this; - - var utils = require('./utils/common'); - var actions = require('./action/main'); - var parser = require('./parser/abbreviation'); - var file = require('./plugin/file'); - - var preferences = require('./assets/preferences'); - var resources = require('./assets/resources'); - var profile = require('./assets/profile'); - var ciu = require('./assets/caniuse'); - var logger = require('./assets/logger'); - - var sliceFn = Array.prototype.slice; - - /** - * Returns file name part from path - * @param {String} path Path to file - * @return {String} - */ - function getFileName(path) { - var re = /([\w\.\-]+)$/i; - var m = re.exec(path); - return m ? m[1] : ''; - } - - /** - * Normalizes profile definition: converts some - * properties to valid data types - * @param {Object} profile - * @return {Object} - */ - function normalizeProfile(profile) { - if (typeof profile === 'object') { - if ('indent' in profile) { - profile.indent = !!profile.indent; - } - - if ('self_closing_tag' in profile) { - if (typeof profile.self_closing_tag === 'number') { - profile.self_closing_tag = !!profile.self_closing_tag; - } - } - } - - return profile; - } - - return { - /** - * The essential function that expands Emmet abbreviation - * @param {String} abbr Abbreviation to parse - * @param {String} syntax Abbreviation's context syntax - * @param {String} profile Output profile (or its name) - * @param {Object} contextNode Contextual node where abbreviation is - * written - * @return {String} - */ - expandAbbreviation: function (abbr, syntax, profile, contextNode) { - return parser.expand(abbr, { - syntax: syntax, - profile: profile, - contextNode: contextNode - }); - }, - - /** - * Runs given action - * @param {String} name Action name - * @param {IEmmetEditor} editor Editor instance - * @return {Boolean} Returns true if action was performed successfully - */ - run: function (name) { - return actions.run.apply(actions, sliceFn.call(arguments, 0)); - }, - - /** - * Loads Emmet extensions. Extensions are simple .js files that - * uses Emmet modules and resources to create new actions, modify - * existing ones etc. - * @param {Array} fileList List of absolute paths to files in extensions - * folder. Back-end app should not filter this list (e.g. by extension) - * but return it "as-is" so bootstrap can decide how to load contents - * of each file. - * This method requires a file module of IEmmetFile - * interface to be implemented. - * @memberOf bootstrap - */ - loadExtensions: function (fileList) { - var payload = {}; - var userSnippets = null; - var that = this; - - // make sure file list contians only valid extension files - fileList = fileList.filter(function (f) { - var ext = file.getExt(f); - return ext === 'json' || ext === 'js'; - }); - - var reader = (file.readText || file.read).bind(file); - var next = function () { - if (fileList.length) { - var f = fileList.shift(); - reader(f, function (err, content) { - if (err) { - logger.log('Unable to read "' + f + '" file: ' + err); - return next(); - } - - switch (file.getExt(f)) { - case 'js': - try { - eval(content); - } catch (e) { - logger.log('Unable to eval "' + f + '" file: ' + e); - } - break; - case 'json': - var fileName = getFileName(f).toLowerCase().replace(/\.json$/, ''); - content = utils.parseJSON(content); - if (/^snippets/.test(fileName)) { - if (fileName === 'snippets') { - // data in snippets.json is more important to user - userSnippets = content; - } else { - payload.snippets = utils.deepMerge(payload.snippets || {}, content); - } - } else { - payload[fileName] = content; - } - - break; - } - - next(); - }); - } else { - // complete - if (userSnippets) { - payload.snippets = utils.deepMerge(payload.snippets || {}, userSnippets); - } - - that.loadUserData(payload); - } - }; - - next(); - }, - - /** - * Loads preferences from JSON object (or string representation of JSON) - * @param {Object} data - * @returns - */ - loadPreferences: function (data) { - preferences.load(utils.parseJSON(data)); - }, - - /** - * Loads user snippets and abbreviations. It doesn’t replace current - * user resource vocabulary but merges it with passed one. If you need - * to replaces user snippets you should call - * resetSnippets() method first - */ - loadSnippets: function (data) { - data = utils.parseJSON(data); - - var userData = resources.getVocabulary('user') || {}; - resources.setVocabulary(utils.deepMerge(userData, data), 'user'); - }, - - /** - * Helper function that loads default snippets, defined in project’s - * snippets.json - * @param {Object} data - */ - loadSystemSnippets: function (data) { - resources.setVocabulary(utils.parseJSON(data), 'system'); - }, - - /** - * Helper function that loads Can I Use database - * @param {Object} data - */ - loadCIU: function (data) { - ciu.load(utils.parseJSON(data)); - }, - - /** - * Removes all user-defined snippets - */ - resetSnippets: function () { - resources.setVocabulary({}, 'user'); - }, - - /** - * Helper function that loads all user data (snippets and preferences) - * defined as a single JSON object. This is useful for loading data - * stored in a common storage, for example NSUserDefaults - * @param {Object} data - */ - loadUserData: function (data) { - data = utils.parseJSON(data); - if (data.snippets) { - this.loadSnippets(data.snippets); - } - - if (data.preferences) { - this.loadPreferences(data.preferences); - } - - if (data.profiles) { - this.loadProfiles(data.profiles); - } - - if (data.caniuse) { - this.loadCIU(data.caniuse); - } - - var profiles = data.syntaxProfiles || data.syntaxprofiles; - if (profiles) { - this.loadSyntaxProfiles(profiles); - } - }, - - /** - * Resets all user-defined data: preferences, snippets etc. - * @returns - */ - resetUserData: function () { - this.resetSnippets(); - preferences.reset(); - profile.reset(); - }, - - /** - * Load syntax-specific output profiles. These are essentially - * an extension to syntax snippets - * @param {Object} profiles Dictionary of profiles - */ - loadSyntaxProfiles: function (profiles) { - profiles = utils.parseJSON(profiles); - var snippets = {}; - Object.keys(profiles).forEach(function (syntax) { - var options = profiles[syntax]; - if (!(syntax in snippets)) { - snippets[syntax] = {}; - } - snippets[syntax].profile = normalizeProfile(options); - }); - - this.loadSnippets(snippets); - }, - - /** - * Load named profiles - * @param {Object} profiles - */ - loadProfiles: function (profiles) { - profiles = utils.parseJSON(profiles); - Object.keys(profiles).forEach(function (name) { - profile.create(name, normalizeProfile(profiles[name])); - }); - }, - - // expose some useful data for plugin authors - actions: actions, - parser: parser, - file: file, - preferences: preferences, - resources: resources, - profile: profile, - tabStops: require('./assets/tabStops'), - htmlMatcher: require('./assets/htmlMatcher'), - utils: { - common: utils, - action: require('./utils/action'), - editor: require('./utils/editor') - } - }; - }); - - }, { "./action/main": "action\\main.js", "./assets/caniuse": "assets\\caniuse.js", "./assets/htmlMatcher": "assets\\htmlMatcher.js", "./assets/logger": "assets\\logger.js", "./assets/preferences": "assets\\preferences.js", "./assets/profile": "assets\\profile.js", "./assets/resources": "assets\\resources.js", "./assets/tabStops": "assets\\tabStops.js", "./parser/abbreviation": "parser\\abbreviation.js", "./plugin/file": "plugin\\file.js", "./utils/action": "utils\\action.js", "./utils/common": "utils\\common.js", "./utils/editor": "utils\\editor.js" }], "action\\balance.js": [function (require, module, exports) { - /** - * HTML pair matching (balancing) actions - * @constructor - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var htmlMatcher = require('../assets/htmlMatcher'); - var utils = require('../utils/common'); - var editorUtils = require('../utils/editor'); - var actionUtils = require('../utils/action'); - var range = require('../assets/range'); - var cssEditTree = require('../editTree/css'); - var cssSections = require('../utils/cssSections'); - var lastMatch = null; - - function last(arr) { - return arr[arr.length - 1]; - } - - function balanceHTML(editor, direction) { - var info = editorUtils.outputInfo(editor); - var content = info.content; - var sel = range(editor.getSelectionRange()); - - // validate previous match - if (lastMatch && !lastMatch.range.equal(sel)) { - lastMatch = null; - } - - if (lastMatch && sel.length()) { - if (direction == 'in') { - // user has previously selected tag and wants to move inward - if (lastMatch.type == 'tag' && !lastMatch.close) { - // unary tag was selected, can't move inward - return false; - } else { - if (lastMatch.range.equal(lastMatch.outerRange)) { - lastMatch.range = lastMatch.innerRange; - } else { - var narrowed = utils.narrowToNonSpace(content, lastMatch.innerRange); - lastMatch = htmlMatcher.find(content, narrowed.start + 1); - if (lastMatch && lastMatch.range.equal(sel) && lastMatch.outerRange.equal(sel)) { - lastMatch.range = lastMatch.innerRange; - } - } - } - } else { - if ( - !lastMatch.innerRange.equal(lastMatch.outerRange) - && lastMatch.range.equal(lastMatch.innerRange) - && sel.equal(lastMatch.range)) { - lastMatch.range = lastMatch.outerRange; - } else { - lastMatch = htmlMatcher.find(content, sel.start); - if (lastMatch && lastMatch.range.equal(sel) && lastMatch.innerRange.equal(sel)) { - lastMatch.range = lastMatch.outerRange; - } - } - } - } else { - lastMatch = htmlMatcher.find(content, sel.start); - } - - if (lastMatch) { - if (lastMatch.innerRange.equal(sel)) { - lastMatch.range = lastMatch.outerRange; - } - - if (!lastMatch.range.equal(sel)) { - editor.createSelection(lastMatch.range.start, lastMatch.range.end); - return true; - } - } - - lastMatch = null; - return false; - } - - function rangesForCSSRule(rule, pos) { - // find all possible ranges - var ranges = [rule.range(true)]; - - // braces content - ranges.push(rule.valueRange(true)); - - // find nested sections - var nestedSections = cssSections.nestedSectionsInRule(rule); - - // real content, e.g. from first property name to - // last property value - var items = rule.list(); - if (items.length || nestedSections.length) { - var start = Number.POSITIVE_INFINITY, end = -1; - if (items.length) { - start = items[0].namePosition(true); - end = last(items).range(true).end; - } - - if (nestedSections.length) { - if (nestedSections[0].start < start) { - start = nestedSections[0].start; - } - - if (last(nestedSections).end > end) { - end = last(nestedSections).end; - } - } - - ranges.push(range.create2(start, end)); - } - - ranges = ranges.concat(nestedSections); - - var prop = cssEditTree.propertyFromPosition(rule, pos) || items[0]; - if (prop) { - ranges.push(prop.range(true)); - var valueRange = prop.valueRange(true); - if (!prop.end()) { - valueRange._unterminated = true; - } - ranges.push(valueRange); - } - - return ranges; - } - - /** - * Returns all possible selection ranges for given caret position - * @param {String} content CSS content - * @param {Number} pos Caret position(where to start searching) - * @return {Array} - */ - function getCSSRanges(content, pos) { - var rule; - if (typeof content === 'string') { - var ruleRange = cssSections.matchEnclosingRule(content, pos); - if (ruleRange) { - rule = cssEditTree.parse(ruleRange.substring(content), { - offset: ruleRange.start - }); - } - } else { - // passed parsed CSS rule - rule = content; - } - - if (!rule) { - return null; - } - - // find all possible ranges - var ranges = rangesForCSSRule(rule, pos); - - // remove empty ranges - ranges = ranges.filter(function (item) { - return !!item.length; - }); - - return utils.unique(ranges, function (item) { - return item.valueOf(); - }); - } - - function balanceCSS(editor, direction) { - var info = editorUtils.outputInfo(editor); - var content = info.content; - var sel = range(editor.getSelectionRange()); - - var ranges = getCSSRanges(info.content, sel.start); - if (!ranges && sel.length()) { - // possible reason: user has already selected - // CSS rule from last match - try { - var rule = cssEditTree.parse(sel.substring(info.content), { - offset: sel.start - }); - ranges = getCSSRanges(rule, sel.start); - } catch (e) { } - } - - if (!ranges) { - return false; - } - - ranges = range.sort(ranges, true); - - // edge case: find match that equals current selection, - // in case if user moves inward after selecting full CSS rule - var bestMatch = utils.find(ranges, function (r) { - return r.equal(sel); - }); - - if (!bestMatch) { - bestMatch = utils.find(ranges, function (r) { - // Check for edge case: caret right after CSS value - // but it doesn‘t contains terminating semicolon. - // In this case we have to check full value range - return r._unterminated ? r.include(sel.start) : r.inside(sel.start); - }); - } - - if (!bestMatch) { - return false; - } - - // if best match equals to current selection, move index - // one position up or down, depending on direction - var bestMatchIx = ranges.indexOf(bestMatch); - if (bestMatch.equal(sel)) { - bestMatchIx += direction == 'out' ? 1 : -1; - } - - if (bestMatchIx < 0 || bestMatchIx >= ranges.length) { - if (bestMatchIx >= ranges.length && direction == 'out') { - pos = bestMatch.start - 1; - - var outerRanges = getCSSRanges(content, pos); - if (outerRanges) { - bestMatch = last(outerRanges.filter(function (r) { - return r.inside(pos); - })); - } - } else if (bestMatchIx < 0 && direction == 'in') { - bestMatch = null; - } else { - bestMatch = null; - } - } else { - bestMatch = ranges[bestMatchIx]; - } - - if (bestMatch) { - editor.createSelection(bestMatch.start, bestMatch.end); - return true; - } - - return false; - } - - return { - /** - * Find and select HTML tag pair - * @param {IEmmetEditor} editor Editor instance - * @param {String} direction Direction of pair matching: 'in' or 'out'. - * Default is 'out' - */ - balance: function (editor, direction) { - direction = String((direction || 'out').toLowerCase()); - var info = editorUtils.outputInfo(editor); - if (actionUtils.isSupportedCSS(info.syntax)) { - return balanceCSS(editor, direction); - } - - return balanceHTML(editor, direction); - }, - - balanceInwardAction: function (editor) { - return this.balance(editor, 'in'); - }, - - balanceOutwardAction: function (editor) { - return this.balance(editor, 'out'); - }, - - /** - * Moves caret to matching opening or closing tag - * @param {IEmmetEditor} editor - */ - goToMatchingPairAction: function (editor) { - var content = String(editor.getContent()); - var caretPos = editor.getCaretPos(); - - if (content.charAt(caretPos) == '<') - // looks like caret is outside of tag pair - caretPos++; - - var tag = htmlMatcher.tag(content, caretPos); - if (tag && tag.close) { // exclude unary tags - if (tag.open.range.inside(caretPos)) { - editor.setCaretPos(tag.close.range.start); - } else { - editor.setCaretPos(tag.open.range.start); - } - - return true; - } - - return false; - } - }; - }); - }, { "../assets/htmlMatcher": "assets\\htmlMatcher.js", "../assets/range": "assets\\range.js", "../editTree/css": "editTree\\css.js", "../utils/action": "utils\\action.js", "../utils/common": "utils\\common.js", "../utils/cssSections": "utils\\cssSections.js", "../utils/editor": "utils\\editor.js" }], "action\\base64.js": [function (require, module, exports) { - /** - * Encodes/decodes image under cursor to/from base64 - * @param {IEmmetEditor} editor - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var file = require('../plugin/file'); - var base64 = require('../utils/base64'); - var actionUtils = require('../utils/action'); - var editorUtils = require('../utils/editor'); - - /** - * Test if text starts with token at pos - * position. If pos is omitted, search from beginning of text - * @param {String} token Token to test - * @param {String} text Where to search - * @param {Number} pos Position where to start search - * @return {Boolean} - * @since 0.65 - */ - function startsWith(token, text, pos) { - pos = pos || 0; - return text.charAt(pos) == token.charAt(0) && text.substr(pos, token.length) == token; - } - - /** - * Encodes image to base64 - * - * @param {IEmmetEditor} editor - * @param {String} imgPath Path to image - * @param {Number} pos Caret position where image is located in the editor - * @return {Boolean} - */ - function encodeToBase64(editor, imgPath, pos) { - var editorFile = editor.getFilePath(); - var defaultMimeType = 'application/octet-stream'; - - if (editorFile === null) { - throw "You should save your file before using this action"; - } - - // locate real image path - file.locateFile(editorFile, imgPath, function (realImgPath) { - if (realImgPath === null) { - throw "Can't find " + imgPath + ' file'; - } - - file.read(realImgPath, function (err, content) { - if (err) { - throw 'Unable to read ' + realImgPath + ': ' + err; - } - - var b64 = base64.encode(String(content)); - if (!b64) { - throw "Can't encode file content to base64"; - } - - b64 = 'data:' + (actionUtils.mimeTypes[String(file.getExt(realImgPath))] || defaultMimeType) + - ';base64,' + b64; - - editor.replaceContent('$0' + b64, pos, pos + imgPath.length); - }); - }); - - return true; - } - - /** - * Decodes base64 string back to file. - * @param {IEmmetEditor} editor - * @param {String} filePath to new image - * @param {String} data Base64-encoded file content - * @param {Number} pos Caret position where image is located in the editor - */ - function decodeFromBase64(editor, filePath, data, pos) { - // ask user to enter path to file - filePath = filePath || String(editor.prompt('Enter path to file (absolute or relative)')); - if (!filePath) { - return false; - } - - var editorFile = editor.getFilePath(); - file.createPath(editorFile, filePath, function (err, absPath) { - if (err || !absPath) { - throw "Can't save file"; - } - - var content = data.replace(/^data\:.+?;.+?,/, ''); - file.save(absPath, base64.decode(content), function (err) { - if (err) { - throw 'Unable to save ' + absPath + ': ' + err; - } - - editor.replaceContent('$0' + filePath, pos, pos + data.length); - }); - }); - - return true; - } - - return { - /** - * Action to encode or decode file to data:url - * @param {IEmmetEditor} editor Editor instance - * @param {String} syntax Current document syntax - * @param {String} profile Output profile name - * @return {Boolean} - */ - encodeDecodeDataUrlAction: function (editor, filepath) { - var data = String(editor.getSelection()); - var caretPos = editor.getCaretPos(); - var info = editorUtils.outputInfo(editor); - - if (!data) { - // no selection, try to find image bounds from current caret position - var text = info.content, m; - while (caretPos-- >= 0) { - if (startsWith('src=', text, caretPos)) { // found - if ((m = text.substr(caretPos).match(/^(src=(["'])?)([^'"<>\s]+)\1?/))) { - data = m[3]; - caretPos += m[1].length; - } - break; - } else if (startsWith('url(', text, caretPos)) { // found CSS url() pattern - if ((m = text.substr(caretPos).match(/^(url\((['"])?)([^'"\)\s]+)\1?/))) { - data = m[3]; - caretPos += m[1].length; - } - break; - } - } - } - - if (data) { - if (startsWith('data:', data)) { - return decodeFromBase64(editor, filepath, data, caretPos); - } else { - return encodeToBase64(editor, data, caretPos); - } - } - - return false; - } - }; - }); - - }, { "../plugin/file": "plugin\\file.js", "../utils/action": "utils\\action.js", "../utils/base64": "utils\\base64.js", "../utils/editor": "utils\\editor.js" }], "action\\editPoints.js": [function (require, module, exports) { - /** - * Move between next/prev edit points. 'Edit points' are places between tags - * and quotes of empty attributes in html - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - /** - * Search for new caret insertion point - * @param {IEmmetEditor} editor Editor instance - * @param {Number} inc Search increment: -1 — search left, 1 — search right - * @param {Number} offset Initial offset relative to current caret position - * @return {Number} Returns -1 if insertion point wasn't found - */ - function findNewEditPoint(editor, inc, offset) { - inc = inc || 1; - offset = offset || 0; - - var curPoint = editor.getCaretPos() + offset; - var content = String(editor.getContent()); - var maxLen = content.length; - var nextPoint = -1; - var reEmptyLine = /^\s+$/; - - function getLine(ix) { - var start = ix; - while (start >= 0) { - var c = content.charAt(start); - if (c == '\n' || c == '\r') - break; - start--; - } - - return content.substring(start, ix); - } - - while (curPoint <= maxLen && curPoint >= 0) { - curPoint += inc; - var curChar = content.charAt(curPoint); - var nextChar = content.charAt(curPoint + 1); - var prevChar = content.charAt(curPoint - 1); - - switch (curChar) { - case '"': - case '\'': - if (nextChar == curChar && prevChar == '=') { - // empty attribute - nextPoint = curPoint + 1; - } - break; - case '>': - if (nextChar == '<') { - // between tags - nextPoint = curPoint + 1; - } - break; - case '\n': - case '\r': - // empty line - if (reEmptyLine.test(getLine(curPoint - 1))) { - nextPoint = curPoint; - } - break; - } - - if (nextPoint != -1) - break; - } - - return nextPoint; - } - - return { - /** - * Move to previous edit point - * @param {IEmmetEditor} editor Editor instance - * @param {String} syntax Current document syntax - * @param {String} profile Output profile name - * @return {Boolean} - */ - previousEditPointAction: function (editor, syntax, profile) { - var curPos = editor.getCaretPos(); - var newPoint = findNewEditPoint(editor, -1); - - if (newPoint == curPos) - // we're still in the same point, try searching from the other place - newPoint = findNewEditPoint(editor, -1, -2); - - if (newPoint != -1) { - editor.setCaretPos(newPoint); - return true; - } - - return false; - }, - - /** - * Move to next edit point - * @param {IEmmetEditor} editor Editor instance - * @param {String} syntax Current document syntax - * @param {String} profile Output profile name - * @return {Boolean} - */ - nextEditPointAction: function (editor, syntax, profile) { - var newPoint = findNewEditPoint(editor, 1); - if (newPoint != -1) { - editor.setCaretPos(newPoint); - return true; - } - - return false; - } - }; - }); - }, {}], "action\\evaluateMath.js": [function (require, module, exports) { - /** - * Evaluates simple math expression under caret - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var actionUtils = require('../utils/action'); - var utils = require('../utils/common'); - var math = require('../utils/math'); - var range = require('../assets/range'); - - return { - /** - * Evaluates math expression under the caret - * @param {IEmmetEditor} editor - * @return {Boolean} - */ - evaluateMathAction: function (editor) { - var content = editor.getContent(); - var chars = '.+-*/\\'; - - /** @type Range */ - var sel = range(editor.getSelectionRange()); - if (!sel.length()) { - sel = actionUtils.findExpressionBounds(editor, function (ch) { - return utils.isNumeric(ch) || chars.indexOf(ch) != -1; - }); - } - - if (sel && sel.length()) { - var expr = sel.substring(content); - - // replace integral division: 11\2 => Math.round(11/2) - expr = expr.replace(/([\d\.\-]+)\\([\d\.\-]+)/g, 'round($1/$2)'); - - try { - var result = utils.prettifyNumber(math.evaluate(expr)); - editor.replaceContent(result, sel.start, sel.end); - editor.setCaretPos(sel.start + result.length); - return true; - } catch (e) { } - } - - return false; - } - }; - }); - - }, { "../assets/range": "assets\\range.js", "../utils/action": "utils\\action.js", "../utils/common": "utils\\common.js", "../utils/math": "utils\\math.js" }], "action\\expandAbbreviation.js": [function (require, module, exports) { - /** - * 'Expand abbreviation' editor action: extracts abbreviation from current caret - * position and replaces it with formatted output. - *

      - * This behavior can be overridden with custom handlers which can perform - * different actions when 'Expand Abbreviation' action is called. - * For example, a CSS gradient handler that produces vendor-prefixed gradient - * definitions registers its own expand abbreviation handler. - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var handlerList = require('../assets/handlerList'); - var range = require('../assets/range'); - var prefs = require('../assets/preferences'); - var utils = require('../utils/common'); - var editorUtils = require('../utils/editor'); - var actionUtils = require('../utils/action'); - var cssGradient = require('../resolver/cssGradient'); - var parser = require('../parser/abbreviation'); - - /** - * Search for abbreviation in editor from current caret position - * @param {IEmmetEditor} editor Editor instance - * @return {String} - */ - function findAbbreviation(editor) { - var r = range(editor.getSelectionRange()); - var content = String(editor.getContent()); - if (r.length()) { - // abbreviation is selected by user - return r.substring(content); - } - - // search for new abbreviation from current caret position - var curLine = editor.getCurrentLineRange(); - return actionUtils.extractAbbreviation(content.substring(curLine.start, r.start)); - } - - /** - * @type HandlerList List of registered handlers - */ - var handlers = handlerList.create(); - - // XXX setup default expand handlers - - /** - * Extracts abbreviation from current caret - * position and replaces it with formatted output - * @param {IEmmetEditor} editor Editor instance - * @param {String} syntax Syntax type (html, css, etc.) - * @param {String} profile Output profile name (html, xml, xhtml) - * @return {Boolean} Returns true if abbreviation was expanded - * successfully - */ - handlers.add(function (editor, syntax, profile) { - var caretPos = editor.getSelectionRange().end; - var abbr = findAbbreviation(editor); - - if (abbr) { - var content = parser.expand(abbr, { - syntax: syntax, - profile: profile, - contextNode: actionUtils.captureContext(editor) - }); - - if (content) { - var replaceFrom = caretPos - abbr.length; - var replaceTo = caretPos; - - // a special case for CSS: if editor already contains - // semicolon right after current caret position — replace it too - var cssSyntaxes = prefs.getArray('css.syntaxes'); - if (cssSyntaxes && ~cssSyntaxes.indexOf(syntax)) { - var curContent = editor.getContent(); - if (curContent.charAt(caretPos) == ';' && content.charAt(content.length - 1) == ';') { - replaceTo++; - } - } - - editor.replaceContent(content, replaceFrom, replaceTo); - return true; - } - } - - return false; - }, { order: -1 }); - handlers.add(cssGradient.expandAbbreviationHandler.bind(cssGradient)); - - return { - /** - * The actual “Expand Abbreviation“ action routine - * @param {IEmmetEditor} editor Editor instance - * @param {String} syntax Current document syntax - * @param {String} profile Output profile name - * @return {Boolean} - */ - expandAbbreviationAction: function (editor, syntax, profile) { - var args = utils.toArray(arguments); - - // normalize incoming arguments - var info = editorUtils.outputInfo(editor, syntax, profile); - args[1] = info.syntax; - args[2] = info.profile; - - return handlers.exec(false, args); - }, - - /** - * A special case of “Expand Abbreviation“ action, invoked by Tab key. - * In this case if abbreviation wasn’t expanded successfully or there’s a selecetion, - * the current line/selection will be indented. - * @param {IEmmetEditor} editor Editor instance - * @param {String} syntax Current document syntax - * @param {String} profile Output profile name - * @return {Boolean} - */ - expandAbbreviationWithTabAction: function (editor, syntax, profile) { - var sel = editor.getSelection(); - var indent = '\t'; - - // if something is selected in editor, - // we should indent the selected content - if (sel) { - var selRange = range(editor.getSelectionRange()); - var content = utils.padString(sel, indent); - - editor.replaceContent(indent + '${0}', editor.getCaretPos()); - var replaceRange = range(editor.getCaretPos(), selRange.length()); - editor.replaceContent(content, replaceRange.start, replaceRange.end, true); - editor.createSelection(replaceRange.start, replaceRange.start + content.length); - return true; - } - - // nothing selected, try to expand - if (!this.expandAbbreviationAction(editor, syntax, profile)) { - editor.replaceContent(indent, editor.getCaretPos()); - } - - return true; - }, - - - _defaultHandler: function (editor, syntax, profile) { - var caretPos = editor.getSelectionRange().end; - var abbr = this.findAbbreviation(editor); - - if (abbr) { - var ctx = actionUtils.captureContext(editor); - var content = parser.expand(abbr, syntax, profile, ctx); - if (content) { - editor.replaceContent(content, caretPos - abbr.length, caretPos); - return true; - } - } - - return false; - }, - - /** - * Adds custom expand abbreviation handler. The passed function should - * return true if it was performed successfully, - * false otherwise. - * - * Added handlers will be called when 'Expand Abbreviation' is called - * in order they were added - * @memberOf expandAbbreviation - * @param {Function} fn - * @param {Object} options - */ - addHandler: function (fn, options) { - handlers.add(fn, options); - }, - - /** - * Removes registered handler - * @returns - */ - removeHandler: function (fn) { - handlers.remove(fn); - }, - - findAbbreviation: findAbbreviation - }; - }); - }, { "../assets/handlerList": "assets\\handlerList.js", "../assets/preferences": "assets\\preferences.js", "../assets/range": "assets\\range.js", "../parser/abbreviation": "parser\\abbreviation.js", "../resolver/cssGradient": "resolver\\cssGradient.js", "../utils/action": "utils\\action.js", "../utils/common": "utils\\common.js", "../utils/editor": "utils\\editor.js" }], "action\\incrementDecrement.js": [function (require, module, exports) { - /** - * Increment/decrement number under cursor - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - var actionUtils = require('../utils/action'); - - /** - * Returns length of integer part of number - * @param {String} num - */ - function intLength(num) { - num = num.replace(/^\-/, ''); - if (~num.indexOf('.')) { - return num.split('.')[0].length; - } - - return num.length; - } - - return { - increment01Action: function (editor) { - return this.incrementNumber(editor, .1); - }, - - increment1Action: function (editor) { - return this.incrementNumber(editor, 1); - }, - - increment10Action: function (editor) { - return this.incrementNumber(editor, 10); - }, - - decrement01Action: function (editor) { - return this.incrementNumber(editor, -.1); - }, - - decrement1Action: function (editor) { - return this.incrementNumber(editor, -1); - }, - - decrement10Action: function (editor) { - return this.incrementNumber(editor, -10); - }, - - /** - * Default method to increment/decrement number under - * caret with given step - * @param {IEmmetEditor} editor - * @param {Number} step - * @return {Boolean} - */ - incrementNumber: function (editor, step) { - var hasSign = false; - var hasDecimal = false; - - var r = actionUtils.findExpressionBounds(editor, function (ch, pos, content) { - if (utils.isNumeric(ch)) - return true; - if (ch == '.') { - // make sure that next character is numeric too - if (!utils.isNumeric(content.charAt(pos + 1))) - return false; - - return hasDecimal ? false : hasDecimal = true; - } - if (ch == '-') - return hasSign ? false : hasSign = true; - - return false; - }); - - if (r && r.length()) { - var strNum = r.substring(String(editor.getContent())); - var num = parseFloat(strNum); - if (!isNaN(num)) { - num = utils.prettifyNumber(num + step); - - // do we have zero-padded number? - if (/^(\-?)0+[1-9]/.test(strNum)) { - var minus = ''; - if (RegExp.$1) { - minus = '-'; - num = num.substring(1); - } - - var parts = num.split('.'); - parts[0] = utils.zeroPadString(parts[0], intLength(strNum)); - num = minus + parts.join('.'); - } - - editor.replaceContent(num, r.start, r.end); - editor.createSelection(r.start, r.start + num.length); - return true; - } - } - - return false; - } - }; - }); - }, { "../utils/action": "utils\\action.js", "../utils/common": "utils\\common.js" }], "action\\lineBreaks.js": [function (require, module, exports) { - /** - * Actions to insert line breaks. Some simple editors (like browser's - * <textarea>, for example) do not provide such simple things - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var prefs = require('../assets/preferences'); - var utils = require('../utils/common'); - var resources = require('../assets/resources'); - var htmlMatcher = require('../assets/htmlMatcher'); - var editorUtils = require('../utils/editor'); - - var xmlSyntaxes = ['html', 'xml', 'xsl']; - - // setup default preferences - prefs.define('css.closeBraceIndentation', '\n', - 'Indentation before closing brace of CSS rule. Some users prefere ' - + 'indented closing brace of CSS rule for better readability. ' - + 'This preference’s value will be automatically inserted before ' - + 'closing brace when user adds newline in newly created CSS rule ' - + '(e.g. when “Insert formatted linebreak” action will be performed ' - + 'in CSS file). If you’re such user, you may want to write put a value ' - + 'like \\n\\t in this preference.'); - - return { - /** - * Inserts newline character with proper indentation. This action is used in - * editors that doesn't have indentation control (like textarea element) to - * provide proper indentation for inserted newlines - * @param {IEmmetEditor} editor Editor instance - */ - insertLineBreakAction: function (editor) { - if (!this.insertLineBreakOnlyAction(editor)) { - var curPadding = editorUtils.getCurrentLinePadding(editor); - var content = String(editor.getContent()); - var caretPos = editor.getCaretPos(); - var len = content.length; - var nl = '\n'; - - // check out next line padding - var lineRange = editor.getCurrentLineRange(); - var nextPadding = ''; - - for (var i = lineRange.end, ch; i < len; i++) { - ch = content.charAt(i); - if (ch == ' ' || ch == '\t') - nextPadding += ch; - else - break; - } - - if (nextPadding.length > curPadding.length) { - editor.replaceContent(nl + nextPadding, caretPos, caretPos, true); - } else { - editor.replaceContent(nl, caretPos); - } - } - - return true; - }, - - /** - * Inserts newline character with proper indentation in specific positions only. - * @param {IEmmetEditor} editor - * @return {Boolean} Returns true if line break was inserted - */ - insertLineBreakOnlyAction: function (editor) { - var info = editorUtils.outputInfo(editor); - var caretPos = editor.getCaretPos(); - var nl = '\n'; - var pad = '\t'; - - if (~xmlSyntaxes.indexOf(info.syntax)) { - // let's see if we're breaking newly created tag - var tag = htmlMatcher.tag(info.content, caretPos); - if (tag && !tag.innerRange.length()) { - editor.replaceContent(nl + pad + utils.getCaretPlaceholder() + nl, caretPos); - return true; - } - } else if (info.syntax == 'css') { - /** @type String */ - var content = info.content; - if (caretPos && content.charAt(caretPos - 1) == '{') { - var append = prefs.get('css.closeBraceIndentation'); - - var hasCloseBrace = content.charAt(caretPos) == '}'; - if (!hasCloseBrace) { - // do we really need special formatting here? - // check if this is really a newly created rule, - // look ahead for a closing brace - for (var i = caretPos, il = content.length, ch; i < il; i++) { - ch = content.charAt(i); - if (ch == '{') { - // ok, this is a new rule without closing brace - break; - } - - if (ch == '}') { - // not a new rule, just add indentation - append = ''; - hasCloseBrace = true; - break; - } - } - } - - if (!hasCloseBrace) { - append += '}'; - } - - // defining rule set - var insValue = nl + pad + utils.getCaretPlaceholder() + append; - editor.replaceContent(insValue, caretPos); - return true; - } - } - - return false; - } - }; - }); - - }, { "../assets/htmlMatcher": "assets\\htmlMatcher.js", "../assets/preferences": "assets\\preferences.js", "../assets/resources": "assets\\resources.js", "../utils/common": "utils\\common.js", "../utils/editor": "utils\\editor.js" }], "action\\main.js": [function (require, module, exports) { - /** - * Module describes and performs Emmet actions. The actions themselves are - * defined in actions folder - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - - // all registered actions - var actions = {}; - - // load all default actions - var actionModules = { - base64: require('./base64'), - editPoints: require('./editPoints'), - evaluateMath: require('./evaluateMath'), - expandAbbreviation: require('./expandAbbreviation'), - incrementDecrement: require('./incrementDecrement'), - lineBreaks: require('./lineBreaks'), - balance: require('./balance'), - mergeLines: require('./mergeLines'), - reflectCSSValue: require('./reflectCSSValue'), - removeTag: require('./removeTag'), - selectItem: require('./selectItem'), - selectLine: require('./selectLine'), - splitJoinTag: require('./splitJoinTag'), - toggleComment: require('./toggleComment'), - updateImageSize: require('./updateImageSize'), - wrapWithAbbreviation: require('./wrapWithAbbreviation'), - updateTag: require('./updateTag') - }; - - function addAction(name, fn, options) { - name = name.toLowerCase(); - options = options || {}; - - if (typeof options === 'string') { - options = { label: options }; - } - - if (!options.label) { - options.label = humanizeActionName(name); - } - - actions[name] = { - name: name, - fn: fn, - options: options - }; - } - - /** - * “Humanizes” action name, makes it more readable for people - * @param {String} name Action name (like 'expand_abbreviation') - * @return Humanized name (like 'Expand Abbreviation') - */ - function humanizeActionName(name) { - return utils.trim(name.charAt(0).toUpperCase() - + name.substring(1).replace(/_[a-z]/g, function (str) { - return ' ' + str.charAt(1).toUpperCase(); - })); - } - - var bind = function (name, method) { - var m = actionModules[name]; - return m[method].bind(m); - }; - - // XXX register default actions - addAction('encode_decode_data_url', bind('base64', 'encodeDecodeDataUrlAction'), 'Encode\\Decode data:URL image'); - addAction('prev_edit_point', bind('editPoints', 'previousEditPointAction'), 'Previous Edit Point'); - addAction('next_edit_point', bind('editPoints', 'nextEditPointAction'), 'Next Edit Point'); - addAction('evaluate_math_expression', bind('evaluateMath', 'evaluateMathAction'), 'Numbers/Evaluate Math Expression'); - addAction('expand_abbreviation_with_tab', bind('expandAbbreviation', 'expandAbbreviationWithTabAction'), { hidden: true }); - addAction('expand_abbreviation', bind('expandAbbreviation', 'expandAbbreviationAction'), 'Expand Abbreviation'); - addAction('insert_formatted_line_break_only', bind('lineBreaks', 'insertLineBreakOnlyAction'), { hidden: true }); - addAction('insert_formatted_line_break', bind('lineBreaks', 'insertLineBreakAction'), { hidden: true }); - addAction('balance_inward', bind('balance', 'balanceInwardAction'), 'Balance (inward)'); - addAction('balance_outward', bind('balance', 'balanceOutwardAction'), 'Balance (outward)'); - addAction('matching_pair', bind('balance', 'goToMatchingPairAction'), 'HTML/Go To Matching Tag Pair'); - addAction('merge_lines', bind('mergeLines', 'mergeLinesAction'), 'Merge Lines'); - addAction('reflect_css_value', bind('reflectCSSValue', 'reflectCSSValueAction'), 'CSS/Reflect Value'); - addAction('remove_tag', bind('removeTag', 'removeTagAction'), 'HTML/Remove Tag'); - addAction('select_next_item', bind('selectItem', 'selectNextItemAction'), 'Select Next Item'); - addAction('select_previous_item', bind('selectItem', 'selectPreviousItemAction'), 'Select Previous Item'); - addAction('split_join_tag', bind('splitJoinTag', 'splitJoinTagAction'), 'HTML/Split\\Join Tag Declaration'); - addAction('toggle_comment', bind('toggleComment', 'toggleCommentAction'), 'Toggle Comment'); - addAction('update_image_size', bind('updateImageSize', 'updateImageSizeAction'), 'Update Image Size'); - addAction('wrap_with_abbreviation', bind('wrapWithAbbreviation', 'wrapWithAbbreviationAction'), 'Wrap With Abbreviation'); - addAction('update_tag', bind('updateTag', 'updateTagAction'), 'HTML/Update Tag'); - - [1, -1, 10, -10, 0.1, -0.1].forEach(function (num) { - var prefix = num > 0 ? 'increment' : 'decrement'; - var suffix = String(Math.abs(num)).replace('.', '').substring(0, 2); - var actionId = prefix + '_number_by_' + suffix; - var actionMethod = prefix + suffix + 'Action'; - var actionLabel = 'Numbers/' + prefix.charAt(0).toUpperCase() + prefix.substring(1) + ' number by ' + Math.abs(num); - addAction(actionId, bind('incrementDecrement', actionMethod), actionLabel); - }); - - return { - /** - * Registers new action - * @param {String} name Action name - * @param {Function} fn Action function - * @param {Object} options Custom action options:
      - * label : (String) – Human-readable action name. - * May contain '/' symbols as submenu separators
      - * hidden : (Boolean) – Indicates whether action - * should be displayed in menu (getMenu() method) - */ - add: addAction, - - /** - * Returns action object - * @param {String} name Action name - * @returns {Object} - */ - get: function (name) { - return actions[name.toLowerCase()]; - }, - - /** - * Runs Emmet action. For list of available actions and their - * arguments see actions folder. - * @param {String} name Action name - * @param {Array} args Additional arguments. It may be array of arguments - * or inline arguments. The first argument should be IEmmetEditor instance - * @returns {Boolean} Status of performed operation, true - * means action was performed successfully. - * @example - * require('action/main').run('expand_abbreviation', editor); - * require('action/main').run('wrap_with_abbreviation', [editor, 'div']); - */ - run: function (name, args) { - if (!Array.isArray(args)) { - args = utils.toArray(arguments, 1); - } - - var action = this.get(name); - if (!action) { - throw new Error('Action "' + name + '" is not defined'); - } - - return action.fn.apply(action, args); - }, - - /** - * Returns all registered actions as object - * @returns {Object} - */ - getAll: function () { - return actions; - }, - - /** - * Returns all registered actions as array - * @returns {Array} - */ - getList: function () { - var all = this.getAll(); - return Object.keys(all).map(function (key) { - return all[key]; - }); - }, - - /** - * Returns actions list as structured menu. If action has label, - * it will be splitted by '/' symbol into submenus (for example: - * CSS/Reflect Value) and grouped with other items - * @param {Array} skipActions List of action identifiers that should be - * skipped from menu - * @returns {Array} - */ - getMenu: function (skipActions) { - var result = []; - skipActions = skipActions || []; - this.getList().forEach(function (action) { - if (action.options.hidden || ~skipActions.indexOf(action.name)) - return; - - var actionName = humanizeActionName(action.name); - var ctx = result; - if (action.options.label) { - var parts = action.options.label.split('/'); - actionName = parts.pop(); - - // create submenus, if needed - var menuName, submenu; - while ((menuName = parts.shift())) { - submenu = utils.find(ctx, function (item) { - return item.type == 'submenu' && item.name == menuName; - }); - - if (!submenu) { - submenu = { - name: menuName, - type: 'submenu', - items: [] - }; - ctx.push(submenu); - } - - ctx = submenu.items; - } - } - - ctx.push({ - type: 'action', - name: action.name, - label: actionName - }); - }); - - return result; - }, - - /** - * Returns action name associated with menu item title - * @param {String} title - * @returns {String} - */ - getActionNameForMenuTitle: function (title, menu) { - return utils.find(menu || this.getMenu(), function (val) { - if (val.type == 'action') { - if (val.label == title || val.name == title) { - return val.name; - } - } else { - return this.getActionNameForMenuTitle(title, val.items); - } - }, this); - } - }; - }); - }, { "../utils/common": "utils\\common.js", "./balance": "action\\balance.js", "./base64": "action\\base64.js", "./editPoints": "action\\editPoints.js", "./evaluateMath": "action\\evaluateMath.js", "./expandAbbreviation": "action\\expandAbbreviation.js", "./incrementDecrement": "action\\incrementDecrement.js", "./lineBreaks": "action\\lineBreaks.js", "./mergeLines": "action\\mergeLines.js", "./reflectCSSValue": "action\\reflectCSSValue.js", "./removeTag": "action\\removeTag.js", "./selectItem": "action\\selectItem.js", "./selectLine": "action\\selectLine.js", "./splitJoinTag": "action\\splitJoinTag.js", "./toggleComment": "action\\toggleComment.js", "./updateImageSize": "action\\updateImageSize.js", "./updateTag": "action\\updateTag.js", "./wrapWithAbbreviation": "action\\wrapWithAbbreviation.js" }], "action\\mergeLines.js": [function (require, module, exports) { - /** - * Merges selected lines or lines between XHTML tag pairs - * @param {Function} require - * @param {Underscore} _ - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var htmlMatcher = require('../assets/htmlMatcher'); - var utils = require('../utils/common'); - var editorUtils = require('../utils/editor'); - var range = require('../assets/range'); - - return { - mergeLinesAction: function (editor) { - var info = editorUtils.outputInfo(editor); - - var selection = range(editor.getSelectionRange()); - if (!selection.length()) { - // find matching tag - var pair = htmlMatcher.find(info.content, editor.getCaretPos()); - if (pair) { - selection = pair.outerRange; - } - } - - if (selection.length()) { - // got range, merge lines - var text = selection.substring(info.content); - var lines = utils.splitByLines(text); - - for (var i = 1; i < lines.length; i++) { - lines[i] = lines[i].replace(/^\s+/, ''); - } - - text = lines.join('').replace(/\s{2,}/, ' '); - var textLen = text.length; - text = utils.escapeText(text); - editor.replaceContent(text, selection.start, selection.end); - editor.createSelection(selection.start, selection.start + textLen); - - return true; - } - - return false; - } - }; - }); - }, { "../assets/htmlMatcher": "assets\\htmlMatcher.js", "../assets/range": "assets\\range.js", "../utils/common": "utils\\common.js", "../utils/editor": "utils\\editor.js" }], "action\\reflectCSSValue.js": [function (require, module, exports) { - /** - * Reflect CSS value: takes rule's value under caret and pastes it for the same - * rules with vendor prefixes - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var handlerList = require('../assets/handlerList'); - var prefs = require('../assets/preferences'); - var cssResolver = require('../resolver/css'); - var cssEditTree = require('../editTree/css'); - var utils = require('../utils/common'); - var actionUtils = require('../utils/action'); - var editorUtils = require('../utils/editor'); - var cssGradient = require('../resolver/cssGradient'); - - prefs.define('css.reflect.oldIEOpacity', false, 'Support IE6/7/8 opacity notation, e.g. filter:alpha(opacity=...).\ - Note that CSS3 and SVG also provides filter property so this option is disabled by default.') - - /** - * @type HandlerList List of registered handlers - */ - var handlers = handlerList.create(); - - function doCSSReflection(editor) { - var outputInfo = editorUtils.outputInfo(editor); - var caretPos = editor.getCaretPos(); - - var cssRule = cssEditTree.parseFromPosition(outputInfo.content, caretPos); - if (!cssRule) return; - - var property = cssRule.itemFromPosition(caretPos, true); - // no property under cursor, nothing to reflect - if (!property) return; - - var oldRule = cssRule.source; - var offset = cssRule.options.offset; - var caretDelta = caretPos - offset - property.range().start; - - handlers.exec(false, [property]); - - if (oldRule !== cssRule.source) { - return { - data: cssRule.source, - start: offset, - end: offset + oldRule.length, - caret: offset + property.range().start + caretDelta - }; - } - } - - /** - * Returns regexp that should match reflected CSS property names - * @param {String} name Current CSS property name - * @return {RegExp} - */ - function getReflectedCSSName(name) { - name = cssEditTree.baseName(name); - var vendorPrefix = '^(?:\\-\\w+\\-)?', m; - - if ((name == 'opacity' || name == 'filter') && prefs.get('css.reflect.oldIEOpacity')) { - return new RegExp(vendorPrefix + '(?:opacity|filter)$'); - } else if ((m = name.match(/^border-radius-(top|bottom)(left|right)/))) { - // Mozilla-style border radius - return new RegExp(vendorPrefix + '(?:' + name + '|border-' + m[1] + '-' + m[2] + '-radius)$'); - } else if ((m = name.match(/^border-(top|bottom)-(left|right)-radius/))) { - return new RegExp(vendorPrefix + '(?:' + name + '|border-radius-' + m[1] + m[2] + ')$'); - } - - return new RegExp(vendorPrefix + name + '$'); - } - - /** - * Reflects inner CSS properites in given value - * agains name‘s vendor prefix. In other words, it tries - * to modify `transform 0.2s linear` value for `-webkit-transition` - * property - * @param {String} name Reciever CSS property name - * @param {String} value New property value - * @return {String} - */ - function reflectValueParts(name, value) { - // detects and updates vendor-specific properties in value, - // e.g. -webkit-transition: -webkit-transform - - var reVendor = /^\-(\w+)\-/; - var propPrefix = reVendor.test(name) ? RegExp.$1.toLowerCase() : ''; - var parts = cssEditTree.findParts(value); - - parts.reverse(); - parts.forEach(function (part) { - var partValue = part.substring(value).replace(reVendor, ''); - var prefixes = cssResolver.vendorPrefixes(partValue); - if (prefixes) { - // if prefixes are not null then given value can - // be resolved against Can I Use database and may or - // may not contain prefixed variant - if (propPrefix && ~prefixes.indexOf(propPrefix)) { - partValue = '-' + propPrefix + '-' + partValue; - } - - value = utils.replaceSubstring(value, partValue, part); - } - }); - - return value; - } - - /** - * Reflects value from donor into receiver - * @param {CSSProperty} donor Donor CSS property from which value should - * be reflected - * @param {CSSProperty} receiver Property that should receive reflected - * value from donor - */ - function reflectValue(donor, receiver) { - var value = getReflectedValue(donor.name(), donor.value(), - receiver.name(), receiver.value()); - - value = reflectValueParts(receiver.name(), value); - receiver.value(value); - } - - /** - * Returns value that should be reflected for refName CSS property - * from curName property. This function is used for special cases, - * when the same result must be achieved with different properties for different - * browsers. For example: opаcity:0.5; → filter:alpha(opacity=50);

      - * - * This function does value conversion between different CSS properties - * - * @param {String} curName Current CSS property name - * @param {String} curValue Current CSS property value - * @param {String} refName Receiver CSS property's name - * @param {String} refValue Receiver CSS property's value - * @return {String} New value for receiver property - */ - function getReflectedValue(curName, curValue, refName, refValue) { - curName = cssEditTree.baseName(curName); - refName = cssEditTree.baseName(refName); - - if (curName == 'opacity' && refName == 'filter') { - return refValue.replace(/opacity=[^)]*/i, 'opacity=' + Math.floor(parseFloat(curValue) * 100)); - } else if (curName == 'filter' && refName == 'opacity') { - var m = curValue.match(/opacity=([^)]*)/i); - return m ? utils.prettifyNumber(parseInt(m[1], 10) / 100) : refValue; - } - - return curValue; - } - - module = module || {}; - module.exports = { - reflectCSSValueAction: function (editor) { - if (editor.getSyntax() != 'css') { - return false; - } - - return actionUtils.compoundUpdate(editor, doCSSReflection(editor)); - }, - - _defaultHandler: function (property) { - var reName = getReflectedCSSName(property.name()); - property.parent.list().forEach(function (p) { - if (reName.test(p.name())) { - reflectValue(property, p); - } - }); - }, - - /** - * Adds custom reflect handler. The passed function will receive matched - * CSS property (as CSSEditElement object) and should - * return true if it was performed successfully (handled - * reflection), false otherwise. - * @param {Function} fn - * @param {Object} options - */ - addHandler: function (fn, options) { - handlers.add(fn, options); - }, - - /** - * Removes registered handler - * @returns - */ - removeHandler: function (fn) { - handlers.remove(fn); - } - }; - - // XXX add default handlers - handlers.add(module.exports._defaultHandler.bind(module.exports), { order: -1 }); - handlers.add(cssGradient.reflectValueHandler.bind(cssGradient)); - - return module.exports; - }); - }, { "../assets/handlerList": "assets\\handlerList.js", "../assets/preferences": "assets\\preferences.js", "../editTree/css": "editTree\\css.js", "../resolver/css": "resolver\\css.js", "../resolver/cssGradient": "resolver\\cssGradient.js", "../utils/action": "utils\\action.js", "../utils/common": "utils\\common.js", "../utils/editor": "utils\\editor.js" }], "action\\removeTag.js": [function (require, module, exports) { - /** - * Gracefully removes tag under cursor - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - var editorUtils = require('../utils/editor'); - var htmlMatcher = require('../assets/htmlMatcher'); - - return { - removeTagAction: function (editor) { - var info = editorUtils.outputInfo(editor); - - // search for tag - var tag = htmlMatcher.tag(info.content, editor.getCaretPos()); - if (tag) { - if (!tag.close) { - // simply remove unary tag - editor.replaceContent(utils.getCaretPlaceholder(), tag.range.start, tag.range.end); - } else { - // remove tag and its newlines - /** @type Range */ - var tagContentRange = utils.narrowToNonSpace(info.content, tag.innerRange); - /** @type Range */ - var startLineBounds = utils.findNewlineBounds(info.content, tagContentRange.start); - var startLinePad = utils.getLinePadding(startLineBounds.substring(info.content)); - var tagContent = tagContentRange.substring(info.content); - - tagContent = utils.unindentString(tagContent, startLinePad); - editor.replaceContent(utils.getCaretPlaceholder() + utils.escapeText(tagContent), tag.outerRange.start, tag.outerRange.end); - } - - return true; - } - - return false; - } - }; - }); - - }, { "../assets/htmlMatcher": "assets\\htmlMatcher.js", "../utils/common": "utils\\common.js", "../utils/editor": "utils\\editor.js" }], "action\\selectItem.js": [function (require, module, exports) { - /** - * Actions that use stream parsers and tokenizers for traversing: - * -- Search for next/previous items in HTML - * -- Search for next/previous items in CSS - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var range = require('../assets/range'); - var utils = require('../utils/common'); - var editorUtils = require('../utils/editor'); - var actionUtils = require('../utils/action'); - var stringStream = require('../assets/stringStream'); - var xmlParser = require('../parser/xml'); - var cssEditTree = require('../editTree/css'); - var cssSections = require('../utils/cssSections'); - - var startTag = /^<([\w\:\-]+)((?:\s+[\w\-:]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/; - - /** - * Generic function for searching for items to select - * @param {IEmmetEditor} editor - * @param {Boolean} isBackward Search backward (search forward otherwise) - * @param {Function} extractFn Function that extracts item content - * @param {Function} rangeFn Function that search for next token range - */ - function findItem(editor, isBackward, extractFn, rangeFn) { - var content = editorUtils.outputInfo(editor).content; - - var contentLength = content.length; - var itemRange, rng; - /** @type Range */ - var prevRange = range(-1, 0); - /** @type Range */ - var sel = range(editor.getSelectionRange()); - - var searchPos = sel.start, loop = 100000; // endless loop protection - while (searchPos >= 0 && searchPos < contentLength && --loop > 0) { - if ((itemRange = extractFn(content, searchPos, isBackward))) { - if (prevRange.equal(itemRange)) { - break; - } - - prevRange = itemRange.clone(); - rng = rangeFn(itemRange.substring(content), itemRange.start, sel.clone()); - - if (rng) { - editor.createSelection(rng.start, rng.end); - return true; - } else { - searchPos = isBackward ? itemRange.start : itemRange.end - 1; - } - } - - searchPos += isBackward ? -1 : 1; - } - - return false; - } - - // XXX HTML section - - /** - * Find next HTML item - * @param {IEmmetEditor} editor - */ - function findNextHTMLItem(editor) { - var isFirst = true; - return findItem(editor, false, function (content, searchPos) { - if (isFirst) { - isFirst = false; - return findOpeningTagFromPosition(content, searchPos); - } else { - return getOpeningTagFromPosition(content, searchPos); - } - }, function (tag, offset, selRange) { - return getRangeForHTMLItem(tag, offset, selRange, false); - }); - } - - /** - * Find previous HTML item - * @param {IEmmetEditor} editor - */ - function findPrevHTMLItem(editor) { - return findItem(editor, true, getOpeningTagFromPosition, function (tag, offset, selRange) { - return getRangeForHTMLItem(tag, offset, selRange, true); - }); - } - - /** - * Creates possible selection ranges for HTML tag - * @param {String} source Original HTML source for tokens - * @param {Array} tokens List of HTML tokens - * @returns {Array} - */ - function makePossibleRangesHTML(source, tokens, offset) { - offset = offset || 0; - var result = []; - var attrStart = -1, attrName = '', attrValue = '', attrValueRange, tagName; - tokens.forEach(function (tok) { - switch (tok.type) { - case 'tag': - tagName = source.substring(tok.start, tok.end); - if (/^<[\w\:\-]/.test(tagName)) { - // add tag name - result.push(range({ - start: tok.start + 1, - end: tok.end - })); - } - break; - case 'attribute': - attrStart = tok.start; - attrName = source.substring(tok.start, tok.end); - break; - - case 'string': - // attribute value - // push full attribute first - result.push(range(attrStart, tok.end - attrStart)); - - attrValueRange = range(tok); - attrValue = attrValueRange.substring(source); - - // is this a quoted attribute? - if (isQuote(attrValue.charAt(0))) - attrValueRange.start++; - - if (isQuote(attrValue.charAt(attrValue.length - 1))) - attrValueRange.end--; - - result.push(attrValueRange); - - if (attrName == 'class') { - result = result.concat(classNameRanges(attrValueRange.substring(source), attrValueRange.start)); - } - - break; - } - }); - - // offset ranges - result = result.filter(function (item) { - if (item.length()) { - item.shift(offset); - return true; - } - }); - - // remove duplicates - return utils.unique(result, function (item) { - return item.toString(); - }); - } - - /** - * Returns ranges of class names in "class" attribute value - * @param {String} className - * @returns {Array} - */ - function classNameRanges(className, offset) { - offset = offset || 0; - var result = []; - /** @type StringStream */ - var stream = stringStream.create(className); - - // skip whitespace - stream.eatSpace(); - stream.start = stream.pos; - - var ch; - while ((ch = stream.next())) { - if (/[\s\u00a0]/.test(ch)) { - result.push(range(stream.start + offset, stream.pos - stream.start - 1)); - stream.eatSpace(); - stream.start = stream.pos; - } - } - - result.push(range(stream.start + offset, stream.pos - stream.start)); - return result; - } - - /** - * Returns best HTML tag range match for current selection - * @param {String} tag Tag declaration - * @param {Number} offset Tag's position index inside content - * @param {Range} selRange Selection range - * @return {Range} Returns range if next item was found, null otherwise - */ - function getRangeForHTMLItem(tag, offset, selRange, isBackward) { - var ranges = makePossibleRangesHTML(tag, xmlParser.parse(tag), offset); - - if (isBackward) - ranges.reverse(); - - // try to find selected range - var curRange = utils.find(ranges, function (r) { - return r.equal(selRange); - }); - - if (curRange) { - var ix = ranges.indexOf(curRange); - if (ix < ranges.length - 1) - return ranges[ix + 1]; - - return null; - } - - // no selected range, find nearest one - if (isBackward) - // search backward - return utils.find(ranges, function (r) { - return r.start < selRange.start; - }); - - // search forward - // to deal with overlapping ranges (like full attribute definition - // and attribute value) let's find range under caret first - if (!curRange) { - var matchedRanges = ranges.filter(function (r) { - return r.inside(selRange.end); - }); - - if (matchedRanges.length > 1) - return matchedRanges[1]; - } - - - return utils.find(ranges, function (r) { - return r.end > selRange.end; - }); - } - - /** - * Search for opening tag in content, starting at specified position - * @param {String} html Where to search tag - * @param {Number} pos Character index where to start searching - * @return {Range} Returns range if valid opening tag was found, - * null otherwise - */ - function findOpeningTagFromPosition(html, pos) { - var tag; - while (pos >= 0) { - if ((tag = getOpeningTagFromPosition(html, pos))) - return tag; - pos--; - } - - return null; - } - - /** - * @param {String} html Where to search tag - * @param {Number} pos Character index where to start searching - * @return {Range} Returns range if valid opening tag was found, - * null otherwise - */ - function getOpeningTagFromPosition(html, pos) { - var m; - if (html.charAt(pos) == '<' && (m = html.substring(pos, html.length).match(startTag))) { - return range(pos, m[0]); - } - } - - function isQuote(ch) { - return ch == '"' || ch == "'"; - } - - /** - * Returns all ranges inside given rule, available for selection - * @param {CSSEditContainer} rule - * @return {Array} - */ - function findInnerRanges(rule) { - // rule selector - var ranges = [rule.nameRange(true)]; - - // find nested sections, keep selectors only - var nestedSections = cssSections.nestedSectionsInRule(rule); - nestedSections.forEach(function (section) { - ranges.push(range.create2(section.start, section._selectorEnd)); - }); - - // add full property ranges and values - rule.list().forEach(function (property) { - ranges = ranges.concat(makePossibleRangesCSS(property)); - }); - - ranges = range.sort(ranges); - - // optimize result: remove empty ranges and duplicates - ranges = ranges.filter(function (item) { - return !!item.length(); - }); - return utils.unique(ranges, function (item) { - return item.toString(); - }); - } - - /** - * Makes all possible selection ranges for specified CSS property - * @param {CSSProperty} property - * @returns {Array} - */ - function makePossibleRangesCSS(property) { - // find all possible ranges, sorted by position and size - var valueRange = property.valueRange(true); - var result = [property.range(true), valueRange]; - - // locate parts of complex values. - // some examples: - // – 1px solid red: 3 parts - // – arial, sans-serif: enumeration, 2 parts - // – url(image.png): function value part - var value = property.value(); - property.valueParts().forEach(function (r) { - // add absolute range - var clone = r.clone(); - result.push(clone.shift(valueRange.start)); - - /** @type StringStream */ - var stream = stringStream.create(r.substring(value)); - if (stream.match(/^[\w\-]+\(/, true)) { - // we have a function, find values in it. - // but first add function contents - stream.start = stream.pos; - stream.backUp(1); - stream.skipToPair('(', ')'); - stream.backUp(1); - var fnBody = stream.current(); - result.push(range(clone.start + stream.start, fnBody)); - - // find parts - cssEditTree.findParts(fnBody).forEach(function (part) { - result.push(range(clone.start + stream.start + part.start, part.substring(fnBody))); - }); - } - }); - - return result; - } - - /** - * Tries to find matched CSS property and nearest range for selection - * @param {CSSRule} rule - * @param {Range} selRange - * @param {Boolean} isBackward - * @returns {Range} - */ - function matchedRangeForCSSProperty(rule, selRange, isBackward) { - var ranges = findInnerRanges(rule); - if (isBackward) { - ranges.reverse(); - } - - // return next to selected range, if possible - var r = utils.find(ranges, function (item) { - return item.equal(selRange); - }); - - if (r) { - return ranges[ranges.indexOf(r) + 1]; - } - - // find matched and (possibly) overlapping ranges - var nested = ranges.filter(function (item) { - return item.inside(selRange.end); - }); - - if (nested.length) { - return nested.sort(function (a, b) { - return a.length() - b.length(); - })[0]; - } - - // return range next to caret - var test = - r = utils.find(ranges, isBackward - ? function (item) { return item.end < selRange.start; } - : function (item) { return item.end > selRange.start; } - ); - - if (!r) { - // can’t find anything, just pick first one - r = ranges[0]; - } - - return r; - } - - function findNextCSSItem(editor) { - return findItem(editor, false, cssSections.locateRule.bind(cssSections), getRangeForNextItemInCSS); - } - - function findPrevCSSItem(editor) { - return findItem(editor, true, cssSections.locateRule.bind(cssSections), getRangeForPrevItemInCSS); - } - - /** - * Returns range for item to be selected in CSS after current caret - * (selection) position - * @param {String} rule CSS rule declaration - * @param {Number} offset Rule's position index inside content - * @param {Range} selRange Selection range - * @return {Range} Returns range if next item was found, null otherwise - */ - function getRangeForNextItemInCSS(rule, offset, selRange) { - var tree = cssEditTree.parse(rule, { - offset: offset - }); - - return matchedRangeForCSSProperty(tree, selRange, false); - } - - /** - * Returns range for item to be selected in CSS before current caret - * (selection) position - * @param {String} rule CSS rule declaration - * @param {Number} offset Rule's position index inside content - * @param {Range} selRange Selection range - * @return {Range} Returns range if previous item was found, null otherwise - */ - function getRangeForPrevItemInCSS(rule, offset, selRange) { - var tree = cssEditTree.parse(rule, { - offset: offset - }); - - return matchedRangeForCSSProperty(tree, selRange, true); - } - - return { - selectNextItemAction: function (editor) { - if (actionUtils.isSupportedCSS(editor.getSyntax())) { - return findNextCSSItem(editor); - } else { - return findNextHTMLItem(editor); - } - }, - - selectPreviousItemAction: function (editor) { - if (actionUtils.isSupportedCSS(editor.getSyntax())) { - return findPrevCSSItem(editor); - } else { - return findPrevHTMLItem(editor); - } - } - }; - }); - }, { "../assets/range": "assets\\range.js", "../assets/stringStream": "assets\\stringStream.js", "../editTree/css": "editTree\\css.js", "../parser/xml": "parser\\xml.js", "../utils/action": "utils\\action.js", "../utils/common": "utils\\common.js", "../utils/cssSections": "utils\\cssSections.js", "../utils/editor": "utils\\editor.js" }], "action\\selectLine.js": [function (require, module, exports) { - /** - * Select current line (for simple editors like browser's <textarea>) - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - return { - selectLineAction: function (editor) { - var range = editor.getCurrentLineRange(); - editor.createSelection(range.start, range.end); - return true; - } - }; - }); - }, {}], "action\\splitJoinTag.js": [function (require, module, exports) { - /** - * Splits or joins tag, e.g. transforms it into a short notation and vice versa:
      - * <div></div> → <div /> : join
      - * <div /> → <div></div> : split - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - var resources = require('../assets/resources'); - var matcher = require('../assets/htmlMatcher'); - var editorUtils = require('../utils/editor'); - var profile = require('../assets/profile'); - - /** - * @param {IEmmetEditor} editor - * @param {Object} profile - * @param {Object} tag - */ - function joinTag(editor, profile, tag) { - // empty closing slash is a nonsense for this action - var slash = profile.selfClosing() || ' /'; - var content = tag.open.range.substring(tag.source).replace(/\s*>$/, slash + '>'); - - var caretPos = editor.getCaretPos(); - - // update caret position - if (content.length + tag.outerRange.start < caretPos) { - caretPos = content.length + tag.outerRange.start; - } - - content = utils.escapeText(content); - editor.replaceContent(content, tag.outerRange.start, tag.outerRange.end); - editor.setCaretPos(caretPos); - return true; - } - - function splitTag(editor, profile, tag) { - var caretPos = editor.getCaretPos(); - - // define tag content depending on profile - var tagContent = (profile.tag_nl === true) ? '\n\t\n' : ''; - var content = tag.outerContent().replace(/\s*\/>$/, '>'); - caretPos = tag.outerRange.start + content.length; - content += tagContent + ''; - - content = utils.escapeText(content); - editor.replaceContent(content, tag.outerRange.start, tag.outerRange.end); - editor.setCaretPos(caretPos); - return true; - } - - return { - splitJoinTagAction: function (editor, profileName) { - var info = editorUtils.outputInfo(editor, null, profileName); - var curProfile = profile.get(info.profile); - - // find tag at current position - var tag = matcher.tag(info.content, editor.getCaretPos()); - if (tag) { - return tag.close - ? joinTag(editor, curProfile, tag) - : splitTag(editor, curProfile, tag); - } - - return false; - } - }; - }); - }, { "../assets/htmlMatcher": "assets\\htmlMatcher.js", "../assets/profile": "assets\\profile.js", "../assets/resources": "assets\\resources.js", "../utils/common": "utils\\common.js", "../utils/editor": "utils\\editor.js" }], "action\\toggleComment.js": [function (require, module, exports) { - /** - * Toggles HTML and CSS comments depending on current caret context. Unlike - * the same action in most editors, this action toggles comment on currently - * matched item—HTML tag or CSS selector—when nothing is selected. - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var prefs = require('../assets/preferences'); - var range = require('../assets/range'); - var utils = require('../utils/common'); - var actionUtils = require('../utils/action'); - var editorUtils = require('../utils/editor'); - var htmlMatcher = require('../assets/htmlMatcher'); - var cssEditTree = require('../editTree/css'); - - /** - * Toggle HTML comment on current selection or tag - * @param {IEmmetEditor} editor - * @return {Boolean} Returns true if comment was toggled - */ - function toggleHTMLComment(editor) { - /** @type Range */ - var r = range(editor.getSelectionRange()); - var info = editorUtils.outputInfo(editor); - - if (!r.length()) { - // no selection, find matching tag - var tag = htmlMatcher.tag(info.content, editor.getCaretPos()); - if (tag) { // found pair - r = tag.outerRange; - } - } - - return genericCommentToggle(editor, '', r); - } - - /** - * Simple CSS commenting - * @param {IEmmetEditor} editor - * @return {Boolean} Returns true if comment was toggled - */ - function toggleCSSComment(editor) { - /** @type Range */ - var rng = range(editor.getSelectionRange()); - var info = editorUtils.outputInfo(editor); - - if (!rng.length()) { - // no selection, try to get current rule - /** @type CSSRule */ - var rule = cssEditTree.parseFromPosition(info.content, editor.getCaretPos()); - if (rule) { - var property = cssItemFromPosition(rule, editor.getCaretPos()); - rng = property - ? property.range(true) - : range(rule.nameRange(true).start, rule.source); - } - } - - if (!rng.length()) { - // still no selection, get current line - rng = range(editor.getCurrentLineRange()); - utils.narrowToNonSpace(info.content, rng); - } - - return genericCommentToggle(editor, '/*', '*/', rng); - } - - /** - * Returns CSS property from rule that matches passed position - * @param {EditContainer} rule - * @param {Number} absPos - * @returns {EditElement} - */ - function cssItemFromPosition(rule, absPos) { - // do not use default EditContainer.itemFromPosition() here, because - // we need to make a few assumptions to make CSS commenting more reliable - var relPos = absPos - (rule.options.offset || 0); - var reSafeChar = /^[\s\n\r]/; - return utils.find(rule.list(), function (item) { - if (item.range().end === relPos) { - // at the end of property, but outside of it - // if there’s a space character at current position, - // use current property - return reSafeChar.test(rule.source.charAt(relPos)); - } - - return item.range().inside(relPos); - }); - } - - /** - * Search for nearest comment in str, starting from index from - * @param {String} text Where to search - * @param {Number} from Search start index - * @param {String} start_token Comment start string - * @param {String} end_token Comment end string - * @return {Range} Returns null if comment wasn't found - */ - function searchComment(text, from, startToken, endToken) { - var commentStart = -1; - var commentEnd = -1; - - var hasMatch = function (str, start) { - return text.substr(start, str.length) == str; - }; - - // search for comment start - while (from--) { - if (hasMatch(startToken, from)) { - commentStart = from; - break; - } - } - - if (commentStart != -1) { - // search for comment end - from = commentStart; - var contentLen = text.length; - while (contentLen >= from++) { - if (hasMatch(endToken, from)) { - commentEnd = from + endToken.length; - break; - } - } - } - - return (commentStart != -1 && commentEnd != -1) - ? range(commentStart, commentEnd - commentStart) - : null; - } - - /** - * Generic comment toggling routine - * @param {IEmmetEditor} editor - * @param {String} commentStart Comment start token - * @param {String} commentEnd Comment end token - * @param {Range} range Selection range - * @return {Boolean} - */ - function genericCommentToggle(editor, commentStart, commentEnd, range) { - var content = editorUtils.outputInfo(editor).content; - var caretPos = editor.getCaretPos(); - var newContent = null; - - /** - * Remove comment markers from string - * @param {Sting} str - * @return {String} - */ - function removeComment(str) { - return str - .replace(new RegExp('^' + utils.escapeForRegexp(commentStart) + '\\s*'), function (str) { - caretPos -= str.length; - return ''; - }).replace(new RegExp('\\s*' + utils.escapeForRegexp(commentEnd) + '$'), ''); - } - - // first, we need to make sure that this substring is not inside - // comment - var commentRange = searchComment(content, caretPos, commentStart, commentEnd); - if (commentRange && commentRange.overlap(range)) { - // we're inside comment, remove it - range = commentRange; - newContent = removeComment(range.substring(content)); - } else { - // should add comment - // make sure that there's no comment inside selection - newContent = commentStart + ' ' + - range.substring(content) - .replace(new RegExp(utils.escapeForRegexp(commentStart) + '\\s*|\\s*' + utils.escapeForRegexp(commentEnd), 'g'), '') + - ' ' + commentEnd; - - // adjust caret position - caretPos += commentStart.length + 1; - } - - // replace editor content - if (newContent !== null) { - newContent = utils.escapeText(newContent); - editor.setCaretPos(range.start); - editor.replaceContent(editorUtils.unindent(editor, newContent), range.start, range.end); - editor.setCaretPos(caretPos); - return true; - } - - return false; - } - - return { - /** - * Toggle comment on current editor's selection or HTML tag/CSS rule - * @param {IEmmetEditor} editor - */ - toggleCommentAction: function (editor) { - var info = editorUtils.outputInfo(editor); - if (actionUtils.isSupportedCSS(info.syntax)) { - // in case our editor is good enough and can recognize syntax from - // current token, we have to make sure that cursor is not inside - // 'style' attribute of html element - var caretPos = editor.getCaretPos(); - var tag = htmlMatcher.tag(info.content, caretPos); - if (tag && tag.open.range.inside(caretPos)) { - info.syntax = 'html'; - } - } - - var cssSyntaxes = prefs.getArray('css.syntaxes'); - if (~cssSyntaxes.indexOf(info.syntax)) { - return toggleCSSComment(editor); - } - - return toggleHTMLComment(editor); - } - }; - }); - }, { "../assets/htmlMatcher": "assets\\htmlMatcher.js", "../assets/preferences": "assets\\preferences.js", "../assets/range": "assets\\range.js", "../editTree/css": "editTree\\css.js", "../utils/action": "utils\\action.js", "../utils/common": "utils\\common.js", "../utils/editor": "utils\\editor.js" }], "action\\updateImageSize.js": [function (require, module, exports) { - /** - * Automatically updates image size attributes in HTML's <img> element or - * CSS rule - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - var editorUtils = require('../utils/editor'); - var actionUtils = require('../utils/action'); - var xmlEditTree = require('../editTree/xml'); - var cssEditTree = require('../editTree/css'); - var base64 = require('../utils/base64'); - var file = require('../plugin/file'); - - /** - * Updates image size of <img src=""> tag - * @param {IEmmetEditor} editor - */ - function updateImageSizeHTML(editor) { - var offset = editor.getCaretPos(); - - // find tag from current caret position - var info = editorUtils.outputInfo(editor); - var xmlElem = xmlEditTree.parseFromPosition(info.content, offset, true); - if (xmlElem && (xmlElem.name() || '').toLowerCase() == 'img') { - getImageSizeForSource(editor, xmlElem.value('src'), function (size) { - if (size) { - var compoundData = xmlElem.range(true); - xmlElem.value('width', size.width); - xmlElem.value('height', size.height, xmlElem.indexOf('width') + 1); - - actionUtils.compoundUpdate(editor, utils.extend(compoundData, { - data: xmlElem.toString(), - caret: offset - })); - } - }); - } - } - - /** - * Updates image size of CSS property - * @param {IEmmetEditor} editor - */ - function updateImageSizeCSS(editor) { - var offset = editor.getCaretPos(); - - // find tag from current caret position - var info = editorUtils.outputInfo(editor); - var cssRule = cssEditTree.parseFromPosition(info.content, offset, true); - if (cssRule) { - // check if there is property with image under caret - var prop = cssRule.itemFromPosition(offset, true), m; - if (prop && (m = /url\((["']?)(.+?)\1\)/i.exec(prop.value() || ''))) { - getImageSizeForSource(editor, m[2], function (size) { - if (size) { - var compoundData = cssRule.range(true); - cssRule.value('width', size.width + 'px'); - cssRule.value('height', size.height + 'px', cssRule.indexOf('width') + 1); - - actionUtils.compoundUpdate(editor, utils.extend(compoundData, { - data: cssRule.toString(), - caret: offset - })); - } - }); - } - } - } - - /** - * Returns image dimensions for source - * @param {IEmmetEditor} editor - * @param {String} src Image source (path or data:url) - */ - function getImageSizeForSource(editor, src, callback) { - var fileContent; - if (src) { - // check if it is data:url - if (/^data:/.test(src)) { - fileContent = base64.decode(src.replace(/^data\:.+?;.+?,/, '')); - return callback(actionUtils.getImageSize(fileContent)); - } - - var filePath = editor.getFilePath(); - file.locateFile(filePath, src, function (absPath) { - if (absPath === null) { - throw "Can't find " + src + ' file'; - } - - file.read(absPath, function (err, content) { - if (err) { - throw 'Unable to read ' + absPath + ': ' + err; - } - - content = String(content); - callback(actionUtils.getImageSize(content)); - }); - }); - } - } - - return { - updateImageSizeAction: function (editor) { - // this action will definitely won’t work in SASS dialect, - // but may work in SCSS or LESS - if (actionUtils.isSupportedCSS(editor.getSyntax())) { - updateImageSizeCSS(editor); - } else { - updateImageSizeHTML(editor); - } - - return true; - } - }; - }); - }, { "../editTree/css": "editTree\\css.js", "../editTree/xml": "editTree\\xml.js", "../plugin/file": "plugin\\file.js", "../utils/action": "utils\\action.js", "../utils/base64": "utils\\base64.js", "../utils/common": "utils\\common.js", "../utils/editor": "utils\\editor.js" }], "action\\updateTag.js": [function (require, module, exports) { - /** - * Update Tag action: allows users to update existing HTML tags and add/remove - * attributes or even tag name - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var xmlEditTree = require('../editTree/xml'); - var editorUtils = require('../utils/editor'); - var actionUtils = require('../utils/action'); - var utils = require('../utils/common'); - var parser = require('../parser/abbreviation'); - - function updateAttributes(tag, abbrNode, ix) { - var classNames = (abbrNode.attribute('class') || '').split(/\s+/g); - if (ix) { - classNames.push('+' + abbrNode.name()); - } - - var r = function (str) { - return utils.replaceCounter(str, abbrNode.counter); - }; - - // update class - classNames.forEach(function (className) { - if (!className) { - return; - } - - className = r(className); - var ch = className.charAt(0); - if (ch == '+') { - tag.addClass(className.substr(1)); - } else if (ch == '-') { - tag.removeClass(className.substr(1)); - } else { - tag.value('class', className); - } - }); - - // update attributes - abbrNode.attributeList().forEach(function (attr) { - if (attr.name.toLowerCase() == 'class') { - return; - } - - var ch = attr.name.charAt(0); - if (ch == '+') { - var attrName = attr.name.substr(1); - var tagAttr = tag.get(attrName); - if (tagAttr) { - tagAttr.value(tagAttr.value() + r(attr.value)); - } else { - tag.value(attrName, r(attr.value)); - } - } else if (ch == '-') { - tag.remove(attr.name.substr(1)); - } else { - tag.value(attr.name, r(attr.value)); - } - }); - } - - return { - /** - * Matches HTML tag under caret and updates its definition - * according to given abbreviation - * @param {IEmmetEditor} Editor instance - * @param {String} abbr Abbreviation to update with - */ - updateTagAction: function (editor, abbr) { - abbr = abbr || editor.prompt("Enter abbreviation"); - - if (!abbr) { - return false; - } - - var content = editor.getContent(); - var ctx = actionUtils.captureContext(editor); - var tag = this.getUpdatedTag(abbr, ctx, content); - - if (!tag) { - // nothing to update - return false; - } - - // check if tag name was updated - if (tag.name() != ctx.name && ctx.match.close) { - editor.replaceContent('', ctx.match.close.range.start, ctx.match.close.range.end, true); - } - - editor.replaceContent(tag.source, ctx.match.open.range.start, ctx.match.open.range.end, true); - return true; - }, - - /** - * Returns XMLEditContainer node with updated tag structure - * of existing tag context. - * This data can be used to modify existing tag - * @param {String} abbr Abbreviation - * @param {Object} ctx Tag to be updated (captured with `htmlMatcher`) - * @param {String} content Original editor content - * @return {XMLEditContainer} - */ - getUpdatedTag: function (abbr, ctx, content, options) { - if (!ctx) { - // nothing to update - return null; - } - - var tree = parser.parse(abbr, options || {}); - - // for this action some characters in abbreviation has special - // meaning. For example, `.-c2` means “remove `c2` class from - // element” and `.+c3` means “append class `c3` to exising one. - // - // But `.+c3` abbreviation will actually produce two elements: - //
      and . Thus, we have to walk on each element - // of parsed tree and use their definitions to update current element - var tag = xmlEditTree.parse(ctx.match.open.range.substring(content), { - offset: ctx.match.outerRange.start - }); - - tree.children.forEach(function (node, i) { - updateAttributes(tag, node, i); - }); - - // if tag name was resolved by implicit tag name resolver, - // then user omitted it in abbreviation and wants to keep - // original tag name - var el = tree.children[0]; - if (!el.data('nameResolved')) { - tag.name(el.name()); - } - - return tag; - } - }; - }); - }, { "../editTree/xml": "editTree\\xml.js", "../parser/abbreviation": "parser\\abbreviation.js", "../utils/action": "utils\\action.js", "../utils/common": "utils\\common.js", "../utils/editor": "utils\\editor.js" }], "action\\wrapWithAbbreviation.js": [function (require, module, exports) { - /** - * Action that wraps content with abbreviation. For convenience, action is - * defined as reusable module - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var range = require('../assets/range'); - var htmlMatcher = require('../assets/htmlMatcher'); - var utils = require('../utils/common'); - var editorUtils = require('../utils/editor'); - var actionUtils = require('../utils/action'); - var parser = require('../parser/abbreviation'); - - return { - /** - * Wraps content with abbreviation - * @param {IEmmetEditor} Editor instance - * @param {String} abbr Abbreviation to wrap with - * @param {String} syntax Syntax type (html, css, etc.) - * @param {String} profile Output profile name (html, xml, xhtml) - */ - wrapWithAbbreviationAction: function (editor, abbr, syntax, profile) { - var info = editorUtils.outputInfo(editor, syntax, profile); - abbr = abbr || editor.prompt("Enter abbreviation"); - - if (!abbr) { - return null; - } - - abbr = String(abbr); - - var r = range(editor.getSelectionRange()); - - if (!r.length()) { - // no selection, find tag pair - var match = htmlMatcher.tag(info.content, r.start); - if (!match) { // nothing to wrap - return false; - } - - r = utils.narrowToNonSpace(info.content, match.range); - } - - var newContent = utils.escapeText(r.substring(info.content)); - var result = parser.expand(abbr, { - pastedContent: editorUtils.unindent(editor, newContent), - syntax: info.syntax, - profile: info.profile, - contextNode: actionUtils.captureContext(editor) - }); - - if (result) { - editor.replaceContent(result, r.start, r.end); - return true; - } - - return false; - } - }; - }); - }, { "../assets/htmlMatcher": "assets\\htmlMatcher.js", "../assets/range": "assets\\range.js", "../parser/abbreviation": "parser\\abbreviation.js", "../utils/action": "utils\\action.js", "../utils/common": "utils\\common.js", "../utils/editor": "utils\\editor.js" }], "assets\\caniuse.js": [function (require, module, exports) { - /** - * Parsed resources (snippets, abbreviations, variables, etc.) for Emmet. - * Contains convenient method to get access for snippets with respect of - * inheritance. Also provides ability to store data in different vocabularies - * ('system' and 'user') for fast and safe resource update - * @author Sergey Chikuyonok (serge.che@gmail.com) - * @link http://chikuyonok.ru - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var prefs = require('./preferences'); - var utils = require('../utils/common'); - - prefs.define('caniuse.enabled', true, 'Enable support of Can I Use database. When enabled,\ - CSS abbreviation resolver will look at Can I Use database first before detecting\ - CSS properties that should be resolved'); - - prefs.define('caniuse.vendors', 'all', 'A comma-separated list vendor identifiers\ - (as described in Can I Use database) that should be supported\ - when resolving vendor-prefixed properties. Set value to all\ - to support all available properties'); - - prefs.define('caniuse.era', 'e-2', 'Browser era, as defined in Can I Use database.\ - Examples: e0 (current version), e1 (near future)\ - e-2 (2 versions back) and so on.'); - - var cssSections = { - 'border-image': ['border-image'], - 'css-boxshadow': ['box-shadow'], - 'css3-boxsizing': ['box-sizing'], - 'multicolumn': ['column-width', 'column-count', 'columns', 'column-gap', 'column-rule-color', 'column-rule-style', 'column-rule-width', 'column-rule', 'column-span', 'column-fill'], - 'border-radius': ['border-radius', 'border-top-left-radius', 'border-top-right-radius', 'border-bottom-right-radius', 'border-bottom-left-radius'], - 'transforms2d': ['transform'], - 'css-hyphens': ['hyphens'], - 'css-transitions': ['transition', 'transition-property', 'transition-duration', 'transition-timing-function', 'transition-delay'], - 'font-feature': ['font-feature-settings'], - 'css-animation': ['animation', 'animation-name', 'animation-duration', 'animation-timing-function', 'animation-iteration-count', 'animation-direction', 'animation-play-state', 'animation-delay', 'animation-fill-mode', '@keyframes'], - 'css-gradients': ['linear-gradient'], - 'css-masks': ['mask-image', 'mask-source-type', 'mask-repeat', 'mask-position', 'mask-clip', 'mask-origin', 'mask-size', 'mask', 'mask-type', 'mask-box-image-source', 'mask-box-image-slice', 'mask-box-image-width', 'mask-box-image-outset', 'mask-box-image-repeat', 'mask-box-image', 'clip-path', 'clip-rule'], - 'css-featurequeries': ['@supports'], - 'flexbox': ['flex', 'inline-flex', 'flex-direction', 'flex-wrap', 'flex-flow', 'order', 'flex'], - 'calc': ['calc'], - 'object-fit': ['object-fit', 'object-position'], - 'css-grid': ['grid', 'inline-grid', 'grid-template-rows', 'grid-template-columns', 'grid-template-areas', 'grid-template', 'grid-auto-rows', 'grid-auto-columns', ' grid-auto-flow', 'grid-auto-position', 'grid', ' grid-row-start', 'grid-column-start', 'grid-row-end', 'grid-column-end', 'grid-column', 'grid-row', 'grid-area', 'justify-self', 'justify-items', 'align-self', 'align-items'], - 'css-repeating-gradients': ['repeating-linear-gradient'], - 'css-filters': ['filter'], - 'user-select-none': ['user-select'], - 'intrinsic-width': ['min-content', 'max-content', 'fit-content', 'fill-available'], - 'css3-tabsize': ['tab-size'] - }; - - /** @type {Object} The Can I Use database for CSS */ - var cssDB = null; - /** @type {Object} A list of available vendors (browsers) and their prefixes */ - var vendorsDB = null; - var erasDB = null; - - function intersection(arr1, arr2) { - var result = []; - var smaller = arr1, larger = arr2; - if (smaller.length > larger.length) { - smaller = arr2; - larger = arr1; - } - larger.forEach(function (item) { - if (~smaller.indexOf(item)) { - result.push(item); - } - }); - return result; - } - - /** - * Parses raw Can I Use database for better lookups - * @param {String} data Raw database - * @param {Boolean} optimized Pass `true` if given `data` is already optimized - * @return {Object} - */ - function parseDB(data, optimized) { - if (typeof data == 'string') { - data = JSON.parse(data); - } - - if (!optimized) { - data = optimize(data); - } - - vendorsDB = data.vendors; - cssDB = data.css; - erasDB = data.era; - } - - /** - * Extract required data only from CIU database - * @param {Object} data Raw Can I Use database - * @return {Object} Optimized database - */ - function optimize(data) { - if (typeof data == 'string') { - data = JSON.parse(data); - } - - return { - vendors: parseVendors(data), - css: parseCSS(data), - era: parseEra(data) - }; - } - - /** - * Parses vendor data - * @param {Object} data - * @return {Object} - */ - function parseVendors(data) { - var out = {}; - Object.keys(data.agents).forEach(function (name) { - var agent = data.agents[name]; - out[name] = { - prefix: agent.prefix, - versions: agent.versions - }; - }); - return out; - } - - /** - * Parses CSS data from Can I Use raw database - * @param {Object} data - * @return {Object} - */ - function parseCSS(data) { - var out = {}; - var cssCategories = data.cats.CSS; - Object.keys(data.data).forEach(function (name) { - var section = data.data[name]; - if (name in cssSections) { - cssSections[name].forEach(function (kw) { - out[kw] = section.stats; - }); - } - }); - - return out; - } - - /** - * Parses era data from Can I Use raw database - * @param {Object} data - * @return {Array} - */ - function parseEra(data) { - // some runtimes (like Mozilla Rhino) does not preserves - // key order so we have to sort values manually - return Object.keys(data.eras).sort(function (a, b) { - return parseInt(a.substr(1)) - parseInt(b.substr(1)); - }); - } - - /** - * Returs list of supported vendors, depending on user preferences - * @return {Array} - */ - function getVendorsList() { - var allVendors = Object.keys(vendorsDB); - var vendors = prefs.getArray('caniuse.vendors'); - if (!vendors || vendors[0] == 'all') { - return allVendors; - } - - return intersection(allVendors, vendors); - } - - /** - * Returns size of version slice as defined by era identifier - * @return {Number} - */ - function getVersionSlice() { - var era = prefs.get('caniuse.era'); - var ix = erasDB.indexOf(era); - if (!~ix) { - ix = erasDB.indexOf('e-2'); - } - - return ix; - } - - // try to load caniuse database - // hide it from Require.JS parser - var db = null; - (function (r) { - if (typeof define === 'undefined' || !define.amd) { - try { - db = r('caniuse-db/data.json'); - } catch (e) { } - } - })(require); - - if (db) { - parseDB(db); - } - - return { - load: parseDB, - optimize: optimize, - - /** - * Resolves prefixes for given property - * @param {String} property A property to resolve. It can start with `@` symbol - * (CSS section, like `@keyframes`) or `:` (CSS value, like `flex`) - * @return {Array} Array of resolved prefixes or null - * if prefixes can't be resolved. Empty array means property has no vendor - * prefixes - */ - resolvePrefixes: function (property) { - if (!prefs.get('caniuse.enabled') || !cssDB || !(property in cssDB)) { - return null; - } - - var prefixes = []; - var propStats = cssDB[property]; - var versions = getVersionSlice(); - - getVendorsList().forEach(function (vendor) { - var vendorVesions = vendorsDB[vendor].versions.slice(versions); - for (var i = 0, v; i < vendorVesions.length; i++) { - v = vendorVesions[i]; - if (!v) { - continue; - } - - if (~propStats[vendor][v].indexOf('x')) { - prefixes.push(vendorsDB[vendor].prefix); - break; - } - } - }); - - return utils.unique(prefixes).sort(function (a, b) { - return b.length - a.length; - }); - } - }; - }); - - }, { "../utils/common": "utils\\common.js", "./preferences": "assets\\preferences.js" }], "assets\\elements.js": [function (require, module, exports) { - /** - * Module that contains factories for element types used by Emmet - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var factories = {}; - var reAttrs = /([@\!]?)([\w\-:]+)\s*=\s*(['"])(.*?)\3/g; - - // register resource references - function commonFactory(value) { - return { data: value }; - } - - module = module || {}; - module.exports = { - /** - * Create new element factory - * @param {String} name Element identifier - * @param {Function} factory Function that produces element of specified - * type. The object generated by this factory is automatically - * augmented with type property pointing to element - * name - * @memberOf elements - */ - add: function (name, factory) { - var that = this; - factories[name] = function () { - var elem = factory.apply(that, arguments); - if (elem) - elem.type = name; - - return elem; - }; - }, - - /** - * Returns factory for specified name - * @param {String} name - * @returns {Function} - */ - get: function (name) { - return factories[name]; - }, - - /** - * Creates new element with specified type - * @param {String} name - * @returns {Object} - */ - create: function (name) { - var args = [].slice.call(arguments, 1); - var factory = this.get(name); - return factory ? factory.apply(this, args) : null; - }, - - /** - * Check if passed element is of specified type - * @param {Object} elem - * @param {String} type - * @returns {Boolean} - */ - is: function (elem, type) { - return this.type(elem) === type; - }, - - /** - * Returns type of element - * @param {Object} elem - * @return {String} - */ - type: function (elem) { - return elem && elem.type; - } - }; - - /** - * Element factory - * @param {String} elementName Name of output element - * @param {String} attrs Attributes definition. You may also pass - * Array where each contains object with name - * and value properties, or Object - * @param {Boolean} isEmpty Is expanded element should be empty - */ - module.exports.add('element', function (elementName, attrs, isEmpty) { - var ret = { - name: elementName, - is_empty: !!isEmpty - }; - - if (attrs) { - ret.attributes = []; - if (Array.isArray(attrs)) { - ret.attributes = attrs; - } else if (typeof attrs === 'string') { - var m; - while ((m = reAttrs.exec(attrs))) { - ret.attributes.push({ - name: m[2], - value: m[4], - isDefault: m[1] == '@', - isImplied: m[1] == '!' - }); - } - } else { - ret.attributes = Object.keys(attrs).map(function (name) { - return { - name: name, - value: attrs[name] - }; - }); - } - } - - return ret; - }); - - module.exports.add('snippet', commonFactory); - module.exports.add('reference', commonFactory); - module.exports.add('empty', function () { - return {}; - }); - - return module.exports; - }); - }, {}], "assets\\handlerList.js": [function (require, module, exports) { - /** - * Utility module that provides ordered storage of function handlers. - * Many Emmet modules' functionality can be extended/overridden by custom - * function. This modules provides unified storage of handler functions, their - * management and execution - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - - /** - * @type HandlerList - * @constructor - */ - function HandlerList() { - this._list = []; - } - - HandlerList.prototype = { - /** - * Adds function handler - * @param {Function} fn Handler - * @param {Object} options Handler options. Possible values are:

      - * order : (Number) – order in handler list. Handlers - * with higher order value will be executed earlier. - */ - add: function (fn, options) { - // TODO hack for stable sort, remove after fixing `list()` - var order = this._list.length; - if (options && 'order' in options) { - order = options.order * 10000; - } - this._list.push(utils.extend({}, options, { order: order, fn: fn })); - }, - - /** - * Removes handler from list - * @param {Function} fn - */ - remove: function (fn) { - var item = utils.find(this._list, function (item) { - return item.fn === fn; - }); - if (item) { - this._list.splice(this._list.indexOf(item), 1); - } - }, - - /** - * Returns ordered list of handlers. By default, handlers - * with the same order option returned in reverse order, - * i.e. the latter function was added into the handlers list, the higher - * it will be in the returned array - * @returns {Array} - */ - list: function () { - // TODO make stable sort - return this._list.sort(function (a, b) { - return b.order - a.order; - }); - }, - - /** - * Returns ordered list of handler functions - * @returns {Array} - */ - listFn: function () { - return this.list().map(function (item) { - return item.fn; - }); - }, - - /** - * Executes handler functions in their designated order. If function - * returns skipVal, meaning that function was unable to - * handle passed args, the next function will be executed - * and so on. - * @param {Object} skipValue If function returns this value, execute - * next handler. - * @param {Array} args Arguments to pass to handler function - * @returns {Boolean} Whether any of registered handlers performed - * successfully - */ - exec: function (skipValue, args) { - args = args || []; - var result = null; - utils.find(this.list(), function (h) { - result = h.fn.apply(h, args); - if (result !== skipValue) { - return true; - } - }); - - return result; - } - }; - - return { - /** - * Factory method that produces HandlerList instance - * @returns {HandlerList} - * @memberOf handlerList - */ - create: function () { - return new HandlerList(); - } - }; - }); - }, { "../utils/common": "utils\\common.js" }], "assets\\htmlMatcher.js": [function (require, module, exports) { - /** - * HTML matcher: takes string and searches for HTML tag pairs for given position - * - * Unlike “classic” matchers, it parses content from the specified - * position, not from the start, so it may work even outside HTML documents - * (for example, inside strings of programming languages like JavaScript, Python - * etc.) - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var range = require('./range'); - - // Regular Expressions for parsing tags and attributes - var reOpenTag = /^<([\w\:\-]+)((?:\s+[\w\-:]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/; - var reCloseTag = /^<\/([\w\:\-]+)[^>]*>/; - - function openTag(i, match) { - return { - name: match[1], - selfClose: !!match[3], - /** @type Range */ - range: range(i, match[0]), - type: 'open' - }; - } - - function closeTag(i, match) { - return { - name: match[1], - /** @type Range */ - range: range(i, match[0]), - type: 'close' - }; - } - - function comment(i, match) { - return { - /** @type Range */ - range: range(i, typeof match == 'number' ? match - i : match[0]), - type: 'comment' - }; - } - - /** - * Creates new tag matcher session - * @param {String} text - */ - function createMatcher(text) { - var memo = {}, m; - return { - /** - * Test if given position matches opening tag - * @param {Number} i - * @returns {Object} Matched tag object - */ - open: function (i) { - var m = this.matches(i); - return m && m.type == 'open' ? m : null; - }, - - /** - * Test if given position matches closing tag - * @param {Number} i - * @returns {Object} Matched tag object - */ - close: function (i) { - var m = this.matches(i); - return m && m.type == 'close' ? m : null; - }, - - /** - * Matches either opening or closing tag for given position - * @param i - * @returns - */ - matches: function (i) { - var key = 'p' + i; - - if (!(key in memo)) { - memo[key] = false; - if (text.charAt(i) == '<') { - var substr = text.slice(i); - if ((m = substr.match(reOpenTag))) { - memo[key] = openTag(i, m); - } else if ((m = substr.match(reCloseTag))) { - memo[key] = closeTag(i, m); - } - } - } - - return memo[key]; - }, - - /** - * Returns original text - * @returns {String} - */ - text: function () { - return text; - }, - - clean: function () { - memo = text = m = null; - } - }; - } - - function matches(text, pos, pattern) { - return text.substring(pos, pos + pattern.length) == pattern; - } - - /** - * Search for closing pair of opening tag - * @param {Object} open Open tag instance - * @param {Object} matcher Matcher instance - */ - function findClosingPair(open, matcher) { - var stack = [], tag = null; - var text = matcher.text(); - - for (var pos = open.range.end, len = text.length; pos < len; pos++) { - if (matches(text, pos, '')) { - pos = j + 3; - break; - } - } - } - - if ((tag = matcher.matches(pos))) { - if (tag.type == 'open' && !tag.selfClose) { - stack.push(tag.name); - } else if (tag.type == 'close') { - if (!stack.length) { // found valid pair? - return tag.name == open.name ? tag : null; - } - - // check if current closing tag matches previously opened one - if (stack[stack.length - 1] == tag.name) { - stack.pop(); - } else { - var found = false; - while (stack.length && !found) { - var last = stack.pop(); - if (last == tag.name) { - found = true; - } - } - - if (!stack.length && !found) { - return tag.name == open.name ? tag : null; - } - } - } - - pos = tag.range.end - 1; - } - } - } - - return { - /** - * Main function: search for tag pair in text for given - * position - * @memberOf htmlMatcher - * @param {String} text - * @param {Number} pos - * @returns {Object} - */ - find: function (text, pos) { - var matcher = createMatcher(text); - var open = null, close = null; - var j, jl; - - for (var i = pos; i >= 0; i--) { - if ((open = matcher.open(i))) { - // found opening tag - if (open.selfClose) { - if (open.range.cmp(pos, 'lt', 'gt')) { - // inside self-closing tag, found match - break; - } - - // outside self-closing tag, continue - continue; - } - - close = findClosingPair(open, matcher); - if (close) { - // found closing tag. - var r = range.create2(open.range.start, close.range.end); - if (r.contains(pos)) { - break; - } - } else if (open.range.contains(pos)) { - // we inside empty HTML tag like
      - break; - } - - open = null; - } else if (matches(text, i, '-->')) { - // skip back to comment start - for (j = i - 1; j >= 0; j--) { - if (matches(text, j, '-->')) { - // found another comment end, do nothing - break; - } else if (matches(text, j, '')) { - j += 3; - break; - } - } - - open = comment(i, j); - break; - } - } - - matcher.clean(); - - if (open) { - var outerRange = null; - var innerRange = null; - - if (close) { - outerRange = range.create2(open.range.start, close.range.end); - innerRange = range.create2(open.range.end, close.range.start); - } else { - outerRange = innerRange = range.create2(open.range.start, open.range.end); - } - - if (open.type == 'comment') { - // adjust positions of inner range for comment - var _c = outerRange.substring(text); - innerRange.start += _c.length - _c.replace(/^<\!--\s*/, '').length; - innerRange.end -= _c.length - _c.replace(/\s*-->$/, '').length; - } - - return { - open: open, - close: close, - type: open.type == 'comment' ? 'comment' : 'tag', - innerRange: innerRange, - innerContent: function () { - return this.innerRange.substring(text); - }, - outerRange: outerRange, - outerContent: function () { - return this.outerRange.substring(text); - }, - range: !innerRange.length() || !innerRange.cmp(pos, 'lte', 'gte') ? outerRange : innerRange, - content: function () { - return this.range.substring(text); - }, - source: text - }; - } - }, - - /** - * The same as find() method, but restricts matched result - * to tag type - * @param {String} text - * @param {Number} pos - * @returns {Object} - */ - tag: function (text, pos) { - var result = this.find(text, pos); - if (result && result.type == 'tag') { - return result; - } - } - }; - }); - }, { "./range": "assets\\range.js" }], "assets\\logger.js": [function (require, module, exports) { - /** - * Simple logger for Emmet - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - return { - log: function () { - if (typeof console != 'undefined' && console.log) { - console.log.apply(console, arguments); - } - } - } - }) - }, {}], "assets\\preferences.js": [function (require, module, exports) { - /** - * Common module's preferences storage. This module - * provides general storage for all module preferences, their description and - * default values.

      - * - * This module can also be used to list all available properties to create - * UI for updating properties - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - - var preferences = {}; - var defaults = {}; - var _dbgDefaults = null; - var _dbgPreferences = null; - - function toBoolean(val) { - if (typeof val === 'string') { - val = val.toLowerCase(); - return val == 'yes' || val == 'true' || val == '1'; - } - - return !!val; - } - - function isValueObj(obj) { - return typeof obj === 'object' - && !Array.isArray(obj) - && 'value' in obj - && Object.keys(obj).length < 3; - } - - return { - /** - * Creates new preference item with default value - * @param {String} name Preference name. You can also pass object - * with many options - * @param {Object} value Preference default value - * @param {String} description Item textual description - * @memberOf preferences - */ - define: function (name, value, description) { - var prefs = name; - if (typeof name === 'string') { - prefs = {}; - prefs[name] = { - value: value, - description: description - }; - } - - Object.keys(prefs).forEach(function (k) { - var v = prefs[k]; - defaults[k] = isValueObj(v) ? v : { value: v }; - }); - }, - - /** - * Updates preference item value. Preference value should be defined - * first with define method. - * @param {String} name Preference name. You can also pass object - * with many options - * @param {Object} value Preference default value - * @memberOf preferences - */ - set: function (name, value) { - var prefs = name; - if (typeof name === 'string') { - prefs = {}; - prefs[name] = value; - } - - Object.keys(prefs).forEach(function (k) { - var v = prefs[k]; - if (!(k in defaults)) { - throw new Error('Property "' + k + '" is not defined. You should define it first with `define` method of current module'); - } - - // do not set value if it equals to default value - if (v !== defaults[k].value) { - // make sure we have value of correct type - switch (typeof defaults[k].value) { - case 'boolean': - v = toBoolean(v); - break; - case 'number': - v = parseInt(v + '', 10) || 0; - break; - default: // convert to string - if (v !== null) { - v += ''; - } - } - - preferences[k] = v; - } else if (k in preferences) { - delete preferences[k]; - } - }); - }, - - /** - * Returns preference value - * @param {String} name - * @returns {String} Returns undefined if preference is - * not defined - */ - get: function (name) { - if (name in preferences) { - return preferences[name]; - } - - if (name in defaults) { - return defaults[name].value; - } - - return void 0; - }, - - /** - * Returns comma-separated preference value as array of values - * @param {String} name - * @returns {Array} Returns undefined if preference is - * not defined, null if string cannot be converted to array - */ - getArray: function (name) { - var val = this.get(name); - if (typeof val === 'undefined' || val === null || val === '') { - return null; - } - - val = val.split(',').map(utils.trim); - if (!val.length) { - return null; - } - - return val; - }, - - /** - * Returns comma and colon-separated preference value as dictionary - * @param {String} name - * @returns {Object} - */ - getDict: function (name) { - var result = {}; - this.getArray(name).forEach(function (val) { - var parts = val.split(':'); - result[parts[0]] = parts[1]; - }); - - return result; - }, - - /** - * Returns description of preference item - * @param {String} name Preference name - * @returns {Object} - */ - description: function (name) { - return name in defaults ? defaults[name].description : void 0; - }, - - /** - * Completely removes specified preference(s) - * @param {String} name Preference name (or array of names) - */ - remove: function (name) { - if (!Array.isArray(name)) { - name = [name]; - } - - name.forEach(function (key) { - if (key in preferences) { - delete preferences[key]; - } - - if (key in defaults) { - delete defaults[key]; - } - }); - }, - - /** - * Returns sorted list of all available properties - * @returns {Array} - */ - list: function () { - return Object.keys(defaults).sort().map(function (key) { - return { - name: key, - value: this.get(key), - type: typeof defaults[key].value, - description: defaults[key].description - }; - }, this); - }, - - /** - * Loads user-defined preferences from JSON - * @param {Object} json - * @returns - */ - load: function (json) { - Object.keys(json).forEach(function (key) { - this.set(key, json[key]); - }, this); - }, - - /** - * Returns hash of user-modified preferences - * @returns {Object} - */ - exportModified: function () { - return utils.extend({}, preferences); - }, - - /** - * Reset to defaults - * @returns - */ - reset: function () { - preferences = {}; - }, - - /** - * For unit testing: use empty storage - */ - _startTest: function () { - _dbgDefaults = defaults; - _dbgPreferences = preferences; - defaults = {}; - preferences = {}; - }, - - /** - * For unit testing: restore original storage - */ - _stopTest: function () { - defaults = _dbgDefaults; - preferences = _dbgPreferences; - } - }; - }); - }, { "../utils/common": "utils\\common.js" }], "assets\\profile.js": [function (require, module, exports) { - /** - * Output profile module. - * Profile defines how XHTML output data should look like - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - var resources = require('./resources'); - var prefs = require('./preferences'); - - prefs.define('profile.allowCompactBoolean', true, - 'This option can be used to globally disable compact form of boolean ' + - 'attribues (attributes where name and value are equal). With compact' + - 'form enabled, HTML tags can be outputted as <div contenteditable> ' + - 'instead of <div contenteditable="contenteditable">'); - - prefs.define('profile.booleanAttributes', '^contenteditable|seamless|async|autofocus|autoplay|checked|controls|defer|disabled|formnovalidate|hidden|ismap|loop|multiple|muted|novalidate|readonly|required|reversed|selected|typemustmatch$', - 'A regular expression for attributes that should be boolean by default.' + - 'If attribute name matches this expression, you don’t have to write dot ' + - 'after attribute name in Emmet abbreviation to mark it as boolean.'); - - var profiles = {}; - - var defaultProfile = { - tag_case: 'asis', - attr_case: 'asis', - attr_quotes: 'double', - - // Each tag on new line - tag_nl: 'decide', - - // With tag_nl === true, defines if leaf node (e.g. node with no children) - // should have formatted line breaks - tag_nl_leaf: false, - - place_cursor: true, - - // Indent tags - indent: true, - - // How many inline elements should be to force line break - // (set to 0 to disable) - inline_break: 3, - - // Produce compact notation of boolean attribues: - // attributes where name and value are equal. - // With this option enabled, HTML filter will - // produce
      instead of
      - compact_bool: false, - - // Use self-closing style for writing empty elements, e.g.
      or
      - self_closing_tag: 'xhtml', - - // Profile-level output filters, re-defines syntax filters - filters: '', - - // Additional filters applied to abbreviation. - // Unlike "filters", this preference doesn't override default filters - // but add the instead every time given profile is chosen - extraFilters: '' - }; - - /** - * @constructor - * @type OutputProfile - * @param {Object} options - */ - function OutputProfile(options) { - utils.extend(this, defaultProfile, options); - } - - OutputProfile.prototype = { - /** - * Transforms tag name case depending on current profile settings - * @param {String} name String to transform - * @returns {String} - */ - tagName: function (name) { - return stringCase(name, this.tag_case); - }, - - /** - * Transforms attribute name case depending on current profile settings - * @param {String} name String to transform - * @returns {String} - */ - attributeName: function (name) { - return stringCase(name, this.attr_case); - }, - - /** - * Returns quote character for current profile - * @returns {String} - */ - attributeQuote: function () { - return this.attr_quotes == 'single' ? "'" : '"'; - }, - - /** - * Returns self-closing tag symbol for current profile - * @returns {String} - */ - selfClosing: function () { - if (this.self_closing_tag == 'xhtml') - return ' /'; - - if (this.self_closing_tag === true) - return '/'; - - return ''; - }, - - /** - * Returns cursor token based on current profile settings - * @returns {String} - */ - cursor: function () { - return this.place_cursor ? utils.getCaretPlaceholder() : ''; - }, - - /** - * Check if attribute with given name is boolean, - * e.g. written as `contenteditable` instead of - * `contenteditable="contenteditable"` - * @param {String} name Attribute name - * @return {Boolean} - */ - isBoolean: function (name, value) { - if (name == value) { - return true; - } - - var boolAttrs = prefs.get('profile.booleanAttributes'); - if (!value && boolAttrs) { - boolAttrs = new RegExp(boolAttrs, 'i'); - return boolAttrs.test(name); - } - - return false; - }, - - /** - * Check if compact boolean attribute record is - * allowed for current profile - * @return {Boolean} - */ - allowCompactBoolean: function () { - return this.compact_bool && prefs.get('profile.allowCompactBoolean'); - } - }; - - /** - * Helper function that converts string case depending on - * caseValue - * @param {String} str String to transform - * @param {String} caseValue Case value: can be lower, - * upper and leave - * @returns {String} - */ - function stringCase(str, caseValue) { - switch (String(caseValue || '').toLowerCase()) { - case 'lower': - return str.toLowerCase(); - case 'upper': - return str.toUpperCase(); - } - - return str; - } - - /** - * Creates new output profile - * @param {String} name Profile name - * @param {Object} options Profile options - */ - function createProfile(name, options) { - return profiles[name.toLowerCase()] = new OutputProfile(options); - } - - function createDefaultProfiles() { - createProfile('xhtml'); - createProfile('html', { self_closing_tag: false, compact_bool: true }); - createProfile('xml', { self_closing_tag: true, tag_nl: true }); - createProfile('plain', { tag_nl: false, indent: false, place_cursor: false }); - createProfile('line', { tag_nl: false, indent: false, extraFilters: 's' }); - createProfile('css', { tag_nl: true }); - createProfile('css_line', { tag_nl: false }); - } - - createDefaultProfiles(); - - return { - /** - * Creates new output profile and adds it into internal dictionary - * @param {String} name Profile name - * @param {Object} options Profile options - * @memberOf emmet.profile - * @returns {Object} New profile - */ - create: function (name, options) { - if (arguments.length == 2) - return createProfile(name, options); - else - // create profile object only - return new OutputProfile(utils.defaults(name || {}, defaultProfile)); - }, - - /** - * Returns profile by its name. If profile wasn't found, returns - * 'plain' profile - * @param {String} name Profile name. Might be profile itself - * @param {String} syntax. Optional. Current editor syntax. If defined, - * profile is searched in resources first, then in predefined profiles - * @returns {Object} - */ - get: function (name, syntax) { - if (!name && syntax) { - // search in user resources first - var profile = resources.findItem(syntax, 'profile'); - if (profile) { - name = profile; - } - } - - if (!name) { - return profiles.plain; - } - - if (name instanceof OutputProfile) { - return name; - } - - if (typeof name === 'string' && name.toLowerCase() in profiles) { - return profiles[name.toLowerCase()]; - } - - return this.create(name); - }, - - /** - * Deletes profile with specified name - * @param {String} name Profile name - */ - remove: function (name) { - name = (name || '').toLowerCase(); - if (name in profiles) - delete profiles[name]; - }, - - /** - * Resets all user-defined profiles - */ - reset: function () { - profiles = {}; - createDefaultProfiles(); - }, - - /** - * Helper function that converts string case depending on - * caseValue - * @param {String} str String to transform - * @param {String} caseValue Case value: can be lower, - * upper and leave - * @returns {String} - */ - stringCase: stringCase - }; - }); - - }, { "../utils/common": "utils\\common.js", "./preferences": "assets\\preferences.js", "./resources": "assets\\resources.js" }], "assets\\range.js": [function (require, module, exports) { - /** - * Helper module to work with ranges - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - function cmp(a, b, op) { - switch (op) { - case 'eq': - case '==': - return a === b; - case 'lt': - case '<': - return a < b; - case 'lte': - case '<=': - return a <= b; - case 'gt': - case '>': - return a > b; - case 'gte': - case '>=': - return a >= b; - } - } - - - /** - * @type Range - * @constructor - * @param {Object} start - * @param {Number} len - */ - function Range(start, len) { - if (typeof start === 'object' && 'start' in start) { - // create range from object stub - this.start = Math.min(start.start, start.end); - this.end = Math.max(start.start, start.end); - } else if (Array.isArray(start)) { - this.start = start[0]; - this.end = start[1]; - } else { - len = typeof len === 'string' ? len.length : +len; - this.start = start; - this.end = start + len; - } - } - - Range.prototype = { - length: function () { - return Math.abs(this.end - this.start); - }, - - /** - * Returns true if passed range is equals to current one - * @param {Range} range - * @returns {Boolean} - */ - equal: function (range) { - return this.cmp(range, 'eq', 'eq'); - // return this.start === range.start && this.end === range.end; - }, - - /** - * Shifts indexes position with passed delta - * @param {Number} delta - * @returns {Range} range itself - */ - shift: function (delta) { - this.start += delta; - this.end += delta; - return this; - }, - - /** - * Check if two ranges are overlapped - * @param {Range} range - * @returns {Boolean} - */ - overlap: function (range) { - return range.start <= this.end && range.end >= this.start; - }, - - /** - * Finds intersection of two ranges - * @param {Range} range - * @returns {Range} null if ranges does not overlap - */ - intersection: function (range) { - if (this.overlap(range)) { - var start = Math.max(range.start, this.start); - var end = Math.min(range.end, this.end); - return new Range(start, end - start); - } - - return null; - }, - - /** - * Returns the union of the thow ranges. - * @param {Range} range - * @returns {Range} null if ranges are not overlapped - */ - union: function (range) { - if (this.overlap(range)) { - var start = Math.min(range.start, this.start); - var end = Math.max(range.end, this.end); - return new Range(start, end - start); - } - - return null; - }, - - /** - * Returns a Boolean value that indicates whether a specified position - * is in a given range. - * @param {Number} loc - */ - inside: function (loc) { - return this.cmp(loc, 'lte', 'gt'); - // return this.start <= loc && this.end > loc; - }, - - /** - * Returns a Boolean value that indicates whether a specified position - * is in a given range, but not equals bounds. - * @param {Number} loc - */ - contains: function (loc) { - return this.cmp(loc, 'lt', 'gt'); - }, - - /** - * Check if current range completely includes specified one - * @param {Range} r - * @returns {Boolean} - */ - include: function (r) { - return this.cmp(r, 'lte', 'gte'); - // return this.start <= r.start && this.end >= r.end; - }, - - /** - * Low-level comparision method - * @param {Number} loc - * @param {String} left Left comparison operator - * @param {String} right Right comaprison operator - */ - cmp: function (loc, left, right) { - var a, b; - if (loc instanceof Range) { - a = loc.start; - b = loc.end; - } else { - a = b = loc; - } - - return cmp(this.start, a, left || '<=') && cmp(this.end, b, right || '>'); - }, - - /** - * Returns substring of specified str for current range - * @param {String} str - * @returns {String} - */ - substring: function (str) { - return this.length() > 0 - ? str.substring(this.start, this.end) - : ''; - }, - - /** - * Creates copy of current range - * @returns {Range} - */ - clone: function () { - return new Range(this.start, this.length()); - }, - - /** - * @returns {Array} - */ - toArray: function () { - return [this.start, this.end]; - }, - - toString: function () { - return this.valueOf(); - }, - - valueOf: function () { - return '{' + this.start + ', ' + this.length() + '}'; - } - }; - - /** - * Creates new range object instance - * @param {Object} start Range start or array with 'start' and 'end' - * as two first indexes or object with 'start' and 'end' properties - * @param {Number} len Range length or string to produce range from - * @returns {Range} - */ - module.exports = function (start, len) { - if (typeof start == 'undefined' || start === null) - return null; - - if (start instanceof Range) - return start; - - if (typeof start == 'object' && 'start' in start && 'end' in start) { - len = start.end - start.start; - start = start.start; - } - - return new Range(start, len); - }; - - module.exports.create = module.exports; - - module.exports.isRange = function (val) { - return val instanceof Range; - }; - - /** - * Range object factory, the same as this.create() - * but last argument represents end of range, not length - * @returns {Range} - */ - module.exports.create2 = function (start, end) { - if (typeof start === 'number' && typeof end === 'number') { - end -= start; - } - - return this.create(start, end); - }; - - /** - * Helper function that sorts ranges in order as they - * appear in text - * @param {Array} ranges - * @return {Array} - */ - module.exports.sort = function (ranges, reverse) { - ranges = ranges.sort(function (a, b) { - if (a.start === b.start) { - return b.end - a.end; - } - - return a.start - b.start; - }); - - reverse && ranges.reverse(); - return ranges; - }; - - return module.exports; - }); - }, {}], "assets\\resources.js": [function (require, module, exports) { - /** - * Parsed resources (snippets, abbreviations, variables, etc.) for Emmet. - * Contains convenient method to get access for snippets with respect of - * inheritance. Also provides ability to store data in different vocabularies - * ('system' and 'user') for fast and safe resource update - * @author Sergey Chikuyonok (serge.che@gmail.com) - * @link http://chikuyonok.ru - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var handlerList = require('./handlerList'); - var utils = require('../utils/common'); - var elements = require('./elements'); - var logger = require('../assets/logger'); - var stringScore = require('../vendor/stringScore'); - var cssResolver = require('../resolver/css'); - - var VOC_SYSTEM = 'system'; - var VOC_USER = 'user'; - - var cache = {}; - - /** Regular expression for XML tag matching */ - var reTag = /^<(\w+\:?[\w\-]*)((?:\s+[@\!]?[\w\:\-]+\s*=\s*(['"]).*?\3)*)\s*(\/?)>/; - - var systemSettings = {}; - var userSettings = {}; - - /** @type HandlerList List of registered abbreviation resolvers */ - var resolvers = handlerList.create(); - - function each(obj, fn) { - if (!obj) { - return; - } - - Object.keys(obj).forEach(function (key) { - fn(obj[key], key); - }); - } - - /** - * Normalizes caret plceholder in passed text: replaces | character with - * default caret placeholder - * @param {String} text - * @returns {String} - */ - function normalizeCaretPlaceholder(text) { - return utils.replaceUnescapedSymbol(text, '|', utils.getCaretPlaceholder()); - } - - function parseItem(name, value, type) { - value = normalizeCaretPlaceholder(value); - - if (type == 'snippets') { - return elements.create('snippet', value); - } - - if (type == 'abbreviations') { - return parseAbbreviation(name, value); - } - } - - /** - * Parses single abbreviation - * @param {String} key Abbreviation name - * @param {String} value Abbreviation value - * @return {Object} - */ - function parseAbbreviation(key, value) { - key = utils.trim(key); - var m; - if ((m = reTag.exec(value))) { - return elements.create('element', m[1], m[2], m[4] == '/'); - } else { - // assume it's reference to another abbreviation - return elements.create('reference', value); - } - } - - /** - * Normalizes snippet key name for better fuzzy search - * @param {String} str - * @returns {String} - */ - function normalizeName(str) { - return str.replace(/:$/, '').replace(/:/g, '-'); - } - - function expandSnippetsDefinition(snippets) { - var out = {}; - each(snippets, function (val, key) { - var items = key.split('|'); - // do not use iterators for better performance - for (var i = items.length - 1; i >= 0; i--) { - out[items[i]] = val; - } - }); - - return out; - } - - utils.extend(exports, { - /** - * Sets new unparsed data for specified settings vocabulary - * @param {Object} data - * @param {String} type Vocabulary type ('system' or 'user') - * @memberOf resources - */ - setVocabulary: function (data, type) { - cache = {}; - - // sections like "snippets" and "abbreviations" could have - // definitions like `"f|fs": "fieldset"` which is the same as distinct - // "f" and "fs" keys both equals to "fieldset". - // We should parse these definitions first - var voc = {}; - each(data, function (section, syntax) { - var _section = {}; - each(section, function (subsection, name) { - if (name == 'abbreviations' || name == 'snippets') { - subsection = expandSnippetsDefinition(subsection); - } - _section[name] = subsection; - }); - - voc[syntax] = _section; - }); - - - if (type == VOC_SYSTEM) { - systemSettings = voc; - } else { - userSettings = voc; - } - }, - - /** - * Returns resource vocabulary by its name - * @param {String} name Vocabulary name ('system' or 'user') - * @return {Object} - */ - getVocabulary: function (name) { - return name == VOC_SYSTEM ? systemSettings : userSettings; - }, - - /** - * Returns resource (abbreviation, snippet, etc.) matched for passed - * abbreviation - * @param {AbbreviationNode} node - * @param {String} syntax - * @returns {Object} - */ - getMatchedResource: function (node, syntax) { - return resolvers.exec(null, utils.toArray(arguments)) - || this.findSnippet(syntax, node.name()); - }, - - /** - * Returns variable value - * @return {String} - */ - getVariable: function (name) { - return (this.getSection('variables') || {})[name]; - }, - - /** - * Store runtime variable in user storage - * @param {String} name Variable name - * @param {String} value Variable value - */ - setVariable: function (name, value) { - var voc = this.getVocabulary('user') || {}; - if (!('variables' in voc)) - voc.variables = {}; - - voc.variables[name] = value; - this.setVocabulary(voc, 'user'); - }, - - /** - * Check if there are resources for specified syntax - * @param {String} syntax - * @return {Boolean} - */ - hasSyntax: function (syntax) { - return syntax in this.getVocabulary(VOC_USER) - || syntax in this.getVocabulary(VOC_SYSTEM); - }, - - /** - * Registers new abbreviation resolver. - * @param {Function} fn Abbreviation resolver which will receive - * abbreviation as first argument and should return parsed abbreviation - * object if abbreviation has handled successfully, null - * otherwise - * @param {Object} options Options list as described in - * {@link HandlerList#add()} method - */ - addResolver: function (fn, options) { - resolvers.add(fn, options); - }, - - removeResolver: function (fn) { - resolvers.remove(fn); - }, - - /** - * Returns actual section data, merged from both - * system and user data - * @param {String} name Section name (syntax) - * @param {String} ...args Subsections - * @returns - */ - getSection: function (name) { - if (!name) - return null; - - if (!(name in cache)) { - cache[name] = utils.deepMerge({}, systemSettings[name], userSettings[name]); - } - - var data = cache[name], subsections = utils.toArray(arguments, 1), key; - while (data && (key = subsections.shift())) { - if (key in data) { - data = data[key]; - } else { - return null; - } - } - - return data; - }, - - /** - * Recursively searches for a item inside top level sections (syntaxes) - * with respect of `extends` attribute - * @param {String} topSection Top section name (syntax) - * @param {String} subsection Inner section name - * @returns {Object} - */ - findItem: function (topSection, subsection) { - var data = this.getSection(topSection); - while (data) { - if (subsection in data) - return data[subsection]; - - data = this.getSection(data['extends']); - } - }, - - /** - * Recursively searches for a snippet definition inside syntax section. - * Definition is searched inside `snippets` and `abbreviations` - * subsections - * @param {String} syntax Top-level section name (syntax) - * @param {String} name Snippet name - * @returns {Object} - */ - findSnippet: function (syntax, name, memo) { - if (!syntax || !name) - return null; - - memo = memo || []; - - var names = [name]; - // create automatic aliases to properties with colons, - // e.g. pos-a == pos:a - if (~name.indexOf('-')) { - names.push(name.replace(/\-/g, ':')); - } - - var data = this.getSection(syntax), matchedItem = null; - ['snippets', 'abbreviations'].some(function (sectionName) { - var data = this.getSection(syntax, sectionName); - if (data) { - return names.some(function (n) { - if (data[n]) { - return matchedItem = parseItem(n, data[n], sectionName); - } - }); - } - }, this); - - memo.push(syntax); - if (!matchedItem && data['extends'] && !~memo.indexOf(data['extends'])) { - // try to find item in parent syntax section - return this.findSnippet(data['extends'], name, memo); - } - - return matchedItem; - }, - - /** - * Performs fuzzy search of snippet definition - * @param {String} syntax Top-level section name (syntax) - * @param {String} name Snippet name - * @returns - */ - fuzzyFindSnippet: function (syntax, name, minScore) { - var result = this.fuzzyFindMatches(syntax, name, minScore)[0]; - if (result) { - return result.value.parsedValue; - } - }, - - fuzzyFindMatches: function (syntax, name, minScore) { - minScore = minScore || 0.3; - name = normalizeName(name); - var snippets = this.getAllSnippets(syntax); - - return Object.keys(snippets) - .map(function (key) { - var value = snippets[key]; - return { - key: key, - score: stringScore.score(value.nk, name, 0.1), - value: value - }; - }) - .filter(function (item) { - return item.score >= minScore; - }) - .sort(function (a, b) { - return a.score - b.score; - }) - .reverse(); - }, - - /** - * Returns plain dictionary of all available abbreviations and snippets - * for specified syntax with respect of inheritance - * @param {String} syntax - * @returns {Object} - */ - getAllSnippets: function (syntax) { - var cacheKey = 'all-' + syntax; - if (!cache[cacheKey]) { - var stack = [], sectionKey = syntax; - var memo = []; - - do { - var section = this.getSection(sectionKey); - if (!section) - break; - - ['snippets', 'abbreviations'].forEach(function (sectionName) { - var stackItem = {}; - each(section[sectionName] || null, function (v, k) { - stackItem[k] = { - nk: normalizeName(k), - value: v, - parsedValue: parseItem(k, v, sectionName), - type: sectionName - }; - }); - - stack.push(stackItem); - }); - - memo.push(sectionKey); - sectionKey = section['extends']; - } while (sectionKey && !~memo.indexOf(sectionKey)); - - - cache[cacheKey] = utils.extend.apply(utils, stack.reverse()); - } - - return cache[cacheKey]; - }, - - /** - * Returns newline character - * @returns {String} - */ - getNewline: function () { - var nl = this.getVariable('newline'); - return typeof nl === 'string' ? nl : '\n'; - }, - - /** - * Sets new newline character that will be used in output - * @param {String} str - */ - setNewline: function (str) { - this.setVariable('newline', str); - this.setVariable('nl', str); - } - }); - - // XXX add default resolvers - exports.addResolver(cssResolver.resolve.bind(cssResolver)); - - // try to load snippets - // hide it from Require.JS parser - (function (r) { - if (typeof define === 'undefined' || !define.amd) { - try { - exports.setVocabulary(r('../snippets.json'), VOC_SYSTEM); - } catch (e) { } - } - })(require); - - - return exports; - }); - - }, { "../assets/logger": "assets\\logger.js", "../resolver/css": "resolver\\css.js", "../utils/common": "utils\\common.js", "../vendor/stringScore": "vendor\\stringScore.js", "./elements": "assets\\elements.js", "./handlerList": "assets\\handlerList.js" }], "assets\\stringStream.js": [function (require, module, exports) { - /** - * A trimmed version of CodeMirror's StringStream module for string parsing - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - /** - * @type StringStream - * @constructor - * @param {String} string Assuming that bound string should be - * immutable - */ - function StringStream(string) { - this.pos = this.start = 0; - this.string = string; - this._length = string.length; - } - - StringStream.prototype = { - /** - * Returns true only if the stream is at the end of the line. - * @returns {Boolean} - */ - eol: function () { - return this.pos >= this._length; - }, - - /** - * Returns true only if the stream is at the start of the line - * @returns {Boolean} - */ - sol: function () { - return this.pos === 0; - }, - - /** - * Returns the next character in the stream without advancing it. - * Will return undefined at the end of the line. - * @returns {String} - */ - peek: function () { - return this.string.charAt(this.pos); - }, - - /** - * Returns the next character in the stream and advances it. - * Also returns undefined when no more characters are available. - * @returns {String} - */ - next: function () { - if (this.pos < this._length) - return this.string.charAt(this.pos++); - }, - - /** - * match can be a character, a regular expression, or a function that - * takes a character and returns a boolean. If the next character in the - * stream 'matches' the given argument, it is consumed and returned. - * Otherwise, undefined is returned. - * @param {Object} match - * @returns {String} - */ - eat: function (match) { - var ch = this.string.charAt(this.pos), ok; - if (typeof match == "string") - ok = ch == match; - else - ok = ch && (match.test ? match.test(ch) : match(ch)); - - if (ok) { - ++this.pos; - return ch; - } - }, - - /** - * Repeatedly calls eat with the given argument, until it - * fails. Returns true if any characters were eaten. - * @param {Object} match - * @returns {Boolean} - */ - eatWhile: function (match) { - var start = this.pos; - while (this.eat(match)) { } - return this.pos > start; - }, - - /** - * Shortcut for eatWhile when matching white-space. - * @returns {Boolean} - */ - eatSpace: function () { - var start = this.pos; - while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) - ++this.pos; - return this.pos > start; - }, - - /** - * Moves the position to the end of the line. - */ - skipToEnd: function () { - this.pos = this._length; - }, - - /** - * Skips to the next occurrence of the given character, if found on the - * current line (doesn't advance the stream if the character does not - * occur on the line). Returns true if the character was found. - * @param {String} ch - * @returns {Boolean} - */ - skipTo: function (ch) { - var found = this.string.indexOf(ch, this.pos); - if (found > -1) { - this.pos = found; - return true; - } - }, - - /** - * Skips to close character which is pair to open - * character, considering possible pair nesting. This function is used - * to consume pair of characters, like opening and closing braces - * @param {String} open - * @param {String} close - * @returns {Boolean} Returns true if pair was successfully - * consumed - */ - skipToPair: function (open, close, skipString) { - var braceCount = 0, ch; - var pos = this.pos, len = this._length; - while (pos < len) { - ch = this.string.charAt(pos++); - if (ch == open) { - braceCount++; - } else if (ch == close) { - braceCount--; - if (braceCount < 1) { - this.pos = pos; - return true; - } - } else if (skipString && (ch == '"' || ch == "'")) { - this.skipString(ch); - } - } - - return false; - }, - - /** - * A helper function which, in case of either single or - * double quote was found in current position, skips entire - * string (quoted value) - * @return {Boolean} Wether quoted string was skipped - */ - skipQuoted: function (noBackup) { - var ch = this.string.charAt(noBackup ? this.pos : this.pos - 1); - if (ch === '"' || ch === "'") { - if (noBackup) { - this.pos++; - } - return this.skipString(ch); - } - }, - - /** - * A custom function to skip string literal, e.g. a "double-quoted" - * or 'single-quoted' value - * @param {String} quote An opening quote - * @return {Boolean} - */ - skipString: function (quote) { - var pos = this.pos, len = this._length, ch; - while (pos < len) { - ch = this.string.charAt(pos++); - if (ch == '\\') { - continue; - } else if (ch == quote) { - this.pos = pos; - return true; - } - } - - return false; - }, - - /** - * Backs up the stream n characters. Backing it up further than the - * start of the current token will cause things to break, so be careful. - * @param {Number} n - */ - backUp: function (n) { - this.pos -= n; - }, - - /** - * Act like a multi-character eat—if consume is true or - * not given—or a look-ahead that doesn't update the stream position—if - * it is false. pattern can be either a string or a - * regular expression starting with ^. When it is a string, - * caseInsensitive can be set to true to make the match - * case-insensitive. When successfully matching a regular expression, - * the returned value will be the array returned by match, - * in case you need to extract matched groups. - * - * @param {RegExp} pattern - * @param {Boolean} consume - * @param {Boolean} caseInsensitive - * @returns - */ - match: function (pattern, consume, caseInsensitive) { - if (typeof pattern == "string") { - var cased = caseInsensitive - ? function (str) { return str.toLowerCase(); } - : function (str) { return str; }; - - if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) { - if (consume !== false) - this.pos += pattern.length; - return true; - } - } else { - var match = this.string.slice(this.pos).match(pattern); - if (match && consume !== false) - this.pos += match[0].length; - return match; - } - }, - - /** - * Get the string between the start of the current token and the - * current stream position. - * @returns {String} - */ - current: function (backUp) { - return this.string.slice(this.start, this.pos - (backUp ? 1 : 0)); - } - }; - - module.exports = function (string) { - return new StringStream(string); - }; - - /** @deprecated */ - module.exports.create = module.exports; - return module.exports; - }); - }, {}], "assets\\tabStops.js": [function (require, module, exports) { - /** - * Utility module for handling tabstops tokens generated by Emmet's - * "Expand Abbreviation" action. The main extract method will take - * raw text (for example: ${0} some ${1:text}), find all tabstops - * occurrences, replace them with tokens suitable for your editor of choice and - * return object with processed text and list of found tabstops and their ranges. - * For sake of portability (Objective-C/Java) the tabstops list is a plain - * sorted array with plain objects. - * - * Placeholders with the same are meant to be linked in your editor. - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - var stringStream = require('./stringStream'); - var resources = require('./resources'); - - /** - * Global placeholder value, automatically incremented by - * variablesResolver() function - */ - var startPlaceholderNum = 100; - var tabstopIndex = 0; - - var defaultOptions = { - replaceCarets: false, - escape: function (ch) { - return '\\' + ch; - }, - tabstop: function (data) { - return data.token; - }, - variable: function (data) { - return data.token; - } - }; - - return { - /** - * Main function that looks for a tabstops in provided text - * and returns a processed version of text with expanded - * placeholders and list of tabstops found. - * @param {String} text Text to process - * @param {Object} options List of processor options:
      - * - * replaceCarets : Boolean — replace all default - * caret placeholders (like {%::emmet-caret::%}) with ${0:caret}
      - * - * escape : Function — function that handle escaped - * characters (mostly '$'). By default, it returns the character itself - * to be displayed as is in output, but sometimes you will use - * extract method as intermediate solution for further - * processing and want to keep character escaped. Thus, you should override - * escape method to return escaped symbol (e.g. '\\$')
      - * - * tabstop : Function – a tabstop handler. Receives - * a single argument – an object describing token: its position, number - * group, placeholder and token itself. Should return a replacement - * string that will appear in final output - * - * variable : Function – variable handler. Receives - * a single argument – an object describing token: its position, name - * and original token itself. Should return a replacement - * string that will appear in final output - * - * @returns {Object} Object with processed text property - * and array of tabstops found - * @memberOf tabStops - */ - extract: function (text, options) { - // prepare defaults - var placeholders = { carets: '' }; - var marks = []; - - options = utils.extend({}, defaultOptions, options, { - tabstop: function (data) { - var token = data.token; - var ret = ''; - if (data.placeholder == 'cursor') { - marks.push({ - start: data.start, - end: data.start + token.length, - group: 'carets', - value: '' - }); - } else { - // unify placeholder value for single group - if ('placeholder' in data) - placeholders[data.group] = data.placeholder; - - if (data.group in placeholders) - ret = placeholders[data.group]; - - marks.push({ - start: data.start, - end: data.start + token.length, - group: data.group, - value: ret - }); - } - - return token; - } - }); - - if (options.replaceCarets) { - text = text.replace(new RegExp(utils.escapeForRegexp(utils.getCaretPlaceholder()), 'g'), '${0:cursor}'); - } - - // locate tabstops and unify group's placeholders - text = this.processText(text, options); - - // now, replace all tabstops with placeholders - var buf = '', lastIx = 0; - var tabStops = marks.map(function (mark) { - buf += text.substring(lastIx, mark.start); - - var pos = buf.length; - var ph = placeholders[mark.group] || ''; - - buf += ph; - lastIx = mark.end; - - return { - group: mark.group, - start: pos, - end: pos + ph.length - }; - }); - - buf += text.substring(lastIx); - - return { - text: buf, - tabstops: tabStops.sort(function (a, b) { - return a.start - b.start; - }) - }; - }, - - /** - * Text processing routine. Locates escaped characters and tabstops and - * replaces them with values returned by handlers defined in - * options - * @param {String} text - * @param {Object} options See extract method options - * description - * @returns {String} - */ - processText: function (text, options) { - options = utils.extend({}, defaultOptions, options); - - var buf = ''; - /** @type StringStream */ - var stream = stringStream.create(text); - var ch, m, a; - - while ((ch = stream.next())) { - if (ch == '\\' && !stream.eol()) { - // handle escaped character - buf += options.escape(stream.next()); - continue; - } - - a = ch; - - if (ch == '$') { - // looks like a tabstop - stream.start = stream.pos - 1; - - if ((m = stream.match(/^[0-9]+/))) { - // it's $N - a = options.tabstop({ - start: buf.length, - group: stream.current().substr(1), - token: stream.current() - }); - } else if ((m = stream.match(/^\{([a-z_\-][\w\-]*)\}/))) { - // ${variable} - a = options.variable({ - start: buf.length, - name: m[1], - token: stream.current() - }); - } else if ((m = stream.match(/^\{([0-9]+)(:.+?)?\}/, false))) { - // ${N:value} or ${N} placeholder - // parse placeholder, including nested ones - stream.skipToPair('{', '}'); - - var obj = { - start: buf.length, - group: m[1], - token: stream.current() - }; - - var placeholder = obj.token.substring(obj.group.length + 2, obj.token.length - 1); - - if (placeholder) { - obj.placeholder = placeholder.substr(1); - } - - a = options.tabstop(obj); - } - } - - buf += a; - } - - return buf; - }, - - /** - * Upgrades tabstops in output node in order to prevent naming conflicts - * @param {AbbreviationNode} node - * @param {Number} offset Tab index offset - * @returns {Number} Maximum tabstop index in element - */ - upgrade: function (node, offset) { - var maxNum = 0; - var options = { - tabstop: function (data) { - var group = parseInt(data.group, 10); - if (group > maxNum) maxNum = group; - - if (data.placeholder) - return '${' + (group + offset) + ':' + data.placeholder + '}'; - else - return '${' + (group + offset) + '}'; - } - }; - - ['start', 'end', 'content'].forEach(function (p) { - node[p] = this.processText(node[p], options); - }, this); - - return maxNum; - }, - - /** - * Helper function that produces a callback function for - * replaceVariables() method from {@link utils} - * module. This callback will replace variable definitions (like - * ${var_name}) with their value defined in resource module, - * or outputs tabstop with variable name otherwise. - * @param {AbbreviationNode} node Context node - * @returns {Function} - */ - variablesResolver: function (node) { - var placeholderMemo = {}; - return function (str, varName) { - // do not mark `child` variable as placeholder – it‘s a reserved - // variable name - if (varName == 'child') { - return str; - } - - if (varName == 'cursor') { - return utils.getCaretPlaceholder(); - } - - var attr = node.attribute(varName); - if (typeof attr !== 'undefined' && attr !== str) { - return attr; - } - - var varValue = resources.getVariable(varName); - if (varValue) { - return varValue; - } - - // output as placeholder - if (!placeholderMemo[varName]) { - placeholderMemo[varName] = startPlaceholderNum++; - } - - return '${' + placeholderMemo[varName] + ':' + varName + '}'; - }; - }, - - /** - * Replace variables like ${var} in string - * @param {String} str - * @param {Object} vars Variable set (defaults to variables defined in - * snippets.json) or variable resolver (Function) - * @return {String} - */ - replaceVariables: function (str, vars) { - vars = vars || {}; - var resolver = typeof vars === 'function' ? vars : function (str, p1) { - return p1 in vars ? vars[p1] : null; - }; - - return this.processText(str, { - variable: function (data) { - var newValue = resolver(data.token, data.name, data); - if (newValue === null) { - // try to find variable in resources - newValue = resources.getVariable(data.name); - } - - if (newValue === null || typeof newValue === 'undefined') - // nothing found, return token itself - newValue = data.token; - return newValue; - } - }); - }, - - /** - * Resets global tabstop index. When parsed tree is converted to output - * string (AbbreviationNode.toString()), all tabstops - * defined in snippets and elements are upgraded in order to prevent - * naming conflicts of nested. For example, ${1} of a node - * should not be linked with the same placehilder of the child node. - * By default, AbbreviationNode.toString() automatically - * upgrades tabstops of the same index for each node and writes maximum - * tabstop index into the tabstopIndex variable. To keep - * this variable at reasonable value, it is recommended to call - * resetTabstopIndex() method each time you expand variable - * @returns - */ - resetTabstopIndex: function () { - tabstopIndex = 0; - startPlaceholderNum = 100; - }, - - /** - * Output processor for abbreviation parser that will upgrade tabstops - * of parsed node in order to prevent tabstop index conflicts - */ - abbrOutputProcessor: function (text, node, type) { - var maxNum = 0; - var that = this; - - var tsOptions = { - tabstop: function (data) { - var group = parseInt(data.group, 10); - if (group === 0) - return '${0}'; - - if (group > maxNum) maxNum = group; - if (data.placeholder) { - // respect nested placeholders - var ix = group + tabstopIndex; - var placeholder = that.processText(data.placeholder, tsOptions); - return '${' + ix + ':' + placeholder + '}'; - } else { - return '${' + (group + tabstopIndex) + '}'; - } - } - }; - - // upgrade tabstops - text = this.processText(text, tsOptions); - - // resolve variables - text = this.replaceVariables(text, this.variablesResolver(node)); - - tabstopIndex += maxNum + 1; - return text; - } - }; - }); - }, { "../utils/common": "utils\\common.js", "./resources": "assets\\resources.js", "./stringStream": "assets\\stringStream.js" }], "assets\\tokenIterator.js": [function (require, module, exports) { - /** - * Helper class for convenient token iteration - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - /** - * @type TokenIterator - * @param {Array} tokens - * @type TokenIterator - * @constructor - */ - function TokenIterator(tokens) { - /** @type Array */ - this.tokens = tokens; - this._position = 0; - this.reset(); - } - - TokenIterator.prototype = { - next: function () { - if (this.hasNext()) { - var token = this.tokens[++this._i]; - this._position = token.start; - return token; - } else { - this._i = this._il; - } - - return null; - }, - - current: function () { - return this.tokens[this._i]; - }, - - peek: function () { - return this.tokens[this._i + i]; - }, - - position: function () { - return this._position; - }, - - hasNext: function () { - return this._i < this._il - 1; - }, - - reset: function () { - this._i = 0; - this._il = this.tokens.length; - }, - - item: function () { - return this.tokens[this._i]; - }, - - itemNext: function () { - return this.tokens[this._i + 1]; - }, - - itemPrev: function () { - return this.tokens[this._i - 1]; - }, - - nextUntil: function (type, callback) { - var token; - var test = typeof type == 'string' - ? function (t) { return t.type == type; } - : type; - - while ((token = this.next())) { - if (callback) - callback.call(this, token); - if (test.call(this, token)) - break; - } - } - }; - - return { - create: function (tokens) { - return new TokenIterator(tokens); - } - }; - }); - }, {}], "editTree\\base.js": [function (require, module, exports) { - /** - * Abstract implementation of edit tree interface. - * Edit tree is a named container of editable “name-value” child elements, - * parsed from source. This container provides convenient methods - * for editing/adding/removing child elements. All these update actions are - * instantly reflected in the source code with respect of formatting. - *

      - * For example, developer can create an edit tree from CSS rule and add or - * remove properties from it–all changes will be immediately reflected in the - * original source. - *

      - * All classes defined in this module should be extended the same way as in - * Backbone framework: using extend method to create new class and - * initialize method to define custom class constructor. - * - * @example - *
      
      -				* var MyClass = require('editTree/base').EditElement.extend({
      -				*     initialize: function() {
      -				*     // constructor code here
      -				*   }
      -				* });
      -				* 
      -				* var elem = new MyClass(); 
      -				* 
      - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var range = require('../assets/range'); - var utils = require('../utils/common'); - var klass = require('../vendor/klass'); - - /** - * Named container of edited source - * @type EditContainer - * @param {String} source - * @param {Object} options - */ - function EditContainer(source, options) { - this.options = utils.extend({ offset: 0 }, options); - /** - * Source code of edited structure. All changes in the structure are - * immediately reflected into this property - */ - this.source = source; - - /** - * List of all editable children - * @private - */ - this._children = []; - - /** - * Hash of all positions of container - * @private - */ - this._positions = { - name: 0 - }; - - this.initialize.apply(this, arguments); - } - - /** - * The self-propagating extend function for classes. - * @type Function - */ - EditContainer.extend = klass.extend; - - EditContainer.prototype = { - type: 'container', - /** - * Child class constructor - */ - initialize: function () { }, - - /** - * Make position absolute - * @private - * @param {Number} num - * @param {Boolean} isAbsolute - * @returns {Boolean} - */ - _pos: function (num, isAbsolute) { - return num + (isAbsolute ? this.options.offset : 0); - }, - - /** - * Replace substring of tag's source - * @param {String} value - * @param {Number} start - * @param {Number} end - * @private - */ - _updateSource: function (value, start, end) { - // create modification range - var r = range.create(start, typeof end === 'undefined' ? 0 : end - start); - var delta = value.length - r.length(); - - var update = function (obj) { - Object.keys(obj).forEach(function (k) { - if (obj[k] >= r.end) { - obj[k] += delta; - } - }); - }; - - // update affected positions of current container - update(this._positions); - - // update affected positions of children - var recursiveUpdate = function (items) { - items.forEach(function (item) { - update(item._positions); - if (item.type == 'container') { - recursiveUpdate(item.list()); - } - }); - }; - - recursiveUpdate(this.list()); - this.source = utils.replaceSubstring(this.source, value, r); - }, - - - /** - * Adds new attribute - * @param {String} name Property name - * @param {String} value Property value - * @param {Number} pos Position at which to insert new property. By - * default the property is inserted at the end of rule - * @returns {EditElement} Newly created element - */ - add: function (name, value, pos) { - // this is abstract implementation - var item = new EditElement(name, value); - this._children.push(item); - return item; - }, - - /** - * Returns attribute object - * @param {String} name Attribute name or its index - * @returns {EditElement} - */ - get: function (name) { - if (typeof name === 'number') { - return this.list()[name]; - } - - if (typeof name === 'string') { - return utils.find(this.list(), function (prop) { - return prop.name() === name; - }); - } - - return name; - }, - - /** - * Returns all children by name or indexes - * @param {Object} name Element name(s) or indexes (String, - * Array, Number) - * @returns {Array} - */ - getAll: function (name) { - if (!Array.isArray(name)) - name = [name]; - - // split names and indexes - var names = [], indexes = []; - name.forEach(function (item) { - if (typeof item === 'string') { - names.push(item); - } else if (typeof item === 'number') { - indexes.push(item); - } - }); - - return this.list().filter(function (attribute, i) { - return ~indexes.indexOf(i) || ~names.indexOf(attribute.name()); - }); - }, - - /** - * Returns list of all editable child elements - * @returns {Array} - */ - list: function () { - return this._children; - }, - - /** - * Remove child element - * @param {String} name Property name or its index - */ - remove: function (name) { - var element = this.get(name); - if (element) { - this._updateSource('', element.fullRange()); - var ix = this._children.indexOf(element); - if (~ix) { - this._children.splice(ix, 1); - } - } - }, - - /** - * Returns index of editble child in list - * @param {Object} item - * @returns {Number} - */ - indexOf: function (item) { - return this.list().indexOf(this.get(item)); - }, - - /** - * Returns or updates element value. If such element doesn't exists, - * it will be created automatically and added at the end of child list. - * @param {String} name Element name or its index - * @param {String} value New element value - * @returns {String} - */ - value: function (name, value, pos) { - var element = this.get(name); - if (element) - return element.value(value); - - if (typeof value !== 'undefined') { - // no such element — create it - return this.add(name, value, pos); - } - }, - - /** - * Returns all values of child elements found by getAll() - * method - * @param {Object} name Element name(s) or indexes (String, - * Array, Number) - * @returns {Array} - */ - values: function (name) { - return this.getAll(name).map(function (element) { - return element.value(); - }); - }, - - /** - * Sets or gets container name - * @param {String} val New name. If not passed, current - * name is returned - * @return {String} - */ - name: function (val) { - if (typeof val !== 'undefined' && this._name !== (val = String(val))) { - this._updateSource(val, this._positions.name, this._positions.name + this._name.length); - this._name = val; - } - - return this._name; - }, - - /** - * Returns name range object - * @param {Boolean} isAbsolute Return absolute range (with respect of - * rule offset) - * @returns {Range} - */ - nameRange: function (isAbsolute) { - return range.create(this._positions.name + (isAbsolute ? this.options.offset : 0), this.name()); - }, - - /** - * Returns range of current source - * @param {Boolean} isAbsolute - */ - range: function (isAbsolute) { - return range.create(isAbsolute ? this.options.offset : 0, this.valueOf()); - }, - - /** - * Returns element that belongs to specified position - * @param {Number} pos - * @param {Boolean} isAbsolute - * @returns {EditElement} - */ - itemFromPosition: function (pos, isAbsolute) { - return utils.find(this.list(), function (elem) { - return elem.range(isAbsolute).inside(pos); - }); - }, - - /** - * Returns source code of current container - * @returns {String} - */ - toString: function () { - return this.valueOf(); - }, - - valueOf: function () { - return this.source; - } - }; - - /** - * @param {EditContainer} parent - * @param {Object} nameToken - * @param {Object} valueToken - */ - function EditElement(parent, nameToken, valueToken) { - /** @type EditContainer */ - this.parent = parent; - - this._name = nameToken.value; - this._value = valueToken ? valueToken.value : ''; - - this._positions = { - name: nameToken.start, - value: valueToken ? valueToken.start : -1 - }; - - this.initialize.apply(this, arguments); - } - - /** - * The self-propagating extend function for classes. - * @type Function - */ - EditElement.extend = klass.extend; - - EditElement.prototype = { - type: 'element', - - /** - * Child class constructor - */ - initialize: function () { }, - - /** - * Make position absolute - * @private - * @param {Number} num - * @param {Boolean} isAbsolute - * @returns {Boolean} - */ - _pos: function (num, isAbsolute) { - return num + (isAbsolute ? this.parent.options.offset : 0); - }, - - /** - * Sets of gets element value - * @param {String} val New element value. If not passed, current - * value is returned - * @returns {String} - */ - value: function (val) { - if (typeof val !== 'undefined' && this._value !== (val = String(val))) { - this.parent._updateSource(val, this.valueRange()); - this._value = val; - } - - return this._value; - }, - - /** - * Sets of gets element name - * @param {String} val New element name. If not passed, current - * name is returned - * @returns {String} - */ - name: function (val) { - if (typeof val !== 'undefined' && this._name !== (val = String(val))) { - this.parent._updateSource(val, this.nameRange()); - this._name = val; - } - - return this._name; - }, - - /** - * Returns position of element name token - * @param {Boolean} isAbsolute Return absolute position - * @returns {Number} - */ - namePosition: function (isAbsolute) { - return this._pos(this._positions.name, isAbsolute); - }, - - /** - * Returns position of element value token - * @param {Boolean} isAbsolute Return absolute position - * @returns {Number} - */ - valuePosition: function (isAbsolute) { - return this._pos(this._positions.value, isAbsolute); - }, - - /** - * Returns element name - * @param {Boolean} isAbsolute Return absolute range - * @returns {Range} - */ - range: function (isAbsolute) { - return range.create(this.namePosition(isAbsolute), this.valueOf()); - }, - - /** - * Returns full element range, including possible indentation - * @param {Boolean} isAbsolute Return absolute range - * @returns {Range} - */ - fullRange: function (isAbsolute) { - return this.range(isAbsolute); - }, - - /** - * Returns element name range - * @param {Boolean} isAbsolute Return absolute range - * @returns {Range} - */ - nameRange: function (isAbsolute) { - return range.create(this.namePosition(isAbsolute), this.name()); - }, - - /** - * Returns element value range - * @param {Boolean} isAbsolute Return absolute range - * @returns {Range} - */ - valueRange: function (isAbsolute) { - return range.create(this.valuePosition(isAbsolute), this.value()); - }, - - /** - * Returns current element string representation - * @returns {String} - */ - toString: function () { - return this.valueOf(); - }, - - valueOf: function () { - return this.name() + this.value(); - } - }; - - return { - EditContainer: EditContainer, - EditElement: EditElement, - - /** - * Creates token that can be fed to EditElement - * @param {Number} start - * @param {String} value - * @param {String} type - * @returns - */ - createToken: function (start, value, type) { - var obj = { - start: start || 0, - value: value || '', - type: type - }; - - obj.end = obj.start + obj.value.length; - return obj; - } - }; - }); - }, { "../assets/range": "assets\\range.js", "../utils/common": "utils\\common.js", "../vendor/klass": "vendor\\klass.js" }], "editTree\\css.js": [function (require, module, exports) { - /** - * CSS EditTree is a module that can parse a CSS rule into a tree with - * convenient methods for adding, modifying and removing CSS properties. These - * changes can be written back to string with respect of code formatting. - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - var editTree = require('./base'); - var cssParser = require('../parser/css'); - var cssSections = require('../utils/cssSections'); - var range = require('../assets/range'); - var stringStream = require('../assets/stringStream'); - var tokenIterator = require('../assets/tokenIterator'); - - var defaultOptions = { - styleBefore: '\n\t', - styleSeparator: ': ', - offset: 0 - }; - - var reSpaceStart = /^\s+/; - var reSpaceEnd = /\s+$/; - var WHITESPACE_REMOVE_FROM_START = 1; - var WHITESPACE_REMOVE_FROM_END = 2; - - /** - * Modifies given range to remove whitespace from beginning - * and/or from the end - * @param {Range} rng Range to modify - * @param {String} text Text that range belongs to - * @param {Number} mask Mask indicating from which end - * whitespace should be removed - * @return {Range} - */ - function trimWhitespaceInRange(rng, text, mask) { - mask = mask || (WHITESPACE_REMOVE_FROM_START | WHITESPACE_REMOVE_FROM_END); - text = rng.substring(text); - var m; - if ((mask & WHITESPACE_REMOVE_FROM_START) && (m = text.match(reSpaceStart))) { - rng.start += m[0].length; - } - - if ((mask & WHITESPACE_REMOVE_FROM_END) && (m = text.match(reSpaceEnd))) { - rng.end -= m[0].length; - } - - // in case given range is just a whatespace - if (rng.end < rng.start) { - rng.end = rng.start; - } - - return rng; - } - - /** - * Consumes CSS property and value from current token - * iterator state. Offsets iterator pointer into token - * that can be used for next value consmption - * @param {TokenIterator} it - * @param {String} text - * @return {Object} Object with `name` and `value` properties - * ar ranges. Value range can be zero-length. - */ - function consumeSingleProperty(it, text) { - var name, value, end; - var token = it.current(); - - if (!token) { - return null; - } - - // skip whitespace - var ws = { 'white': 1, 'line': 1, 'comment': 1 }; - while ((token = it.current())) { - if (!(token.type in ws)) { - break; - } - it.next(); - } - - if (!it.hasNext()) { - return null; - } - - // consume property name - token = it.current(); - name = range(token.start, token.value); - var isAtProperty = token.value.charAt(0) == '@'; - while (token = it.next()) { - name.end = token.end; - if (token.type == ':' || token.type == 'white') { - name.end = token.start; - it.next(); - if (token.type == ':' || isAtProperty) { - // XXX I really ashame of this hardcode, but I need - // to stop parsing if this is an SCSS mixin call, - // for example: @include border-radius(10px) - break; - } - } else if (token.type == ';' || token.type == 'line') { - // there’s no value, looks like a mixin - // or a special use case: - // user is writing a new property or abbreviation - name.end = token.start; - value = range(token.start, 0); - it.next(); - break; - } - } - - token = it.current(); - if (!value && token) { - if (token.type == 'line') { - lastNewline = token; - } - // consume value - value = range(token.start, token.value); - var lastNewline; - while ((token = it.next())) { - value.end = token.end; - if (token.type == 'line') { - lastNewline = token; - } else if (token.type == '}' || token.type == ';') { - value.end = token.start; - if (token.type == ';') { - end = range(token.start, token.value); - } - it.next(); - break; - } else if (token.type == ':' && lastNewline) { - // A special case: - // user is writing a value before existing - // property, but didn’t inserted closing semi-colon. - // In this case, limit value range to previous - // newline - value.end = lastNewline.start; - it._i = it.tokens.indexOf(lastNewline); - break; - } - } - } - - if (!value) { - value = range(name.end, 0); - } - - return { - name: trimWhitespaceInRange(name, text), - value: trimWhitespaceInRange(value, text, WHITESPACE_REMOVE_FROM_START | (end ? WHITESPACE_REMOVE_FROM_END : 0)), - end: end || range(value.end, 0) - }; - } - - /** - * Finds parts of complex CSS value - * @param {String} str - * @returns {Array} Returns list of Range's - */ - function findParts(str) { - /** @type StringStream */ - var stream = stringStream.create(str); - var ch; - var result = []; - var sep = /[\s\u00a0,;]/; - - var add = function () { - stream.next(); - result.push(range(stream.start, stream.current())); - stream.start = stream.pos; - }; - - // skip whitespace - stream.eatSpace(); - stream.start = stream.pos; - - while ((ch = stream.next())) { - if (ch == '"' || ch == "'") { - stream.next(); - if (!stream.skipTo(ch)) break; - add(); - } else if (ch == '(') { - // function found, may have nested function - stream.backUp(1); - if (!stream.skipToPair('(', ')')) break; - stream.backUp(1); - add(); - } else { - if (sep.test(ch)) { - result.push(range(stream.start, stream.current().length - 1)); - stream.eatWhile(sep); - stream.start = stream.pos; - } - } - } - - add(); - - return utils.unique(result.filter(function (item) { - return !!item.length(); - })); - } - - /** - * Parses CSS properties from given CSS source - * and adds them to CSSEditContainer node - * @param {CSSEditContainer} node - * @param {String} source CSS source - * @param {Number} offset Offset of properties subset from original source - */ - function consumeProperties(node, source, offset) { - var list = extractPropertiesFromSource(source, offset); - - list.forEach(function (property) { - node._children.push(new CSSEditElement(node, - editTree.createToken(property.name.start, property.nameText), - editTree.createToken(property.value.start, property.valueText), - editTree.createToken(property.end.start, property.endText) - )); - }); - } - - /** - * Parses given CSS source and returns list of ranges of located CSS properties. - * Normally, CSS source must contain properties only, it must be, - * for example, a content of CSS selector or text between nested - * CSS sections - * @param {String} source CSS source - * @param {Number} offset Offset of properties subset from original source. - * Used to provide proper ranges of locates items - */ - function extractPropertiesFromSource(source, offset) { - offset = offset || 0; - source = source.replace(reSpaceEnd, ''); - var out = []; - - if (!source) { - return out; - } - - var tokens = cssParser.parse(source); - var it = tokenIterator.create(tokens); - var property; - - while ((property = consumeSingleProperty(it, source))) { - out.push({ - nameText: property.name.substring(source), - name: property.name.shift(offset), - - valueText: property.value.substring(source), - value: property.value.shift(offset), - - endText: property.end.substring(source), - end: property.end.shift(offset) - }); - } - - return out; - } - - /** - * @class - * @extends EditContainer - */ - var CSSEditContainer = editTree.EditContainer.extend({ - initialize: function (source, options) { - utils.extend(this.options, defaultOptions, options); - - if (Array.isArray(source)) { - source = cssParser.toSource(source); - } - - var allRules = cssSections.findAllRules(source); - var currentRule = allRules.shift(); - - // keep top-level rules only since they will - // be parsed by nested CSSEditContainer call - var topLevelRules = []; - allRules.forEach(function (r) { - var isTopLevel = !utils.find(topLevelRules, function (tr) { - return tr.contains(r); - }); - - if (isTopLevel) { - topLevelRules.push(r); - } - }); - - - var selectorRange = range.create2(currentRule.start, currentRule._selectorEnd); - this._name = selectorRange.substring(source); - this._positions.name = selectorRange.start; - this._positions.contentStart = currentRule._contentStart + 1; - - var sectionOffset = currentRule._contentStart + 1; - var sectionEnd = currentRule.end - 1; - - // parse properties between nested rules - // and add nested rules as children - var that = this; - topLevelRules.forEach(function (r) { - consumeProperties(that, source.substring(sectionOffset, r.start), sectionOffset); - var opt = utils.extend({}, that.options, { offset: r.start + that.options.offset }); - // XXX I think I don’t need nested containers here - // They should be handled separately - // that._children.push(new CSSEditContainer(r.substring(source), opt)); - sectionOffset = r.end; - }); - - // consume the rest of data - consumeProperties(this, source.substring(sectionOffset, currentRule.end - 1), sectionOffset); - this._saveStyle(); - }, - - /** - * Remembers all styles of properties - * @private - */ - _saveStyle: function () { - var start = this._positions.contentStart; - var source = this.source; - - this.list().forEach(function (p) { - if (p.type === 'container') { - return; - } - - p.styleBefore = source.substring(start, p.namePosition()); - // a small hack here: - // Sometimes users add empty lines before properties to logically - // separate groups of properties. In this case, a blind copy of - // characters between rules may lead to undesired behavior, - // especially when current rule is duplicated or used as a donor - // to create new rule. - // To solve this issue, we‘ll take only last newline indentation - var lines = utils.splitByLines(p.styleBefore); - if (lines.length > 1) { - p.styleBefore = '\n' + lines[lines.length - 1]; - } - - p.styleSeparator = source.substring(p.nameRange().end, p.valuePosition()); - - // graceful and naive comments removal - var parts = p.styleBefore.split('*/'); - p.styleBefore = parts[parts.length - 1]; - p.styleSeparator = p.styleSeparator.replace(/\/\*.*?\*\//g, ''); - - start = p.range().end; - }); - }, - - /** - * Returns position of element name token - * @param {Boolean} isAbsolute Return absolute position - * @returns {Number} - */ - namePosition: function (isAbsolute) { - return this._pos(this._positions.name, isAbsolute); - }, - - /** - * Returns position of element value token - * @param {Boolean} isAbsolute Return absolute position - * @returns {Number} - */ - valuePosition: function (isAbsolute) { - return this._pos(this._positions.contentStart, isAbsolute); - }, - - /** - * Returns element value range - * @param {Boolean} isAbsolute Return absolute range - * @returns {Range} - */ - valueRange: function (isAbsolute) { - return range.create2(this.valuePosition(isAbsolute), this._pos(this.valueOf().length, isAbsolute) - 1); - }, - - /** - * Adds new CSS property - * @param {String} name Property name - * @param {String} value Property value - * @param {Number} pos Position at which to insert new property. By - * default the property is inserted at the end of rule - * @returns {CSSEditProperty} - */ - add: function (name, value, pos) { - var list = this.list(); - var start = this._positions.contentStart; - var styles = utils.pick(this.options, 'styleBefore', 'styleSeparator'); - - if (typeof pos === 'undefined') { - pos = list.length; - } - - /** @type CSSEditProperty */ - var donor = list[pos]; - if (donor) { - start = donor.fullRange().start; - } else if ((donor = list[pos - 1])) { - // make sure that donor has terminating semicolon - donor.end(';'); - start = donor.range().end; - } - - if (donor) { - styles = utils.pick(donor, 'styleBefore', 'styleSeparator'); - } - - var nameToken = editTree.createToken(start + styles.styleBefore.length, name); - var valueToken = editTree.createToken(nameToken.end + styles.styleSeparator.length, value); - - var property = new CSSEditElement(this, nameToken, valueToken, - editTree.createToken(valueToken.end, ';')); - - utils.extend(property, styles); - - // write new property into the source - this._updateSource(property.styleBefore + property.toString(), start); - - // insert new property - this._children.splice(pos, 0, property); - return property; - } - }); - - /** - * @class - * @type CSSEditElement - * @constructor - */ - var CSSEditElement = editTree.EditElement.extend({ - initialize: function (rule, name, value, end) { - this.styleBefore = rule.options.styleBefore; - this.styleSeparator = rule.options.styleSeparator; - - this._end = end.value; - this._positions.end = end.start; - }, - - /** - * Returns ranges of complex value parts - * @returns {Array} Returns null if value is not complex - */ - valueParts: function (isAbsolute) { - var parts = findParts(this.value()); - if (isAbsolute) { - var offset = this.valuePosition(true); - parts.forEach(function (p) { - p.shift(offset); - }); - } - - return parts; - }, - - /** - * Sets of gets element value. - * When setting value, this implementation will ensure that your have - * proper name-value separator - * @param {String} val New element value. If not passed, current - * value is returned - * @returns {String} - */ - value: function (val) { - var isUpdating = typeof val !== 'undefined'; - var allItems = this.parent.list(); - if (isUpdating && this.isIncomplete()) { - var self = this; - var donor = utils.find(allItems, function (item) { - return item !== self && !item.isIncomplete(); - }); - - this.styleSeparator = donor - ? donor.styleSeparator - : this.parent.options.styleSeparator; - this.parent._updateSource(this.styleSeparator, range(this.valueRange().start, 0)); - } - - var value = this.constructor.__super__.value.apply(this, arguments); - if (isUpdating) { - // make sure current property has terminating semi-colon - // if it’s not the last one - var ix = allItems.indexOf(this); - if (ix !== allItems.length - 1 && !this.end()) { - this.end(';'); - } - } - return value; - }, - - /** - * Test if current element is incomplete, e.g. has no explicit - * name-value separator - * @return {Boolean} [description] - */ - isIncomplete: function () { - return this.nameRange().end === this.valueRange().start; - }, - - /** - * Sets of gets property end value (basically, it's a semicolon) - * @param {String} val New end value. If not passed, current - * value is returned - */ - end: function (val) { - if (typeof val !== 'undefined' && this._end !== val) { - this.parent._updateSource(val, this._positions.end, this._positions.end + this._end.length); - this._end = val; - } - - return this._end; - }, - - /** - * Returns full rule range, with indentation - * @param {Boolean} isAbsolute Return absolute range (with respect of - * rule offset) - * @returns {Range} - */ - fullRange: function (isAbsolute) { - var r = this.range(isAbsolute); - r.start -= this.styleBefore.length; - return r; - }, - - /** - * Returns item string representation - * @returns {String} - */ - valueOf: function () { - return this.name() + this.styleSeparator + this.value() + this.end(); - } - }); - - return { - /** - * Parses CSS rule into editable tree - * @param {String} source - * @param {Object} options - * @memberOf emmet.cssEditTree - * @returns {EditContainer} - */ - parse: function (source, options) { - return new CSSEditContainer(source, options); - }, - - /** - * Extract and parse CSS rule from specified position in content - * @param {String} content CSS source code - * @param {Number} pos Character position where to start source code extraction - * @returns {EditContainer} - */ - parseFromPosition: function (content, pos, isBackward) { - var bounds = cssSections.locateRule(content, pos, isBackward); - if (!bounds || !bounds.inside(pos)) { - // no matching CSS rule or caret outside rule bounds - return null; - } - - return this.parse(bounds.substring(content), { - offset: bounds.start - }); - }, - - /** - * Locates CSS property in given CSS code fragment under specified character position - * @param {String} css CSS code or parsed CSSEditContainer - * @param {Number} pos Character position where to search CSS property - * @return {CSSEditElement} - */ - propertyFromPosition: function (css, pos) { - var cssProp = null; - /** @type EditContainer */ - var cssRule = typeof css === 'string' ? this.parseFromPosition(css, pos, true) : css; - if (cssRule) { - cssProp = cssRule.itemFromPosition(pos, true); - if (!cssProp) { - // in case user just started writing CSS property - // and didn't include semicolon–try another approach - cssProp = utils.find(cssRule.list(), function (elem) { - return elem.range(true).end == pos; - }); - } - } - - return cssProp; - }, - - /** - * Removes vendor prefix from CSS property - * @param {String} name CSS property - * @return {String} - */ - baseName: function (name) { - return name.replace(/^\s*\-\w+\-/, ''); - }, - - /** - * Finds parts of complex CSS value - * @param {String} str - * @returns {Array} - */ - findParts: findParts, - - extractPropertiesFromSource: extractPropertiesFromSource - }; - }); - }, { "../assets/range": "assets\\range.js", "../assets/stringStream": "assets\\stringStream.js", "../assets/tokenIterator": "assets\\tokenIterator.js", "../parser/css": "parser\\css.js", "../utils/common": "utils\\common.js", "../utils/cssSections": "utils\\cssSections.js", "./base": "editTree\\base.js" }], "editTree\\xml.js": [function (require, module, exports) { - /** - * XML EditTree is a module that can parse an XML/HTML element into a tree with - * convenient methods for adding, modifying and removing attributes. These - * changes can be written back to string with respect of code formatting. - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var editTree = require('./base'); - var xmlParser = require('../parser/xml'); - var range = require('../assets/range'); - var utils = require('../utils/common'); - - var defaultOptions = { - styleBefore: ' ', - styleSeparator: '=', - styleQuote: '"', - offset: 0 - }; - - var startTag = /^<([\w\:\-]+)((?:\s+[\w\-:]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/m; - - var XMLEditContainer = editTree.EditContainer.extend({ - initialize: function (source, options) { - utils.defaults(this.options, defaultOptions); - this._positions.name = 1; - - var attrToken = null; - var tokens = xmlParser.parse(source); - - tokens.forEach(function (token) { - token.value = range.create(token).substring(source); - switch (token.type) { - case 'tag': - if (/^<[^\/]+/.test(token.value)) { - this._name = token.value.substring(1); - } - break; - - case 'attribute': - // add empty attribute - if (attrToken) { - this._children.push(new XMLEditElement(this, attrToken)); - } - - attrToken = token; - break; - - case 'string': - this._children.push(new XMLEditElement(this, attrToken, token)); - attrToken = null; - break; - } - }, this); - - if (attrToken) { - this._children.push(new XMLEditElement(this, attrToken)); - } - - this._saveStyle(); - }, - - /** - * Remembers all styles of properties - * @private - */ - _saveStyle: function () { - var start = this.nameRange().end; - var source = this.source; - - this.list().forEach(function (p) { - p.styleBefore = source.substring(start, p.namePosition()); - - if (p.valuePosition() !== -1) { - p.styleSeparator = source.substring(p.namePosition() + p.name().length, p.valuePosition() - p.styleQuote.length); - } - - start = p.range().end; - }); - }, - - /** - * Adds new attribute - * @param {String} name Property name - * @param {String} value Property value - * @param {Number} pos Position at which to insert new property. By - * default the property is inserted at the end of rule - */ - add: function (name, value, pos) { - var list = this.list(); - var start = this.nameRange().end; - var styles = utils.pick(this.options, 'styleBefore', 'styleSeparator', 'styleQuote'); - - if (typeof pos === 'undefined') { - pos = list.length; - } - - - /** @type XMLEditAttribute */ - var donor = list[pos]; - if (donor) { - start = donor.fullRange().start; - } else if ((donor = list[pos - 1])) { - start = donor.range().end; - } - - if (donor) { - styles = utils.pick(donor, 'styleBefore', 'styleSeparator', 'styleQuote'); - } - - value = styles.styleQuote + value + styles.styleQuote; - - var attribute = new XMLEditElement(this, - editTree.createToken(start + styles.styleBefore.length, name), - editTree.createToken(start + styles.styleBefore.length + name.length - + styles.styleSeparator.length, value) - ); - - utils.extend(attribute, styles); - - // write new attribute into the source - this._updateSource(attribute.styleBefore + attribute.toString(), start); - - // insert new attribute - this._children.splice(pos, 0, attribute); - return attribute; - }, - - /** - * A special case of attribute editing: adds class value to existing - * `class` attribute - * @param {String} value - */ - addClass: function (value) { - var attr = this.get('class'); - value = utils.trim(value); - if (!attr) { - return this.add('class', value); - } - - var classVal = attr.value(); - var classList = ' ' + classVal.replace(/\n/g, ' ') + ' '; - if (!~classList.indexOf(' ' + value + ' ')) { - attr.value(classVal + ' ' + value); - } - }, - - /** - * A special case of attribute editing: removes class value from existing - * `class` attribute - * @param {String} value - */ - removeClass: function (value) { - var attr = this.get('class'); - value = utils.trim(value); - if (!attr) { - return; - } - - var reClass = new RegExp('(^|\\s+)' + utils.escapeForRegexp(value)); - var classVal = attr.value().replace(reClass, ''); - if (!utils.trim(classVal)) { - this.remove('class'); - } else { - attr.value(classVal); - } - } - }); - - var XMLEditElement = editTree.EditElement.extend({ - initialize: function (parent, nameToken, valueToken) { - this.styleBefore = parent.options.styleBefore; - this.styleSeparator = parent.options.styleSeparator; - - var value = '', quote = parent.options.styleQuote; - if (valueToken) { - value = valueToken.value; - quote = value.charAt(0); - if (quote == '"' || quote == "'") { - value = value.substring(1); - } else { - quote = ''; - } - - if (quote && value.charAt(value.length - 1) == quote) { - value = value.substring(0, value.length - 1); - } - } - - this.styleQuote = quote; - - this._value = value; - this._positions.value = valueToken ? valueToken.start + quote.length : -1; - }, - - /** - * Returns full rule range, with indentation - * @param {Boolean} isAbsolute Return absolute range (with respect of - * rule offset) - * @returns {Range} - */ - fullRange: function (isAbsolute) { - var r = this.range(isAbsolute); - r.start -= this.styleBefore.length; - return r; - }, - - valueOf: function () { - return this.name() + this.styleSeparator - + this.styleQuote + this.value() + this.styleQuote; - } - }); - - return { - /** - * Parses HTML element into editable tree - * @param {String} source - * @param {Object} options - * @memberOf emmet.htmlEditTree - * @returns {EditContainer} - */ - parse: function (source, options) { - return new XMLEditContainer(source, options); - }, - - /** - * Extract and parse HTML from specified position in content - * @param {String} content CSS source code - * @param {Number} pos Character position where to start source code extraction - * @returns {XMLEditElement} - */ - parseFromPosition: function (content, pos, isBackward) { - var bounds = this.extractTag(content, pos, isBackward); - if (!bounds || !bounds.inside(pos)) - // no matching HTML tag or caret outside tag bounds - return null; - - return this.parse(bounds.substring(content), { - offset: bounds.start - }); - }, - - /** - * Extracts nearest HTML tag range from content, starting at - * pos position - * @param {String} content - * @param {Number} pos - * @param {Boolean} isBackward - * @returns {Range} - */ - extractTag: function (content, pos, isBackward) { - var len = content.length, i; - - // max extraction length. I don't think there may be tags larger - // than 2000 characters length - var maxLen = Math.min(2000, len); - - /** @type Range */ - var r = null; - - var match = function (pos) { - var m; - if (content.charAt(pos) == '<' && (m = content.substr(pos, maxLen).match(startTag))) - return range.create(pos, m[0]); - }; - - // lookup backward, in case we are inside tag already - for (i = pos; i >= 0; i--) { - if ((r = match(i))) break; - } - - if (r && (r.inside(pos) || isBackward)) - return r; - - if (!r && isBackward) - return null; - - // search forward - for (i = pos; i < len; i++) { - if ((r = match(i))) - return r; - } - } - }; - }); - }, { "../assets/range": "assets\\range.js", "../parser/xml": "parser\\xml.js", "../utils/common": "utils\\common.js", "./base": "editTree\\base.js" }], "filter\\bem.js": [function (require, module, exports) { - /** - * Filter for aiding of writing elements with complex class names as described - * in Yandex's BEM (Block, Element, Modifier) methodology. This filter will - * automatically inherit block and element names from parent elements and insert - * them into child element classes - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var htmlFilter = require('./html'); - var prefs = require('../assets/preferences'); - var abbreviationUtils = require('../utils/abbreviation'); - var utils = require('../utils/common'); - - prefs.define('bem.elementSeparator', '__', 'Class name’s element separator.'); - prefs.define('bem.modifierSeparator', '_', 'Class name’s modifier separator.'); - prefs.define('bem.shortElementPrefix', '-', - 'Symbol for describing short “block-element” notation. Class names ' - + 'prefixed with this symbol will be treated as element name for parent‘s ' - + 'block name. Each symbol instance traverses one level up in parsed ' - + 'tree for block name lookup. Empty value will disable short notation.'); - - var shouldRunHtmlFilter = false; - - function getSeparators() { - return { - element: prefs.get('bem.elementSeparator'), - modifier: prefs.get('bem.modifierSeparator') - }; - } - - /** - * @param {AbbreviationNode} item - */ - function bemParse(item) { - if (abbreviationUtils.isSnippet(item)) - return item; - - // save BEM stuff in cache for faster lookups - item.__bem = { - block: '', - element: '', - modifier: '' - }; - - var classNames = normalizeClassName(item.attribute('class')).split(' '); - - // guess best match for block name - var reBlockName = /^[a-z]\-/i; - item.__bem.block = utils.find(classNames, function (name) { - return reBlockName.test(name); - }); - - // guessing doesn't worked, pick first class name as block name - if (!item.__bem.block) { - reBlockName = /^[a-z]/i; - item.__bem.block = utils.find(classNames, function (name) { - return reBlockName.test(name); - }) || ''; - } - - classNames = classNames.map(function (name) { - return processClassName(name, item); - }); - - classNames = utils.unique(utils.flatten(classNames)).join(' '); - if (classNames) { - item.attribute('class', classNames); - } - - return item; - } - - /** - * @param {String} className - * @returns {String} - */ - function normalizeClassName(className) { - className = (' ' + (className || '') + ' ').replace(/\s+/g, ' '); - - var shortSymbol = prefs.get('bem.shortElementPrefix'); - if (shortSymbol) { - var re = new RegExp('\\s(' + utils.escapeForRegexp(shortSymbol) + '+)', 'g'); - className = className.replace(re, function (str, p1) { - return ' ' + utils.repeatString(getSeparators().element, p1.length); - }); - } - - return utils.trim(className); - } - - /** - * Processes class name - * @param {String} name Class name item to process - * @param {AbbreviationNode} item Host node for provided class name - * @returns Processed class name. May return Array of - * class names - */ - function processClassName(name, item) { - name = transformClassName(name, item, 'element'); - name = transformClassName(name, item, 'modifier'); - - // expand class name - // possible values: - // * block__element - // * block__element_modifier - // * block__element_modifier1_modifier2 - // * block_modifier - var block = '', element = '', modifier = ''; - var separators = getSeparators(); - if (~name.indexOf(separators.element)) { - var elements = name.split(separators.element); - block = elements.shift(); - - var modifiers = elements.pop().split(separators.modifier); - elements.push(modifiers.shift()); - element = elements.join(separators.element); - modifier = modifiers.join(separators.modifier); - } else if (~name.indexOf(separators.modifier)) { - var blockModifiers = name.split(separators.modifier); - - block = blockModifiers.shift(); - modifier = blockModifiers.join(separators.modifier); - } - - if (block || element || modifier) { - if (!block) { - block = item.__bem.block; - } - - // inherit parent bem element, if exists - // if (item.parent && item.parent.__bem && item.parent.__bem.element) - // element = item.parent.__bem.element + separators.element + element; - - // produce multiple classes - var prefix = block; - var result = []; - - if (element) { - prefix += separators.element + element; - result.push(prefix); - } else { - result.push(prefix); - } - - if (modifier) { - result.push(prefix + separators.modifier + modifier); - } - - if (!item.__bem.block || modifier) { - item.__bem.block = block; - } - - item.__bem.element = element; - item.__bem.modifier = modifier; - - return result; - } - - // ...otherwise, return processed or original class name - return name; - } - - /** - * Low-level function to transform user-typed class name into full BEM class - * @param {String} name Class name item to process - * @param {AbbreviationNode} item Host node for provided class name - * @param {String} entityType Type of entity to be tried to transform - * ('element' or 'modifier') - * @returns {String} Processed class name or original one if it can't be - * transformed - */ - function transformClassName(name, item, entityType) { - var separators = getSeparators(); - var reSep = new RegExp('^(' + separators[entityType] + ')+', 'g'); - if (reSep.test(name)) { - var depth = 0; // parent lookup depth - var cleanName = name.replace(reSep, function (str) { - depth = str.length / separators[entityType].length; - return ''; - }); - - // find donor element - var donor = item; - while (donor.parent && depth--) { - donor = donor.parent; - } - - if (!donor || !donor.__bem) - donor = item; - - if (donor && donor.__bem) { - var prefix = donor.__bem.block; - - // decide if we should inherit element name - // if (entityType == 'element') { - // var curElem = cleanName.split(separators.modifier, 1)[0]; - // if (donor.__bem.element && donor.__bem.element != curElem) - // prefix += separators.element + donor.__bem.element; - // } - - if (entityType == 'modifier' && donor.__bem.element) - prefix += separators.element + donor.__bem.element; - - return prefix + separators[entityType] + cleanName; - } - } - - return name; - } - - /** - * Recursive function for processing tags, which extends class names - * according to BEM specs: http://bem.github.com/bem-method/pages/beginning/beginning.ru.html - *

      - * It does several things:
      - *
        - *
      • Expands complex class name (according to BEM symbol semantics): - * .block__elem_modifier → .block.block__elem.block__elem_modifier - *
      • - *
      • Inherits block name on child elements: - * .b-block > .__el > .__el → .b-block > .b-block__el > .b-block__el__el - *
      • - *
      • Treats first dash symbol as '__'
      • - *
      • Double underscore (or typographic '–') is also treated as an element - * level lookup, e.g. ____el will search for element definition in parent’s - * parent element: - * .b-block > .__el1 > .____el2 → .b-block > .b-block__el1 > .b-block__el2 - *
      • - *
      - * - * @param {AbbreviationNode} tree - * @param {Object} profile - */ - function process(tree, profile) { - if (tree.name) { - bemParse(tree, profile); - } - - tree.children.forEach(function (item) { - process(item, profile); - if (!abbreviationUtils.isSnippet(item) && item.start) { - shouldRunHtmlFilter = true; - } - }); - - return tree; - } - - return function (tree, profile) { - shouldRunHtmlFilter = false; - tree = process(tree, profile); - // in case 'bem' filter is applied after 'html' filter: run it again - // to update output - if (shouldRunHtmlFilter) { - tree = htmlFilter(tree, profile); - } - - return tree; - }; - }); - - }, { "../assets/preferences": "assets\\preferences.js", "../utils/abbreviation": "utils\\abbreviation.js", "../utils/common": "utils\\common.js", "./html": "filter\\html.js" }], "filter\\comment.js": [function (require, module, exports) { - /** - * Comment important tags (with 'id' and 'class' attributes) - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var prefs = require('../assets/preferences'); - var utils = require('../utils/common'); - var template = require('../utils/template'); - var abbrUtils = require('../utils/abbreviation'); - var filterCore = require('./main'); - - prefs.define('filter.commentAfter', - '\n', - 'A definition of comment that should be placed after matched ' - + 'element when comment filter is applied. This definition ' - + 'is an ERB-style template passed to _.template() ' - + 'function (see Underscore.js docs for details). In template context, ' - + 'the following properties and functions are availabe:\n' - + '
        ' - - + '
      • attr(name, before, after) – a function that outputs' - + 'specified attribute value concatenated with before ' - + 'and after strings. If attribute doesn\'t exists, the ' - + 'empty string will be returned.
      • ' - - + '
      • node – current node (instance of AbbreviationNode)
      • ' - - + '
      • name – name of current tag
      • ' - - + '
      • padding – current string padding, can be used ' - + 'for formatting
      • ' - - + '
      '); - - prefs.define('filter.commentBefore', - '', - 'A definition of comment that should be placed before matched ' - + 'element when comment filter is applied. ' - + 'For more info, read description of filter.commentAfter ' - + 'property'); - - prefs.define('filter.commentTrigger', 'id, class', - 'A comma-separated list of attribute names that should exist in abbreviatoin ' - + 'where comment should be added. If you wish to add comment for ' - + 'every element, set this option to *'); - - /** - * Add comments to tag - * @param {AbbreviationNode} node - */ - function addComments(node, templateBefore, templateAfter) { - // check if comments should be added - var trigger = prefs.get('filter.commentTrigger'); - if (trigger != '*') { - var shouldAdd = utils.find(trigger.split(','), function (name) { - return !!node.attribute(utils.trim(name)); - }); - - if (!shouldAdd) { - return; - } - } - - var ctx = { - node: node, - name: node.name(), - padding: node.parent ? node.parent.padding : '', - attr: function (name, before, after) { - var attr = node.attribute(name); - if (attr) { - return (before || '') + attr + (after || ''); - } - - return ''; - } - }; - - var nodeBefore = templateBefore ? templateBefore(ctx) : ''; - var nodeAfter = templateAfter ? templateAfter(ctx) : ''; - - node.start = node.start.replace(//, '>' + nodeAfter); - } - - function process(tree, before, after) { - tree.children.forEach(function (item) { - if (abbrUtils.isBlock(item)) { - addComments(item, before, after); - } - - process(item, before, after); - }); - - return tree; - } - - return function (tree) { - var templateBefore = template(prefs.get('filter.commentBefore')); - var templateAfter = template(prefs.get('filter.commentAfter')); - - return process(tree, templateBefore, templateAfter); - }; - }); - - }, { "../assets/preferences": "assets\\preferences.js", "../utils/abbreviation": "utils\\abbreviation.js", "../utils/common": "utils\\common.js", "../utils/template": "utils\\template.js", "./main": "filter\\main.js" }], "filter\\css.js": [function (require, module, exports) { - /** - * Filter for outputting CSS and alike - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - /** - * Test if passed item is very first child in parsed tree - * @param {AbbreviationNode} item - */ - function isVeryFirstChild(item) { - return item.parent && !item.parent.parent && !item.index(); - } - - return function process(tree, profile, level) { - level = level || 0; - - tree.children.forEach(function (item) { - if (!isVeryFirstChild(item) && profile.tag_nl !== false) { - item.start = '\n' + item.start; - } - process(item, profile, level + 1); - }); - - return tree; - }; - }); - }, {}], "filter\\escape.js": [function (require, module, exports) { - /** - * Filter for escaping unsafe XML characters: <, >, & - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var charMap = { - '<': '<', - '>': '>', - '&': '&' - }; - - function escapeChars(str) { - return str.replace(/([<>&])/g, function (str, p1) { - return charMap[p1]; - }); - } - - return function process(tree) { - tree.children.forEach(function (item) { - item.start = escapeChars(item.start); - item.end = escapeChars(item.end); - item.content = escapeChars(item.content); - process(item); - }); - - return tree; - }; - }); - }, {}], "filter\\format.js": [function (require, module, exports) { - /** - * Generic formatting filter: creates proper indentation for each tree node, - * placing "%s" placeholder where the actual output should be. You can use - * this filter to preformat tree and then replace %s placeholder to whatever you - * need. This filter should't be called directly from editor as a part - * of abbreviation. - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - var abbrUtils = require('../utils/abbreviation'); - var prefs = require('../assets/preferences'); - var resources = require('../assets/resources'); - - prefs.define('format.noIndentTags', 'html', - 'A comma-separated list of tag names that should not get inner indentation.'); - - prefs.define('format.forceIndentationForTags', 'body', - 'A comma-separated list of tag names that should always get inner indentation.'); - - var placeholder = '%s'; - - /** - * Get indentation for given node - * @param {AbbreviationNode} node - * @returns {String} - */ - function getIndentation(node) { - var items = prefs.getArray('format.noIndentTags') || []; - if (~items.indexOf(node.name())) { - return ''; - } - - return '\t'; - } - - /** - * Test if passed node has block-level sibling element - * @param {AbbreviationNode} item - * @return {Boolean} - */ - function hasBlockSibling(item) { - return item.parent && abbrUtils.hasBlockChildren(item.parent); - } - - /** - * Test if passed item is very first child in parsed tree - * @param {AbbreviationNode} item - */ - function isVeryFirstChild(item) { - return item.parent && !item.parent.parent && !item.index(); - } - - /** - * Check if a newline should be added before element - * @param {AbbreviationNode} node - * @param {OutputProfile} profile - * @return {Boolean} - */ - function shouldAddLineBreak(node, profile) { - if (profile.tag_nl === true || abbrUtils.isBlock(node)) - return true; - - if (!node.parent || !profile.inline_break) - return false; - - // check if there are required amount of adjacent inline element - return shouldFormatInline(node.parent, profile); - } - - /** - * Need to add newline because item has too many inline children - * @param {AbbreviationNode} node - * @param {OutputProfile} profile - */ - function shouldBreakChild(node, profile) { - // we need to test only one child element, because - // hasBlockChildren() method will do the rest - return node.children.length && shouldAddLineBreak(node.children[0], profile); - } - - function shouldFormatInline(node, profile) { - var nodeCount = 0; - return !!utils.find(node.children, function (child) { - if (child.isTextNode() || !abbrUtils.isInline(child)) - nodeCount = 0; - else if (abbrUtils.isInline(child)) - nodeCount++; - - if (nodeCount >= profile.inline_break) - return true; - }); - } - - function isRoot(item) { - return !item.parent; - } - - /** - * Processes element with matched resource of type snippet - * @param {AbbreviationNode} item - * @param {OutputProfile} profile - */ - function processSnippet(item, profile) { - item.start = item.end = ''; - if (!isVeryFirstChild(item) && profile.tag_nl !== false && shouldAddLineBreak(item, profile)) { - // check if we’re not inside inline element - if (isRoot(item.parent) || !abbrUtils.isInline(item.parent)) { - item.start = '\n' + item.start; - } - } - - return item; - } - - /** - * Check if we should add line breaks inside inline element - * @param {AbbreviationNode} node - * @param {OutputProfile} profile - * @return {Boolean} - */ - function shouldBreakInsideInline(node, profile) { - var hasBlockElems = node.children.some(function (child) { - if (abbrUtils.isSnippet(child)) - return false; - - return !abbrUtils.isInline(child); - }); - - if (!hasBlockElems) { - return shouldFormatInline(node, profile); - } - - return true; - } - - /** - * Processes element with tag type - * @param {AbbreviationNode} item - * @param {OutputProfile} profile - */ - function processTag(item, profile) { - item.start = item.end = placeholder; - var isUnary = abbrUtils.isUnary(item); - var nl = '\n'; - var indent = getIndentation(item); - - // formatting output - if (profile.tag_nl !== false) { - var forceNl = profile.tag_nl === true && (profile.tag_nl_leaf || item.children.length); - if (!forceNl) { - var forceIndentTags = prefs.getArray('format.forceIndentationForTags') || []; - forceNl = ~forceIndentTags.indexOf(item.name()); - } - - // formatting block-level elements - if (!item.isTextNode()) { - if (shouldAddLineBreak(item, profile)) { - // - do not indent the very first element - // - do not indent first child of a snippet - if (!isVeryFirstChild(item) && (!abbrUtils.isSnippet(item.parent) || item.index())) - item.start = nl + item.start; - - if (abbrUtils.hasBlockChildren(item) || shouldBreakChild(item, profile) || (forceNl && !isUnary)) - item.end = nl + item.end; - - if (abbrUtils.hasTagsInContent(item) || (forceNl && !item.children.length && !isUnary)) - item.start += nl + indent; - } else if (abbrUtils.isInline(item) && hasBlockSibling(item) && !isVeryFirstChild(item)) { - item.start = nl + item.start; - } else if (abbrUtils.isInline(item) && shouldBreakInsideInline(item, profile)) { - item.end = nl + item.end; - } - - item.padding = indent; - } - } - - return item; - } - - /** - * Processes simplified tree, making it suitable for output as HTML structure - * @param {AbbreviationNode} tree - * @param {OutputProfile} profile - * @param {Number} level Depth level - */ - return function process(tree, profile, level) { - level = level || 0; - - tree.children.forEach(function (item) { - if (abbrUtils.isSnippet(item)) { - processSnippet(item, profile, level); - } else { - processTag(item, profile, level); - } - - process(item, profile, level + 1); - }); - - return tree; - }; - }); - }, { "../assets/preferences": "assets\\preferences.js", "../assets/resources": "assets\\resources.js", "../utils/abbreviation": "utils\\abbreviation.js", "../utils/common": "utils\\common.js" }], "filter\\haml.js": [function (require, module, exports) { - /** - * Filter for producing HAML code from abbreviation. - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - var abbrUtils = require('../utils/abbreviation'); - var formatFilter = require('./format'); - - function transformClassName(className) { - return utils.trim(className).replace(/\s+/g, '.'); - } - - /** - * Condenses all "data-" attributes into a single entry. - * HAML allows data attributes to be ouputted as a sub-hash - * of `:data` key - * @param {Array} attrs - * @return {Array} - */ - function condenseDataAttrs(attrs) { - var out = [], data = null; - var reData = /^data-/i; - attrs.forEach(function (attr) { - if (reData.test(attr.name)) { - if (!data) { - data = []; - out.push({ - name: 'data', - value: data - }); - } - - data.push(utils.extend({}, attr, { name: attr.name.replace(reData, '') })); - } else { - out.push(attr); - } - }); - - return out; - } - - function stringifyAttrs(attrs, profile) { - var attrQuote = profile.attributeQuote(); - return '{' + attrs.map(function (attr) { - var value = attrQuote + attr.value + attrQuote; - if (Array.isArray(attr.value)) { - value = stringifyAttrs(attr.value, profile); - } else if (attr.isBoolean) { - value = 'true'; - } - - return ':' + attr.name + ' => ' + value - }).join(', ') + '}'; - } - - /** - * Creates HAML attributes string from tag according to profile settings - * @param {AbbreviationNode} tag - * @param {Object} profile - */ - function makeAttributesString(tag, profile) { - var attrs = ''; - var otherAttrs = []; - var attrQuote = profile.attributeQuote(); - var cursor = profile.cursor(); - - tag.attributeList().forEach(function (a) { - var attrName = profile.attributeName(a.name); - switch (attrName.toLowerCase()) { - // use short notation for ID and CLASS attributes - case 'id': - attrs += '#' + (a.value || cursor); - break; - case 'class': - attrs += '.' + transformClassName(a.value || cursor); - break; - // process other attributes - default: - otherAttrs.push({ - name: attrName, - value: a.value || cursor, - isBoolean: profile.isBoolean(a.name, a.value) - }); - } - }); - - if (otherAttrs.length) { - attrs += stringifyAttrs(condenseDataAttrs(otherAttrs), profile); - } - - return attrs; - } - - /** - * Processes element with tag type - * @param {AbbreviationNode} item - * @param {OutputProfile} profile - */ - function processTag(item, profile) { - if (!item.parent) - // looks like it's root element - return item; - - var attrs = makeAttributesString(item, profile); - var cursor = profile.cursor(); - var isUnary = abbrUtils.isUnary(item); - var selfClosing = profile.self_closing_tag && isUnary ? '/' : ''; - var start = ''; - - // define tag name - var tagName = '%' + profile.tagName(item.name()); - if (tagName.toLowerCase() == '%div' && attrs && attrs.indexOf('{') == -1) - // omit div tag - tagName = ''; - - item.end = ''; - start = tagName + attrs + selfClosing; - if (item.content && !/^\s/.test(item.content)) { - item.content = ' ' + item.content; - } - - var placeholder = '%s'; - // We can't just replace placeholder with new value because - // JavaScript will treat double $ character as a single one, assuming - // we're using RegExp literal. - item.start = utils.replaceSubstring(item.start, start, item.start.indexOf(placeholder), placeholder); - - if (!item.children.length && !isUnary) - item.start += cursor; - - return item; - } - - return function process(tree, profile, level) { - level = level || 0; - - if (!level) { - tree = formatFilter(tree, '_format', profile); - } - - tree.children.forEach(function (item) { - if (!abbrUtils.isSnippet(item)) { - processTag(item, profile, level); - } - - process(item, profile, level + 1); - }); - - return tree; - }; - }); - }, { "../utils/abbreviation": "utils\\abbreviation.js", "../utils/common": "utils\\common.js", "./format": "filter\\format.js" }], "filter\\html.js": [function (require, module, exports) { - /** - * Filter that produces HTML tree - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var abbrUtils = require('../utils/abbreviation'); - var utils = require('../utils/common'); - var tabStops = require('../assets/tabStops'); - var formatFilter = require('./format'); - - /** - * Creates HTML attributes string from tag according to profile settings - * @param {AbbreviationNode} node - * @param {OutputProfile} profile - */ - function makeAttributesString(node, profile) { - var attrQuote = profile.attributeQuote(); - var cursor = profile.cursor(); - - return node.attributeList().map(function (a) { - var isBoolean = profile.isBoolean(a.name, a.value); - var attrName = profile.attributeName(a.name); - var attrValue = isBoolean ? attrName : a.value; - if (isBoolean && profile.allowCompactBoolean()) { - return ' ' + attrName; - } - return ' ' + attrName + '=' + attrQuote + (attrValue || cursor) + attrQuote; - }).join(''); - } - - /** - * Processes element with tag type - * @param {AbbreviationNode} item - * @param {OutputProfile} profile - */ - function processTag(item, profile) { - if (!item.parent) { // looks like it's root element - return item; - } - - var attrs = makeAttributesString(item, profile); - var cursor = profile.cursor(); - var isUnary = abbrUtils.isUnary(item); - var start = ''; - var end = ''; - - // define opening and closing tags - if (!item.isTextNode()) { - var tagName = profile.tagName(item.name()); - if (isUnary) { - start = '<' + tagName + attrs + profile.selfClosing() + '>'; - item.end = ''; - } else { - start = '<' + tagName + attrs + '>'; - end = ''; - } - } - - var placeholder = '%s'; - // We can't just replace placeholder with new value because - // JavaScript will treat double $ character as a single one, assuming - // we're using RegExp literal. - item.start = utils.replaceSubstring(item.start, start, item.start.indexOf(placeholder), placeholder); - item.end = utils.replaceSubstring(item.end, end, item.end.indexOf(placeholder), placeholder); - - // should we put caret placeholder after opening tag? - if ( - !item.children.length - && !isUnary - && !~item.content.indexOf(cursor) - && !tabStops.extract(item.content).tabstops.length - ) { - item.start += cursor; - } - - return item; - } - - return function process(tree, profile, level) { - level = level || 0; - - if (!level) { - tree = formatFilter(tree, profile, level) - } - - tree.children.forEach(function (item) { - if (!abbrUtils.isSnippet(item)) { - processTag(item, profile, level); - } - - process(item, profile, level + 1); - }); - - return tree; - }; - }); - }, { "../assets/tabStops": "assets\\tabStops.js", "../utils/abbreviation": "utils\\abbreviation.js", "../utils/common": "utils\\common.js", "./format": "filter\\format.js" }], "filter\\jade.js": [function (require, module, exports) { - /** - * Filter for producing Jade code from abbreviation. - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - var abbrUtils = require('../utils/abbreviation'); - var formatFilter = require('./format'); - var tabStops = require('../assets/tabStops'); - var profile = require('../assets/profile'); - - var reNl = /[\n\r]/; - var reIndentedText = /^\s*\|/; - var reSpace = /^\s/; - - function transformClassName(className) { - return utils.trim(className).replace(/\s+/g, '.'); - } - - function stringifyAttrs(attrs, profile) { - var attrQuote = profile.attributeQuote(); - return '(' + attrs.map(function (attr) { - if (attr.isBoolean) { - return attr.name; - } - - return attr.name + '=' + attrQuote + attr.value + attrQuote; - }).join(', ') + ')'; - } - - /** - * Creates HAML attributes string from tag according to profile settings - * @param {AbbreviationNode} tag - * @param {Object} profile - */ - function makeAttributesString(tag, profile) { - var attrs = ''; - var otherAttrs = []; - var attrQuote = profile.attributeQuote(); - var cursor = profile.cursor(); - - tag.attributeList().forEach(function (a) { - var attrName = profile.attributeName(a.name); - switch (attrName.toLowerCase()) { - // use short notation for ID and CLASS attributes - case 'id': - attrs += '#' + (a.value || cursor); - break; - case 'class': - attrs += '.' + transformClassName(a.value || cursor); - break; - // process other attributes - default: - otherAttrs.push({ - name: attrName, - value: a.value || cursor, - isBoolean: profile.isBoolean(a.name, a.value) - }); - } - }); - - if (otherAttrs.length) { - attrs += stringifyAttrs(otherAttrs, profile); - } - - return attrs; - } - - function processTagContent(item) { - if (!item.content) { - return; - } - - var content = tabStops.replaceVariables(item.content, function (str, name) { - if (name === 'nl' || name === 'newline') { - return '\n'; - } - return str; - }); - - if (reNl.test(content) && !reIndentedText.test(content)) { - // multiline content: pad it with indentation and pipe - var pad = '| '; - item.content = '\n' + pad + utils.padString(content, pad); - } else if (!reSpace.test(content)) { - item.content = ' ' + content; - } - } - - /** - * Processes element with tag type - * @param {AbbreviationNode} item - * @param {OutputProfile} profile - */ - function processTag(item, profile) { - if (!item.parent) - // looks like it's a root (empty) element - return item; - - var attrs = makeAttributesString(item, profile); - var cursor = profile.cursor(); - var isUnary = abbrUtils.isUnary(item); - - // define tag name - var tagName = profile.tagName(item.name()); - if (tagName.toLowerCase() == 'div' && attrs && attrs.charAt(0) != '(') - // omit div tag - tagName = ''; - - item.end = ''; - var start = tagName + attrs; - processTagContent(item); - - var placeholder = '%s'; - // We can't just replace placeholder with new value because - // JavaScript will treat double $ character as a single one, assuming - // we're using RegExp literal. - item.start = utils.replaceSubstring(item.start, start, item.start.indexOf(placeholder), placeholder); - - if (!item.children.length && !isUnary) - item.start += cursor; - - return item; - } - - return function process(tree, curProfile, level) { - level = level || 0; - - if (!level) { - // always format with `xml` profile since - // Jade requires all tags to be on separate lines - tree = formatFilter(tree, profile.get('xml')); - } - - tree.children.forEach(function (item) { - if (!abbrUtils.isSnippet(item)) { - processTag(item, curProfile, level); - } - - process(item, curProfile, level + 1); - }); - - return tree; - }; - }); - }, { "../assets/profile": "assets\\profile.js", "../assets/tabStops": "assets\\tabStops.js", "../utils/abbreviation": "utils\\abbreviation.js", "../utils/common": "utils\\common.js", "./format": "filter\\format.js" }], "filter\\jsx.js": [function (require, module, exports) { - /** - * A filter for React.js (JSX): - * ranames attributes like `class` and `for` - * for proper representation in JSX - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var attrMap = { - 'class': 'className', - 'for': 'htmlFor' - }; - - return function process(tree) { - tree.children.forEach(function (item) { - item._attributes.forEach(function (attr) { - if (attr.name in attrMap) { - attr.name = attrMap[attr.name] - } - }); - process(item); - }); - - return tree; - }; - }); - }, {}], "filter\\main.js": [function (require, module, exports) { - /** - * Module for handling filters - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - var profile = require('../assets/profile'); - var resources = require('../assets/resources'); - - /** List of registered filters */ - var registeredFilters = { - html: require('./html'), - haml: require('./haml'), - jade: require('./jade'), - jsx: require('./jsx'), - slim: require('./slim'), - xsl: require('./xsl'), - css: require('./css'), - bem: require('./bem'), - c: require('./comment'), - e: require('./escape'), - s: require('./singleLine'), - t: require('./trim') - }; - - /** Filters that will be applied for unknown syntax */ - var basicFilters = 'html'; - - function list(filters) { - if (!filters) - return []; - - if (typeof filters === 'string') { - return filters.split(/[\|,]/g); - } - - return filters; - } - - return { - /** - * Register new filter - * @param {String} name Filter name - * @param {Function} fn Filter function - */ - add: function (name, fn) { - registeredFilters[name] = fn; - }, - - /** - * Apply filters for final output tree - * @param {AbbreviationNode} tree Output tree - * @param {Array} filters List of filters to apply. Might be a - * String - * @param {Object} profile Output profile, defined in profile - * module. Filters defined it profile are not used, profile - * is passed to filter function - * @memberOf emmet.filters - * @returns {AbbreviationNode} - */ - apply: function (tree, filters, profileName) { - profileName = profile.get(profileName); - - list(filters).forEach(function (filter) { - var name = utils.trim(filter.toLowerCase()); - if (name && name in registeredFilters) { - tree = registeredFilters[name](tree, profileName); - } - }); - - return tree; - }, - - /** - * Composes list of filters that should be applied to a tree, based on - * passed data - * @param {String} syntax Syntax name ('html', 'css', etc.) - * @param {Object} profile Output profile - * @param {String} additionalFilters List or pipe-separated - * string of additional filters to apply - * @returns {Array} - */ - composeList: function (syntax, profileName, additionalFilters) { - profileName = profile.get(profileName); - var filters = list(profileName.filters || resources.findItem(syntax, 'filters') || basicFilters); - - if (profileName.extraFilters) { - filters = filters.concat(list(profileName.extraFilters)); - } - - if (additionalFilters) { - filters = filters.concat(list(additionalFilters)); - } - - if (!filters || !filters.length) { - // looks like unknown syntax, apply basic filters - filters = list(basicFilters); - } - - return filters; - }, - - /** - * Extracts filter list from abbreviation - * @param {String} abbr - * @returns {Array} Array with cleaned abbreviation and list of - * extracted filters - */ - extract: function (abbr) { - var filters = ''; - abbr = abbr.replace(/\|([\w\|\-]+)$/, function (str, p1) { - filters = p1; - return ''; - }); - - return [abbr, list(filters)]; - } - }; - }); - }, { "../assets/profile": "assets\\profile.js", "../assets/resources": "assets\\resources.js", "../utils/common": "utils\\common.js", "./bem": "filter\\bem.js", "./comment": "filter\\comment.js", "./css": "filter\\css.js", "./escape": "filter\\escape.js", "./haml": "filter\\haml.js", "./html": "filter\\html.js", "./jade": "filter\\jade.js", "./jsx": "filter\\jsx.js", "./singleLine": "filter\\singleLine.js", "./slim": "filter\\slim.js", "./trim": "filter\\trim.js", "./xsl": "filter\\xsl.js" }], "filter\\singleLine.js": [function (require, module, exports) { - /** - * Output abbreviation on a single line (i.e. no line breaks) - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var abbrUtils = require('../utils/abbreviation'); - var rePad = /^\s+/; - var reNl = /[\n\r]/g; - - return function process(tree) { - tree.children.forEach(function (item) { - if (!abbrUtils.isSnippet(item)) { - // remove padding from item - item.start = item.start.replace(rePad, ''); - item.end = item.end.replace(rePad, ''); - } - - // remove newlines - item.start = item.start.replace(reNl, ''); - item.end = item.end.replace(reNl, ''); - item.content = item.content.replace(reNl, ''); - - process(item); - }); - - return tree; - }; - }); - - }, { "../utils/abbreviation": "utils\\abbreviation.js" }], "filter\\slim.js": [function (require, module, exports) { - /** - * Filter for producing Jade code from abbreviation. - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - var abbrUtils = require('../utils/abbreviation'); - var formatFilter = require('./format'); - var tabStops = require('../assets/tabStops'); - var prefs = require('../assets/preferences'); - var profile = require('../assets/profile'); - - var reNl = /[\n\r]/; - var reIndentedText = /^\s*\|/; - var reSpace = /^\s/; - - prefs.define('slim.attributesWrapper', 'none', - 'Defines how attributes will be wrapped:' + - '
        ' + - '
      • none – no wrapping;
      • ' + - '
      • round — wrap attributes with round braces;
      • ' + - '
      • square — wrap attributes with round braces;
      • ' + - '
      • curly — wrap attributes with curly braces.
      • ' + - '
      '); - - function transformClassName(className) { - return utils.trim(className).replace(/\s+/g, '.'); - } - - function getAttrWrapper() { - var start = ' ', end = ''; - switch (prefs.get('slim.attributesWrapper')) { - case 'round': - start = '('; - end = ')'; - break; - case 'square': - start = '['; - end = ']'; - break; - case 'curly': - start = '{'; - end = '}'; - break; - } - - return { - start: start, - end: end - }; - } - - function stringifyAttrs(attrs, profile) { - var attrQuote = profile.attributeQuote(); - var attrWrap = getAttrWrapper(); - return attrWrap.start + attrs.map(function (attr) { - var value = attrQuote + attr.value + attrQuote; - if (attr.isBoolean) { - if (!attrWrap.end) { - value = 'true'; - } else { - return attr.name; - } - } - - return attr.name + '=' + value; - }).join(' ') + attrWrap.end; - } - - /** - * Creates HAML attributes string from tag according to profile settings - * @param {AbbreviationNode} tag - * @param {Object} profile - */ - function makeAttributesString(tag, profile) { - var attrs = ''; - var otherAttrs = []; - var attrQuote = profile.attributeQuote(); - var cursor = profile.cursor(); - - tag.attributeList().forEach(function (a) { - var attrName = profile.attributeName(a.name); - switch (attrName.toLowerCase()) { - // use short notation for ID and CLASS attributes - case 'id': - attrs += '#' + (a.value || cursor); - break; - case 'class': - attrs += '.' + transformClassName(a.value || cursor); - break; - // process other attributes - default: - otherAttrs.push({ - name: attrName, - value: a.value || cursor, - isBoolean: profile.isBoolean(a.name, a.value) - }); - } - }); - - if (otherAttrs.length) { - attrs += stringifyAttrs(otherAttrs, profile); - } - - return attrs; - } - - function processTagContent(item) { - if (!item.content) { - return; - } - - var content = tabStops.replaceVariables(item.content, function (str, name) { - if (name === 'nl' || name === 'newline') { - return '\n'; - } - return str; - }); - - if (reNl.test(content) && !reIndentedText.test(content)) { - // multiline content: pad it with indentation and pipe - var pad = ' '; - item.content = '\n| ' + utils.padString(content, pad); - } else if (!reSpace.test(content)) { - item.content = ' ' + content; - } - } - - /** - * Processes element with tag type - * @param {AbbreviationNode} item - * @param {OutputProfile} profile - */ - function processTag(item, profile) { - if (!item.parent) - // looks like it's a root (empty) element - return item; - - var attrs = makeAttributesString(item, profile); - var cursor = profile.cursor(); - var isUnary = abbrUtils.isUnary(item); - var selfClosing = profile.self_closing_tag && isUnary ? '/' : ''; - - // define tag name - var tagName = profile.tagName(item.name()); - if (tagName.toLowerCase() == 'div' && attrs && '([{'.indexOf(attrs.charAt(0)) == -1) - // omit div tag - tagName = ''; - - item.end = ''; - var start = tagName + attrs + selfClosing; - processTagContent(item); - - var placeholder = '%s'; - // We can't just replace placeholder with new value because - // JavaScript will treat double $ character as a single one, assuming - // we're using RegExp literal. - item.start = utils.replaceSubstring(item.start, start, item.start.indexOf(placeholder), placeholder); - - if (!item.children.length && !isUnary) - item.start += cursor; - - return item; - } - - return function process(tree, curProfile, level) { - level = level || 0; - - if (!level) { - // always format with `xml` profile since - // Slim requires all tags to be on separate lines - tree = formatFilter(tree, profile.get('xml')); - } - - tree.children.forEach(function (item) { - if (!abbrUtils.isSnippet(item)) { - processTag(item, curProfile, level); - } - - process(item, curProfile, level + 1); - }); - - return tree; - }; - }); - }, { "../assets/preferences": "assets\\preferences.js", "../assets/profile": "assets\\profile.js", "../assets/tabStops": "assets\\tabStops.js", "../utils/abbreviation": "utils\\abbreviation.js", "../utils/common": "utils\\common.js", "./format": "filter\\format.js" }], "filter\\trim.js": [function (require, module, exports) { - /** - * Trim filter: removes characters at the beginning of the text - * content that indicates lists: numbers, #, *, -, etc. - * - * Useful for wrapping lists with abbreviation. - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var prefs = require('../assets/preferences'); - prefs.define('filter.trimRegexp', - '[\\s|\\u00a0]*[\\d|#|\\-|\*|\\u2022]+\\.?\\s*', - 'Regular expression used to remove list markers (numbers, dashes, ' - + 'bullets, etc.) in t (trim) filter. The trim filter ' - + 'is useful for wrapping with abbreviation lists, pased from other ' - + 'documents (for example, Word documents).'); - - function process(tree, re) { - tree.children.forEach(function (item) { - if (item.content) { - item.content = item.content.replace(re, ''); - } - - process(item, re); - }); - - return tree; - } - - return function (tree) { - var re = new RegExp(prefs.get('filter.trimRegexp')); - return process(tree, re); - }; - }); - - }, { "../assets/preferences": "assets\\preferences.js" }], "filter\\xsl.js": [function (require, module, exports) { - /** - * Filter for trimming "select" attributes from some tags that contains - * child elements - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var abbrUtils = require('../utils/abbreviation'); - - var tags = { - 'xsl:variable': 1, - 'xsl:with-param': 1 - }; - - /** - * Removes "select" attribute from node - * @param {AbbreviationNode} node - */ - function trimAttribute(node) { - node.start = node.start.replace(/\s+select\s*=\s*(['"]).*?\1/, ''); - } - - return function process(tree) { - tree.children.forEach(function (item) { - if (!abbrUtils.isSnippet(item) - && (item.name() || '').toLowerCase() in tags - && item.children.length) - trimAttribute(item); - process(item); - }); - - return tree; - }; - }); - }, { "../utils/abbreviation": "utils\\abbreviation.js" }], "generator\\lorem.js": [function (require, module, exports) { - /** - * "Lorem ipsum" text generator. Matches lipsum(num)? or - * lorem(num)? abbreviation. - * This code is based on Django's contribution: - * https://code.djangoproject.com/browser/django/trunk/django/contrib/webdesign/lorem_ipsum.py - *

      - * Examples to test:
      - * lipsum – generates 30 words text.
      - * lipsum*6 – generates 6 paragraphs (autowrapped with <p> element) of text.
      - * ol>lipsum10*5 — generates ordered list with 5 list items (autowrapped with <li> tag) - * with text of 10 words on each line.
      - * span*3>lipsum20 – generates 3 paragraphs of 20-words text, each wrapped with <span> element. - * Each paragraph phrase is unique. - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var prefs = require('../assets/preferences'); - - var langs = { - en: { - common: ['lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipisicing', 'elit'], - words: ['exercitationem', 'perferendis', 'perspiciatis', 'laborum', 'eveniet', - 'sunt', 'iure', 'nam', 'nobis', 'eum', 'cum', 'officiis', 'excepturi', - 'odio', 'consectetur', 'quasi', 'aut', 'quisquam', 'vel', 'eligendi', - 'itaque', 'non', 'odit', 'tempore', 'quaerat', 'dignissimos', - 'facilis', 'neque', 'nihil', 'expedita', 'vitae', 'vero', 'ipsum', - 'nisi', 'animi', 'cumque', 'pariatur', 'velit', 'modi', 'natus', - 'iusto', 'eaque', 'sequi', 'illo', 'sed', 'ex', 'et', 'voluptatibus', - 'tempora', 'veritatis', 'ratione', 'assumenda', 'incidunt', 'nostrum', - 'placeat', 'aliquid', 'fuga', 'provident', 'praesentium', 'rem', - 'necessitatibus', 'suscipit', 'adipisci', 'quidem', 'possimus', - 'voluptas', 'debitis', 'sint', 'accusantium', 'unde', 'sapiente', - 'voluptate', 'qui', 'aspernatur', 'laudantium', 'soluta', 'amet', - 'quo', 'aliquam', 'saepe', 'culpa', 'libero', 'ipsa', 'dicta', - 'reiciendis', 'nesciunt', 'doloribus', 'autem', 'impedit', 'minima', - 'maiores', 'repudiandae', 'ipsam', 'obcaecati', 'ullam', 'enim', - 'totam', 'delectus', 'ducimus', 'quis', 'voluptates', 'dolores', - 'molestiae', 'harum', 'dolorem', 'quia', 'voluptatem', 'molestias', - 'magni', 'distinctio', 'omnis', 'illum', 'dolorum', 'voluptatum', 'ea', - 'quas', 'quam', 'corporis', 'quae', 'blanditiis', 'atque', 'deserunt', - 'laboriosam', 'earum', 'consequuntur', 'hic', 'cupiditate', - 'quibusdam', 'accusamus', 'ut', 'rerum', 'error', 'minus', 'eius', - 'ab', 'ad', 'nemo', 'fugit', 'officia', 'at', 'in', 'id', 'quos', - 'reprehenderit', 'numquam', 'iste', 'fugiat', 'sit', 'inventore', - 'beatae', 'repellendus', 'magnam', 'recusandae', 'quod', 'explicabo', - 'doloremque', 'aperiam', 'consequatur', 'asperiores', 'commodi', - 'optio', 'dolor', 'labore', 'temporibus', 'repellat', 'veniam', - 'architecto', 'est', 'esse', 'mollitia', 'nulla', 'a', 'similique', - 'eos', 'alias', 'dolore', 'tenetur', 'deleniti', 'porro', 'facere', - 'maxime', 'corrupti'] - }, - sp: { - common: ['mujer', 'uno', 'dolor', 'más', 'de', 'poder', 'mismo', 'si'], - words: ['ejercicio', 'preferencia', 'perspicacia', 'laboral', 'paño', - 'suntuoso', 'molde', 'namibia', 'planeador', 'mirar', 'demás', 'oficinista', 'excepción', - 'odio', 'consecuencia', 'casi', 'auto', 'chicharra', 'velo', 'elixir', - 'ataque', 'no', 'odio', 'temporal', 'cuórum', 'dignísimo', - 'facilismo', 'letra', 'nihilista', 'expedición', 'alma', 'alveolar', 'aparte', - 'león', 'animal', 'como', 'paria', 'belleza', 'modo', 'natividad', - 'justo', 'ataque', 'séquito', 'pillo', 'sed', 'ex', 'y', 'voluminoso', - 'temporalidad', 'verdades', 'racional', 'asunción', 'incidente', 'marejada', - 'placenta', 'amanecer', 'fuga', 'previsor', 'presentación', 'lejos', - 'necesariamente', 'sospechoso', 'adiposidad', 'quindío', 'pócima', - 'voluble', 'débito', 'sintió', 'accesorio', 'falda', 'sapiencia', - 'volutas', 'queso', 'permacultura', 'laudo', 'soluciones', 'entero', - 'pan', 'litro', 'tonelada', 'culpa', 'libertario', 'mosca', 'dictado', - 'reincidente', 'nascimiento', 'dolor', 'escolar', 'impedimento', 'mínima', - 'mayores', 'repugnante', 'dulce', 'obcecado', 'montaña', 'enigma', - 'total', 'deletéreo', 'décima', 'cábala', 'fotografía', 'dolores', - 'molesto', 'olvido', 'paciencia', 'resiliencia', 'voluntad', 'molestias', - 'magnífico', 'distinción', 'ovni', 'marejada', 'cerro', 'torre', 'y', - 'abogada', 'manantial', 'corporal', 'agua', 'crepúsculo', 'ataque', 'desierto', - 'laboriosamente', 'angustia', 'afortunado', 'alma', 'encefalograma', - 'materialidad', 'cosas', 'o', 'renuncia', 'error', 'menos', 'conejo', - 'abadía', 'analfabeto', 'remo', 'fugacidad', 'oficio', 'en', 'almácigo', 'vos', 'pan', - 'represión', 'números', 'triste', 'refugiado', 'trote', 'inventor', - 'corchea', 'repelente', 'magma', 'recusado', 'patrón', 'explícito', - 'paloma', 'síndrome', 'inmune', 'autoinmune', 'comodidad', - 'ley', 'vietnamita', 'demonio', 'tasmania', 'repeler', 'apéndice', - 'arquitecto', 'columna', 'yugo', 'computador', 'mula', 'a', 'propósito', - 'fantasía', 'alias', 'rayo', 'tenedor', 'deleznable', 'ventana', 'cara', - 'anemia', 'corrupto'] - }, - ru: { - common: ['далеко-далеко', 'за', 'словесными', 'горами', 'в стране', 'гласных', 'и согласных', 'живут', 'рыбные', 'тексты'], - words: ['вдали', 'от всех', 'они', 'буквенных', 'домах', 'на берегу', 'семантика', - 'большого', 'языкового', 'океана', 'маленький', 'ручеек', 'даль', - 'журчит', 'по всей', 'обеспечивает', 'ее', 'всеми', 'необходимыми', - 'правилами', 'эта', 'парадигматическая', 'страна', 'которой', 'жаренные', - 'предложения', 'залетают', 'прямо', 'рот', 'даже', 'всемогущая', - 'пунктуация', 'не', 'имеет', 'власти', 'над', 'рыбными', 'текстами', - 'ведущими', 'безорфографичный', 'образ', 'жизни', 'однажды', 'одна', - 'маленькая', 'строчка', 'рыбного', 'текста', 'имени', 'lorem', 'ipsum', - 'решила', 'выйти', 'большой', 'мир', 'грамматики', 'великий', 'оксмокс', - 'предупреждал', 'о', 'злых', 'запятых', 'диких', 'знаках', 'вопроса', - 'коварных', 'точках', 'запятой', 'но', 'текст', 'дал', 'сбить', - 'себя', 'толку', 'он', 'собрал', 'семь', 'своих', 'заглавных', 'букв', - 'подпоясал', 'инициал', 'за', 'пояс', 'пустился', 'дорогу', - 'взобравшись', 'первую', 'вершину', 'курсивных', 'гор', 'бросил', - 'последний', 'взгляд', 'назад', 'силуэт', 'своего', 'родного', 'города', - 'буквоград', 'заголовок', 'деревни', 'алфавит', 'подзаголовок', 'своего', - 'переулка', 'грустный', 'реторический', 'вопрос', 'скатился', 'его', - 'щеке', 'продолжил', 'свой', 'путь', 'дороге', 'встретил', 'рукопись', - 'она', 'предупредила', 'моей', 'все', 'переписывается', 'несколько', - 'раз', 'единственное', 'что', 'меня', 'осталось', 'это', 'приставка', - 'возвращайся', 'ты', 'лучше', 'свою', 'безопасную', 'страну', 'послушавшись', - 'рукописи', 'наш', 'продолжил', 'свой', 'путь', 'вскоре', 'ему', - 'повстречался', 'коварный', 'составитель', 'рекламных', 'текстов', - 'напоивший', 'языком', 'речью', 'заманивший', 'свое', 'агентство', - 'которое', 'использовало', 'снова', 'снова', 'своих', 'проектах', - 'если', 'переписали', 'то', 'живет', 'там', 'до', 'сих', 'пор'] - } - }; - - - prefs.define('lorem.defaultLang', 'en', - 'Default language of generated dummy text. Currently, en\ - and ru are supported, but users can add their own syntaxes\ - see docs.'); - prefs.define('lorem.omitCommonPart', false, - 'Omit commonly used part (e.g. “Lorem ipsum dolor sit amet“) from generated text.'); - - /** - * Returns random integer between from and to values - * @param {Number} from - * @param {Number} to - * @returns {Number} - */ - function randint(from, to) { - return Math.round(Math.random() * (to - from) + from); - } - - /** - * @param {Array} arr - * @param {Number} count - * @returns {Array} - */ - function sample(arr, count) { - var len = arr.length; - var iterations = Math.min(len, count); - var result = []; - while (result.length < iterations) { - var randIx = randint(0, len - 1); - if (!~result.indexOf(randIx)) { - result.push(randIx); - } - } - - return result.map(function (ix) { - return arr[ix]; - }); - } - - function choice(val) { - if (typeof val === 'string') - return val.charAt(randint(0, val.length - 1)); - - return val[randint(0, val.length - 1)]; - } - - function sentence(words, end) { - if (words.length) { - words[0] = words[0].charAt(0).toUpperCase() + words[0].substring(1); - } - - return words.join(' ') + (end || choice('?!...')); // more dots than question marks - } - - /** - * Insert commas at randomly selected words. This function modifies values - * inside words array - * @param {Array} words - */ - function insertCommas(words) { - var len = words.length; - - if (len < 2) { - return; - } - - var totalCommas = 0; - if (len > 3 && len <= 6) { - totalCommas = randint(0, 1); - } else if (len > 6 && len <= 12) { - totalCommas = randint(0, 2); - } else { - totalCommas = randint(1, 4); - } - - for (var i = 0, pos, word; i < totalCommas; i++) { - pos = randint(0, words.length - 2); - word = words[pos]; - if (word.charAt(word.length - 1) !== ',') { - words[pos] += ','; - } - } - } - - /** - * Generate a paragraph of "Lorem ipsum" text - * @param {Number} wordCount Words count in paragraph - * @param {Boolean} startWithCommon Should paragraph start with common - * "lorem ipsum" sentence. - * @returns {String} - */ - function paragraph(lang, wordCount, startWithCommon) { - var data = langs[lang]; - if (!data) { - return ''; - } - - var result = []; - var totalWords = 0; - var words; - - wordCount = parseInt(wordCount, 10); - - if (startWithCommon && data.common) { - words = data.common.slice(0, wordCount); - if (words.length > 5) { - words[4] += ','; - } - totalWords += words.length; - result.push(sentence(words, '.')); - } - - while (totalWords < wordCount) { - words = sample(data.words, Math.min(randint(2, 30), wordCount - totalWords)); - totalWords += words.length; - insertCommas(words); - result.push(sentence(words)); - } - - return result.join(' '); - } - - return { - /** - * Adds new language words for Lorem Ipsum generator - * @param {String} lang Two-letter lang definition - * @param {Object} data Words for language. Maight be either a space-separated - * list of words (String), Array of words or object with text and - * common properties - */ - addLang: function (lang, data) { - if (typeof data === 'string') { - data = { - words: data.split(' ').filter(function (item) { - return !!item; - }) - }; - } else if (Array.isArray(data)) { - data = { words: data }; - } - - langs[lang] = data; - }, - preprocessor: function (tree) { - var re = /^(?:lorem|lipsum)([a-z]{2})?(\d*)$/i, match; - var allowCommon = !prefs.get('lorem.omitCommonPart'); - - /** @param {AbbreviationNode} node */ - tree.findAll(function (node) { - if (node._name && (match = node._name.match(re))) { - var wordCound = match[2] || 30; - var lang = match[1] || prefs.get('lorem.defaultLang') || 'en'; - - // force node name resolving if node should be repeated - // or contains attributes. In this case, node should be outputed - // as tag, otherwise as text-only node - node._name = ''; - node.data('forceNameResolving', node.isRepeating() || node.attributeList().length); - node.data('pasteOverwrites', true); - node.data('paste', function (i) { - return paragraph(lang, wordCound, !i && allowCommon); - }); - } - }); - } - }; - }); - - }, { "../assets/preferences": "assets\\preferences.js" }], "parser\\abbreviation.js": [function (require, module, exports) { - /** - * Emmet abbreviation parser. - * Takes string abbreviation and recursively parses it into a tree. The parsed - * tree can be transformed into a string representation with - * toString() method. Note that string representation is defined - * by custom processors (called filters), not by abbreviation parser - * itself. - * - * This module can be extended with custom pre-/post-processors to shape-up - * final tree or its representation. Actually, many features of abbreviation - * engine are defined in other modules as tree processors - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var tabStops = require('../assets/tabStops'); - var profile = require('../assets/profile'); - var filters = require('../filter/main'); - var utils = require('../utils/common'); - var abbreviationUtils = require('../utils/abbreviation'); - var stringStream = require('../assets/stringStream'); - - // pre- and post-processorcs - var lorem = require('../generator/lorem'); - var procPastedContent = require('./processor/pastedContent'); - var procTagName = require('./processor/tagName'); - var procResourceMatcher = require('./processor/resourceMatcher'); - var procAttributes = require('./processor/attributes'); - var procHref = require('./processor/href'); - - var reValidName = /^[\w\-\$\:@\!%]+\+?$/i; - var reWord = /[\w\-:\$@]/; - var DEFAULT_ATTR_NAME = '%default'; - - var pairs = { - '[': ']', - '(': ')', - '{': '}' - }; - - var spliceFn = Array.prototype.splice; - - var preprocessors = []; - var postprocessors = []; - var outputProcessors = []; - - /** - * @type AbbreviationNode - */ - function AbbreviationNode(parent) { - /** @type AbbreviationNode */ - this.parent = null; - this.children = []; - this._attributes = []; - - /** @type String Raw abbreviation for current node */ - this.abbreviation = ''; - this.counter = 1; - this._name = null; - this._text = ''; - this.repeatCount = 1; - this.hasImplicitRepeat = false; - - /** Custom data dictionary */ - this._data = {}; - - // output properties - this.start = ''; - this.end = ''; - this.content = ''; - this.padding = ''; - } - - AbbreviationNode.prototype = { - /** - * Adds passed node as child or creates new child - * @param {AbbreviationNode} child - * @param {Number} position Index in children array where child should - * be inserted - * @return {AbbreviationNode} - */ - addChild: function (child, position) { - child = child || new AbbreviationNode(); - child.parent = this; - - if (typeof position === 'undefined') { - this.children.push(child); - } else { - this.children.splice(position, 0, child); - } - - return child; - }, - - /** - * Creates a deep copy of current node - * @returns {AbbreviationNode} - */ - clone: function () { - var node = new AbbreviationNode(); - var attrs = ['abbreviation', 'counter', '_name', '_text', 'repeatCount', 'hasImplicitRepeat', 'start', 'end', 'content', 'padding']; - attrs.forEach(function (a) { - node[a] = this[a]; - }, this); - - // clone attributes - node._attributes = this._attributes.map(function (attr) { - return utils.extend({}, attr); - }); - - node._data = utils.extend({}, this._data); - - // clone children - node.children = this.children.map(function (child) { - child = child.clone(); - child.parent = node; - return child; - }); - - return node; - }, - - /** - * Removes current node from parent‘s child list - * @returns {AbbreviationNode} Current node itself - */ - remove: function () { - if (this.parent) { - var ix = this.parent.children.indexOf(this); - if (~ix) { - this.parent.children.splice(ix, 1); - } - } - - return this; - }, - - /** - * Replaces current node in parent‘s children list with passed nodes - * @param {AbbreviationNode} node Replacement node or array of nodes - */ - replace: function () { - var parent = this.parent; - var ix = parent.children.indexOf(this); - var items = utils.flatten(arguments); - spliceFn.apply(parent.children, [ix, 1].concat(items)); - - // update parent - items.forEach(function (item) { - item.parent = parent; - }); - }, - - /** - * Recursively sets property to value of current - * node and its children - * @param {String} name Property to update - * @param {Object} value New property value - */ - updateProperty: function (name, value) { - this[name] = value; - this.children.forEach(function (child) { - child.updateProperty(name, value); - }); - - return this; - }, - - /** - * Finds first child node that matches truth test for passed - * fn function - * @param {Function} fn - * @returns {AbbreviationNode} - */ - find: function (fn) { - return this.findAll(fn, { amount: 1 })[0]; - }, - - /** - * Finds all child nodes that matches truth test for passed - * fn function - * @param {Function} fn - * @returns {Array} - */ - findAll: function (fn, state) { - state = utils.extend({ amount: 0, found: 0 }, state || {}); - - if (typeof fn !== 'function') { - var elemName = fn.toLowerCase(); - fn = function (item) { return item.name().toLowerCase() == elemName; }; - } - - var result = []; - this.children.forEach(function (child) { - if (fn(child)) { - result.push(child); - state.found++; - if (state.amount && state.found >= state.amount) { - return; - } - } - - result = result.concat(child.findAll(fn)); - }); - - return result.filter(function (item) { - return !!item; - }); - }, - - /** - * Sets/gets custom data - * @param {String} name - * @param {Object} value - * @returns {Object} - */ - data: function (name, value) { - if (arguments.length == 2) { - this._data[name] = value; - } - - return this._data[name]; - }, - - /** - * Returns name of current node - * @returns {String} - */ - name: function () { - return this._name; - }, - - /** - * Returns list of attributes for current node - * @returns {Array} - */ - attributeList: function () { - return optimizeAttributes(this._attributes.slice(0)); - }, - - /** - * Returns or sets attribute value - * @param {String} name Attribute name - * @param {String} value New attribute value. `Null` value - * will remove attribute - * @returns {String} - */ - attribute: function (name, value) { - if (arguments.length == 2) { - if (value === null) { - // remove attribute - var vals = this._attributes.filter(function (attr) { - return attr.name === name; - }); - - var that = this; - vals.forEach(function (attr) { - var ix = that._attributes.indexOf(attr); - if (~ix) { - that._attributes.splice(ix, 1); - } - }); - - return; - } - - // modify attribute - var attrNames = this._attributes.map(function (attr) { - return attr.name; - }); - var ix = attrNames.indexOf(name.toLowerCase()); - if (~ix) { - this._attributes[ix].value = value; - } else { - this._attributes.push({ - name: name, - value: value - }); - } - } - - return (utils.find(this.attributeList(), function (attr) { - return attr.name == name; - }) || {}).value; - }, - - /** - * Returns index of current node in parent‘s children list - * @returns {Number} - */ - index: function () { - return this.parent ? this.parent.children.indexOf(this) : -1; - }, - - /** - * Sets how many times current element should be repeated - * @private - */ - _setRepeat: function (count) { - if (count) { - this.repeatCount = parseInt(count, 10) || 1; - } else { - this.hasImplicitRepeat = true; - } - }, - - /** - * Sets abbreviation that belongs to current node - * @param {String} abbr - */ - setAbbreviation: function (abbr) { - abbr = abbr || ''; - - var that = this; - - // find multiplier - abbr = abbr.replace(/\*(\d+)?$/, function (str, repeatCount) { - that._setRepeat(repeatCount); - return ''; - }); - - this.abbreviation = abbr; - - var abbrText = extractText(abbr); - if (abbrText) { - abbr = abbrText.element; - this.content = this._text = abbrText.text; - } - - var abbrAttrs = parseAttributes(abbr); - if (abbrAttrs) { - abbr = abbrAttrs.element; - this._attributes = abbrAttrs.attributes; - } - - this._name = abbr; - - // validate name - if (this._name && !reValidName.test(this._name)) { - throw new Error('Invalid abbreviation'); - } - }, - - /** - * Returns string representation of current node - * @return {String} - */ - valueOf: function () { - var start = this.start; - var end = this.end; - var content = this.content; - - // apply output processors - var node = this; - outputProcessors.forEach(function (fn) { - start = fn(start, node, 'start'); - content = fn(content, node, 'content'); - end = fn(end, node, 'end'); - }); - - - var innerContent = this.children.map(function (child) { - return child.valueOf(); - }).join(''); - - content = abbreviationUtils.insertChildContent(content, innerContent, { - keepVariable: false - }); - - return start + utils.padString(content, this.padding) + end; - }, - - toString: function () { - return this.valueOf(); - }, - - /** - * Check if current node contains children with empty expr - * property - * @return {Boolean} - */ - hasEmptyChildren: function () { - return !!utils.find(this.children, function (child) { - return child.isEmpty(); - }); - }, - - /** - * Check if current node has implied name that should be resolved - * @returns {Boolean} - */ - hasImplicitName: function () { - return !this._name && !this.isTextNode(); - }, - - /** - * Indicates that current element is a grouping one, e.g. has no - * representation but serves as a container for other nodes - * @returns {Boolean} - */ - isGroup: function () { - return !this.abbreviation; - }, - - /** - * Indicates empty node (i.e. without abbreviation). It may be a - * grouping node and should not be outputted - * @return {Boolean} - */ - isEmpty: function () { - return !this.abbreviation && !this.children.length; - }, - - /** - * Indicates that current node should be repeated - * @returns {Boolean} - */ - isRepeating: function () { - return this.repeatCount > 1 || this.hasImplicitRepeat; - }, - - /** - * Check if current node is a text-only node - * @return {Boolean} - */ - isTextNode: function () { - return !this.name() && !this.attributeList().length; - }, - - /** - * Indicates whether this node may be used to build elements or snippets - * @returns {Boolean} - */ - isElement: function () { - return !this.isEmpty() && !this.isTextNode(); - }, - - /** - * Returns latest and deepest child of current tree - * @returns {AbbreviationNode} - */ - deepestChild: function () { - if (!this.children.length) - return null; - - var deepestChild = this; - while (deepestChild.children.length) { - deepestChild = deepestChild.children[deepestChild.children.length - 1]; - } - - return deepestChild; - } - }; - - /** - * Returns stripped string: a string without first and last character. - * Used for “unquoting” strings - * @param {String} str - * @returns {String} - */ - function stripped(str) { - return str.substring(1, str.length - 1); - } - - function consumeQuotedValue(stream, quote) { - var ch; - while ((ch = stream.next())) { - if (ch === quote) - return true; - - if (ch == '\\') - continue; - } - - return false; - } - - /** - * Parses abbreviation into a tree - * @param {String} abbr - * @returns {AbbreviationNode} - */ - function parseAbbreviation(abbr) { - abbr = utils.trim(abbr); - - var root = new AbbreviationNode(); - var context = root.addChild(), ch; - - /** @type StringStream */ - var stream = stringStream.create(abbr); - var loopProtector = 1000, multiplier; - var addChild = function (child) { - context.addChild(child); - }; - - var consumeAbbr = function () { - stream.start = stream.pos; - stream.eatWhile(function (c) { - if (c == '[' || c == '{') { - if (stream.skipToPair(c, pairs[c])) { - stream.backUp(1); - return true; - } - - throw new Error('Invalid abbreviation: mo matching "' + pairs[c] + '" found for character at ' + stream.pos); - } - - if (c == '+') { - // let's see if this is an expando marker - stream.next(); - var isMarker = stream.eol() || ~'+>^*'.indexOf(stream.peek()); - stream.backUp(1); - return isMarker; - } - - return c != '(' && isAllowedChar(c); - }); - }; - - while (!stream.eol() && --loopProtector > 0) { - ch = stream.peek(); - - switch (ch) { - case '(': // abbreviation group - stream.start = stream.pos; - if (stream.skipToPair('(', ')')) { - var inner = parseAbbreviation(stripped(stream.current())); - if ((multiplier = stream.match(/^\*(\d+)?/, true))) { - context._setRepeat(multiplier[1]); - } - - inner.children.forEach(addChild); - } else { - throw new Error('Invalid abbreviation: mo matching ")" found for character at ' + stream.pos); - } - break; - - case '>': // child operator - context = context.addChild(); - stream.next(); - break; - - case '+': // sibling operator - context = context.parent.addChild(); - stream.next(); - break; - - case '^': // climb up operator - var parent = context.parent || context; - context = (parent.parent || parent).addChild(); - stream.next(); - break; - - default: // consume abbreviation - consumeAbbr(); - context.setAbbreviation(stream.current()); - stream.start = stream.pos; - } - } - - if (loopProtector < 1) { - throw new Error('Endless loop detected'); - } - - return root; - } - - /** - * Splits attribute set into a list of attributes string - * @param {String} attrSet - * @return {Array} - */ - function splitAttributes(attrSet) { - attrSet = utils.trim(attrSet); - var parts = []; - - // split attribute set by spaces - var stream = stringStream(attrSet), ch; - while ((ch = stream.next())) { - if (ch == ' ') { - parts.push(utils.trim(stream.current())); - // skip spaces - while (stream.peek() == ' ') { - stream.next(); - } - - stream.start = stream.pos; - } else if (ch == '"' || ch == "'") { - // skip values in strings - if (!stream.skipString(ch)) { - throw new Error('Invalid attribute set'); - } - } - } - - parts.push(utils.trim(stream.current())); - return parts; - } - - /** - * Removes opening and closing quotes from given string - * @param {String} str - * @return {String} - */ - function unquote(str) { - var ch = str.charAt(0); - if (ch == '"' || ch == "'") { - str = str.substr(1); - var last = str.charAt(str.length - 1); - if (last === ch) { - str = str.substr(0, str.length - 1); - } - } - - return str; - } - - /** - * Extract attributes and their values from attribute set: - * [attr col=3 title="Quoted string"] (without square braces) - * @param {String} attrSet - * @returns {Array} - */ - function extractAttributes(attrSet) { - var reAttrName = /^[\w\-:\$@]+\.?$/; - return splitAttributes(attrSet).map(function (attr) { - // attribute name: [attr] - if (reAttrName.test(attr)) { - var value = ''; - if (attr.charAt(attr.length - 1) == '.') { - // a boolean attribute - attr = attr.substr(0, attr.length - 1); - value = attr; - } - return { - name: attr, - value: value - }; - } - - // attribute with value: [name=val], [name="val"] - if (~attr.indexOf('=')) { - var parts = attr.split('='); - return { - name: parts.shift(), - value: unquote(parts.join('=')) - }; - } - - // looks like it’s implied attribute - return { - name: DEFAULT_ATTR_NAME, - value: unquote(attr) - }; - }); - } - - /** - * Parses tag attributes extracted from abbreviation. If attributes found, - * returns object with element and attributes - * properties - * @param {String} abbr - * @returns {Object} Returns null if no attributes found in - * abbreviation - */ - function parseAttributes(abbr) { - /* - * Example of incoming data: - * #header - * .some.data - * .some.data#header - * [attr] - * #item[attr=Hello other="World"].class - */ - var result = []; - var attrMap = { '#': 'id', '.': 'class' }; - var nameEnd = null; - - /** @type StringStream */ - var stream = stringStream.create(abbr); - while (!stream.eol()) { - switch (stream.peek()) { - case '#': // id - case '.': // class - if (nameEnd === null) - nameEnd = stream.pos; - - var attrName = attrMap[stream.peek()]; - - stream.next(); - stream.start = stream.pos; - stream.eatWhile(reWord); - result.push({ - name: attrName, - value: stream.current() - }); - break; - case '[': //begin attribute set - if (nameEnd === null) - nameEnd = stream.pos; - - stream.start = stream.pos; - if (!stream.skipToPair('[', ']')) { - throw new Error('Invalid attribute set definition'); - } - - result = result.concat( - extractAttributes(stripped(stream.current())) - ); - break; - default: - stream.next(); - } - } - - if (!result.length) - return null; - - return { - element: abbr.substring(0, nameEnd), - attributes: optimizeAttributes(result) - }; - } - - /** - * Optimize attribute set: remove duplicates and merge class attributes - * @param attrs - */ - function optimizeAttributes(attrs) { - // clone all attributes to make sure that original objects are - // not modified - attrs = attrs.map(function (attr) { - return utils.clone(attr); - }); - - var lookup = {}; - - return attrs.filter(function (attr) { - if (!(attr.name in lookup)) { - return lookup[attr.name] = attr; - } - - var la = lookup[attr.name]; - - if (attr.name.toLowerCase() == 'class') { - la.value += (la.value.length ? ' ' : '') + attr.value; - } else { - la.value = attr.value; - la.isImplied = !!attr.isImplied; - } - - return false; - }); - } - - /** - * Extract text data from abbreviation: if a{hello} abbreviation - * is passed, returns object {element: 'a', text: 'hello'}. - * If nothing found, returns null - * @param {String} abbr - * - */ - function extractText(abbr) { - if (!~abbr.indexOf('{')) - return null; - - /** @type StringStream */ - var stream = stringStream.create(abbr); - while (!stream.eol()) { - switch (stream.peek()) { - case '[': - case '(': - stream.skipToPair(stream.peek(), pairs[stream.peek()]); break; - - case '{': - stream.start = stream.pos; - stream.skipToPair('{', '}'); - return { - element: abbr.substring(0, stream.start), - text: stripped(stream.current()) - }; - - default: - stream.next(); - } - } - } - - /** - * “Un-rolls“ contents of current node: recursively replaces all repeating - * children with their repeated clones - * @param {AbbreviationNode} node - * @returns {AbbreviationNode} - */ - function unroll(node) { - for (var i = node.children.length - 1, j, child, maxCount; i >= 0; i--) { - child = node.children[i]; - - if (child.isRepeating()) { - maxCount = j = child.repeatCount; - child.repeatCount = 1; - child.updateProperty('counter', 1); - child.updateProperty('maxCount', maxCount); - while (--j > 0) { - child.parent.addChild(child.clone(), i + 1) - .updateProperty('counter', j + 1) - .updateProperty('maxCount', maxCount); - } - } - } - - // to keep proper 'counter' property, we need to walk - // on children once again - node.children.forEach(unroll); - - return node; - } - - /** - * Optimizes tree node: replaces empty nodes with their children - * @param {AbbreviationNode} node - * @return {AbbreviationNode} - */ - function squash(node) { - for (var i = node.children.length - 1; i >= 0; i--) { - /** @type AbbreviationNode */ - var n = node.children[i]; - if (n.isGroup()) { - n.replace(squash(n).children); - } else if (n.isEmpty()) { - n.remove(); - } - } - - node.children.forEach(squash); - - return node; - } - - function isAllowedChar(ch) { - var charCode = ch.charCodeAt(0); - var specialChars = '#.*:$-_!@|%'; - - return (charCode > 64 && charCode < 91) // uppercase letter - || (charCode > 96 && charCode < 123) // lowercase letter - || (charCode > 47 && charCode < 58) // number - || specialChars.indexOf(ch) != -1; // special character - } - - // XXX add counter replacer function as output processor - outputProcessors.push(function (text, node) { - return utils.replaceCounter(text, node.counter, node.maxCount); - }); - - // XXX add tabstop updater - outputProcessors.push(tabStops.abbrOutputProcessor.bind(tabStops)); - - // include default pre- and postprocessors - [lorem, procResourceMatcher, procAttributes, procPastedContent, procTagName, procHref].forEach(function (mod) { - if (mod.preprocessor) { - preprocessors.push(mod.preprocessor.bind(mod)); - } - - if (mod.postprocessor) { - postprocessors.push(mod.postprocessor.bind(mod)); - } - }); - - return { - DEFAULT_ATTR_NAME: DEFAULT_ATTR_NAME, - - /** - * Parses abbreviation into tree with respect of groups, - * text nodes and attributes. Each node of the tree is a single - * abbreviation. Tree represents actual structure of the outputted - * result - * @memberOf abbreviationParser - * @param {String} abbr Abbreviation to parse - * @param {Object} options Additional options for parser and processors - * - * @return {AbbreviationNode} - */ - parse: function (abbr, options) { - options = options || {}; - - var tree = parseAbbreviation(abbr); - var that = this; - - if (options.contextNode) { - // add info about context node – - // a parent XHTML node in editor inside which abbreviation is - // expanded - tree._name = options.contextNode.name; - var attrLookup = {}; - tree._attributes.forEach(function (attr) { - attrLookup[attr.name] = attr; - }); - - options.contextNode.attributes.forEach(function (attr) { - if (attr.name in attrLookup) { - attrLookup[attr.name].value = attr.value; - } else { - attr = utils.clone(attr); - tree._attributes.push(attr); - attrLookup[attr.name] = attr; - } - }); - } - - // apply preprocessors - preprocessors.forEach(function (fn) { - fn(tree, options, that); - }); - - if ('counter' in options) { - tree.updateProperty('counter', options.counter); - } - - tree = squash(unroll(tree)); - - // apply postprocessors - postprocessors.forEach(function (fn) { - fn(tree, options, that); - }); - - return tree; - }, - - /** - * Expands given abbreviation into a formatted code structure. - * This is the main method that is used for expanding abbreviation - * @param {String} abbr Abbreviation to expand - * @param {Options} options Additional options for abbreviation - * expanding and transformation: `syntax`, `profile`, `contextNode` etc. - * @return {String} - */ - expand: function (abbr, options) { - if (!abbr) return ''; - if (typeof options == 'string') { - throw new Error('Deprecated use of `expand` method: `options` must be object'); - } - - options = options || {}; - - if (!options.syntax) { - options.syntax = utils.defaultSyntax(); - } - - var p = profile.get(options.profile, options.syntax); - tabStops.resetTabstopIndex(); - - var data = filters.extract(abbr); - var outputTree = this.parse(data[0], options); - - var filtersList = filters.composeList(options.syntax, p, data[1]); - filters.apply(outputTree, filtersList, p); - - return outputTree.valueOf(); - }, - - AbbreviationNode: AbbreviationNode, - - /** - * Add new abbreviation preprocessor. Preprocessor is a function - * that applies to a parsed abbreviation tree right after it get parsed. - * The passed tree is in unoptimized state. - * @param {Function} fn Preprocessor function. This function receives - * two arguments: parsed abbreviation tree (AbbreviationNode) - * and options hash that was passed to parse - * method - */ - addPreprocessor: function (fn) { - if (!~preprocessors.indexOf(fn)) { - preprocessors.push(fn); - } - }, - - /** - * Removes registered preprocessor - */ - removeFilter: function (fn) { - var ix = preprocessors.indexOf(fn); - if (~ix) { - preprocessors.splice(ix, 1); - } - }, - - /** - * Adds new abbreviation postprocessor. Postprocessor is a - * functinon that applies to optimized parsed abbreviation tree - * right before it returns from parse() method - * @param {Function} fn Postprocessor function. This function receives - * two arguments: parsed abbreviation tree (AbbreviationNode) - * and options hash that was passed to parse - * method - */ - addPostprocessor: function (fn) { - if (!~postprocessors.indexOf(fn)) { - postprocessors.push(fn); - } - }, - - /** - * Removes registered postprocessor function - */ - removePostprocessor: function (fn) { - var ix = postprocessors.indexOf(fn); - if (~ix) { - postprocessors.splice(ix, 1); - } - }, - - /** - * Registers output postprocessor. Output processor is a - * function that applies to output part (start, - * end and content) when - * AbbreviationNode.toString() method is called - */ - addOutputProcessor: function (fn) { - if (!~outputProcessors.indexOf(fn)) { - outputProcessors.push(fn); - } - }, - - /** - * Removes registered output processor - */ - removeOutputProcessor: function (fn) { - var ix = outputProcessors.indexOf(fn); - if (~ix) { - outputProcessors.splice(ix, 1); - } - }, - - /** - * Check if passed symbol is valid symbol for abbreviation expression - * @param {String} ch - * @return {Boolean} - */ - isAllowedChar: function (ch) { - ch = String(ch); // convert Java object to JS - return isAllowedChar(ch) || ~'>+^[](){}'.indexOf(ch); - } - }; - }); - }, { "../assets/profile": "assets\\profile.js", "../assets/stringStream": "assets\\stringStream.js", "../assets/tabStops": "assets\\tabStops.js", "../filter/main": "filter\\main.js", "../generator/lorem": "generator\\lorem.js", "../utils/abbreviation": "utils\\abbreviation.js", "../utils/common": "utils\\common.js", "./processor/attributes": "parser\\processor\\attributes.js", "./processor/href": "parser\\processor\\href.js", "./processor/pastedContent": "parser\\processor\\pastedContent.js", "./processor/resourceMatcher": "parser\\processor\\resourceMatcher.js", "./processor/tagName": "parser\\processor\\tagName.js" }], "parser\\css.js": [function (require, module, exports) { - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var session = { tokens: null }; - - // walks around the source - var walker = { - init: function (source) { - // this.source = source.replace(/\r\n?/g, '\n'); - this.source = source; - this.ch = ''; - this.chnum = -1; - - // advance - this.nextChar(); - }, - nextChar: function () { - return this.ch = this.source.charAt(++this.chnum); - }, - peek: function () { - return this.source.charAt(this.chnum + 1); - } - }; - - // utility helpers - function isNameChar(c, cc) { - cc = cc || c.charCodeAt(0); - return ( - (cc >= 97 && cc <= 122 /* a-z */) || - (cc >= 65 && cc <= 90 /* A-Z */) || - /* - Experimental: include cyrillic ranges - since some letters, similar to latin ones, can - accidentally appear in CSS tokens - */ - (cc >= 1024 && cc <= 1279) || - c === '&' || /* selector placeholder (LESS, SCSS) */ - c === '_' || - c === '<' || /* comparisons (LESS, SCSS) */ - c === '>' || - c === '=' || - c === '-' - ); - } - - function isDigit(c, cc) { - cc = cc || c.charCodeAt(0); - return (cc >= 48 && cc <= 57); - } - - var isOp = (function () { - var opsa = "{}[]()+*=.,;:>~|\\%$#@^!".split(''), - opsmatcha = "*^|$~".split(''), - ops = {}, - opsmatch = {}, - i = 0; - for (; i < opsa.length; i += 1) { - ops[opsa[i]] = true; - } - for (i = 0; i < opsmatcha.length; i += 1) { - opsmatch[opsmatcha[i]] = true; - } - return function (ch, matchattr) { - if (matchattr) { - return ch in opsmatch; - } - return ch in ops; - }; - }()); - - // creates token objects and pushes them to a list - function tokener(value, type) { - session.tokens.push({ - value: value, - type: type || value, - start: null, - end: null - }); - } - - function getPosInfo(w) { - var errPos = w.chnum; - var source = w.source.replace(/\r\n?/g, '\n'); - var part = w.source.substring(0, errPos + 1).replace(/\r\n?/g, '\n'); - var lines = part.split('\n'); - var ch = (lines[lines.length - 1] || '').length; - var fullLine = source.split('\n')[lines.length - 1] || ''; - - var chunkSize = 100; - var offset = Math.max(0, ch - chunkSize); - var formattedLine = fullLine.substr(offset, chunkSize * 2) + '\n'; - for (var i = 0; i < ch - offset - 1; i++) { - formattedLine += '-'; - } - formattedLine += '^'; - - return { - line: lines.length, - ch: ch, - text: fullLine, - hint: formattedLine - }; - } - - function raiseError(message) { - var err = error(message); - var errObj = new Error(err.message, '', err.line); - errObj.line = err.line; - errObj.ch = err.ch; - errObj.name = err.name; - errObj.hint = err.hint; - - throw errObj; - } - - // oops - function error(m) { - var w = walker; - var info = getPosInfo(walker); - var tokens = session.tokens; - session.tokens = null; - - var message = 'CSS parsing error at line ' + info.line + ', char ' + info.ch + ': ' + m; - message += '\n' + info.hint; - return { - name: "ParseError", - message: message, - hint: info.hint, - line: info.line, - ch: info.ch - }; - } - - - // token handlers follow for: - // white space, comment, string, identifier, number, operator - function white() { - var c = walker.ch, - token = ''; - - while (c === " " || c === "\t") { - token += c; - c = walker.nextChar(); - } - - tokener(token, 'white'); - - } - - function comment() { - var w = walker, - c = w.ch, - token = c, - cnext; - - cnext = w.nextChar(); - - if (cnext === '/') { - // inline comment in SCSS and LESS - while (c && !(cnext === "\n" || cnext === "\r")) { - token += cnext; - c = cnext; - cnext = w.nextChar(); - } - } else if (cnext === '*') { - // multiline CSS commment - while (c && !(c === "*" && cnext === "/")) { - token += cnext; - c = cnext; - cnext = w.nextChar(); - } - } else { - // oops, not a comment, just a / - return tokener(token, token); - } - - token += cnext; - w.nextChar(); - tokener(token, 'comment'); - } - - function eatString() { - var w = walker, - c = w.ch, - q = c, - token = c, - cnext; - - c = w.nextChar(); - - while (c !== q) { - if (c === '\n') { - cnext = w.nextChar(); - if (cnext === "\\") { - token += c + cnext; - } else { - // end of line with no \ escape = bad - raiseError("Unterminated string"); - } - } else if (c === '') { - raiseError("Unterminated string"); - } else { - if (c === "\\") { - token += c + w.nextChar(); - } else { - token += c; - } - } - - c = w.nextChar(); - } - - token += c; - - return token; - } - - function str() { - var token = eatString(); - walker.nextChar(); - tokener(token, 'string'); - } - - function brace() { - var w = walker, - c = w.ch, - depth = 1, - token = c, - stop = false; - - c = w.nextChar(); - - while (c && !stop) { - if (c === '(') { - depth++; - } else if (c === ')') { - depth--; - if (!depth) { - stop = true; - } - } else if (c === '"' || c === "'") { - c = eatString(); - } else if (c === '') { - raiseError("Unterminated brace"); - } - - token += c; - c = w.nextChar(); - } - - tokener(token, 'brace'); - } - - function identifier(pre) { - var c = walker.ch; - var token = pre ? pre + c : c; - - c = walker.nextChar(); - var cc = c.charCodeAt(0); - while (isNameChar(c, cc) || isDigit(c, cc)) { - token += c; - c = walker.nextChar(); - cc = c.charCodeAt(0); - } - - tokener(token, 'identifier'); - } - - function num() { - var w = walker, - c = w.ch, - token = c, - point = token === '.', - nondigit; - - c = w.nextChar(); - nondigit = !isDigit(c); - - // .2px or .classname? - if (point && nondigit) { - // meh, NaN, could be a class name, so it's an operator for now - return tokener(token, '.'); - } - - // -2px or -moz-something - if (token === '-' && nondigit) { - return identifier('-'); - } - - while (c !== '' && (isDigit(c) || (!point && c === '.'))) { // not end of source && digit or first instance of . - if (c === '.') { - point = true; - } - token += c; - c = w.nextChar(); - } - - tokener(token, 'number'); - - } - - function op() { - var w = walker, - c = w.ch, - token = c, - next = w.nextChar(); - - if (next === "=" && isOp(token, true)) { - token += next; - tokener(token, 'match'); - w.nextChar(); - return; - } - - tokener(token, token); - } - - - // call the appropriate handler based on the first character in a token suspect - function tokenize() { - var ch = walker.ch; - - if (ch === " " || ch === "\t") { - return white(); - } - - if (ch === '/') { - return comment(); - } - - if (ch === '"' || ch === "'") { - return str(); - } - - if (ch === '(') { - return brace(); - } - - if (ch === '-' || ch === '.' || isDigit(ch)) { // tricky - char: minus (-1px) or dash (-moz-stuff) - return num(); - } - - if (isNameChar(ch)) { - return identifier(); - } - - if (isOp(ch)) { - return op(); - } - - if (ch === '\r') { - if (walker.peek() === '\n') { - ch += walker.nextChar(); - } - - tokener(ch, 'line'); - walker.nextChar(); - return; - } - - if (ch === '\n') { - tokener(ch, 'line'); - walker.nextChar(); - return; - } - - raiseError("Unrecognized character '" + ch + "'"); - } - - return { - /** - * Sprits given source into tokens - * @param {String} source - * @returns {Array} - */ - lex: function (source) { - walker.init(source); - session.tokens = []; - - // for empty source, return single space token - if (!source) { - session.tokens.push(this.white()); - } else { - while (walker.ch !== '') { - tokenize(); - } - } - - var tokens = session.tokens; - session.tokens = null; - return tokens; - }, - - /** - * Tokenizes CSS source. It's like `lex()` method, - * but also stores proper token indexes in source, - * so it's a bit slower - * @param {String} source - * @returns {Array} - */ - parse: function (source) { - // transform tokens - var tokens = this.lex(source), pos = 0, token; - for (var i = 0, il = tokens.length; i < il; i++) { - token = tokens[i]; - token.start = pos; - token.end = (pos += token.value.length); - } - return tokens; - }, - - white: function () { - return { - value: '', - type: 'white', - start: 0, - end: 0 - }; - }, - - toSource: function (toks) { - var i = 0, max = toks.length, src = ''; - for (; i < max; i++) { - src += toks[i].value; - } - return src; - } - }; - }); - }, {}], "parser\\processor\\attributes.js": [function (require, module, exports) { - /** - * Resolves node attribute names: moves `default` attribute value - * from stub to real attribute. - * - * This resolver should be applied *after* resource matcher - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../../utils/common'); - - var findDefault = function (attr) { - return attr.isDefault; - }; - - var findImplied = function (attr) { - return attr.isImplied; - }; - - var findEmpty = function (attr) { - return !attr.value; - }; - - function resolveDefaultAttrs(node, parser) { - node.children.forEach(function (item) { - var attrList = item.attributeList(); - var defaultAttrValue = item.attribute(parser.DEFAULT_ATTR_NAME); - if (typeof defaultAttrValue !== 'undefined') { - // remove stub attribute - item.attribute(parser.DEFAULT_ATTR_NAME, null); - - if (attrList.length) { - // target for default value: - // 1. default attribute - // 2. implied attribute - // 3. first empty attribute - - // find attribute marked as default - var defaultAttr = utils.find(attrList, findDefault) - || utils.find(attrList, findImplied) - || utils.find(attrList, findEmpty); - - if (defaultAttr) { - var oldVal = item.attribute(defaultAttr.name); - var newVal = utils.replaceUnescapedSymbol(oldVal, '|', defaultAttrValue); - // no replacement, e.g. default value does not contains | symbol - if (oldVal == newVal) { - newVal = defaultAttrValue - } - - item.attribute(defaultAttr.name, newVal); - } - } - } else { - // if no default attribute value, remove implied attributes - attrList.forEach(function (attr) { - if (attr.isImplied) { - item.attribute(attr.name, null); - } - }); - } - - resolveDefaultAttrs(item, parser); - }); - } - - return { - /** - * @param {AbbreviationNode} tree - * @param {Object} options - * @param {abbreviation} parser - */ - preprocessor: function (tree, options, parser) { - resolveDefaultAttrs(tree, parser); - } - }; - }); - }, { "../../utils/common": "utils\\common.js" }], "parser\\processor\\href.js": [function (require, module, exports) { - /** - * A preptocessor for <a> tag: tests wrapped content - * for common URL patterns and, if matched, inserts it as - * `href` attribute - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var prefs = require('../../assets/preferences'); - var utils = require('../../utils/common'); - var pc = require('./pastedContent'); - - prefs.define('href.autodetect', true, - 'Enables or disables automatic URL recognition when wrapping\ - text with <a> tag. With this option enabled,\ - if wrapped text matches URL or e-mail pattern it will be automatically\ - inserted into href attribute.'); - prefs.define('href.urlPattern', '^(?:(?:https?|ftp|file)://|www\\.|ftp\\.)(?:\\([-A-Z0-9+&@#/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#/%=~_|$?!:,.])*(?:\\([-A-Z0-9+&@#/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#/%=~_|$])', - 'RegExp pattern to match wrapped URLs. Matched content will be inserts\ - as-is into href attribute, only whitespace will be trimmed.'); - - prefs.define('href.emailPattern', '^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,5}$', - 'RegExp pattern to match wrapped e-mails. Unlike href.urlPattern,\ - wrapped content will be prefixed with mailto: in href\ - attribute'); - - return { - /** - * @param {AbbreviationNode} tree - * @param {Object} options - */ - postprocessor: function (tree, options) { - if (!prefs.get('href.autodetect')) { - return; - } - - var reUrl = new RegExp(prefs.get('href.urlPattern'), 'i'); - var reEmail = new RegExp(prefs.get('href.emailPattern'), 'i'); - var reProto = /^([a-z]+:)?\/\//i; - - tree.findAll(function (item) { - if (item.name().toLowerCase() != 'a' || item.attribute('href')) { - return; - } - - var pastedContent = utils.trim(pc.pastedContent(item) || options.pastedContent); - if (pastedContent) { - if (reUrl.test(pastedContent)) { - // do we have protocol? - if (!reProto.test(pastedContent)) { - pastedContent = 'http://' + pastedContent; - } - - item.attribute('href', pastedContent); - } else if (reEmail.test(pastedContent)) { - item.attribute('href', 'mailto:' + pastedContent); - } - } - }); - } - }; - }); - }, { "../../assets/preferences": "assets\\preferences.js", "../../utils/common": "utils\\common.js", "./pastedContent": "parser\\processor\\pastedContent.js" }], "parser\\processor\\pastedContent.js": [function (require, module, exports) { - /** - * Pasted content abbreviation processor. A pasted content is a content that - * should be inserted into implicitly repeated abbreviation nodes. - * This processor powers “Wrap With Abbreviation” action - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../../utils/common'); - var abbrUtils = require('../../utils/abbreviation'); - var stringStream = require('../../assets/stringStream'); - var range = require('../../assets/range'); - - var outputPlaceholder = '$#'; - - /** - * Locates output placeholders inside text - * @param {String} text - * @returns {Array} Array of ranges of output placeholder in text - */ - function locateOutputPlaceholder(text) { - var result = []; - - var stream = stringStream.create(text); - - while (!stream.eol()) { - if (stream.peek() == '\\') { - stream.next(); - } else { - stream.start = stream.pos; - if (stream.match(outputPlaceholder, true)) { - result.push(range.create(stream.start, outputPlaceholder)); - continue; - } - } - stream.next(); - } - - return result; - } - - /** - * Replaces output placeholders inside source with - * value - * @param {String} source - * @param {String} value - * @returns {String} - */ - function replaceOutputPlaceholders(source, value) { - var ranges = locateOutputPlaceholder(source); - - ranges.reverse().forEach(function (r) { - source = utils.replaceSubstring(source, value, r); - }); - - return source; - } - - /** - * Check if parsed node contains output placeholder – a target where - * pasted content should be inserted - * @param {AbbreviationNode} node - * @returns {Boolean} - */ - function hasOutputPlaceholder(node) { - if (locateOutputPlaceholder(node.content).length) - return true; - - // check if attributes contains placeholder - return !!utils.find(node.attributeList(), function (attr) { - return !!locateOutputPlaceholder(attr.value).length; - }); - } - - /** - * Insert pasted content into correct positions of parsed node - * @param {AbbreviationNode} node - * @param {String} content - * @param {Boolean} overwrite Overwrite node content if no value placeholders - * found instead of appending to existing content - */ - function insertPastedContent(node, content, overwrite) { - var nodesWithPlaceholders = node.findAll(function (item) { - return hasOutputPlaceholder(item); - }); - - if (hasOutputPlaceholder(node)) - nodesWithPlaceholders.unshift(node); - - if (nodesWithPlaceholders.length) { - nodesWithPlaceholders.forEach(function (item) { - item.content = replaceOutputPlaceholders(item.content, content); - item._attributes.forEach(function (attr) { - attr.value = replaceOutputPlaceholders(attr.value, content); - }); - }); - } else { - // on output placeholders in subtree, insert content in the deepest - // child node - var deepest = node.deepestChild() || node; - if (overwrite) { - deepest.content = content; - } else { - deepest.content = abbrUtils.insertChildContent(deepest.content, content); - } - } - } - - return { - pastedContent: function (item) { - var content = item.data('paste'); - if (Array.isArray(content)) { - return content[item.counter - 1]; - } else if (typeof content === 'function') { - return content(item.counter - 1, item.content); - } else if (content) { - return content; - } - }, - - /** - * @param {AbbreviationNode} tree - * @param {Object} options - */ - preprocessor: function (tree, options) { - if (options.pastedContent) { - var lines = utils.splitByLines(options.pastedContent, true).map(utils.trim); - - // set repeat count for implicitly repeated elements before - // tree is unrolled - tree.findAll(function (item) { - if (item.hasImplicitRepeat) { - item.data('paste', lines); - return item.repeatCount = lines.length; - } - }); - } - }, - - /** - * @param {AbbreviationNode} tree - * @param {Object} options - */ - postprocessor: function (tree, options) { - var that = this; - // for each node with pasted content, update text data - var targets = tree.findAll(function (item) { - var pastedContent = that.pastedContent(item); - if (pastedContent) { - insertPastedContent(item, pastedContent, !!item.data('pasteOverwrites')); - } - - return !!pastedContent; - }); - - if (!targets.length && options.pastedContent) { - // no implicitly repeated elements, put pasted content in - // the deepest child - insertPastedContent(tree, options.pastedContent); - } - } - }; - }); - }, { "../../assets/range": "assets\\range.js", "../../assets/stringStream": "assets\\stringStream.js", "../../utils/abbreviation": "utils\\abbreviation.js", "../../utils/common": "utils\\common.js" }], "parser\\processor\\resourceMatcher.js": [function (require, module, exports) { - /** - * Processor function that matches parsed AbbreviationNode - * against resources defined in resource module - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var resources = require('../../assets/resources'); - var elements = require('../../assets/elements'); - var utils = require('../../utils/common'); - var abbreviationUtils = require('../../utils/abbreviation'); - - /** - * Finds matched resources for child nodes of passed node - * element. A matched resource is a reference to snippets.json entry - * that describes output of parsed node - * @param {AbbreviationNode} node - * @param {String} syntax - */ - function matchResources(node, syntax, parser) { - // do a shallow copy because the children list can be modified during - // resource matching - node.children.slice(0).forEach(function (child) { - var r = resources.getMatchedResource(child, syntax); - if (typeof r === 'string') { - r = elements.create('snippet', r); - } - - child.data('resource', r); - var elemType = elements.type(r); - - if (elemType == 'snippet') { - var content = r.data; - var curContent = child._text || child.content; - if (curContent) { - content = abbreviationUtils.insertChildContent(content, curContent); - } - - child.content = content; - } else if (elemType == 'element') { - child._name = r.name; - if (Array.isArray(r.attributes)) { - child._attributes = [].concat(r.attributes, child._attributes); - } - } else if (elemType == 'reference') { - // it’s a reference to another abbreviation: - // parse it and insert instead of current child - /** @type AbbreviationNode */ - var subtree = parser.parse(r.data, { - syntax: syntax - }); - - // if context element should be repeated, check if we need to - // transfer repeated element to specific child node - if (child.repeatCount > 1) { - var repeatedChildren = subtree.findAll(function (node) { - return node.hasImplicitRepeat; - }); - - if (!repeatedChildren.length) { - repeatedChildren = subtree.children - } - - repeatedChildren.forEach(function (node) { - node.repeatCount = child.repeatCount; - node.hasImplicitRepeat = false; - }); - } - - // move child‘s children into the deepest child of new subtree - var deepestChild = subtree.deepestChild(); - if (deepestChild) { - child.children.forEach(function (c) { - deepestChild.addChild(c); - }); - deepestChild.content = child.content; - } - - // copy current attributes to children - subtree.children.forEach(function (node) { - child.attributeList().forEach(function (attr) { - node.attribute(attr.name, attr.value); - }); - }); - - child.replace(subtree.children); - } - - matchResources(child, syntax, parser); - }); - } - - return { - preprocessor: function (tree, options, parser) { - var syntax = options.syntax || utils.defaultSyntax(); - matchResources(tree, syntax, parser); - } - }; - }); - }, { "../../assets/elements": "assets\\elements.js", "../../assets/resources": "assets\\resources.js", "../../utils/abbreviation": "utils\\abbreviation.js", "../../utils/common": "utils\\common.js" }], "parser\\processor\\tagName.js": [function (require, module, exports) { - /** - * Resolves tag names in abbreviations with implied name - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var tagName = require('../../resolver/tagName'); - - /** - * Resolves implicit node names in parsed tree - * @param {AbbreviationNode} tree - */ - function resolveNodeNames(tree) { - tree.children.forEach(function (node) { - if (node.hasImplicitName() || node.data('forceNameResolving')) { - node._name = tagName.resolve(node.parent.name()); - node.data('nameResolved', true); - } - resolveNodeNames(node); - }); - - return tree; - } - - return { - postprocessor: resolveNodeNames - }; - }); - }, { "../../resolver/tagName": "resolver\\tagName.js" }], "parser\\xml.js": [function (require, module, exports) { - /** - * HTML tokenizer by Marijn Haverbeke - * http://codemirror.net/ - * @constructor - * @memberOf __xmlParseDefine - * @param {Function} require - * @param {Underscore} _ - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var stringStream = require('../assets/stringStream'); - - var Kludges = { - autoSelfClosers: {}, - implicitlyClosed: {}, - contextGrabbers: {}, - doNotIndent: {}, - allowUnquoted: true, - allowMissing: true - }; - - // Return variables for tokenizers - var tagName = null, type = null; - - function inText(stream, state) { - function chain(parser) { - state.tokenize = parser; - return parser(stream, state); - } - - var ch = stream.next(); - if (ch == "<") { - if (stream.eat("!")) { - if (stream.eat("[")) { - if (stream.match("CDATA[")) - return chain(inBlock("atom", "]]>")); - else - return null; - } else if (stream.match("--")) - return chain(inBlock("comment", "-->")); - else if (stream.match("DOCTYPE", true, true)) { - stream.eatWhile(/[\w\._\-]/); - return chain(doctype(1)); - } else - return null; - } else if (stream.eat("?")) { - stream.eatWhile(/[\w\._\-]/); - state.tokenize = inBlock("meta", "?>"); - return "meta"; - } else { - type = stream.eat("/") ? "closeTag" : "openTag"; - stream.eatSpace(); - tagName = ""; - var c; - while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) - tagName += c; - state.tokenize = inTag; - return "tag"; - } - } else if (ch == "&") { - var ok; - if (stream.eat("#")) { - if (stream.eat("x")) { - ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";"); - } else { - ok = stream.eatWhile(/[\d]/) && stream.eat(";"); - } - } else { - ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";"); - } - return ok ? "atom" : "error"; - } else { - stream.eatWhile(/[^&<]/); - return "text"; - } - } - - function inTag(stream, state) { - var ch = stream.next(); - if (ch == ">" || (ch == "/" && stream.eat(">"))) { - state.tokenize = inText; - type = ch == ">" ? "endTag" : "selfcloseTag"; - return "tag"; - } else if (ch == "=") { - type = "equals"; - return null; - } else if (/[\'\"]/.test(ch)) { - state.tokenize = inAttribute(ch); - return state.tokenize(stream, state); - } else { - stream.eatWhile(/[^\s\u00a0=<>\"\'\/?]/); - return "word"; - } - } - - function inAttribute(quote) { - return function (stream, state) { - while (!stream.eol()) { - if (stream.next() == quote) { - state.tokenize = inTag; - break; - } - } - return "string"; - }; - } - - function inBlock(style, terminator) { - return function (stream, state) { - while (!stream.eol()) { - if (stream.match(terminator)) { - state.tokenize = inText; - break; - } - stream.next(); - } - return style; - }; - } - - function doctype(depth) { - return function (stream, state) { - var ch; - while ((ch = stream.next()) !== null) { - if (ch == "<") { - state.tokenize = doctype(depth + 1); - return state.tokenize(stream, state); - } else if (ch == ">") { - if (depth == 1) { - state.tokenize = inText; - break; - } else { - state.tokenize = doctype(depth - 1); - return state.tokenize(stream, state); - } - } - } - return "meta"; - }; - } - - var curState = null, setStyle; - function pass() { - for (var i = arguments.length - 1; i >= 0; i--) - curState.cc.push(arguments[i]); - } - - function cont() { - pass.apply(null, arguments); - return true; - } - - function pushContext(tagName, startOfLine) { - var noIndent = Kludges.doNotIndent.hasOwnProperty(tagName) - || (curState.context && curState.context.noIndent); - curState.context = { - prev: curState.context, - tagName: tagName, - indent: curState.indented, - startOfLine: startOfLine, - noIndent: noIndent - }; - } - - function popContext() { - if (curState.context) - curState.context = curState.context.prev; - } - - function element(type) { - if (type == "openTag") { - curState.tagName = tagName; - return cont(attributes, endtag(curState.startOfLine)); - } else if (type == "closeTag") { - var err = false; - if (curState.context) { - if (curState.context.tagName != tagName) { - if (Kludges.implicitlyClosed.hasOwnProperty(curState.context.tagName.toLowerCase())) { - popContext(); - } - err = !curState.context || curState.context.tagName != tagName; - } - } else { - err = true; - } - - if (err) - setStyle = "error"; - return cont(endclosetag(err)); - } - return cont(); - } - - function endtag(startOfLine) { - return function (type) { - if (type == "selfcloseTag" - || (type == "endTag" && Kludges.autoSelfClosers - .hasOwnProperty(curState.tagName - .toLowerCase()))) { - maybePopContext(curState.tagName.toLowerCase()); - return cont(); - } - if (type == "endTag") { - maybePopContext(curState.tagName.toLowerCase()); - pushContext(curState.tagName, startOfLine); - return cont(); - } - return cont(); - }; - } - - function endclosetag(err) { - return function (type) { - if (err) - setStyle = "error"; - if (type == "endTag") { - popContext(); - return cont(); - } - setStyle = "error"; - return cont(arguments.callee); - }; - } - - function maybePopContext(nextTagName) { - var parentTagName; - while (true) { - if (!curState.context) { - return; - } - parentTagName = curState.context.tagName.toLowerCase(); - if (!Kludges.contextGrabbers.hasOwnProperty(parentTagName) - || !Kludges.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) { - return; - } - popContext(); - } - } - - function attributes(type) { - if (type == "word") { - setStyle = "attribute"; - return cont(attribute, attributes); - } - if (type == "endTag" || type == "selfcloseTag") - return pass(); - setStyle = "error"; - return cont(attributes); - } - - function attribute(type) { - if (type == "equals") - return cont(attvalue, attributes); - if (!Kludges.allowMissing) - setStyle = "error"; - return (type == "endTag" || type == "selfcloseTag") ? pass() - : cont(); - } - - function attvalue(type) { - if (type == "string") - return cont(attvaluemaybe); - if (type == "word" && Kludges.allowUnquoted) { - setStyle = "string"; - return cont(); - } - setStyle = "error"; - return (type == "endTag" || type == "selfCloseTag") ? pass() - : cont(); - } - - function attvaluemaybe(type) { - if (type == "string") - return cont(attvaluemaybe); - else - return pass(); - } - - function startState() { - return { - tokenize: inText, - cc: [], - indented: 0, - startOfLine: true, - tagName: null, - context: null - }; - } - - function token(stream, state) { - if (stream.sol()) { - state.startOfLine = true; - state.indented = 0; - } - - if (stream.eatSpace()) - return null; - - setStyle = type = tagName = null; - var style = state.tokenize(stream, state); - state.type = type; - if ((style || type) && style != "comment") { - curState = state; - while (true) { - var comb = state.cc.pop() || element; - if (comb(type || style)) - break; - } - } - state.startOfLine = false; - return setStyle || style; - } - - return { - /** - * @memberOf emmet.xmlParser - * @returns - */ - parse: function (data, offset) { - offset = offset || 0; - var state = startState(); - var stream = stringStream.create(data); - var tokens = []; - while (!stream.eol()) { - tokens.push({ - type: token(stream, state), - start: stream.start + offset, - end: stream.pos + offset - }); - stream.start = stream.pos; - } - - return tokens; - } - }; - }); - - }, { "../assets/stringStream": "assets\\stringStream.js" }], "plugin\\file.js": [function (require, module, exports) { - /** - * Module for working with file. Shall implement - * IEmmetFile interface. - * - * Since implementation of this module depends - * greatly on current runtime, this module must be - * initialized with actual implementation first - * before use. E.g. - * require('./plugin/file')({ - * read: function() {...} - * }) - * - * By default, this module provides Node.JS implementation - */ - - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - var _transport = {}; - - // hide it from Require.JS parser - (function (r) { - if (typeof define === 'undefined' || !define.amd) { - try { - fs = r('fs'); - path = r('path'); - _transport.http = r('http'); - _transport.https = r('https'); - } catch (e) { } - } - })(require); - - // module is a function that can extend itself - module.exports = function (obj) { - if (obj) { - utils.extend(module.exports, obj); - } - }; - - function bts(bytes) { - var out = []; - for (var i = 0, il = bytes.length; i < il; i++) { - out.push(String.fromCharCode(bytes[i])); - } - return out.join(''); - } - - function isURL(path) { - var re = /^https?:\/\//; - return re.test(path); - } - - return utils.extend(module.exports, { - _parseParams: function (args) { - var params = { - path: args[0], - size: 0 - }; - - args = utils.toArray(args, 1); - params.callback = args[args.length - 1]; - args = args.slice(0, args.length - 1); - if (args.length) { - params.size = args[0]; - } - - return params; - }, - - _read: function (params, callback) { - if (isURL(params.path)) { - var req = _transport[/^https:/.test(params.path) ? 'https' : 'http'].get(params.path, function (res) { - var bufs = []; - var totalLength = 0; - var finished = false; - res - .on('data', function (chunk) { - totalLength += chunk.length; - bufs.push(chunk); - if (params.size && totalLength >= params.size) { - finished = true; - callback(null, Buffer.concat(bufs)); - req.abort(); - } - }) - .on('end', function () { - if (!finished) { - finished = true; - callback(null, Buffer.concat(bufs)); - } - }); - }).on('error', callback); - } else { - if (params.size) { - var fd = fs.openSync(params.path, 'r'); - var buf = new Buffer(params.size); - fs.read(fd, buf, 0, params.size, null, function (err, bytesRead) { - callback(err, buf) - }); - } else { - callback(null, fs.readFileSync(params.path)); - } - } - }, - - /** - * Reads binary file content and return it - * @param {String} path File's relative or absolute path - * @return {String} - */ - read: function (path, size, callback) { - var params = this._parseParams(arguments); - this._read(params, function (err, buf) { - params.callback(err, err ? '' : bts(buf)); - }); - }, - - /** - * Read file content and return it - * @param {String} path File's relative or absolute path - * @return {String} - */ - readText: function (path, size, callback) { - var params = this._parseParams(arguments); - this._read(params, function (err, buf) { - params.callback(err, err ? '' : buf.toString()); - }); - }, - - /** - * Locate file_name file that relates to editor_file. - * File name may be absolute or relative path - * - * Dealing with absolute path. - * Many modern editors have a "project" support as information unit, but you - * should not rely on project path to find file with absolute path. First, - * it requires user to create a project before using this method (and this - * is not very convenient). Second, project path doesn't always points to - * to website's document root folder: it may point, for example, to an - * upper folder which contains server-side scripts. - * - * For better result, you should use the following algorithm in locating - * absolute resources: - * 1) Get parent folder for editorFile as a start point - * 2) Append required fileName to start point and test if - * file exists - * 3) If it doesn't exists, move start point one level up (to parent folder) - * and repeat step 2. - * - * @param {String} editorFile - * @param {String} fileName - * @return {String} Returns null if fileName cannot be located - */ - locateFile: function (editorFile, fileName, callback) { - if (isURL(fileName)) { - return callback(fileName); - } - - var dirname = editorFile - var filepath; - fileName = fileName.replace(/^\/+/, ''); - while (dirname && dirname !== path.dirname(dirname)) { - dirname = path.dirname(dirname); - filepath = path.join(dirname, fileName); - if (fs.existsSync(filepath)) - return callback(filepath); - } - - callback(null); - }, - - /** - * Creates absolute path by concatenating parent and fileName. - * If parent points to file, its parent directory is used - * @param {String} parent - * @param {String} fileName - * @return {String} - */ - createPath: function (parent, fileName, callback) { - fs.stat(parent, function (err, stat) { - if (err) { - return callback(err); - } - - if (stat.isFile()) { - parent = path.dirname(parent); - } - - var filepath = path.resolve(parent, fileName); - callback(null, filepath); - }); - }, - - /** - * Saves content as file - * @param {String} file File's absolute path - * @param {String} content File content - */ - save: function (file, content, callback) { - fs.writeFile(file, content, 'ascii', function (err) { - callback(err ? err : null); - }); - }, - - /** - * Returns file extension in lower case - * @param {String} file - * @return {String} - */ - getExt: function (file) { - var m = (file || '').match(/\.([\w\-]+)$/); - return m ? m[1].toLowerCase() : ''; - } - - }); - }); - - }, { "../utils/common": "utils\\common.js" }], "resolver\\css.js": [function (require, module, exports) { - /** - * Resolver for fast CSS typing. Handles abbreviations with the following - * notation:
      - * - * (-vendor prefix)?property(value)*(!)? - * - *

      - * Abbreviation handling
      - * - * By default, Emmet searches for matching snippet definition for provided abbreviation. - * If snippet wasn't found, Emmet automatically generates element with - * abbreviation's name. For example, foo abbreviation will generate - * <foo></foo> output. - *

      - * This module will capture all expanded properties and upgrade them with values, - * vendor prefixes and !important declarations. All unmatched abbreviations will - * be automatically transformed into property-name: ${1} snippets. - * - * Vendor prefixes
      - * - * If CSS-property is preceded with dash, resolver should output property with - * all known vendor prefixes. For example, if brad - * abbreviation generates border-radius: ${value}; snippet, - * the -brad abbreviation should generate: - *
      
      -				* -webkit-border-radius: ${value};
      -				* -moz-border-radius: ${value};
      -				* border-radius: ${value};
      -				* 
      - * Note that o and ms prefixes are omitted since Opera and IE - * supports unprefixed property.

      - * - * Users can also provide an explicit list of one-character prefixes for any - * CSS property. For example, -wm-float will produce - * - *
      
      -				* -webkit-float: ${1};
      -				* -moz-float: ${1};
      -				* float: ${1};
      -				* 
      - * - * Although this example looks pointless, users can use this feature to write - * cutting-edge properties implemented by browser vendors recently. - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var prefs = require('../assets/preferences'); - var resources = require('../assets/resources'); - var stringStream = require('../assets/stringStream'); - var ciu = require('../assets/caniuse'); - var utils = require('../utils/common'); - var template = require('../utils/template'); - var cssEditTree = require('../editTree/css'); - - var prefixObj = { - /** Real vendor prefix name */ - prefix: 'emmet', - - /** - * Indicates this prefix is obsolete and should't be used when user - * wants to generate all-prefixed properties - */ - obsolete: false, - - /** - * Returns prefixed CSS property name - * @param {String} name Unprefixed CSS property - */ - transformName: function (name) { - return '-' + this.prefix + '-' + name; - }, - - /** - * List of unprefixed CSS properties that supported by - * current prefix. This list is used to generate all-prefixed property - * @returns {Array} - */ - properties: function () { - return getProperties('css.' + this.prefix + 'Properties') || []; - }, - - /** - * Check if given property is supported by current prefix - * @param name - */ - supports: function (name) { - return ~this.properties().indexOf(name); - } - }; - - - /** - * List of registered one-character prefixes. Key is a one-character prefix, - * value is an prefixObj object - */ - var vendorPrefixes = {}; - - var defaultValue = '${1};'; - - // XXX module preferences - prefs.define('css.valueSeparator', ': ', - 'Defines a symbol that should be placed between CSS property and ' - + 'value when expanding CSS abbreviations.'); - prefs.define('css.propertyEnd', ';', - 'Defines a symbol that should be placed at the end of CSS property ' - + 'when expanding CSS abbreviations.'); - - prefs.define('stylus.valueSeparator', ' ', - 'Defines a symbol that should be placed between CSS property and ' - + 'value when expanding CSS abbreviations in Stylus dialect.'); - prefs.define('stylus.propertyEnd', '', - 'Defines a symbol that should be placed at the end of CSS property ' - + 'when expanding CSS abbreviations in Stylus dialect.'); - - prefs.define('sass.propertyEnd', '', - 'Defines a symbol that should be placed at the end of CSS property ' - + 'when expanding CSS abbreviations in SASS dialect.'); - - prefs.define('css.syntaxes', 'css, less, sass, scss, stylus, styl', - 'List of syntaxes that should be treated as CSS dialects.'); - - prefs.define('css.autoInsertVendorPrefixes', true, - 'Automatically generate vendor-prefixed copies of expanded CSS ' - + 'property. By default, Emmet will generate vendor-prefixed ' - + 'properties only when you put dash before abbreviation ' - + '(e.g. -bxsh). With this option enabled, you don’t ' - + 'need dashes before abbreviations: Emmet will produce ' - + 'vendor-prefixed properties for you.'); - - prefs.define('less.autoInsertVendorPrefixes', false, 'Same as css.autoInsertVendorPrefixes but for LESS syntax'); - prefs.define('scss.autoInsertVendorPrefixes', false, 'Same as css.autoInsertVendorPrefixes but for SCSS syntax'); - prefs.define('sass.autoInsertVendorPrefixes', false, 'Same as css.autoInsertVendorPrefixes but for SASS syntax'); - prefs.define('stylus.autoInsertVendorPrefixes', false, 'Same as css.autoInsertVendorPrefixes but for Stylus syntax'); - - var descTemplate = template('A comma-separated list of CSS properties that may have ' - + '<%= vendor %> vendor prefix. This list is used to generate ' - + 'a list of prefixed properties when expanding -property ' - + 'abbreviations. Empty list means that all possible CSS values may ' - + 'have <%= vendor %> prefix.'); - - var descAddonTemplate = template('A comma-separated list of additional CSS properties ' - + 'for css.<%= vendor %>Preperties preference. ' - + 'You should use this list if you want to add or remove a few CSS ' - + 'properties to original set. To add a new property, simply write its name, ' - + 'to remove it, precede property with hyphen.
      ' - + 'For example, to add foo property and remove border-radius one, ' - + 'the preference value will look like this: foo, -border-radius.'); - - // properties list is created from cssFeatures.html file - var props = { - 'webkit': 'animation, animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-play-state, animation-timing-function, appearance, backface-visibility, background-clip, background-composite, background-origin, background-size, border-fit, border-horizontal-spacing, border-image, border-vertical-spacing, box-align, box-direction, box-flex, box-flex-group, box-lines, box-ordinal-group, box-orient, box-pack, box-reflect, box-shadow, color-correction, column-break-after, column-break-before, column-break-inside, column-count, column-gap, column-rule-color, column-rule-style, column-rule-width, column-span, column-width, dashboard-region, font-smoothing, highlight, hyphenate-character, hyphenate-limit-after, hyphenate-limit-before, hyphens, line-box-contain, line-break, line-clamp, locale, margin-before-collapse, margin-after-collapse, marquee-direction, marquee-increment, marquee-repetition, marquee-style, mask-attachment, mask-box-image, mask-box-image-outset, mask-box-image-repeat, mask-box-image-slice, mask-box-image-source, mask-box-image-width, mask-clip, mask-composite, mask-image, mask-origin, mask-position, mask-repeat, mask-size, nbsp-mode, perspective, perspective-origin, rtl-ordering, text-combine, text-decorations-in-effect, text-emphasis-color, text-emphasis-position, text-emphasis-style, text-fill-color, text-orientation, text-security, text-stroke-color, text-stroke-width, transform, transition, transform-origin, transform-style, transition-delay, transition-duration, transition-property, transition-timing-function, user-drag, user-modify, user-select, writing-mode, svg-shadow, box-sizing, border-radius', - 'moz': 'animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-play-state, animation-timing-function, appearance, backface-visibility, background-inline-policy, binding, border-bottom-colors, border-image, border-left-colors, border-right-colors, border-top-colors, box-align, box-direction, box-flex, box-ordinal-group, box-orient, box-pack, box-shadow, box-sizing, column-count, column-gap, column-rule-color, column-rule-style, column-rule-width, column-width, float-edge, font-feature-settings, font-language-override, force-broken-image-icon, hyphens, image-region, orient, outline-radius-bottomleft, outline-radius-bottomright, outline-radius-topleft, outline-radius-topright, perspective, perspective-origin, stack-sizing, tab-size, text-blink, text-decoration-color, text-decoration-line, text-decoration-style, text-size-adjust, transform, transform-origin, transform-style, transition, transition-delay, transition-duration, transition-property, transition-timing-function, user-focus, user-input, user-modify, user-select, window-shadow, background-clip, border-radius', - 'ms': 'accelerator, backface-visibility, background-position-x, background-position-y, behavior, block-progression, box-align, box-direction, box-flex, box-line-progression, box-lines, box-ordinal-group, box-orient, box-pack, content-zoom-boundary, content-zoom-boundary-max, content-zoom-boundary-min, content-zoom-chaining, content-zoom-snap, content-zoom-snap-points, content-zoom-snap-type, content-zooming, filter, flow-from, flow-into, font-feature-settings, grid-column, grid-column-align, grid-column-span, grid-columns, grid-layer, grid-row, grid-row-align, grid-row-span, grid-rows, high-contrast-adjust, hyphenate-limit-chars, hyphenate-limit-lines, hyphenate-limit-zone, hyphens, ime-mode, interpolation-mode, layout-flow, layout-grid, layout-grid-char, layout-grid-line, layout-grid-mode, layout-grid-type, line-break, overflow-style, perspective, perspective-origin, perspective-origin-x, perspective-origin-y, scroll-boundary, scroll-boundary-bottom, scroll-boundary-left, scroll-boundary-right, scroll-boundary-top, scroll-chaining, scroll-rails, scroll-snap-points-x, scroll-snap-points-y, scroll-snap-type, scroll-snap-x, scroll-snap-y, scrollbar-arrow-color, scrollbar-base-color, scrollbar-darkshadow-color, scrollbar-face-color, scrollbar-highlight-color, scrollbar-shadow-color, scrollbar-track-color, text-align-last, text-autospace, text-justify, text-kashida-space, text-overflow, text-size-adjust, text-underline-position, touch-action, transform, transform-origin, transform-origin-x, transform-origin-y, transform-origin-z, transform-style, transition, transition-delay, transition-duration, transition-property, transition-timing-function, user-select, word-break, wrap-flow, wrap-margin, wrap-through, writing-mode', - 'o': 'dashboard-region, animation, animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-play-state, animation-timing-function, border-image, link, link-source, object-fit, object-position, tab-size, table-baseline, transform, transform-origin, transition, transition-delay, transition-duration, transition-property, transition-timing-function, accesskey, input-format, input-required, marquee-dir, marquee-loop, marquee-speed, marquee-style' - }; - - Object.keys(props).forEach(function (k) { - prefs.define('css.' + k + 'Properties', props[k], descTemplate({ vendor: k })); - prefs.define('css.' + k + 'PropertiesAddon', '', descAddonTemplate({ vendor: k })); - }); - - prefs.define('css.unitlessProperties', 'z-index, line-height, opacity, font-weight, zoom', - 'The list of properties whose values ​​must not contain units.'); - - prefs.define('css.intUnit', 'px', 'Default unit for integer values'); - prefs.define('css.floatUnit', 'em', 'Default unit for float values'); - - prefs.define('css.keywords', 'auto, inherit, all', - 'A comma-separated list of valid keywords that can be used in CSS abbreviations.'); - - prefs.define('css.keywordAliases', 'a:auto, i:inherit, s:solid, da:dashed, do:dotted, t:transparent', - 'A comma-separated list of keyword aliases, used in CSS abbreviation. ' - + 'Each alias should be defined as alias:keyword_name.'); - - prefs.define('css.unitAliases', 'e:em, p:%, x:ex, r:rem', - 'A comma-separated list of unit aliases, used in CSS abbreviation. ' - + 'Each alias should be defined as alias:unit_value.'); - - prefs.define('css.color.short', true, - 'Should color values like #ffffff be shortened to ' - + '#fff after abbreviation with color was expanded.'); - - prefs.define('css.color.case', 'keep', - 'Letter case of color values generated by abbreviations with color ' - + '(like c#0). Possible values are upper, ' - + 'lower and keep.'); - - prefs.define('css.fuzzySearch', true, - 'Enable fuzzy search among CSS snippet names. When enabled, every ' - + 'unknown snippet will be scored against available snippet ' - + 'names (not values or CSS properties!). The match with best score ' - + 'will be used to resolve snippet value. For example, with this ' - + 'preference enabled, the following abbreviations are equal: ' - + 'ov:h == ov-h == o-h == ' - + 'oh'); - - prefs.define('css.fuzzySearchMinScore', 0.3, - 'The minium score (from 0 to 1) that fuzzy-matched abbreviation should ' - + 'achive. Lower values may produce many false-positive matches, ' - + 'higher values may reduce possible matches.'); - - prefs.define('css.alignVendor', false, - 'If set to true, all generated vendor-prefixed properties ' - + 'will be aligned by real property name.'); - - - function isNumeric(ch) { - var code = ch && ch.charCodeAt(0); - return (ch && ch == '.' || (code > 47 && code < 58)); - } - - /** - * Check if provided snippet contains only one CSS property and value. - * @param {String} snippet - * @returns {Boolean} - */ - function isSingleProperty(snippet) { - snippet = utils.trim(snippet); - - // check if it doesn't contain a comment and a newline - if (/\/\*|\n|\r/.test(snippet)) { - return false; - } - - // check if it's a valid snippet definition - if (!/^[a-z0-9\-]+\s*\:/i.test(snippet)) { - return false; - } - - return snippet.replace(/\$\{.+?\}/g, '').split(':').length == 2; - } - - /** - * Normalizes abbreviated value to final CSS one - * @param {String} value - * @returns {String} - */ - function normalizeValue(value) { - if (value.charAt(0) == '-' && !/^\-[\.\d]/.test(value)) { - value = value.replace(/^\-+/, ''); - } - - var ch = value.charAt(0); - if (ch == '#') { - return normalizeHexColor(value); - } - - if (ch == '$') { - return utils.escapeText(value); - } - - return getKeyword(value); - } - - function normalizeHexColor(value) { - var hex = value.replace(/^#+/, '') || '0'; - if (hex.toLowerCase() == 't') { - return 'transparent'; - } - - var opacity = ''; - hex = hex.replace(/\.(\d+)$/, function (str) { - opacity = '0' + str; - return ''; - }); - - var repeat = utils.repeatString; - var color = null; - switch (hex.length) { - case 1: - color = repeat(hex, 6); - break; - case 2: - color = repeat(hex, 3); - break; - case 3: - color = hex.charAt(0) + hex.charAt(0) + hex.charAt(1) + hex.charAt(1) + hex.charAt(2) + hex.charAt(2); - break; - case 4: - color = hex + hex.substr(0, 2); - break; - case 5: - color = hex + hex.charAt(0); - break; - default: - color = hex.substr(0, 6); - } - - if (opacity) { - return toRgba(color, opacity); - } - - // color must be shortened? - if (prefs.get('css.color.short')) { - var p = color.split(''); - if (p[0] == p[1] && p[2] == p[3] && p[4] == p[5]) { - color = p[0] + p[2] + p[4]; - } - } - - // should transform case? - switch (prefs.get('css.color.case')) { - case 'upper': - color = color.toUpperCase(); - break; - case 'lower': - color = color.toLowerCase(); - break; - } - - return '#' + color; - } - - /** - * Transforms HEX color definition into RGBA one - * @param {String} color HEX color, 6 characters - * @param {String} opacity Opacity value - * @return {String} - */ - function toRgba(color, opacity) { - var r = parseInt(color.substr(0, 2), 16); - var g = parseInt(color.substr(2, 2), 16); - var b = parseInt(color.substr(4, 2), 16); - - return 'rgba(' + [r, g, b, opacity].join(', ') + ')'; - } - - function getKeyword(name) { - var aliases = prefs.getDict('css.keywordAliases'); - return name in aliases ? aliases[name] : name; - } - - function getUnit(name) { - var aliases = prefs.getDict('css.unitAliases'); - return name in aliases ? aliases[name] : name; - } - - function isValidKeyword(keyword) { - return ~prefs.getArray('css.keywords').indexOf(getKeyword(keyword)); - } - - /** - * Check if passed CSS property support specified vendor prefix - * @param {String} property - * @param {String} prefix - */ - function hasPrefix(property, prefix) { - var info = vendorPrefixes[prefix]; - - if (!info) - info = utils.find(vendorPrefixes, function (data) { - return data.prefix == prefix; - }); - - return info && info.supports(property); - } - - /** - * Finds available vendor prefixes for given CSS property. - * Search is performed within Can I Use database and internal - * property list - * @param {String} property CSS property name - * @return {Array} Array of resolved prefixes or null if - * prefixes are not available for this property at all. - * Empty array means prefixes are not available for current - * user-define era - */ - function findVendorPrefixes(property) { - var prefixes = ciu.resolvePrefixes(property); - if (!prefixes) { - // Can I Use database is disabled or prefixes are not - // available for this property - prefixes = []; - Object.keys(vendorPrefixes).forEach(function (key) { - if (hasPrefix(property, key)) { - prefixes.push(vendorPrefixes[key].prefix); - } - }); - - if (!prefixes.length) { - prefixes = null; - } - } - - return prefixes; - } - - /** - * Search for a list of supported prefixes for CSS property. This list - * is used to generate all-prefixed snippet - * @param {String} property CSS property name - * @returns {Array} - */ - function findInternalPrefixes(property, noAutofill) { - var result = []; - var prefixes = findVendorPrefixes(property); - - if (prefixes) { - var prefixMap = {}; - Object.keys(vendorPrefixes).forEach(function (key) { - prefixMap[vendorPrefixes[key].prefix] = key; - }); - - result = prefixes.map(function (prefix) { - return prefixMap[prefix]; - }); - } - - if (!result.length && !noAutofill) { - // add all non-obsolete prefixes - Object.keys(vendorPrefixes).forEach(function (prefix) { - if (!vendorPrefixes[prefix].obsolete) { - result.push(prefix); - } - }); - } - - return result; - } - - function addPrefix(name, obj) { - if (typeof obj === 'string') { - obj = { prefix: obj }; - } - - vendorPrefixes[name] = utils.extend({}, prefixObj, obj); - } - - function getSyntaxPreference(name, syntax) { - if (syntax) { - // hacky alias for Stylus dialect - if (syntax == 'styl') { - syntax = 'stylus'; - } - - var val = prefs.get(syntax + '.' + name); - if (typeof val !== 'undefined') { - return val; - } - } - - return prefs.get('css.' + name); - } - - /** - * Format CSS property according to current syntax dialect - * @param {String} property - * @param {String} syntax - * @returns {String} - */ - function formatProperty(property, syntax) { - var ix = property.indexOf(':'); - property = property.substring(0, ix).replace(/\s+$/, '') - + getSyntaxPreference('valueSeparator', syntax) - + utils.trim(property.substring(ix + 1)); - - return property.replace(/\s*;\s*$/, getSyntaxPreference('propertyEnd', syntax)); - } - - /** - * Transforms snippet value if required. For example, this transformation - * may add !important declaration to CSS property - * @param {String} snippet - * @param {Boolean} isImportant - * @returns {String} - */ - function transformSnippet(snippet, isImportant, syntax) { - if (typeof snippet !== 'string') { - snippet = snippet.data; - } - - if (!isSingleProperty(snippet)) { - return snippet; - } - - if (isImportant) { - if (~snippet.indexOf(';')) { - snippet = snippet.split(';').join(' !important;'); - } else { - snippet += ' !important'; - } - } - - return formatProperty(snippet, syntax); - } - - function getProperties(key) { - var list = prefs.getArray(key); - var addon = prefs.getArray(key + 'Addon'); - if (addon) { - addon.forEach(function (prop) { - if (prop.charAt(0) == '-') { - list = utils.without(list, prop.substr(1)); - } else { - if (prop.charAt(0) == '+') - prop = prop.substr(1); - - list.push(prop); - } - }); - } - - return list; - } - - /** - * Tries to produce properties with vendor-prefixed value - * @param {Object} snippetObj Parsed snippet object - * @return {Array} Array of properties with prefixed values - */ - function resolvePrefixedValues(snippetObj, isImportant, syntax) { - var prefixes = []; - var lookup = {}; - - var parts = cssEditTree.findParts(snippetObj.value); - parts.reverse(); - parts.forEach(function (p) { - var partValue = p.substring(snippetObj.value); - (findVendorPrefixes(partValue) || []).forEach(function (prefix) { - if (!lookup[prefix]) { - lookup[prefix] = snippetObj.value; - prefixes.push(prefix); - } - - lookup[prefix] = utils.replaceSubstring(lookup[prefix], '-' + prefix + '-' + partValue, p); - }); - }); - - return prefixes.map(function (prefix) { - return transformSnippet(snippetObj.name + ':' + lookup[prefix], isImportant, syntax); - }); - } - - - // TODO refactor, this looks awkward now - addPrefix('w', { - prefix: 'webkit' - }); - addPrefix('m', { - prefix: 'moz' - }); - addPrefix('s', { - prefix: 'ms' - }); - addPrefix('o', { - prefix: 'o' - }); - - - module = module || {}; - module.exports = { - /** - * Adds vendor prefix - * @param {String} name One-character prefix name - * @param {Object} obj Object describing vendor prefix - * @memberOf cssResolver - */ - addPrefix: addPrefix, - - /** - * Check if passed CSS property supports specified vendor prefix - * @param {String} property - * @param {String} prefix - */ - supportsPrefix: hasPrefix, - - resolve: function (node, syntax) { - var cssSyntaxes = prefs.getArray('css.syntaxes'); - if (cssSyntaxes && ~cssSyntaxes.indexOf(syntax) && node.isElement()) { - return this.expandToSnippet(node.abbreviation, syntax); - } - - return null; - }, - - /** - * Returns prefixed version of passed CSS property, only if this - * property supports such prefix - * @param {String} property - * @param {String} prefix - * @returns - */ - prefixed: function (property, prefix) { - return hasPrefix(property, prefix) - ? '-' + prefix + '-' + property - : property; - }, - - /** - * Returns list of all registered vendor prefixes - * @returns {Array} - */ - listPrefixes: function () { - return vendorPrefixes.map(function (obj) { - return obj.prefix; - }); - }, - - /** - * Returns object describing vendor prefix - * @param {String} name - * @returns {Object} - */ - getPrefix: function (name) { - return vendorPrefixes[name]; - }, - - /** - * Removes prefix object - * @param {String} name - */ - removePrefix: function (name) { - if (name in vendorPrefixes) - delete vendorPrefixes[name]; - }, - - /** - * Extract vendor prefixes from abbreviation - * @param {String} abbr - * @returns {Object} Object containing array of prefixes and clean - * abbreviation name - */ - extractPrefixes: function (abbr) { - if (abbr.charAt(0) != '-') { - return { - property: abbr, - prefixes: null - }; - } - - // abbreviation may either contain sequence of one-character prefixes - // or just dash, meaning that user wants to produce all possible - // prefixed properties - var i = 1, il = abbr.length, ch; - var prefixes = []; - - while (i < il) { - ch = abbr.charAt(i); - if (ch == '-') { - // end-sequence character found, stop searching - i++; - break; - } - - if (ch in vendorPrefixes) { - prefixes.push(ch); - } else { - // no prefix found, meaning user want to produce all - // vendor-prefixed properties - prefixes.length = 0; - i = 1; - break; - } - - i++; - } - - // reached end of abbreviation and no property name left - if (i == il - 1) { - i = 1; - prefixes.length = 1; - } - - return { - property: abbr.substring(i), - prefixes: prefixes.length ? prefixes : 'all' - }; - }, - - /** - * Search for value substring in abbreviation - * @param {String} abbr - * @returns {String} Value substring - */ - findValuesInAbbreviation: function (abbr, syntax) { - syntax = syntax || 'css'; - - var i = 0, il = abbr.length, value = '', ch; - while (i < il) { - ch = abbr.charAt(i); - if (isNumeric(ch) || ch == '#' || ch == '$' || (ch == '-' && isNumeric(abbr.charAt(i + 1)))) { - value = abbr.substring(i); - break; - } - - i++; - } - - // try to find keywords in abbreviation - var property = abbr.substring(0, abbr.length - value.length); - var keywords = []; - // try to extract some commonly-used properties - while (~property.indexOf('-') && !resources.findSnippet(syntax, property)) { - var parts = property.split('-'); - var lastPart = parts.pop(); - if (!isValidKeyword(lastPart)) { - break; - } - - keywords.unshift(lastPart); - property = parts.join('-'); - } - - return keywords.join('-') + value; - }, - - parseValues: function (str) { - /** @type StringStream */ - var stream = stringStream.create(str); - var values = []; - var ch = null; - - while ((ch = stream.next())) { - if (ch == '$') { - stream.match(/^[^\$]+/, true); - values.push(stream.current()); - } else if (ch == '#') { - stream.match(/^t|[0-9a-f]+(\.\d+)?/i, true); - values.push(stream.current()); - } else if (ch == '-') { - if (isValidKeyword(utils.last(values)) || - (stream.start && isNumeric(str.charAt(stream.start - 1))) - ) { - stream.start = stream.pos; - } - - stream.match(/^\-?[0-9]*(\.[0-9]+)?[a-z%\.]*/, true); - values.push(stream.current()); - } else { - stream.match(/^[0-9]*(\.[0-9]*)?[a-z%]*/, true); - values.push(stream.current()); - } - - stream.start = stream.pos; - } - - return values - .filter(function (item) { - return !!item; - }) - .map(normalizeValue); - }, - - /** - * Extracts values from abbreviation - * @param {String} abbr - * @returns {Object} Object containing array of values and clean - * abbreviation name - */ - extractValues: function (abbr) { - // search for value start - var abbrValues = this.findValuesInAbbreviation(abbr); - if (!abbrValues) { - return { - property: abbr, - values: null - }; - } - - return { - property: abbr.substring(0, abbr.length - abbrValues.length).replace(/-$/, ''), - values: this.parseValues(abbrValues) - }; - }, - - /** - * Normalizes value, defined in abbreviation. - * @param {String} value - * @param {String} property - * @returns {String} - */ - normalizeValue: function (value, property) { - property = (property || '').toLowerCase(); - var unitlessProps = prefs.getArray('css.unitlessProperties'); - return value.replace(/^(\-?[0-9\.]+)([a-z]*)$/, function (str, val, unit) { - if (!unit && (val == '0' || ~unitlessProps.indexOf(property))) - return val; - - if (!unit) - return val.replace(/\.$/, '') + prefs.get(~val.indexOf('.') ? 'css.floatUnit' : 'css.intUnit'); - - return val + getUnit(unit); - }); - }, - - /** - * Expands abbreviation into a snippet - * @param {String} abbr Abbreviation name to expand - * @param {String} value Abbreviation value - * @param {String} syntax Currect syntax or dialect. Default is 'css' - * @returns {Object} Array of CSS properties and values or predefined - * snippet (string or element) - */ - expand: function (abbr, value, syntax) { - syntax = syntax || 'css'; - var autoInsertPrefixes = prefs.get(syntax + '.autoInsertVendorPrefixes'); - - // check if snippet should be transformed to !important - var isImportant = /^(.+)\!$/.test(abbr); - if (isImportant) { - abbr = RegExp.$1; - } - - // check if we have abbreviated resource - var snippet = resources.findSnippet(syntax, abbr); - if (snippet && !autoInsertPrefixes) { - return transformSnippet(snippet, isImportant, syntax); - } - - // no abbreviated resource, parse abbreviation - var prefixData = this.extractPrefixes(abbr); - var valuesData = this.extractValues(prefixData.property); - var abbrData = utils.extend(prefixData, valuesData); - - if (!snippet) { - snippet = resources.findSnippet(syntax, abbrData.property); - } else { - abbrData.values = null; - } - - if (!snippet && prefs.get('css.fuzzySearch')) { - // let’s try fuzzy search - snippet = resources.fuzzyFindSnippet(syntax, abbrData.property, parseFloat(prefs.get('css.fuzzySearchMinScore'))); - } - - if (!snippet) { - if (!abbrData.property || abbrData.property.endsWith(':')) { - return null; - } - snippet = abbrData.property + ':' + defaultValue; - } else if (typeof snippet !== 'string') { - snippet = snippet.data; - } - - if (!isSingleProperty(snippet)) { - return snippet; - } - - var snippetObj = this.splitSnippet(snippet); - var result = []; - if (!value && abbrData.values) { - value = abbrData.values.map(function (val) { - return this.normalizeValue(val, snippetObj.name); - }, this).join(' ') + ';'; - } - - snippetObj.value = value || snippetObj.value; - - var prefixes = abbrData.prefixes == 'all' || (!abbrData.prefixes && autoInsertPrefixes) - ? findInternalPrefixes(snippetObj.name, autoInsertPrefixes && abbrData.prefixes != 'all') - : abbrData.prefixes; - - - var names = [], propName; - (prefixes || []).forEach(function (p) { - if (p in vendorPrefixes) { - propName = vendorPrefixes[p].transformName(snippetObj.name); - names.push(propName); - result.push(transformSnippet(propName + ':' + snippetObj.value, - isImportant, syntax)); - } - }); - - // put the original property - result.push(transformSnippet(snippetObj.name + ':' + snippetObj.value, isImportant, syntax)); - names.push(snippetObj.name); - - result = resolvePrefixedValues(snippetObj, isImportant, syntax).concat(result); - - if (prefs.get('css.alignVendor')) { - var pads = utils.getStringsPads(names); - result = result.map(function (prop, i) { - return pads[i] + prop; - }); - } - - return result; - }, - - /** - * Same as expand method but transforms output into - * Emmet snippet - * @param {String} abbr - * @param {String} syntax - * @returns {String} - */ - expandToSnippet: function (abbr, syntax) { - var snippet = this.expand(abbr, null, syntax); - if (snippet === null) { - return null; - } - - if (Array.isArray(snippet)) { - return snippet.join('\n'); - } - - if (typeof snippet !== 'string') { - return snippet.data; - } - - return snippet + ''; - }, - - /** - * Split snippet into a CSS property-value pair - * @param {String} snippet - */ - splitSnippet: function (snippet) { - snippet = utils.trim(snippet); - if (snippet.indexOf(':') == -1) { - return { - name: snippet, - value: defaultValue - }; - } - - var pair = snippet.split(':'); - - return { - name: utils.trim(pair.shift()), - // replace ${0} tabstop to produce valid vendor-prefixed values - // where possible - value: utils.trim(pair.join(':')).replace(/^(\$\{0\}|\$0)(\s*;?)$/, '${1}$2') - }; - }, - - getSyntaxPreference: getSyntaxPreference, - transformSnippet: transformSnippet, - vendorPrefixes: findVendorPrefixes - }; - - return module.exports; - }); - }, { "../assets/caniuse": "assets\\caniuse.js", "../assets/preferences": "assets\\preferences.js", "../assets/resources": "assets\\resources.js", "../assets/stringStream": "assets\\stringStream.js", "../editTree/css": "editTree\\css.js", "../utils/common": "utils\\common.js", "../utils/template": "utils\\template.js" }], "resolver\\cssGradient.js": [function (require, module, exports) { - /** - * 'Expand Abbreviation' handler that parses gradient definition from under - * cursor and updates CSS rule with vendor-prefixed values. - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var prefs = require('../assets/preferences'); - var resources = require('../assets/resources'); - var utils = require('../utils/common'); - var stringStream = require('../assets/stringStream'); - var cssResolver = require('./css'); - var range = require('../assets/range'); - var cssEditTree = require('../editTree/css'); - var editorUtils = require('../utils/editor'); - var linearGradient = require('./gradient/linear'); - - var cssSyntaxes = ['css', 'less', 'sass', 'scss', 'stylus', 'styl']; - - // XXX define preferences - prefs.define('css.gradient.prefixes', 'webkit, moz, o', - 'A comma-separated list of vendor-prefixes for which values should ' - + 'be generated.'); - - prefs.define('css.gradient.oldWebkit', false, - 'Generate gradient definition for old Webkit implementations'); - - prefs.define('css.gradient.omitDefaultDirection', true, - 'Do not output default direction definition in generated gradients.'); - - prefs.define('css.gradient.defaultProperty', 'background-image', - 'When gradient expanded outside CSS value context, it will produce ' - + 'properties with this name.'); - - prefs.define('css.gradient.fallback', false, - 'With this option enabled, CSS gradient generator will produce ' - + 'background-color property with gradient first color ' - + 'as fallback for old browsers.'); - - /** - * Resolves property name (abbreviation): searches for snippet definition in - * 'resources' and returns new name of matched property - */ - function resolvePropertyName(name, syntax) { - var snippet = resources.findSnippet(syntax, name); - - if (!snippet && prefs.get('css.fuzzySearch')) { - var minScore = parseFloat(prefs.get('css.fuzzySearchMinScore')); - snippet = resources.fuzzyFindSnippet(syntax, name, minScore); - } - - if (snippet) { - if (typeof snippet !== 'string') { - snippet = snippet.data; - } - - return cssResolver.splitSnippet(snippet).name; - } - } - - /** - * Returns vendor prefixes for given gradient type - * @param {String} type Gradient type (currently, 'linear-gradient' - * is the only supported value) - * @return {Array} - */ - function getGradientPrefixes(type) { - var prefixes = cssResolver.vendorPrefixes(type); - if (!prefixes) { - // disabled Can I Use, fallback to property list - prefixes = prefs.getArray('css.gradient.prefixes'); - } - - return prefixes || []; - } - - function getPrefixedNames(type) { - var prefixes = getGradientPrefixes(type); - var names = prefixes - ? prefixes.map(function (p) { - return '-' + p + '-' + type; - }) - : []; - - names.push(type); - - return names; - } - - /** - * Returns list of CSS properties with gradient - * @param {Array} gradient List of gradient objects - * @param {CSSEditElement} property Original CSS property - * @returns {Array} - */ - function getPropertiesForGradient(gradients, property) { - var props = []; - var propertyName = property.name(); - var omitDir = prefs.get('css.gradient.omitDefaultDirection'); - - if (prefs.get('css.gradient.fallback') && ~propertyName.toLowerCase().indexOf('background')) { - props.push({ - name: 'background-color', - value: '${1:' + gradients[0].gradient.colorStops[0].color + '}' - }); - } - - var value = property.value(); - getGradientPrefixes('linear-gradient').forEach(function (prefix) { - var name = cssResolver.prefixed(propertyName, prefix); - if (prefix == 'webkit' && prefs.get('css.gradient.oldWebkit')) { - try { - props.push({ - name: name, - value: insertGradientsIntoCSSValue(gradients, value, { - prefix: prefix, - oldWebkit: true, - omitDefaultDirection: omitDir - }) - }); - } catch (e) { } - } - - props.push({ - name: name, - value: insertGradientsIntoCSSValue(gradients, value, { - prefix: prefix, - omitDefaultDirection: omitDir - }) - }); - }); - - return props.sort(function (a, b) { - return b.name.length - a.name.length; - }); - } - - /** - * Replaces old gradient definitions in given CSS property value - * with new ones, preserving original formatting - * @param {Array} gradients List of CSS gradients - * @param {String} value Original CSS value - * @param {Object} options Options for gradient’s stringify() method - * @return {String} - */ - function insertGradientsIntoCSSValue(gradients, value, options) { - // gradients *should* passed in order they actually appear in CSS property - // iterate over it in backward direction to preserve gradient locations - options = options || {}; - gradients = utils.clone(gradients); - gradients.reverse().forEach(function (item, i) { - var suffix = !i && options.placeholder ? options.placeholder : ''; - var str = options.oldWebkit ? item.gradient.stringifyOldWebkit(options) : item.gradient.stringify(options); - value = utils.replaceSubstring(value, str + suffix, item.matchedPart); - }); - - return value; - } - - /** - * Returns list of properties with the same meaning - * (e.g. vendor-prefixed + original name) - * @param {String} property CSS property name - * @return {Array} - */ - function similarPropertyNames(property) { - if (typeof property !== 'string') { - property = property.name(); - } - - var similarProps = (cssResolver.vendorPrefixes(property) || []).map(function (prefix) { - return '-' + prefix + '-' + property; - }); - similarProps.push(property); - return similarProps; - } - - /** - * Pastes gradient definition into CSS rule with correct vendor-prefixes - * @param {EditElement} property Matched CSS property - * @param {Array} gradients List of gradients to insert - */ - function pasteGradient(property, gradients) { - var rule = property.parent; - var alignVendor = prefs.get('css.alignVendor'); - var omitDir = prefs.get('css.gradient.omitDefaultDirection'); - - // we may have aligned gradient definitions: find the smallest value - // separator - var sep = property.styleSeparator; - var before = property.styleBefore; - - // first, remove all properties within CSS rule with the same name and - // gradient definition - rule.getAll(similarPropertyNames(property)).forEach(function (item) { - if (item != property && /gradient/i.test(item.value())) { - if (item.styleSeparator.length < sep.length) { - sep = item.styleSeparator; - } - if (item.styleBefore.length < before.length) { - before = item.styleBefore; - } - rule.remove(item); - } - }); - - if (alignVendor) { - // update prefix - if (before != property.styleBefore) { - var fullRange = property.fullRange(); - rule._updateSource(before, fullRange.start, fullRange.start + property.styleBefore.length); - property.styleBefore = before; - } - - // update separator value - if (sep != property.styleSeparator) { - rule._updateSource(sep, property.nameRange().end, property.valueRange().start); - property.styleSeparator = sep; - } - } - - var value = property.value(); - - // create list of properties to insert - var propsToInsert = getPropertiesForGradient(gradients, property); - - // align prefixed values - if (alignVendor) { - var names = [], values = []; - propsToInsert.forEach(function (item) { - names.push(item.name); - values.push(item.value); - }); - values.push(property.value()); - names.push(property.name()); - - var valuePads = utils.getStringsPads(values.map(function (v) { - return v.substring(0, v.indexOf('(')); - })); - - var namePads = utils.getStringsPads(names); - property.name(namePads[namePads.length - 1] + property.name()); - - propsToInsert.forEach(function (prop, i) { - prop.name = namePads[i] + prop.name; - prop.value = valuePads[i] + prop.value; - }); - - property.value(valuePads[valuePads.length - 1] + property.value()); - } - - // put vendor-prefixed definitions before current rule - propsToInsert.forEach(function (prop) { - rule.add(prop.name, prop.value, rule.indexOf(property)); - }); - - // put vanilla-clean gradient definition into current rule - property.value(insertGradientsIntoCSSValue(gradients, value, { - placeholder: '${2}', - omitDefaultDirection: omitDir - })); - } - - /** - * Validates caret position relatively to located gradients - * in CSS rule. In other words, it checks if it’s safe to - * expand gradients for current caret position or not. - * - * See issue https://github.com/sergeche/emmet-sublime/issues/411 - * - * @param {Array} gradients List of parsed gradients - * @param {Number} caretPos Current caret position - * @param {String} syntax Current document syntax - * @return {Boolean} - */ - function isValidCaretPosition(gradients, caretPos, syntax) { - syntax = syntax || 'css'; - if (syntax == 'css' || syntax == 'less' || syntax == 'scss') { - return true; - } - - var offset = gradients.property.valueRange(true).start; - var parts = gradients.gradients; - - // in case of preprocessors where properties are separated with - // newlines, make sure there’s no gradient definition past - // current caret position. - for (var i = parts.length - 1; i >= 0; i--) { - if (parts[i].matchedPart.start + offset >= caretPos) { - return false; - } - } - - return true; - } - - module = module || {}; - return module.exports = { - /** - * Search for gradient definitions inside CSS property value - * @returns {Array} Array of matched gradients - */ - findGradients: function (cssProp) { - var value = cssProp.value(); - var gradients = []; - var that = this; - cssProp.valueParts().forEach(function (part) { - var partValue = part.substring(value); - if (linearGradient.isLinearGradient(partValue)) { - var gradient = linearGradient.parse(partValue); - if (gradient) { - gradients.push({ - gradient: gradient, - matchedPart: part - }); - } - } - }); - - return gradients.length ? gradients : null; - }, - - /** - * Returns list of gradients found in CSS property - * of given CSS code in specified (caret) position - * @param {String} css CSS code snippet - * @param {Number} pos Character index where to start searching for CSS property - * @return {Array} - */ - gradientsFromCSSProperty: function (css, pos) { - var cssProp = cssEditTree.propertyFromPosition(css, pos); - if (cssProp) { - var grd = this.findGradients(cssProp); - if (grd) { - return { - property: cssProp, - gradients: grd - }; - } - } - - return null; - }, - - /** - * Handler for “Expand Abbreviation” action - * @param {IEmmetEditor} editor - * @param {String} syntax - * @param {String} profile - * return {Boolean} - */ - expandAbbreviationHandler: function (editor, syntax, profile) { - var info = editorUtils.outputInfo(editor, syntax, profile); - if (!~cssSyntaxes.indexOf(info.syntax)) { - return false; - } - - // let's see if we are expanding gradient definition - var caret = editor.getCaretPos(); - var content = info.content; - var gradients = this.gradientsFromCSSProperty(content, caret); - if (gradients) { - if (!isValidCaretPosition(gradients, caret, info.syntax)) { - return false; - } - - var cssProperty = gradients.property; - var cssRule = cssProperty.parent; - var ruleStart = cssRule.options.offset || 0; - var ruleEnd = ruleStart + cssRule.toString().length; - - // Handle special case: - // user wrote gradient definition between existing CSS - // properties and did not finished it with semicolon. - // In this case, we have semicolon right after gradient - // definition and re-parse rule again - if (/[\n\r]/.test(cssProperty.value())) { - // insert semicolon at the end of gradient definition - var insertPos = cssProperty.valueRange(true).start + utils.last(gradients.gradients).matchedPart.end; - content = utils.replaceSubstring(content, ';', insertPos); - - var _gradients = this.gradientsFromCSSProperty(content, caret); - if (_gradients) { - gradients = _gradients; - cssProperty = gradients.property; - cssRule = cssProperty.parent; - } - } - - // make sure current property has terminating semicolon - cssProperty.end(';'); - - // resolve CSS property name - var resolvedName = resolvePropertyName(cssProperty.name(), syntax); - if (resolvedName) { - cssProperty.name(resolvedName); - } - - pasteGradient(cssProperty, gradients.gradients); - editor.replaceContent(cssRule.toString(), ruleStart, ruleEnd, true); - return true; - } - - return this.expandGradientOutsideValue(editor, syntax); - }, - - /** - * Tries to expand gradient outside CSS value - * @param {IEmmetEditor} editor - * @param {String} syntax - */ - expandGradientOutsideValue: function (editor, syntax) { - var propertyName = prefs.get('css.gradient.defaultProperty'); - var omitDir = prefs.get('css.gradient.omitDefaultDirection'); - - if (!propertyName) { - return false; - } - - // assuming that gradient definition is written on new line, - // do a simplified parsing - var content = String(editor.getContent()); - /** @type Range */ - var lineRange = range.create(editor.getCurrentLineRange()); - - // get line content and adjust range with padding - var line = lineRange.substring(content) - .replace(/^\s+/, function (pad) { - lineRange.start += pad.length; - return ''; - }) - .replace(/\s+$/, function (pad) { - lineRange.end -= pad.length; - return ''; - }); - - // trick parser: make it think that we’re parsing actual CSS property - var fakeCSS = 'a{' + propertyName + ': ' + line + ';}'; - var gradients = this.gradientsFromCSSProperty(fakeCSS, fakeCSS.length - 2); - if (gradients) { - var props = getPropertiesForGradient(gradients.gradients, gradients.property); - props.push({ - name: gradients.property.name(), - value: insertGradientsIntoCSSValue(gradients.gradients, gradients.property.value(), { - placeholder: '${2}', - omitDefaultDirection: omitDir - }) - }); - - var sep = cssResolver.getSyntaxPreference('valueSeparator', syntax); - var end = cssResolver.getSyntaxPreference('propertyEnd', syntax); - - if (prefs.get('css.alignVendor')) { - var pads = utils.getStringsPads(props.map(function (prop) { - return prop.value.substring(0, prop.value.indexOf('(')); - })); - props.forEach(function (prop, i) { - prop.value = pads[i] + prop.value; - }); - } - - props = props.map(function (item) { - return item.name + sep + item.value + end; - }); - - editor.replaceContent(props.join('\n'), lineRange.start, lineRange.end); - return true; - } - - return false; - }, - - /** - * Handler for “Reflect CSS Value“ action - * @param {String} property - */ - reflectValueHandler: function (property) { - var omitDir = prefs.get('css.gradient.omitDefaultDirection'); - var gradients = this.findGradients(property); - if (!gradients) { - return false; - } - - var that = this; - var value = property.value(); - - // reflect value for properties with the same name - property.parent.getAll(similarPropertyNames(property)).forEach(function (prop) { - if (prop === property) { - return; - } - - // make sure current property contains gradient definition, - // otherwise – skip it - var localGradients = that.findGradients(prop); - if (localGradients) { - // detect vendor prefix for current property - var localValue = prop.value(); - var dfn = localGradients[0].matchedPart.substring(localValue); - var prefix = ''; - if (/^\s*\-([a-z]+)\-/.test(dfn)) { - prefix = RegExp.$1; - } - - prop.value(insertGradientsIntoCSSValue(gradients, value, { - prefix: prefix, - omitDefaultDirection: omitDir - })); - } - }); - - return true; - } - }; - }); - }, { "../assets/preferences": "assets\\preferences.js", "../assets/range": "assets\\range.js", "../assets/resources": "assets\\resources.js", "../assets/stringStream": "assets\\stringStream.js", "../editTree/css": "editTree\\css.js", "../utils/common": "utils\\common.js", "../utils/editor": "utils\\editor.js", "./css": "resolver\\css.js", "./gradient/linear": "resolver\\gradient\\linear.js" }], "resolver\\gradient\\linear.js": [function (require, module, exports) { - /** - * CSS linear gradient definition - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var stringStream = require('../../assets/stringStream'); - var utils = require('../../utils/common'); - - // all directions are expressed in “new style” degrees - var directions = { - 'bottom': 0, - 'bottom left': 45, - 'left': 90, - 'top left': 135, - 'top': 180, - 'top right': 225, - 'right': 270, - 'bottom right': 315, - - 'to top': 0, - 'to top right': 45, - 'to right': 90, - 'to bottom right': 135, - 'to bottom': 180, - 'to bottom left': 225, - 'to left': 270, - 'to top left': 315 - }; - - var defaultDirections = ['top', 'to bottom', '0deg']; - - - var reLinearGradient = /^\s*(\-[a-z]+\-)?(lg|linear\-gradient)\s*\(/i; - var reDeg = /(\d+)deg/i; - var reKeyword = /top|bottom|left|right/i; - - function LinearGradient(dfn) { - this.colorStops = []; - this.direction = 180; - - // extract tokens - var stream = stringStream.create(utils.trim(dfn)); - var ch, cur; - while ((ch = stream.next())) { - if (stream.peek() == ',') { - // Is it a first entry? Check if it’s a direction - cur = stream.current(); - - if (!this.colorStops.length && (reDeg.test(cur) || reKeyword.test(cur))) { - this.direction = resolveDirection(cur); - } else { - this.addColorStop(cur); - } - - stream.next(); - stream.eatSpace(); - stream.start = stream.pos; - } else if (ch == '(') { // color definition, like 'rgb(0,0,0)' - stream.skipTo(')'); - } - } - - // add last token - this.addColorStop(stream.current()); - } - - LinearGradient.prototype = { - type: 'linear-gradient', - addColorStop: function (color, ix) { - color = normalizeSpace(color || ''); - if (!color) { - return; - } - - color = this.parseColorStop(color); - - if (typeof ix === 'undefined') { - this.colorStops.push(color); - } else { - this.colorStops.splice(ix, 0, color); - } - }, - - /** - * Parses color stop definition - * @param {String} colorStop - * @returns {Object} - */ - parseColorStop: function (colorStop) { - colorStop = normalizeSpace(colorStop); - - // find color declaration - // first, try complex color declaration, like rgb(0,0,0) - var color = null; - colorStop = colorStop.replace(/^(\w+\(.+?\))\s*/, function (str, c) { - color = c; - return ''; - }); - - if (!color) { - // try simple declaration, like yellow, #fco, #ffffff, etc. - var parts = colorStop.split(' '); - color = parts[0]; - colorStop = parts[1] || ''; - } - - var result = { - color: color - }; - - if (colorStop) { - // there's position in color stop definition - colorStop.replace(/^(\-?[\d\.]+)([a-z%]+)?$/, function (str, pos, unit) { - result.position = pos; - if (~pos.indexOf('.')) { - unit = ''; - } else if (!unit) { - unit = '%'; - } - - if (unit) { - result.unit = unit; - } - }); - } - - return result; - }, - - stringify: function (options) { - options = options || {}; - var fn = 'linear-gradient'; - if (options.prefix) { - fn = '-' + options.prefix + '-' + fn; - } - - // transform color-stops - var parts = this.colorStops.map(function (cs) { - var pos = cs.position ? ' ' + cs.position + (cs.unit || '') : ''; - return cs.color + pos; - }); - - var dir = stringifyDirection(this.direction, !!options.prefix); - if (!options.omitDefaultDirection || !~defaultDirections.indexOf(dir)) { - parts.unshift(dir); - } - - return fn + '(' + parts.join(', ') + ')'; - }, - - stringifyOldWebkit: function () { - var colorStops = this.colorStops.map(function (item) { - return utils.clone(item); - }); - - // normalize color-stops position - colorStops.forEach(function (cs) { - if (!('position' in cs)) // implied position - return; - - if (~cs.position.indexOf('.') || cs.unit == '%') { - cs.position = parseFloat(cs.position) / (cs.unit == '%' ? 100 : 1); - } else { - throw "Can't convert color stop '" + (cs.position + (cs.unit || '')) + "'"; - } - }); - - this._fillImpliedPositions(colorStops); - - // transform color-stops into string representation - colorStops = colorStops.map(function (cs, i) { - if (!cs.position && !i) { - return 'from(' + cs.color + ')'; - } - - if (cs.position == 1 && i == colorStops.length - 1) { - return 'to(' + cs.color + ')'; - } - - return 'color-stop(' + (cs.position.toFixed(2).replace(/\.?0+$/, '')) + ', ' + cs.color + ')'; - }); - - return '-webkit-gradient(linear, ' - + oldWebkitDirection((this.direction + 180) % 360) - + ', ' - + colorStops.join(', ') - + ')'; - }, - - /** - * Fills-out implied positions in color-stops. This function is useful for - * old Webkit gradient definitions - */ - _fillImpliedPositions: function (colorStops) { - var from = 0; - - colorStops.forEach(function (cs, i) { - // make sure that first and last positions are defined - if (!i) { - return cs.position = cs.position || 0; - } - - if (i == colorStops.length - 1 && !('position' in cs)) { - cs.position = 1; - } - - if ('position' in cs) { - var start = colorStops[from].position || 0; - var step = (cs.position - start) / (i - from); - colorStops.slice(from, i).forEach(function (cs2, j) { - cs2.position = start + step * j; - }); - - from = i; - } - }); - }, - - valueOf: function () { - return this.stringify(); - } - }; - - function normalizeSpace(str) { - return utils.trim(str).replace(/\s+/g, ' '); - } - - /** - * Resolves textual direction to degrees - * @param {String} dir Direction to resolve - * @return {Number} - */ - function resolveDirection(dir) { - if (typeof dir == 'number') { - return dir; - } - - dir = normalizeSpace(dir).toLowerCase(); - if (reDeg.test(dir)) { - return +RegExp.$1; - } - - var prefix = /^to\s/.test(dir) ? 'to ' : ''; - var left = ~dir.indexOf('left') && 'left'; - var right = ~dir.indexOf('right') && 'right'; - var top = ~dir.indexOf('top') && 'top'; - var bottom = ~dir.indexOf('bottom') && 'bottom'; - - var key = normalizeSpace(prefix + (top || bottom || '') + ' ' + (left || right || '')); - return directions[key] || 0; - } - - /** - * Tries to find keyword for given direction, expressed in degrees - * @param {Number} dir Direction (degrees) - * @param {Boolean} oldStyle Use old style keywords (e.g. "top" instead of "to bottom") - * @return {String} Keyword or Ndeg expression - */ - function stringifyDirection(dir, oldStyle) { - var reNewStyle = /^to\s/; - var keys = Object.keys(directions).filter(function (k) { - var hasPrefix = reNewStyle.test(k); - return oldStyle ? !hasPrefix : hasPrefix; - }); - - for (var i = 0; i < keys.length; i++) { - if (directions[keys[i]] == dir) { - return keys[i]; - } - } - - if (oldStyle) { - dir = (dir + 270) % 360; - } - - return dir + 'deg'; - } - - /** - * Creates direction definition for old Webkit gradients - * @param {String} direction - * @returns {String} - */ - function oldWebkitDirection(dir) { - dir = stringifyDirection(dir, true); - - if (reDeg.test(dir)) { - throw "The direction is an angle that can’t be converted."; - } - - var v = function (pos) { - return ~dir.indexOf(pos) ? '100%' : '0'; - }; - - return v('left') + ' ' + v('top') + ', ' + v('right') + ' ' + v('bottom'); - } - - return { - /** - * Parses gradient definition into an object. - * This object can be used to transform gradient into various - * forms - * @param {String} gradient Gradient definition - * @return {LinearGradient} - */ - parse: function (gradient) { - // cut out all redundant data - if (this.isLinearGradient(gradient)) { - gradient = gradient.replace(/^\s*[\-a-z]+\s*\(|\)\s*$/ig, ''); - } else { - throw 'Invalid linear gradient definition:\n' + gradient; - } - - return new LinearGradient(gradient); - }, - - /** - * Check if given string can be parsed as linear gradient - * @param {String} str - * @return {Boolean} - */ - isLinearGradient: function (str) { - return reLinearGradient.test(str); - }, - - resolveDirection: resolveDirection, - stringifyDirection: stringifyDirection - }; - }); - }, { "../../assets/stringStream": "assets\\stringStream.js", "../../utils/common": "utils\\common.js" }], "resolver\\tagName.js": [function (require, module, exports) { - /** - * Module for resolving tag names: returns best matched tag name for child - * element based on passed parent's tag name. Also provides utility function - * for element type detection (inline, block-level, empty) - */ - if (typeof module === 'object' && typeof define !== 'function') { - var define = function (factory) { - module.exports = factory(require, exports, module); - }; - } - - define(function (require, exports, module) { - var utils = require('../utils/common'); - - var elementTypes = { - // empty: 'area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed,keygen,command'.split(','), - empty: [], - blockLevel: 'address,applet,blockquote,button,center,dd,del,dir,div,dl,dt,fieldset,form,frameset,hr,iframe,ins,isindex,li,link,map,menu,noframes,noscript,object,ol,p,pre,script,table,tbody,td,tfoot,th,thead,tr,ul,h1,h2,h3,h4,h5,h6'.split(','), - inlineLevel: 'a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'.split(',') - }; - - var elementMap = { - 'p': 'span', - 'ul': 'li', - 'ol': 'li', - 'table': 'tr', - 'tr': 'td', - 'tbody': 'tr', - 'thead': 'tr', - 'tfoot': 'tr', - 'colgroup': 'col', - 'select': 'option', - 'optgroup': 'option', - 'audio': 'source', - 'video': 'source', - 'object': 'param', - 'map': 'area' - }; - - return { - /** - * Returns best matched child element name for passed parent's - * tag name - * @param {String} name - * @returns {String} - * @memberOf tagName - */ - resolve: function (name) { - name = (name || '').toLowerCase(); - - if (name in elementMap) - return this.getMapping(name); - - if (this.isInlineLevel(name)) - return 'span'; - - return 'div'; - }, - - /** - * Returns mapped child element name for passed parent's name - * @param {String} name - * @returns {String} - */ - getMapping: function (name) { - return elementMap[name.toLowerCase()]; - }, - - /** - * Check if passed element name belongs to inline-level element - * @param {String} name - * @returns {Boolean} - */ - isInlineLevel: function (name) { - return this.isTypeOf(name, 'inlineLevel'); - }, - - /** - * Check if passed element belongs to block-level element. - * For better matching of unknown elements (for XML, for example), - * you should use !this.isInlineLevel(name) - * @returns {Boolean} - */ - isBlockLevel: function (name) { - return this.isTypeOf(name, 'blockLevel'); - }, - - /** - * Check if passed element is void (i.e. should not have closing tag). - * @returns {Boolean} - */ - isEmptyElement: function (name) { - return this.isTypeOf(name, 'empty'); - }, - - /** - * Generic function for testing if element name belongs to specified - * elements collection - * @param {String} name Element name - * @param {String} type Collection name - * @returns {Boolean} - */ - isTypeOf: function (name, type) { - return ~elementTypes[type].indexOf(name); - }, - - /** - * Adds new parent–child mapping - * @param {String} parent - * @param {String} child - */ - addMapping: function (parent, child) { - elementMap[parent] = child; - }, - - /** - * Removes parent-child mapping - */ - removeMapping: function (parent) { - if (parent in elementMap) - delete elementMap[parent]; - }, - - /** - * Adds new element into collection - * @param {String} name Element name - * @param {String} collection Collection name - */ - addElementToCollection: function (name, collection) { - if (!elementTypes[collection]) - elementTypes[collection] = []; - - var col = this.getCollection(collection); - if (!~col.indexOf(name)) { - col.push(name); - } - }, - - /** - * Removes element name from specified collection - * @param {String} name Element name - * @param {String} collection Collection name - * @returns - */ - removeElementFromCollection: function (name, collection) { - if (collection in elementTypes) { - elementTypes[collection] = utils.without(this.getCollection(collection), name); - } - }, - - /** - * Returns elements name collection - * @param {String} name Collection name - * @returns {Array} - */ - getCollection: function (name) { - return elementTypes[name]; - } - }; - }); - }, { "../utils/common": "utils\\common.js" }], "snippets.json": [function (require, module, exports) { - module.exports = { - "variables": { - "lang": "en", - "locale": "en-US", - "charset": "UTF-8", - "indentation": "\t", - "newline": "\n" - }, - - "css": { - "filters": "css", - "profile": "css", - "snippets": { - "@i": "@import url(|);", - "@import": "@import url(|);", - "@m": "@media ${1:screen} {\n\t|\n}", - "@media": "@media ${1:screen} {\n\t|\n}", - "@f": "@font-face {\n\tfont-family:|;\n\tsrc:url(|);\n}", - "@f+": "@font-face {\n\tfont-family: '${1:FontName}';\n\tsrc: url('${2:FileName}.eot');\n\tsrc: url('${2:FileName}.eot?#iefix') format('embedded-opentype'),\n\t\t url('${2:FileName}.woff') format('woff'),\n\t\t url('${2:FileName}.ttf') format('truetype'),\n\t\t url('${2:FileName}.svg#${1:FontName}') format('svg');\n\tfont-style: ${3:normal};\n\tfont-weight: ${4:normal};\n}", - - "@kf": "@-webkit-keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}\n@-o-keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}\n@-moz-keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}\n@keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}", - - "anim": "animation:|;", - "anim-": "animation:${1:name} ${2:duration} ${3:timing-function} ${4:delay} ${5:iteration-count} ${6:direction} ${7:fill-mode};", - "animdel": "animation-delay:${1:time};", - - "animdir": "animation-direction:${1:normal};", - "animdir:n": "animation-direction:normal;", - "animdir:r": "animation-direction:reverse;", - "animdir:a": "animation-direction:alternate;", - "animdir:ar": "animation-direction:alternate-reverse;", - - "animdur": "animation-duration:${1:0}s;", - - "animfm": "animation-fill-mode:${1:both};", - "animfm:f": "animation-fill-mode:forwards;", - "animfm:b": "animation-fill-mode:backwards;", - "animfm:bt": "animation-fill-mode:both;", - "animfm:bh": "animation-fill-mode:both;", - - "animic": "animation-iteration-count:${1:1};", - "animic:i": "animation-iteration-count:infinite;", - - "animn": "animation-name:${1:none};", - - "animps": "animation-play-state:${1:running};", - "animps:p": "animation-play-state:paused;", - "animps:r": "animation-play-state:running;", - - "animtf": "animation-timing-function:${1:linear};", - "animtf:e": "animation-timing-function:ease;", - "animtf:ei": "animation-timing-function:ease-in;", - "animtf:eo": "animation-timing-function:ease-out;", - "animtf:eio": "animation-timing-function:ease-in-out;", - "animtf:l": "animation-timing-function:linear;", - "animtf:cb": "animation-timing-function:cubic-bezier(${1:0.1}, ${2:0.7}, ${3:1.0}, ${3:0.1});", - - "ap": "appearance:${none};", - - "!": "!important", - "pos": "position:${1:relative};", - "pos:s": "position:static;", - "pos:a": "position:absolute;", - "pos:r": "position:relative;", - "pos:f": "position:fixed;", - "t": "top:|;", - "t:a": "top:auto;", - "r": "right:|;", - "r:a": "right:auto;", - "b": "bottom:|;", - "b:a": "bottom:auto;", - "l": "left:|;", - "l:a": "left:auto;", - "z": "z-index:|;", - "z:a": "z-index:auto;", - "fl": "float:${1:left};", - "fl:n": "float:none;", - "fl:l": "float:left;", - "fl:r": "float:right;", - "cl": "clear:${1:both};", - "cl:n": "clear:none;", - "cl:l": "clear:left;", - "cl:r": "clear:right;", - "cl:b": "clear:both;", - - "colm": "columns:|;", - "colmc": "column-count:|;", - "colmf": "column-fill:|;", - "colmg": "column-gap:|;", - "colmr": "column-rule:|;", - "colmrc": "column-rule-color:|;", - "colmrs": "column-rule-style:|;", - "colmrw": "column-rule-width:|;", - "colms": "column-span:|;", - "colmw": "column-width:|;", - - "d": "display:${1:block};", - "d:n": "display:none;", - "d:b": "display:block;", - "d:f": "display:flex;", - "d:if": "display:inline-flex;", - "d:i": "display:inline;", - "d:ib": "display:inline-block;", - "d:ib+": "display: inline-block;\n*display: inline;\n*zoom: 1;", - "d:li": "display:list-item;", - "d:ri": "display:run-in;", - "d:cp": "display:compact;", - "d:tb": "display:table;", - "d:itb": "display:inline-table;", - "d:tbcp": "display:table-caption;", - "d:tbcl": "display:table-column;", - "d:tbclg": "display:table-column-group;", - "d:tbhg": "display:table-header-group;", - "d:tbfg": "display:table-footer-group;", - "d:tbr": "display:table-row;", - "d:tbrg": "display:table-row-group;", - "d:tbc": "display:table-cell;", - "d:rb": "display:ruby;", - "d:rbb": "display:ruby-base;", - "d:rbbg": "display:ruby-base-group;", - "d:rbt": "display:ruby-text;", - "d:rbtg": "display:ruby-text-group;", - "v": "visibility:${1:hidden};", - "v:v": "visibility:visible;", - "v:h": "visibility:hidden;", - "v:c": "visibility:collapse;", - "ov": "overflow:${1:hidden};", - "ov:v": "overflow:visible;", - "ov:h": "overflow:hidden;", - "ov:s": "overflow:scroll;", - "ov:a": "overflow:auto;", - "ovx": "overflow-x:${1:hidden};", - "ovx:v": "overflow-x:visible;", - "ovx:h": "overflow-x:hidden;", - "ovx:s": "overflow-x:scroll;", - "ovx:a": "overflow-x:auto;", - "ovy": "overflow-y:${1:hidden};", - "ovy:v": "overflow-y:visible;", - "ovy:h": "overflow-y:hidden;", - "ovy:s": "overflow-y:scroll;", - "ovy:a": "overflow-y:auto;", - "ovs": "overflow-style:${1:scrollbar};", - "ovs:a": "overflow-style:auto;", - "ovs:s": "overflow-style:scrollbar;", - "ovs:p": "overflow-style:panner;", - "ovs:m": "overflow-style:move;", - "ovs:mq": "overflow-style:marquee;", - "zoo": "zoom:1;", - "zm": "zoom:1;", - "cp": "clip:|;", - "cp:a": "clip:auto;", - "cp:r": "clip:rect(${1:top} ${2:right} ${3:bottom} ${4:left});", - "bxz": "box-sizing:${1:border-box};", - "bxz:cb": "box-sizing:content-box;", - "bxz:bb": "box-sizing:border-box;", - "bxsh": "box-shadow:${1:inset }${2:hoff} ${3:voff} ${4:blur} ${5:color};", - "bxsh:r": "box-shadow:${1:inset }${2:hoff} ${3:voff} ${4:blur} ${5:spread }rgb(${6:0}, ${7:0}, ${8:0});", - "bxsh:ra": "box-shadow:${1:inset }${2:h} ${3:v} ${4:blur} ${5:spread }rgba(${6:0}, ${7:0}, ${8:0}, .${9:5});", - "bxsh:n": "box-shadow:none;", - "m": "margin:|;", - "m:a": "margin:auto;", - "mt": "margin-top:|;", - "mt:a": "margin-top:auto;", - "mr": "margin-right:|;", - "mr:a": "margin-right:auto;", - "mb": "margin-bottom:|;", - "mb:a": "margin-bottom:auto;", - "ml": "margin-left:|;", - "ml:a": "margin-left:auto;", - "p": "padding:|;", - "pt": "padding-top:|;", - "pr": "padding-right:|;", - "pb": "padding-bottom:|;", - "pl": "padding-left:|;", - "w": "width:|;", - "w:a": "width:auto;", - "h": "height:|;", - "h:a": "height:auto;", - "maw": "max-width:|;", - "maw:n": "max-width:none;", - "mah": "max-height:|;", - "mah:n": "max-height:none;", - "miw": "min-width:|;", - "mih": "min-height:|;", - "mar": "max-resolution:${1:res};", - "mir": "min-resolution:${1:res};", - "ori": "orientation:|;", - "ori:l": "orientation:landscape;", - "ori:p": "orientation:portrait;", - "ol": "outline:|;", - "ol:n": "outline:none;", - "olo": "outline-offset:|;", - "olw": "outline-width:|;", - "olw:tn": "outline-width:thin;", - "olw:m": "outline-width:medium;", - "olw:tc": "outline-width:thick;", - "ols": "outline-style:|;", - "ols:n": "outline-style:none;", - "ols:dt": "outline-style:dotted;", - "ols:ds": "outline-style:dashed;", - "ols:s": "outline-style:solid;", - "ols:db": "outline-style:double;", - "ols:g": "outline-style:groove;", - "ols:r": "outline-style:ridge;", - "ols:i": "outline-style:inset;", - "ols:o": "outline-style:outset;", - "olc": "outline-color:#${1:000};", - "olc:i": "outline-color:invert;", - "bfv": "backface-visibility:|;", - "bfv:h": "backface-visibility:hidden;", - "bfv:v": "backface-visibility:visible;", - "bd": "border:|;", - "bd+": "border:${1:1px} ${2:solid} ${3:#000};", - "bd:n": "border:none;", - "bdbk": "border-break:${1:close};", - "bdbk:c": "border-break:close;", - "bdcl": "border-collapse:|;", - "bdcl:c": "border-collapse:collapse;", - "bdcl:s": "border-collapse:separate;", - "bdc": "border-color:#${1:000};", - "bdc:t": "border-color:transparent;", - "bdi": "border-image:url(|);", - "bdi:n": "border-image:none;", - "bdti": "border-top-image:url(|);", - "bdti:n": "border-top-image:none;", - "bdri": "border-right-image:url(|);", - "bdri:n": "border-right-image:none;", - "bdbi": "border-bottom-image:url(|);", - "bdbi:n": "border-bottom-image:none;", - "bdli": "border-left-image:url(|);", - "bdli:n": "border-left-image:none;", - "bdci": "border-corner-image:url(|);", - "bdci:n": "border-corner-image:none;", - "bdci:c": "border-corner-image:continue;", - "bdtli": "border-top-left-image:url(|);", - "bdtli:n": "border-top-left-image:none;", - "bdtli:c": "border-top-left-image:continue;", - "bdtri": "border-top-right-image:url(|);", - "bdtri:n": "border-top-right-image:none;", - "bdtri:c": "border-top-right-image:continue;", - "bdbri": "border-bottom-right-image:url(|);", - "bdbri:n": "border-bottom-right-image:none;", - "bdbri:c": "border-bottom-right-image:continue;", - "bdbli": "border-bottom-left-image:url(|);", - "bdbli:n": "border-bottom-left-image:none;", - "bdbli:c": "border-bottom-left-image:continue;", - "bdf": "border-fit:${1:repeat};", - "bdf:c": "border-fit:clip;", - "bdf:r": "border-fit:repeat;", - "bdf:sc": "border-fit:scale;", - "bdf:st": "border-fit:stretch;", - "bdf:ow": "border-fit:overwrite;", - "bdf:of": "border-fit:overflow;", - "bdf:sp": "border-fit:space;", - "bdlen": "border-length:|;", - "bdlen:a": "border-length:auto;", - "bdsp": "border-spacing:|;", - "bds": "border-style:|;", - "bds:n": "border-style:none;", - "bds:h": "border-style:hidden;", - "bds:dt": "border-style:dotted;", - "bds:ds": "border-style:dashed;", - "bds:s": "border-style:solid;", - "bds:db": "border-style:double;", - "bds:dtds": "border-style:dot-dash;", - "bds:dtdtds": "border-style:dot-dot-dash;", - "bds:w": "border-style:wave;", - "bds:g": "border-style:groove;", - "bds:r": "border-style:ridge;", - "bds:i": "border-style:inset;", - "bds:o": "border-style:outset;", - "bdw": "border-width:|;", - "bdtw": "border-top-width:|;", - "bdrw": "border-right-width:|;", - "bdbw": "border-bottom-width:|;", - "bdlw": "border-left-width:|;", - "bdt": "border-top:|;", - "bt": "border-top:|;", - "bdt+": "border-top:${1:1px} ${2:solid} ${3:#000};", - "bdt:n": "border-top:none;", - "bdts": "border-top-style:|;", - "bdts:n": "border-top-style:none;", - "bdtc": "border-top-color:#${1:000};", - "bdtc:t": "border-top-color:transparent;", - "bdr": "border-right:|;", - "br": "border-right:|;", - "bdr+": "border-right:${1:1px} ${2:solid} ${3:#000};", - "bdr:n": "border-right:none;", - "bdrst": "border-right-style:|;", - "bdrst:n": "border-right-style:none;", - "bdrc": "border-right-color:#${1:000};", - "bdrc:t": "border-right-color:transparent;", - "bdb": "border-bottom:|;", - "bb": "border-bottom:|;", - "bdb+": "border-bottom:${1:1px} ${2:solid} ${3:#000};", - "bdb:n": "border-bottom:none;", - "bdbs": "border-bottom-style:|;", - "bdbs:n": "border-bottom-style:none;", - "bdbc": "border-bottom-color:#${1:000};", - "bdbc:t": "border-bottom-color:transparent;", - "bdl": "border-left:|;", - "bl": "border-left:|;", - "bdl+": "border-left:${1:1px} ${2:solid} ${3:#000};", - "bdl:n": "border-left:none;", - "bdls": "border-left-style:|;", - "bdls:n": "border-left-style:none;", - "bdlc": "border-left-color:#${1:000};", - "bdlc:t": "border-left-color:transparent;", - "bdrs": "border-radius:|;", - "bdtrrs": "border-top-right-radius:|;", - "bdtlrs": "border-top-left-radius:|;", - "bdbrrs": "border-bottom-right-radius:|;", - "bdblrs": "border-bottom-left-radius:|;", - "bg": "background:#${1:000};", - "bg+": "background:${1:#fff} url(${2}) ${3:0} ${4:0} ${5:no-repeat};", - "bg:n": "background:none;", - "bg:ie": "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='${1:x}.png',sizingMethod='${2:crop}');", - "bgc": "background-color:#${1:fff};", - "bgc:t": "background-color:transparent;", - "bgi": "background-image:url(|);", - "bgi:n": "background-image:none;", - "bgr": "background-repeat:|;", - "bgr:n": "background-repeat:no-repeat;", - "bgr:x": "background-repeat:repeat-x;", - "bgr:y": "background-repeat:repeat-y;", - "bgr:sp": "background-repeat:space;", - "bgr:rd": "background-repeat:round;", - "bga": "background-attachment:|;", - "bga:f": "background-attachment:fixed;", - "bga:s": "background-attachment:scroll;", - "bgp": "background-position:${1:0} ${2:0};", - "bgpx": "background-position-x:|;", - "bgpy": "background-position-y:|;", - "bgbk": "background-break:|;", - "bgbk:bb": "background-break:bounding-box;", - "bgbk:eb": "background-break:each-box;", - "bgbk:c": "background-break:continuous;", - "bgcp": "background-clip:${1:padding-box};", - "bgcp:bb": "background-clip:border-box;", - "bgcp:pb": "background-clip:padding-box;", - "bgcp:cb": "background-clip:content-box;", - "bgcp:nc": "background-clip:no-clip;", - "bgo": "background-origin:|;", - "bgo:pb": "background-origin:padding-box;", - "bgo:bb": "background-origin:border-box;", - "bgo:cb": "background-origin:content-box;", - "bgsz": "background-size:|;", - "bgsz:a": "background-size:auto;", - "bgsz:ct": "background-size:contain;", - "bgsz:cv": "background-size:cover;", - "c": "color:#${1:000};", - "c:r": "color:rgb(${1:0}, ${2:0}, ${3:0});", - "c:ra": "color:rgba(${1:0}, ${2:0}, ${3:0}, .${4:5});", - "cm": "/* |${child} */", - "cnt": "content:'|';", - "cnt:n": "content:normal;", - "cnt:oq": "content:open-quote;", - "cnt:noq": "content:no-open-quote;", - "cnt:cq": "content:close-quote;", - "cnt:ncq": "content:no-close-quote;", - "cnt:a": "content:attr(|);", - "cnt:c": "content:counter(|);", - "cnt:cs": "content:counters(|);", - - "tbl": "table-layout:|;", - "tbl:a": "table-layout:auto;", - "tbl:f": "table-layout:fixed;", - "cps": "caption-side:|;", - "cps:t": "caption-side:top;", - "cps:b": "caption-side:bottom;", - "ec": "empty-cells:|;", - "ec:s": "empty-cells:show;", - "ec:h": "empty-cells:hide;", - "lis": "list-style:|;", - "lis:n": "list-style:none;", - "lisp": "list-style-position:|;", - "lisp:i": "list-style-position:inside;", - "lisp:o": "list-style-position:outside;", - "list": "list-style-type:|;", - "list:n": "list-style-type:none;", - "list:d": "list-style-type:disc;", - "list:c": "list-style-type:circle;", - "list:s": "list-style-type:square;", - "list:dc": "list-style-type:decimal;", - "list:dclz": "list-style-type:decimal-leading-zero;", - "list:lr": "list-style-type:lower-roman;", - "list:ur": "list-style-type:upper-roman;", - "lisi": "list-style-image:|;", - "lisi:n": "list-style-image:none;", - "q": "quotes:|;", - "q:n": "quotes:none;", - "q:ru": "quotes:'\\00AB' '\\00BB' '\\201E' '\\201C';", - "q:en": "quotes:'\\201C' '\\201D' '\\2018' '\\2019';", - "ct": "content:|;", - "ct:n": "content:normal;", - "ct:oq": "content:open-quote;", - "ct:noq": "content:no-open-quote;", - "ct:cq": "content:close-quote;", - "ct:ncq": "content:no-close-quote;", - "ct:a": "content:attr(|);", - "ct:c": "content:counter(|);", - "ct:cs": "content:counters(|);", - "coi": "counter-increment:|;", - "cor": "counter-reset:|;", - "va": "vertical-align:${1:top};", - "va:sup": "vertical-align:super;", - "va:t": "vertical-align:top;", - "va:tt": "vertical-align:text-top;", - "va:m": "vertical-align:middle;", - "va:bl": "vertical-align:baseline;", - "va:b": "vertical-align:bottom;", - "va:tb": "vertical-align:text-bottom;", - "va:sub": "vertical-align:sub;", - "ta": "text-align:${1:left};", - "ta:l": "text-align:left;", - "ta:c": "text-align:center;", - "ta:r": "text-align:right;", - "ta:j": "text-align:justify;", - "ta-lst": "text-align-last:|;", - "tal:a": "text-align-last:auto;", - "tal:l": "text-align-last:left;", - "tal:c": "text-align-last:center;", - "tal:r": "text-align-last:right;", - "td": "text-decoration:${1:none};", - "td:n": "text-decoration:none;", - "td:u": "text-decoration:underline;", - "td:o": "text-decoration:overline;", - "td:l": "text-decoration:line-through;", - "te": "text-emphasis:|;", - "te:n": "text-emphasis:none;", - "te:ac": "text-emphasis:accent;", - "te:dt": "text-emphasis:dot;", - "te:c": "text-emphasis:circle;", - "te:ds": "text-emphasis:disc;", - "te:b": "text-emphasis:before;", - "te:a": "text-emphasis:after;", - "th": "text-height:|;", - "th:a": "text-height:auto;", - "th:f": "text-height:font-size;", - "th:t": "text-height:text-size;", - "th:m": "text-height:max-size;", - "ti": "text-indent:|;", - "ti:-": "text-indent:-9999px;", - "tj": "text-justify:|;", - "tj:a": "text-justify:auto;", - "tj:iw": "text-justify:inter-word;", - "tj:ii": "text-justify:inter-ideograph;", - "tj:ic": "text-justify:inter-cluster;", - "tj:d": "text-justify:distribute;", - "tj:k": "text-justify:kashida;", - "tj:t": "text-justify:tibetan;", - "tov": "text-overflow:${ellipsis};", - "tov:e": "text-overflow:ellipsis;", - "tov:c": "text-overflow:clip;", - "to": "text-outline:|;", - "to+": "text-outline:${1:0} ${2:0} ${3:#000};", - "to:n": "text-outline:none;", - "tr": "text-replace:|;", - "tr:n": "text-replace:none;", - "tt": "text-transform:${1:uppercase};", - "tt:n": "text-transform:none;", - "tt:c": "text-transform:capitalize;", - "tt:u": "text-transform:uppercase;", - "tt:l": "text-transform:lowercase;", - "tw": "text-wrap:|;", - "tw:n": "text-wrap:normal;", - "tw:no": "text-wrap:none;", - "tw:u": "text-wrap:unrestricted;", - "tw:s": "text-wrap:suppress;", - "tsh": "text-shadow:${1:hoff} ${2:voff} ${3:blur} ${4:#000};", - "tsh:r": "text-shadow:${1:h} ${2:v} ${3:blur} rgb(${4:0}, ${5:0}, ${6:0});", - "tsh:ra": "text-shadow:${1:h} ${2:v} ${3:blur} rgba(${4:0}, ${5:0}, ${6:0}, .${7:5});", - "tsh+": "text-shadow:${1:0} ${2:0} ${3:0} ${4:#000};", - "tsh:n": "text-shadow:none;", - "trf": "transform:|;", - "trf:skx": "transform: skewX(${1:angle});", - "trf:sky": "transform: skewY(${1:angle});", - "trf:sc": "transform: scale(${1:x}, ${2:y});", - "trf:scx": "transform: scaleX(${1:x});", - "trf:scy": "transform: scaleY(${1:y});", - "trf:scz": "transform: scaleZ(${1:z});", - "trf:sc3": "transform: scale3d(${1:x}, ${2:y}, ${3:z});", - "trf:r": "transform: rotate(${1:angle});", - "trf:rx": "transform: rotateX(${1:angle});", - "trf:ry": "transform: rotateY(${1:angle});", - "trf:rz": "transform: rotateZ(${1:angle});", - "trf:t": "transform: translate(${1:x}, ${2:y});", - "trf:tx": "transform: translateX(${1:x});", - "trf:ty": "transform: translateY(${1:y});", - "trf:tz": "transform: translateZ(${1:z});", - "trf:t3": "transform: translate3d(${1:tx}, ${2:ty}, ${3:tz});", - "trfo": "transform-origin:|;", - "trfs": "transform-style:${1:preserve-3d};", - "trs": "transition:${1:prop} ${2:time};", - "trsde": "transition-delay:${1:time};", - "trsdu": "transition-duration:${1:time};", - "trsp": "transition-property:${1:prop};", - "trstf": "transition-timing-function:${1:tfunc};", - "lh": "line-height:|;", - "whs": "white-space:|;", - "whs:n": "white-space:normal;", - "whs:p": "white-space:pre;", - "whs:nw": "white-space:nowrap;", - "whs:pw": "white-space:pre-wrap;", - "whs:pl": "white-space:pre-line;", - "whsc": "white-space-collapse:|;", - "whsc:n": "white-space-collapse:normal;", - "whsc:k": "white-space-collapse:keep-all;", - "whsc:l": "white-space-collapse:loose;", - "whsc:bs": "white-space-collapse:break-strict;", - "whsc:ba": "white-space-collapse:break-all;", - "wob": "word-break:|;", - "wob:n": "word-break:normal;", - "wob:k": "word-break:keep-all;", - "wob:ba": "word-break:break-all;", - "wos": "word-spacing:|;", - "wow": "word-wrap:|;", - "wow:nm": "word-wrap:normal;", - "wow:n": "word-wrap:none;", - "wow:u": "word-wrap:unrestricted;", - "wow:s": "word-wrap:suppress;", - "wow:b": "word-wrap:break-word;", - "wm": "writing-mode:${1:lr-tb};", - "wm:lrt": "writing-mode:lr-tb;", - "wm:lrb": "writing-mode:lr-bt;", - "wm:rlt": "writing-mode:rl-tb;", - "wm:rlb": "writing-mode:rl-bt;", - "wm:tbr": "writing-mode:tb-rl;", - "wm:tbl": "writing-mode:tb-lr;", - "wm:btl": "writing-mode:bt-lr;", - "wm:btr": "writing-mode:bt-rl;", - "lts": "letter-spacing:|;", - "lts-n": "letter-spacing:normal;", - "f": "font:|;", - "f+": "font:${1:1em} ${2:Arial,sans-serif};", - "fw": "font-weight:|;", - "fw:n": "font-weight:normal;", - "fw:b": "font-weight:bold;", - "fw:br": "font-weight:bolder;", - "fw:lr": "font-weight:lighter;", - "fs": "font-style:${italic};", - "fs:n": "font-style:normal;", - "fs:i": "font-style:italic;", - "fs:o": "font-style:oblique;", - "fv": "font-variant:|;", - "fv:n": "font-variant:normal;", - "fv:sc": "font-variant:small-caps;", - "fz": "font-size:|;", - "fza": "font-size-adjust:|;", - "fza:n": "font-size-adjust:none;", - "ff": "font-family:|;", - "ff:s": "font-family:serif;", - "ff:ss": "font-family:sans-serif;", - "ff:c": "font-family:cursive;", - "ff:f": "font-family:fantasy;", - "ff:m": "font-family:monospace;", - "ff:a": "font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif;", - "ff:t": "font-family: \"Times New Roman\", Times, Baskerville, Georgia, serif;", - "ff:v": "font-family: Verdana, Geneva, sans-serif;", - "fef": "font-effect:|;", - "fef:n": "font-effect:none;", - "fef:eg": "font-effect:engrave;", - "fef:eb": "font-effect:emboss;", - "fef:o": "font-effect:outline;", - "fem": "font-emphasize:|;", - "femp": "font-emphasize-position:|;", - "femp:b": "font-emphasize-position:before;", - "femp:a": "font-emphasize-position:after;", - "fems": "font-emphasize-style:|;", - "fems:n": "font-emphasize-style:none;", - "fems:ac": "font-emphasize-style:accent;", - "fems:dt": "font-emphasize-style:dot;", - "fems:c": "font-emphasize-style:circle;", - "fems:ds": "font-emphasize-style:disc;", - "fsm": "font-smooth:|;", - "fsm:a": "font-smooth:auto;", - "fsm:n": "font-smooth:never;", - "fsm:aw": "font-smooth:always;", - "fst": "font-stretch:|;", - "fst:n": "font-stretch:normal;", - "fst:uc": "font-stretch:ultra-condensed;", - "fst:ec": "font-stretch:extra-condensed;", - "fst:c": "font-stretch:condensed;", - "fst:sc": "font-stretch:semi-condensed;", - "fst:se": "font-stretch:semi-expanded;", - "fst:e": "font-stretch:expanded;", - "fst:ee": "font-stretch:extra-expanded;", - "fst:ue": "font-stretch:ultra-expanded;", - "op": "opacity:|;", - "op+": "opacity: $1;\nfilter: alpha(opacity=$2);", - "op:ie": "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);", - "op:ms": "-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=100)';", - "rsz": "resize:|;", - "rsz:n": "resize:none;", - "rsz:b": "resize:both;", - "rsz:h": "resize:horizontal;", - "rsz:v": "resize:vertical;", - "cur": "cursor:${pointer};", - "cur:a": "cursor:auto;", - "cur:d": "cursor:default;", - "cur:c": "cursor:crosshair;", - "cur:ha": "cursor:hand;", - "cur:he": "cursor:help;", - "cur:m": "cursor:move;", - "cur:p": "cursor:pointer;", - "cur:t": "cursor:text;", - "fxd": "flex-direction:|;", - "fxd:r": "flex-direction:row;", - "fxd:rr": "flex-direction:row-reverse;", - "fxd:c": "flex-direction:column;", - "fxd:cr": "flex-direction:column-reverse;", - "fxw": "flex-wrap: |;", - "fxw:n": "flex-wrap:nowrap;", - "fxw:w": "flex-wrap:wrap;", - "fxw:wr": "flex-wrap:wrap-reverse;", - "fxf": "flex-flow:|;", - "jc": "justify-content:|;", - "jc:fs": "justify-content:flex-start;", - "jc:fe": "justify-content:flex-end;", - "jc:c": "justify-content:center;", - "jc:sb": "justify-content:space-between;", - "jc:sa": "justify-content:space-around;", - "ai": "align-items:|;", - "ai:fs": "align-items:flex-start;", - "ai:fe": "align-items:flex-end;", - "ai:c": "align-items:center;", - "ai:b": "align-items:baseline;", - "ai:s": "align-items:stretch;", - "ac": "align-content:|;", - "ac:fs": "align-content:flex-start;", - "ac:fe": "align-content:flex-end;", - "ac:c": "align-content:center;", - "ac:sb": "align-content:space-between;", - "ac:sa": "align-content:space-around;", - "ac:s": "align-content:stretch;", - "ord": "order:|;", - "fxg": "flex-grow:|;", - "fxsh": "flex-shrink:|;", - "fxb": "flex-basis:|;", - "fx": "flex:|;", - "as": "align-self:|;", - "as:a": "align-self:auto;", - "as:fs": "align-self:flex-start;", - "as:fe": "align-self:flex-end;", - "as:c": "align-self:center;", - "as:b": "align-self:baseline;", - "as:s": "align-self:stretch;", - "pgbb": "page-break-before:|;", - "pgbb:au": "page-break-before:auto;", - "pgbb:al": "page-break-before:always;", - "pgbb:l": "page-break-before:left;", - "pgbb:r": "page-break-before:right;", - "pgbi": "page-break-inside:|;", - "pgbi:au": "page-break-inside:auto;", - "pgbi:av": "page-break-inside:avoid;", - "pgba": "page-break-after:|;", - "pgba:au": "page-break-after:auto;", - "pgba:al": "page-break-after:always;", - "pgba:l": "page-break-after:left;", - "pgba:r": "page-break-after:right;", - "orp": "orphans:|;", - "us": "user-select:${none};", - "wid": "widows:|;", - "wfsm": "-webkit-font-smoothing:${antialiased};", - "wfsm:a": "-webkit-font-smoothing:antialiased;", - "wfsm:s": "-webkit-font-smoothing:subpixel-antialiased;", - "wfsm:sa": "-webkit-font-smoothing:subpixel-antialiased;", - "wfsm:n": "-webkit-font-smoothing:none;" - } - }, - - "html": { - "filters": "html", - "profile": "html", - "snippets": { - "!!!": "", - "!!!4t": "", - "!!!4s": "", - "!!!xt": "", - "!!!xs": "", - "!!!xxs": "", - - "c": "", - "cc:ie6": "", - "cc:ie": "", - "cc:noie": "\n\t${child}|\n" - }, - - "abbreviations": { - "!": "html:5", - "a": "", - "a:link": "", - "a:mail": "", - "abbr": "", - "acr|acronym": "", - "base": "", - "basefont": "", - "br": "
      ", - "frame": "", - "hr": "
      ", - "bdo": "", - "bdo:r": "", - "bdo:l": "", - "col": "", - "link": "", - "link:css": "", - "link:print": "", - "link:favicon": "", - "link:touch": "", - "link:rss": "", - "link:atom": "", - "link:im|link:import": "", - "meta": "", - "meta:utf": "", - "meta:win": "", - "meta:edge": "", - "meta:vp": "", - "meta:compat": "", - "meta:redirect": "", - "style": "